计算BDP值和wnd值

计算BDP值和wnd值

    • 背景
    • BDP值算法
    • sndwnd和rcvwnd算法
    • 使用python计算窗口值

背景

优化网络,需要调节wnd窗口值的最佳值.但是找来找去却没有特别好理解的算法.给出的示例和自己计算的结果完整对不上.爆肝了几晚,终于把BDP窗口值的计算方法搞明白了,配之后网络效率确实得到了提升.
发此博文希望能帮助小白理解计算过程,帮助到有需要的人.


BDP值算法

参考: https://docs.oracle.com/cd/E56344_01/html/E53803/gnkor.html
BDP简介:
带宽延迟乘积 (bandwidth delay product, BDP)

计算方法:
Bandwidth-Delay Product = delay * bandwidth

带宽延迟乘积 = 延时 * 带宽

BDP = 宽带_字节_B * 延时_s


sndwnd和rcvwnd算法

sndwnd是发送窗口,对应上传;
rcvwnd是接收窗口,对应下载.

计算方法:
窗口值_字节_B = BDP / MTU


使用python计算窗口值

即使给出计算方法,第一次算也会绕的头晕,干脆直接写了python脚本,有需要的拿去直接计算吧.我个人认为注释写的还算清楚,希望需要的人能看懂哈.

"""
参考公式:
BDP = 宽带_字节_B * 延时_s
窗口值_字节_B = BDP / MTU
"""

def wnd(带宽_兆比特_Mbit, 延时_s, MTU):
    """
    # 计算窗口值_字节_B
    :param 带宽_兆比特_Mbit: 传入带宽值(小b)
    :param 延时_s: 传入延时(s)
    :param MTU: 掺入mtu值(一般是1400)
    :return:  返回计算出的窗口值_字节_B
    """
    # 128 = 1024 / 8  # kBtye换算Mbit的值是128
    # 宽带_千字节_kBtye = 带宽_兆比特_Mbit * 128
    宽带_千字节_kBtye = 带宽_兆比特_Mbit * 1024 / 8

    # 宽带_字节_B 和 宽带_千字节_kBtye 的换算单位是1024
    宽带_字节_B = 宽带_千字节_kBtye * 1024
    BDP = 宽带_字节_B * 延时_s
    # 窗口值_字节_B的单位是字节_B
    窗口值_字节_B = BDP / MTU
    print(f"BDP值是:{int(BDP)}")
    print(f"窗口值是:{int(窗口值_字节_B)}")


if __name__ == '__main__':
    带宽_兆比特_Mbit = 500
    延时_s = 0.125
    MTU = 1500
    # 打印窗口值_字节_B
    wnd(带宽_兆比特_Mbit, 延时_s, MTU)

你可能感兴趣的:(网络,BDP,sndwnd)