linux TxBytes RxBytes 探究

测试平台 :NXP LS1043A  ARM64  

内核版本:

 两台设备通过网口eth2 对接。设备1发包,设备2收包,观察两设备 TX  RX 包数、字节数。

1、准备数据包

流量仪设置包长1024, 抓取从流量仪发包,wireshark显示length = 1020字节。

1020 bytes on wire,并不是1024,可能流量仪的问题?  先用1020包长吧!

2、设备1 发包: 

包数 22964 * 包长1020 = 23423280 bytes

抓包同时 使用 tcpdump 观察: 

1020 – 14 = 1006 ,这14字节应该是就是 源地址,目的MAC地址,应该是tcpdump 显示的长度未包括这14字节。

3、设备2 收包: 

 

 收到:包数 22964 * (1020 – 14) = 23101784

少的14字节应该是就是源地址,目的MAC地址没有计算进RX bytes

 使用tcpdump 查看收包情况

驱动里实际计数情况:

4、结论

关于 TX RX Packets  不管收发,只要没有发生丢包,发端,收端都是一致的。

关于 TX RX Bytes 设备发包时,会将 源、目的MAC地址等14字节的信息计算上,而收包时,不会在 RxBytes上体现。

这也就能解释了 ,使用内核转发时,eth8收包,eth7发包,使用 sar -n DEV 1 1 命令查看网速,

txpck/s  rxpck/s 收发速率是对得上的,但是rxKB/s 比 txKB/s  少很多,是什么原因呢?来计算一下

 rxKB/s 相比于 txKB/s ,每个包会少计算 14Bytes的MAC地址信息,

(收包速度 267926 )* 14 / 1024 = 3663KB     

3663KB    + rxKB/s 12035  =  15698 txKB/s

5、X86 CPU 在该情况下 收包情况

 X86收包 RxBytes = 包数 22964* (1020 + 4 )= 23515136

看来 X86下 收包的是会将 14字节的 MAC地址信息,还有4字节的其它信息 记录到 RxBytes.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值