网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

TCP公平性措施

更新时间:2026年03月27日   作者:spoto   标签(Tag):

公平性度量是一种很好的工具,可以用来判断所有TCP数据流是否都能获得其应得的网络带宽份额。 目前有各种传输层协议可供选择。为了实现TCP的公平性,新的TCP协议不应影响其他可用协议的性能,也不应影响TCP本身的性能。 假设一个网络中存在5种传输方式:1种TCP Cubic模式、1种Reno模式、1种NewReno模式、1种UDP模式,以及1种BBR模式。 当前可用的网络带宽为10MBPS。 理想情况下,这5种数据流必须共享相同的带宽。 2MBPS。 不过,BBR的下载速度为3MBPS,Reno和NewReno的下载速度则分别为2MBPS。CUBIC的下载速度为1MBPS,而UDP的下载速度则为3MBPS。 在这种情况下,BBR会影响其他TCP数据流。 立方单位。 TCP BBR和Cubic所使用的网络带宽比例分别为3:1。在正常情况下,这个比例应该是1:1的。 在相关文献中,有许多关于公平性的措施。

需要TCP公平性度量:

自互联网诞生以来,各种传输协议已经发生了显著的变化。 最初的RFC 793其实是一种非常基础的TCP协议。 目前,文献中存在着数百种TCP协议。 不同的设备使用各自选择的TCP协议。 这种公平性评估的主要目的,就是用来检查新设计的TCP协议与其他现有的TCP协议之间的兼容性。 公平性指的是,当使用这种新设计的、正在测试中的TCP协议时,与其他TCP协议的相对性能表现如何。 如果由于这种新的TCP机制,其他TCP流的性能没有受到任何影响的话,那么就可以认为这种机制是有效的。 然后,新的优化措施和新功能将会被进行测试。只有在这些功能能够超越其他TCP协议的情况下,才会考虑将其纳入实际应用。 如果新的TCP协议会对其他数据流造成严重的损害,那么在我们设备中使用这种协议就没有任何好处了,因为它会严重影响到其他数据流。 因此,对任何新设计的TCP进行公平性评估是至关重要的。

存在一个非常受欢迎的公平性指标,它被称为Raj Jain的公平指数。

Jain的公平性指数

这个指数是由 Raj Jain 提出的。Raj Jain 是印度理工学院和哈佛大学的校友。目前,他担任华盛顿大学计算机科学与工程学院的教授。

J(x1, x2, …, xn) = \(\frac{(\sum_{i=1}^{n} x_i)^2}{n\sum_{i=1}^{n} x_i^2}\) = \(\frac{(\bar{x})^2}{(\bar{x}^2}}\)

如果网络中存在 n 个 TCP 流,那么它们的吞吐量分别可以表示为 x1、x2、…、xn。吞吐量指的是在已建立的网络连接中,成功传输的数据包或消息的频率。也可以说,吞吐量就是某个特定节点所使用的带宽大小。Jain指数则根据给定的公式来计算得出。

Jain Index = Square of the sum of all throughputs/
             (N x sum of squares of all throughputs) 
           = Square of average throughput/
             Average of squared throughput

如果……的话J=1那么,实验中使用的TCP与其他TCP流量之间是完全公平的。这意味着TCP不会对其他TCP流量造成任何损害。如今,任何新的TCP算法都需要通过TCP公平性的指标来证明其有效性。而BBR则采用了Jain指数作为衡量公平性的工具,但结果却非常糟糕。Jain指数只是考虑了所有节点的总吞吐量,而没有考虑各个节点在不同时间段的吞吐量情况。

假设存在两个TCP数据流,分别编号为F1和F2。它们的带宽均为10MBPS,且连接持续活跃时间为100秒。

For first 50 seconds, F1: 8 MBPS and F2: 2 MBPS
For next 50 seconds,  F1: 2 MBPS and F2: 8 MBPS,
Jain指数计算的是两个TCP流的平均吞吐量。
Hence T1=T2=5 MBPS, where T= Throughput
J(F1, F2) = (25/25) = 1

