计算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计算窗口值 【网络|计算BDP值和wnd值】即使给出计算方法,第一次算也会绕的头晕,干脆直接写了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)
推荐阅读
- 网络|测试UDP端口连通性
- Docker容器+k8s|Docker网络详解
- 前端|一道面试题牵出12个前端硬核知识点,你知道几个((瀏覽器安全.網絡安全))
- 生活篇|Python pywifi 、Kali linux aircrack-n、Hashcat 【python、kali】破解无线WiFi密码(详细流程)
- 面试准备系列之计算机网络
- 网络|肝完《浏览器基本原理与实践》后,我总结了这 36 点
- 知识积累|浏览器相关及知识积累
- 网络|肝完《浏览器基本原理与实践》的精华分享
- 人工智能|多智能体系统的分布式协同控制——采样控制、脉冲控制、弹性控制