让采集卡的数据能发到Ubuntu电脑上
就是在Ubuntu电脑上实现我之前在Windows主机上一模一样的功能先,能收到数据用wireshark抓包
因为要经过10G网口 -> 100G网口的转换,所以肯定要经过华为100G交换机
交换机有48个10G网口,编号为10GE1/0/1
到10GE1/0/48
,6个100G网口,编号为100GE1/0/1
到100GE1/0/6
数据流向设计是:
采集卡万兆网口 -> 10GE1/0/1 -> 100GE1/0/1 -> Ubuntu电脑100G网口
网络线路搭建好了,在Ubuntu端控制采集卡发送数据,用wireshark抓包,只能看到采集卡的arp请求发了4个,不能看到来自采集卡的数据
分析:是哪方面出了问题?交换机?Ubuntu网卡设置?
回到我之前用的Windows主机,建立这样一个数据连接流向
采集卡万兆网口 -> 10GE1/0/1 -> 10GE1/0/3 -> Windows电脑10G网口
然后用wireshark抓包,Windows主机能正常接收到数据
访问交换机,能看到10GE1/0/1 in方向统计的jumbo(巨型帧)的数量,能看到10GE1/0/3 out方向统计的jumbo
但是回到Ubuntu主机再次测试,wireshark抓包无数据,访问交换机,发现10GE1/0/1 in方向根本没有jumbo输入,也就是说采集卡根本没发送数据
分析原因:为什么采集卡没发送,因为采集卡有个arp的过程,这个arp的过程没有完成,导致数据发不出去
然后我首先怀疑的是Ubuntu电脑的网络配置是否有问题,问了一下AI,AI提到了防火墙,禁用了防火墙依旧无效,然后我手动添加了arp表,加了一个Ubuntu对采集卡的arp映射,依旧无效(后面证明这一步不但无效,还会导致新的错误)
在Ubuntu方面折腾很久都无效,转向交换机方面查看问题
注意到,之前我配置交换机端口时我向AI描述了我的需求(采集卡数据10GE进100GE出),参考了AI的建议,将100GE1/0/1配置为trunk模式,然后我自己搜索了一下,发现这个trunk模式好像不符合现在的网络结构
意识到我可能被AI坑了,然后又将100GE1/0/1配置为Access模式,然后测试
能看到来自采集卡的arp请求一直在发送(和之前有变化),但是Ubuntu一直没有发送arp响应,有点奇怪,怀疑是之前手动添加了arp映射的原因,然后将手动添加的arp映射删除,再次测试
这次能看到采集卡发送arp请求后主机发送arp响应,然后采集卡流程跑通发送数据,Ubuntu成功接收到数据
事后分析下原因,错误点有2:
轻信了AI,交换机端口配置有问题,trunk模式应该是适配于三层vlan结构,也就是说是两个vlan之间的数据交互的,我这个就是一个vlan,只用access模式就可以了
手动加了arp映射反而导致出错,好像是因为没有这个arp映射的话,主机收到arp请求后会先记录这条arp请求的信息到自己的arp表中,然后再发送一个arp响应,手动设置的话反而会忽略这个arp请求
本文章使用limfx的vscode插件快速发布