TC8 ARP_33测试用例Fail记录–基于Linux TCP/IP协议栈

  • Post author:
  • Post category:linux




一、参考资料

1:OA_Automotive_Ethernet_ECU_TestSpecification_Layer_3-7_v3.0.pdf

page 71



二、问题描述

1、TC8 UT测试中ARP_33测试用例Fail

2、ARP_33测试用例说明:

简单来说是为了测试协议栈是否能更新ARP缓存表

[图片]

但是测试的方法比较特殊,用到了一种开发过程中比较少见的免费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请求

[图片]

因为正常的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地址,直接发出,测试用例通过

[图片]



三、修改方法:

1:临时配置

echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_accept

2:永久配置

修改/etc/sysctl.conf

增加一行:net.ipv4.conf.eth0.arp_accept = 1



版权声明:本文为motianjie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。