`
ikon
  • 浏览: 107049 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于"Neighbour table overflow“的错误分析及解决方案

 
阅读更多

这几天在查看日志文件时,出现 "Neighbour table overflow"的邻表溢出问题,网上查看资料后去顶是arp表出现问题了,

以下是http://www.gnulinuxclub.org/index.php?option=com_content&task=view&id=333&Itemid=49的问题。

How to resolve "Neighbour table overflow" problem? Print E-mail

Gnu/Linux servers (when used extensively as a server) throw the following messages in log file

  kernel: Neighbour table overflow.
  kernel: printk: 100 messages suppressed.
  kernel: Neighbour table overflow.
  kernel: printk: 151 messages suppressed.
  kernel: Neighbour table overflow.

The solution to the problem is to increase the threshold level for the network devices

To check the present threshold level 1

cat /proc/sys/net/ipv4/neigh/default/gc_thresh1

It will give some value as 128 or 256 or 512.

This can be increased to the next level.Like if the value is 128 then

make the thresh1 value as 256 and thresh2 as 512 and thresh3 as 1024.

echo 256 > /proc/sys/net/ipv4/neigh/default/gc_thresh1

echo 512 > /proc/sys/net/ipv4/neigh/default/gc_thresh2

echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

This will stop the Error messages that were recieved in the log file

 

解决方案:

1、检测当前值:

  [root@localhost ~]grep . /proc/sys/net/ipv4/neigh/default/gc_thresh*

2、输入一个比进程实体更大的值:

 [root@localhost ~]echo 512 > /proc/sys/net/ipv4/neigh/default/gc_thresh1

 [root@localhost ~]echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2

 [root@localhost ~]echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

3、把上面的值添加到/etc/sysctl.conf文件中:

net.ipv4.neigh.default.gc_thresh1 = 512

net.ipv4.neigh.default.gc_thresh2 = 2048

net.ipv4.neigh.default.gc_thresh3 = 4096

下面再来引用一下proc/sys/net 详解(即时调整内核网络参数)

注明:这个是分享的。

 

Linux这几年发展迅速,推出了很多版本。让我们眼花缭乱,不过在每个Linux的发行版本中,都存在一个/proc/目录,这就是Linux系统目录。有的也称它为Proc文件系统。对于那些网络管理员必须要掌握Linux系统目录。

在这个目录中,包括了一些特殊的文件,不仅能用来反映内核的现行状态和查看硬件信息,而且,有些文件还允许用户来修改其中的内容,以调节内核的现行工作状态,例如/proc/sys/子目录下的文件。

与/proc/目录中其它目录不相同的是,/proc/sys/目录下的文件不仅能提供系统的有关信息,而且还允许用户立即停止或开启内核的某些特性及功能。在/proc/sys/目录中的/proc/sys/net/子目录更是与网络息息相关,我们可以通过设置此目录下的某些文件来开启与网络应用相关的特殊功能,同时,也可以通过设置这个目录下的某些文件来保护我们的网络安全。因此,作为一名Linux下的网络管理员,就很有必要详细了解/proc/sys/net/目录下文件的各种功能和设置方法,让它能更好地为我们工作。

一、/proc/sys/net/目录说明。

/proc/sys/net/目录主要包括了许多网络相关的主题,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通过改变这些目录中的文件,网络管理员能够在系统运行时调整相关网络参数。虽然在Linux中还有很多有关网络的配置方法,但熟悉此目录中的相关内容对网络应用是有很大的帮助的。

在/proc/sys/net/目录下有两个目录,与现在的IPV4网络的运行息息相关,调整这两个目录下的某些文件的参数,能为我们的网络应用带到意想不到的效果,这两个目录就是/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录,下面笔者将会对这两个目录中的重要文件分别作一个详细的说明。

1、/proc/sys/net/core/目录。

此目录中包括许多设置用来控制Linux内核与网络层的交互,即当网络有什么动作时,内核做出什么样的相应反应。

在其中有以下的一些重要文件:

(1)、message_burst:设置每十秒写入多少次请求警告;此设置可以用来防止DOS攻击,缺省设置为50;

(2)、message_cost:设置每一个警告的度量值,缺省为5,当用来防止DOS攻击时设置为0;

(3)、netdev_max_backlog:设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列,缺省为300;

(4)、optmem_max:设置每个socket的最大补助缓存大小;

(5)、rmem_default:设置接收socket的缺省缓存大小(字节);

(6)、rmem_max:设置接收socket的最大缓存大小(字节);

(7)、wmem_default:设置发送的socket缺省缓存大小(字节);

(8)、wmem_max:设置发送的socket最大缓存大小(字节)。

2、/proc/sys/net/ipv4/目录。

此目录中的内容用来添加网络设置,在其中的许多设置,可以用来阻止对系统的攻击,或用来设置系统的路由功能。

其中有以下的这些重要的文件:

(1)、icmp_destunreach_rate、icmp_echoreply_rate、icmp_paramprob_rate、icmp_timeexeed_rate:设置发送和回应的最大icmp包的速率,最好不要为0;

(2)、icmp_echo_ignore_all和icmp_echo_ignore_broadcasts:设置内核不应答icmp echo包,或指定的广播,值为0是允许回应,值为1是禁止;

(3)、ip_default_ttl:设置IP包的缺省生存时间(TTL),增加它的值能减少系统开销;

(4)、ip_forward:设置接口是否可以转发包,缺省为0,设置为1时允许网络进行包转发;

(5)、ip_local_port_range:当本地需要端口时指定TCP或UDP端口范围。第一数为低端口,第二个数为高端口;

(6)、tcp_syn_retries:提供限制在建立连接时重新发送回应的SYN包的次数;

(7)、tcp_retries1:设置回应连入重送的次数,缺省为3;

(8)、tcp_retries2:设置允许重送的TCP包的次数,缺省为15。

二、/proc/sys/net/目录下文件的设置方法。

在了解了/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录中一些重要文件的意义和作用后,下面说说如何设置这两个目录中的这些重要文件来为我们工作的。

读者应该了解,在Linux系统中,要改变某种服务或设备的工作状态和功能,主要是通过使用命令方式和直接修改它的配置文件方式来达到目的,对于这两个目录下的文件,我们也可以通过这两种方式来修改这些文件内容中的值,使它们按照我们的意图工作。

在进行设置之前,应当注意的是,当你确定要修改某个文件的当前值时,一定要保证输入的命令格式和值的内容都是正确的,因为任何的错误设置都会引起内核的不稳定,如果你不小心造成了这种问题,你就不得不重新引导系统了。在下面的说明中,笔者会将注意的地方特别说明出来的。

首先来看看如何使用命令方式来修改这两个目录下文件的。我们可以通过echo和sysctl这两个命令来修改这两个目录中的文件,下面笔者将这两个命令的使用方法分别列出来。

1、sysctl命令是为设置这两个目录中的文件而定制的,它被默认安装在/sbin/目录中, 我们可以通过使用此命令来显示和设置/proc/sys/net/目录下的文件内容。例如:/sbin/sysctl -a命令用来显示此目录下的所有文件配置内容;/sbin/sysctl -w命令用来修改此目录下指定文件中的变量值,如:/sbin/sysctl -w net.ipv4.ip_forward="1"用来设置允许IP包转发。其它的参数,读者可以通过输入/sbin/sysctl -h命令来得到,在这里就不再具体全部列出了。要注意的是,这个命令的使用需要管理员权限的,如果用户不是以管理员身份登录的,在使用此命令前用SU命令得得管理权限后再操作。

2、/proc/sys/net/目录下的文件内容也可以通过用echo命令来修改。例如:echo 1 > /proc/sys/net/ipv4/ip_forward用来设置允许IP包转发;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all用来设置不回应ICMP ECHO包。在使用echo命令时,还应特别注意此命令的输入格式,即在echo命令和值之间,以及值与在于符号(>)之间,在于符号与要修改的文件路径之间都必需有一个空格。而且,在这两个目录中的有些文件有不上一个的值,所以,如果你想一次性传递多个值,那么,每一个值之间也应保证用空格隔开。

同时也要注意的是,用此方法修改/proc/sys/net/目录下文件中的内容在系统重新启动后,所设置的内容会全部变为默认值,因此,如果要想设置的值永久有效,可以直接把这个命令加入到/ect/rc.d/rc.local文件中,在这里,这个文件的路径是指Red Hat Linux发行版本中的,其它发行版本读者根据具体情况来定。如果命令项太多,也可以把这些命令项编写成一个脚本后,加上可执行权限,再放到这个文件中,这样当系统启动时,就会按/etc/rc.d/rc.local中的设置自动执行。如果你不想修改/etc/rc.d/rc.local文件,那么笔者推荐你使用/sbin/sysctl命令。

使用命令方式设置/proc/sys/net/目录下的文件固然方便易行,但有一部分读者更喜欢直接修改它们的配置文件的方式,因为这种方式更加直观,但它比较适合对系统了解比较深的用户。

与其它服务或设备不同的是,Linux系统只为/proc/sys/net/目录提供了一个配置文件,那就是/ect/sysctl.conf,用户可以通过直接编辑/ect/sysctl.conf配置文件,来修改增加相应/proc/sys/net/目录下文件内容中的变量的值,这样当系统启动时就会读取此文件中的配置内容来设置相应的项。用vi来编辑此文件是非常简单的,此文件中内容格式也非常清晰易读,如其中有如下条目:net.ipv4.ip_forward=0,把值修改为1后就打开IP包转发。其实,用/sbin/sysctl命令修改和直接编辑 /etc/sysctl.conf文件内容具有相同的效果,因此,为了安全,推荐用户优先使用/sbin/sysctl命令方式。

到这里,想必读者已经对/proc/sys/net/目录下的/proc/sys/net/core/和/proc/sys/net/ipv4/这两个目录,已经有了一定了解了。可是,这只是笔者为了突出/proc/目录与IPV4网络的作用而特别选出来说明,其实,在/proc/目录下,还有许多的文件,虽然不能被用户如上述的两个目录那样可以被设置,但是,可以通过这些文件来了解系统详细情况和现行的运行状态,读者可以从网络上找到这个目录的详细说明。

分享到:
评论

相关推荐

    Neighbour Analysis_GPEH and Statistics

    【邻居分析与GPEH统计】是无线通信网络优化中的关键环节,主要目的是确保网络中的邻小区关系设置得当,从而提升服务质量并降低故障发生。本文将深入探讨邻居分析的重要性和实施方法,以及GPEH(Global Performance ...

    网络测试结果分析工具.zip

    用户可以按照界面提示进行操作,分析报告会给出建议和解决方案。 7. **优化策略**:根据分析结果,网络管理员可以调整网络配置,比如改变设备的位置、更新固件、调整频道设置等,以提升网络的整体表现。 8. **与...

    average neighbour connectivity

    在IT领域,尤其是在网络科学中,"average neighbour connectivity"(平均邻接度)是一个关键的概念,用于分析复杂网络的结构特性。复杂网络是由各种各样的节点(如个人、计算机、基因等)及其相互连接组成的系统,...

    k-nearest neighbour_python_Nearestneighbour_

    **K最近邻(K-Nearest Neighbour,简称KNN)算法是机器学习领域中最基础且重要的算法之一,尤其在分类任务中应用广泛。本文将深入探讨如何在Python环境中实现KNN算法,并通过实例分析其工作原理。** KNN算法的基本...

    fnn.rar_FNN_FNN matlab_False matlab_neighbour

    "false_matlab"可能表示该函数包含了与MATLAB中的错误或误分类相关的部分,而"neighbour_"则暗示了函数可能涉及到的是邻居搜索和分析。 从压缩包内的文件名"fnn.m"来看,这是一个MATLAB脚本或函数文件。通常,这种...

    neighbour_邻居发现_

    "neighbour_邻居发现_"这个项目显然是关于研究和实现一种特定的邻居发现算法,即“基于最优发射概率的同步邻居发现算法”。 这种算法的目标是在有限的能源资源下,通过优化节点的发射概率来高效地发现并识别网络中...

    常用GIS平台方案对比

    此外,QGIS还拥有TIN插值、IDW插值、缓冲区分析、Nearest Neighbour Analysis、Distance matrix、点面关系分析、相交线分析、线面类型转换、GPS工具、GRASS工具等功能。QGIS的优势在于地图制图、数据编辑、数据导入...

    K-Nearest-Neighbour-master.zip_K._knn分类C

    总的来说,"K-Nearest-Neighbour-master.zip_K._knn分类C"项目提供了一个C++实现的KNN分类器,这对于理解和学习机器学习的基础算法,以及进行实际的数据分析工作是非常有价值的。通过阅读和分析这个项目的代码,你...

    Fast k-Nearest Neighbour Search via Dynamic Continuous Indexing

    在当今计算机科学领域,特别是在机器学习和数据挖掘领域,k-最近邻(k-Nearest Neighbour, k-NN)搜索是被广泛研究和应用的重要问题之一。k-NN搜索指的是在给定的数据库中找到与查询数据点最相似的k个数据点。这种...

    C#,机器学习的KNN(K Nearest Neighbour)算法与源代码

    各种数据结构、算法及实用的C#源代码 C#,机器学习的KNN(K Nearest Neighbour)算法与源代码 KNN(K- Nearest Neighbor)法即K最邻近法,最初由 Cover和Hart于1968年提出,是一个理论上比较成熟的方法,也是最简单...

    Linux网络配置之IP命令手册

    1.关于这篇文档 2.ip 命令的语法 3.ip 的错误信息 4.ip link--配置网络设备 4.1.ip link set--改变设备的属性 4.2.ip link show--显示设备属性 5.ip address--协议地址管理 5.1.ip address add--添加一个新的协议...

    Linux路由实现机制分析.pdf

    邻居表由neigh_table(include/net/neighbour.h)结构的链表来表示,以邻居(neighbour,定义于include/net/neighbour.h)结构为节点,其结构关系图如图1。 路由高速缓存 路由高速缓存(Route Cache)是Linux内核中最...

    knn.rar_K._K邻近算法_k nearest neighbour_最邻近算法

    K邻近算法(K-Nearest Neighbour,KNN)** KNN是一种基于实例的学习,也是监督学习中的非参数方法。它的基本思想是:对于未知类别的数据点,我们将其分类到与其最接近的K个已知类别数据点的多数类别中。这个“最...

    k-nearest-neighbour:Burak Kanber 启发了 k 近邻算法

    **k-最近邻算法(k-Nearest Neighbour, KNN)详解** k-最近邻算法,简称KNN,是一种简单而有效的非参数监督学习方法。在机器学习领域,KNN广泛应用于分类和回归问题。它基于实例学习,即通过找到训练集中与新样本最...

    neighbour.rp

    Axure地图型社交软件完整案例与产品分析,包含社交用户体验和社交软件交互社计

    K-Nearest-NEIGHBOUR-KNN-ALGORITHM-:k最近邻(KNN)算法是一种简单的,受监督的机器学习算法,可用于解决分类和回归问题

    K最近的NEIGHBOUR-KNN算法KNN表示K最近邻算法。 KNN是最简单的监督式机器学习算法,主要用于数据分类。 在继续学习KNN之前,让我们简单地看一下机器学习和KNN所属的类别。 机器学习(ML)是对计算机算法的研究,该...

    NCS分析越区覆盖小区.pdf

    NCS(Neighbour Cell Selection)分析通过对相邻小区的测量数据进行统计,来判断是否存在越区覆盖现象。越区覆盖指的是一个小区的信号覆盖范围超过了其预定的边界,进入到了相邻小区的覆盖区域内,导致网络资源的不...

    KNN.rar_K._K近邻算法_Nearest neighbour _knn_k近邻matlab实现

    **K近邻算法(K-Nearest Neighbour, KNN)**是一种经典的监督学习方法,在机器学习领域中占据着重要地位。它属于懒惰学习(Lazy Learning)类别,因为KNN在训练阶段并不构建模型,而是等到预测时才计算最近邻。这个...

    NTSYS-PC(分子生物学分析软件)

    软件还提供了多种类聚类算法,如UPGMA(Unweighted Pair Group Method with Arithmetic mean)、WPGMA(Weighted Pair Group Method with Arithmetic mean)以及NJ(Neighbour Joining)等,以适应不同的分析需求和...

Global site tag (gtag.js) - Google Analytics