UDP包导致大量ARP报文的问题处理

现象:

监控系统中需要采用轮寻udp包的方式,对系统配置内的节点发送UDP包,并根据返回的UDP报文确定目标节点的状态。测试环境中未发现异常,但在实际工程应用时发现使用节点判断功能后,交换机出现故障报警,tcpdump观察发现大量的ARP报文,最终导致网络处理速度较慢的现地设备出现网络异常。

 

UDP与ARP的关系:

 在《TCP/IP详解  卷2:实现》21章ARP:地址解析协议中,找到相关的描述:

当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应以太网地址的映射表。如果查到匹配的节点,则相应的以太网地址被写入以太帧首部,数据报被加入输出队列等候发送。如果查询失败,ARP会先保留待发送的IP数据报,然后广播一个询问目的主机硬件地址的ARP报文,等收到回答后再将IP数据报发送出去。

 结合工程实际情况和上述描述,可以确认:

1. ARP数据包,是因为UDP消息的目标节点在本机ARP表中不存在而产生的;

2. UDP为了判断目标节点情况按照200ms的间隔进行发送,但由于存在大量不在线的目标节点,导致ARP包大量产生。

在该书的561页,描述了防止ARP洪泛的机制:

RFC1122要求ARP避免在收到ARP回答前以过高的速度对一个以太网地址重发ARP请求。Net/3采用以下方法来避免ARP洪泛:

  • Net/3不在同一秒内发送多个对应统一目标地址的ARP请求;
  • 如果在连续5个ARP请求后还没有收到回答,路由节点的RTF_REJECT标志置为1,时间设为往后的20秒。这会在20秒内拒绝发往该目标地址的IP数据报。
  • 20秒后,arpresolve会继续发送该目标地址的ARP请求。

该文字所描述的机制和实际情况存在略微出入,但是大致机制相同。本机会对所有的数据发送做统一的控制,如果主机信息在ARP表中不存在,则进行ARP请求;该请求存在请求次数和请求失败延时的控制,以避免ARP洪泛。

为了深入理解ARP包的发送,查询了系统内核参数:

 

可以看到,失败重试的参数为3,发送间隔为1000ms。这与tcpdump观察的结果吻合。

 

解决方案:

知道了原因,下一步就是处理。考虑有如下处理方法:

  • 修改发送策略

大量ARP包是向不在线设备发送UDP报文而导致的,因此考虑对不在线节点,间隔较长时间发送UDP。这里不能不发送,因为该UDP机制存在的目的就是为了判断节点的工作状态,如果不在线节点不进行发送,就意味着永远无法判断重新上线节点的状态。

  • 修改内核参数

修改ucast_solicit或retrans_time参数,ucast_solicit代表尝试的次数,retrans_time代表重试的间隔时间。增加 retrans_time参数,就可以防止ARP洪泛。

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARP(Address Resolution Protocol)解决了IP地址和MAC地址之间的映射关系问题ARP报文结构括硬件类型、协议类型、硬件地址长度、协议地址长度、操作类型、发送方MAC地址、发送方IP地址、目标MAC地址和目标IP地址等字段。 IP(Internet Protocol)是网络层的协议,它负责将数据从源主机送达目的主机。IP报文结构括版本号、头部长度、服务类型、总长度、标识、标志位、片偏移、生存时间、协议、头部校验和、源IP地址和目的IP地址等字段。 TCP(Transmission Control Protocol)是传输层的协议,提供可靠的、面向连接的数据传输。TCP报文结构括源端口号、目的端口号、序号、确认号、首部长度、保留位、标志位、窗口大小、检验和、紧急指针、选项、数据等字段。TCP使用三次握手建立连接,并通过确认和重传机制保证数据的可靠性。 UDP(User Datagram Protocol)也是传输层的协议,提供不可靠的、面向无连接的数据传输。UDP报文结构括源端口号、目的端口号、长度、校验和和数据等字段。与TCP相比,UDP不保证数据的可靠性,并且没有连接建立和断开的过程,适用于对实时性要求较高的应用如音视频传输。 以上四个协议的报文结构是网络通信中常用的,了解和理解这些协议的报文结构对于网络通信的分析和问题排查有着重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值