高性能服务系列【六】网络的有效载荷

谈到高性能服务是很难绕开网络部分,毕竟单机时代早已过去。对于多节点构成的服务系统,要提高总体性能,除了单节点足够强悍外,节点之间的通讯代价是必须考虑的关键。我们在刚开始的章节,就谈到网卡和磁盘是挂接在低速南桥芯片上,即使现在网卡速度已经非常快了。

在网络部分,我们通常是基于TCP/IP协议栈。现在虽然有很多变种和扩展,但仍然是基础。在采取提高性能措施之前,需要能清晰计算出网络的极限性能是多少。

网卡制造商通常会标注网卡的带宽或者网速是多少,比如1Gb/s。在早期,单位是1Kb等于1000比特,不是程序员认为的1024比特,不知道现在还不是这个德性。我们就假设1Gb/S为每秒2^30比特,不影响计算公式。

首先要确认下,网卡标注的是物理层比特流速度,并不是网络层的网速。以最常用的以太网帧协议来讲解,一个以太网帧,包括7个字节的前导字节,1个字节的帧开始定界符,64字节<-->1518字节的链路层报文,最后再附带上12个字节帧间距。所以,对于任何一个以太网帧,有个最小的帧尺寸:7 + 1 +64 + 12=84字节,这个最小尺寸就决定了在网络上每秒传输最多的次数,PPS。这个数字非常重要,决定了吞吐量和延迟的上限。

其次,在链路层的字节数范围是 : 64字节到1518字节,包括6个字节的目标MAC地址,6个字节的源MAC地址,2个字节的类型,最小为46字节,最大为1500个字节的IP包,再加上4个字节的校验码,最小共计64个字节。我们常说的MTU是1500个字节,其实指的IP包。

到这里,我们基本解释清楚了,为什么对于IP包来说,最小是46个字节,最大是1500字节。对于应用层来说,以TCP为例,还要扣去IP头20个字节,TCP头20个固定字节,则最小是6个字节有效载荷,最大是1460个字节。以UDP为例,IP头还是20个字节,UDP头就只有8个字节,比TCP多出了12个字节。

最后做个总结,要计算应用层的有效载荷,先根据网速计算出PPS,再扣去以太网帧,链路层,IP层、TCP层这些固定损耗,就能得出每个数据包最大和最小有效载荷。对于TCP稍微要麻烦点,因为有些ACK包,还有重传包,同样也会消耗掉有效载荷。再结合测试工具iperf之类,就知道真实的有效载荷是多少,更重要的是,知道为什么是这个数值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值