一、参考资料
   
    1:OA_Automotive_Ethernet_ECU_TestSpecification_Layer_3-7_v3.0.pdf
    
    page 71
   
    
    
    二、问题描述
   
    1、TC8 UT测试中ARP_33测试用例Fail
    
    2、ARP_33测试用例说明:
    
    简单来说是为了测试协议栈是否能更新ARP缓存表
    
    ![[图片]](https://img-blog.csdnimg.cn/b8c8c1d925a2404c9c9f591c9149bf85.png)
    
    但是测试的方法比较特殊,用到了一种开发过程中比较少见的免费ARP报文(gratuitous arp),这种ARP报文的特点是“自问自答”,如下图所示。
    
    由同一个设备(10.0.0.50)发出ARP请求,(10.0.0.50)自身响应ARP请求,类型是广播。
    
    然后通过UT指令,让DUT发送一条UDP单播到10.0.0.50。
    
    期望DUT直接发送UDP报文,不再发出ARP请求MAC地址
    
    
     https://blog.csdn.net/wjz110201/article/details/115114238
    
    
    
    
    按照默认配置的Linux TCP/IP协议栈测试Fail,发送UDP单播前仍让发出ARP请求
    
    ![[图片]](https://img-blog.csdnimg.cn/581f3131b525428aaf117bef16a3da1c.png)
    
    因为正常的ARP请求,DUT都能正确缓存在ARP表中,所以猜测是协议栈不支持免费ARP报文
    
    查阅网上资料,Linux TCP/IP协议栈默认只缓存自身请求的MAC地址,要支持未经请求的ARP,通过配置/proc/sys/net/ipv4/conf/eth0/arp_accept为1来实现
    
    
     https://qa.1r1g.com/sf/ask/235171191/
    
    
    修改后复测,通过UT指令,让DUT发送一条UDP单播到10.0.0.50,不再发出ARP请求MAC地址,直接发出,测试用例通过
    
    ![[图片]](https://img-blog.csdnimg.cn/69cccf952f074e2fbb8163a5d943106a.png) 
   
    
    
    三、修改方法:
   
    1:临时配置
    
    echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_accept
    
    2:永久配置
    
    修改/etc/sysctl.conf
    
    增加一行:net.ipv4.conf.eth0.arp_accept = 1
   
 
