📜  TCP 公平措施

📅  最后修改于: 2022-05-13 01:56:17.677000             🧑  作者: Mango

TCP 公平措施

公平度量是一个很好的工具,可以确定所有 TCP 流是否都获得了可用网络带宽的公平份额。有多种可用的传输层协议,TCP 公平性要求新的 TCP 协议不应影响其他可用协议的性能或 TCP 本身的变化。假设网络中有 5 个流,1 个 TCP Cubic、1 个 Reno、1 个 NewReno、1 个 UDP 和 1 个 BBR。可用网络带宽为 10 MBPS。理想情况下,所有这 5 个流必须共享相同的带宽,即 2 MBPS。但是,BBR 需要 3 MBPS,Reno 和 NewReno 需要 2 MBPS,CUBIC 需要 1 MBPS,UDP 需要 3 MBPS。在这种情况下,BBR 正在影响其他 TCP 流,即 Cubic。 TCP BBR 和 Cubic 使用的网络带宽之比是 3:1,在公平的情况下应该是 1:1。文献中有许多公平措施。

TCP公平度量的需要:

自互联网诞生以来,传输协议已经发生了重大变化。最初的 RFC 793 是一个非常基本的 TCP 协议。今天,文献中存在 100 多种 TCP 协议。不同的设备使用自己选择的 TCP 协议。公平度量的主要目的是检查新设计的 TCP 协议与其他现有 TCP 的兼容性。当这个新设计的、正在测试的 TCP 在同一网络上使用时,公平性是其他 TCP 的相对性能。如果其他 TCP 流的性能没有因为这个新 TCP 而受到损害,那么它被认为是好的。然后将测试其新的优化和新功能,然后仅考虑其优于其他 TCP 的潜力。如果一个新的 TCP 严重伤害了其他流,那么在我们的设备中使用该协议没有任何好处,因为它会严重伤害其他流。这就是为什么公平测量对于认证任何新设计的 TCP 至关重要的原因。

存在一个非常流行的公平指数,称为 Raj Jain 公平指数。

耆那教公平指数

该指数由 IISC 和哈佛大学的校友 Raj Jain 提出。目前,他是华盛顿大学 CSE 教授。

 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's Index 采用所有节点的总吞吐量,它没有考虑它们的时间序列吞吐量。

假设有两个 TCP 流 F1 和 F2。带宽为 10 MBPS,连接保持活动状态 100 秒。

For first 50 seconds, F1: 8 MBPS and F2: 2 MBPS
For next 50 seconds,  F1: 2 MBPS and F2: 8 MBPS,
[Jain's index takes the average throughput of both the TCP flows] 
Hence T1=T2=5 MBPS, where T= Throughput
J(F1, F2) = (25/25) = 1

在这种情况下,Index 为 1,这意味着两个流在整个持续时间内都获得了相等/公平的带宽份额,但事实并非如此。如果我们绘制吞吐量的时间序列图,那么它将完全不同。这是 Jain's Index 的限制,因此 BBR 未能成为标准 RFC,导致此积压。

最大最小公平

这不是衡量指标,而是保证公平的算法。该算法保证了网络的公平性。

算法:

  1. 这是可逆的。
  2. 计算每个未满足的流量的公平份额。
  3. 将公平份额分配给每个未满足的流。
  4. 如果某个节点的分配超过其要求,则称为过度分配。
  5. 收回所有超额分配的股份,这称为剩余金额。
  6. 将此剩余金额再次分配给未满足的流量。

考虑在总可用带宽为 12 MBPS 的瓶颈链路上有 4 个流。

最大最小公平

最大最小公平

这些流量的需求是 A=2.4, B=3, C=4, D=5 MBPS。

第 1 步:所有 4 个流的公平份额为 = 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

因此,所有 4 个流都获得了最大可能的份额。流 A 和 B 得到满足,而 C 和 D 不满足。

如果网络强制执行最大最小公平,那么它可以惩罚那些传输超过最高分配份额的流。假设流 C 和 D 是 UDP,因此接收方没有收到 ACK。他们继续向网络发送 4 和 5 MBPS 数据包。网络分配给它们的最大共享为 3.3 MBPS。因此,

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

最大最小公平性有一个优点。如果网络强制执行这种公平性,则不会中断任何流,否则,它将丢弃不良流网络的数据包。因此,这些流量将无法伤害其他表现良好的流量。

其他公平措施:

QoE 公平:它代表体验质量。它被定义为线性变换函数。 F= 1 − \frac{2σ}{(H−L)}   .当所有 N 个用户获得相同的 QoE 值时,系统被称为绝对公平。它不是在比率尺度上测量的。它用于区间尺度。该索引绑定在区间 [0-1] 内。 0 表示最低的 QoE。 1 表示完美的 QoE 公平性。 0.5 值表示一半用户获得 0 QoE,另一半用户获得 1 QoE。

G 的公平指数:这个公平指数基本上是互联网服务提供商在带宽分配的情况下使用的。 G 的 k公平指数为: f(x) = sin(xπ/2)^{1/k}

与 Jain 的指数相比,G 的指数给出的值更小。较小的值对不公平的带宽分配更敏感,它们的值可以变为 0,表示分配非常不公平。 Jain 的指数是一个非常平均的指数,而 G 的指数更侧重于平等。

例如:

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

因此,Jain 的指数非常模糊,而 G 的指数给出了带宽分配的更具体的细节。