在这种情况下,该指数的值为1,这意味着两种流量在整个传输过程中都获得了相等且公平的带宽分配。但实际上并非如此。如果我们绘制出吞吐量的时间序列图,就会发现情况会完全不同。这就是Jain指数的局限性所在。因此,BBR未能成为标准的RFC标准,这也是导致这一问题的原因。

最大最小公平性

这并非一个衡量指标,而是一种确保公平性的算法。该算法能够确保网络中的公平性。

算法:

  1. 这种反应是可以可逆的。
  2. 请计算出每个未得到满足的流量的公平份额。
  3. 将公平份额分配给每一个尚未得到满足的需求。
  4. 如果某个节点被分配的权重超过了其实际所需的权重,那么这种情况就被称为“过度分配”。
  5. 请把所有被超额分配的股份收回来。这被称为“剩余金额”。
  6. 请将这部分剩余金额再次分配给那些尚未得到满足的订单。

假设在瓶颈链接上有4条数据流,而该链接的总可用带宽为12MBPS。

最大-最小公平性

这些流量的需求分别为:A=2.4MBPS,B=3MBPS,C=4MBPS,D=5MBPS。

步骤1:所有四个流量的公平分配份额为:12/4 = 3 MBPS。因此,在开始时,每个流量应分配3 MBPS的带宽。

Flow A: Assigned 3 MBPS, Demand = 2.4, Over-assigned 0.6 MBPS. 
Flow A is completely satisfied.
Flow B: Assigned 3 MBPS, Demand = 3, Completely satisfied.
Flow C: Assigned 3 MBPS, Demand = 4, Unsatisfied
Flow D: Assigned 3 MBPS, Demand = 5, Unsatisfied

步骤2:利用剩余流量,计算出剩余未满足需求的流量所对应的公平份额。

Fair share = 0.6/2 = 0.3
Assign 0.3 MBPS to flow C and D, because they are not yet satisfied
Flow C: Assigned 3.3 MBPS, Demand = 4, Unsatisfied
Flow D: Assigned 3.3 MBPS, Demand = 5, Unsatisfied
Residual amount = 0

因此,这四种流量都获得了尽可能多的份额。A和B这两种流量得到了满足,而C和D这两种流量则没有得到满足。

如果网络能够实施最大-最小公平性原则,那么它就可以对那些传输速率超过其被分配的最大速率的流量进行惩罚。假设流量C和D属于UDP类型的数据流,因此接收端无法收到它们的ACK信号。它们仍然继续向网络中发送4和5MBPS的数据包。而网络分配给它们的上限速率是3.3MBPS。因此,那些传输速率超过上限的流量将会受到惩罚。

discard 4 - 3.3 = 0.7 MBPS from flow C
discard 5 - 3.3 = 1.7 MBPS from flow D

最大最小公平性有一个优点。如果网络能够确保这种公平性,那么就不会有任何流量受到干扰;否则,网络就会丢弃那些表现不佳的流量的数据包。这样一来,这些流量就不会对其他表现良好的流量造成负面影响了。

其他公平措施:

QoE公平性:它代表着“体验质量”。其定义是:线性变换函数。F = 1 – 2σ / (H−L)。当一个系统中所有的用户都获得相同的QoE值时,这个系统可以被认为是绝对公平的。这种公平性并不是通过比率来衡量的,而是通过区间来表示的。该指数的取值范围在[0, 1]之间。0表示最低的QoE值;1则表示完美的公平性。而0.5则意味着一半的用户获得0的QoE值,另一半用户则获得1的QoE值。

G的公平性指数:这个公平性指数通常被互联网服务提供商在带宽分配的过程中使用。G的第k阶公平性指数可以表示为:f(x) = sin(xπ/2)^{1/k}

与Jain指数相比,G指数所给出的数值较小。较小的数值意味着对不公平的网络带宽分配更为敏感,其数值甚至可能降为零,这表明分配结果极其不公平。而Jain指数则是一种较为平均的指数,而G指数则更注重公平性的体现。

例如:

distribution: {20, 20, 20, 0}
Jain's index = 0.75
G's index = 0

因此,Jain的指数具有很大的模糊性,而G的指数则能提供更具体的带宽分配信息。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料