我是网络管理新手,有个问题。我正在研究是否可以使用遗传算法方法进行 TCP 调整。为此,我编写了一个 Python 程序,该程序采用一组参数并使用遗传算法对其进行迭代。设置每组参数后,我使用 iperf 实用程序检查速度。但是,速度最终并没有提高。我做错了什么?
这是程序改变的一组参数和遗传算法针对每个参数尝试的一组值。
'net.ipv4.tcp_app_win' : (0, 31),
'net.ipv4.tcp_window_scaling': [0, 1],
'net.ipv4.tcp_congestion_control' : ['reno', 'cubic', 'htcp'],
'net.ipv4.tcp_no_metrics_save' : [0, 1],
'net.core.netdev_max_backlog' : (1000, 10000),
'net.ipv4.tcp_timestamps' : [0, 1],
'net.core.rmem_max': (4096, 16777216),
'net.core.wmem_max': (4096, 16777216),
'net.core.rmem_default': (4096, 16777216),
'net.core.wmem_default': (4096, 16777216),
'net.ipv4.tcp_rmem' : [4096 ,131072, 5912352],
'net.ipv4.tcp_wmem' : [4096 ,131072, 5912352],
'net.ipv4.tcp_sack' : [0, 1],
'net.ipv4.tcp_dsack' : [0, 1],
'net.ipv4.tcp_fack' : [0, 1],
'net.ipv4.tcp_fastopen' : [1, 2, 4],
'net.ipv4.tcp_slow_start_after_idle': [0, 1],
'net.ipv4.tcp_keepalive_time' : (60, 7200),
'net.ipv4.tcp_keepalive_intvl' : (1, 75),
'net.ipv4.tcp_keepalive_probes' : (1, 9),
'net.core.netdev_max_backlog' : [1000, 5000],
'net.ipv4.tcp_max_syn_backlog' : (256, 300000),
'net.core.somaxconn' : (1024, 30000),
'net.ipv4.tcp_fin_timeout' : (10, 60),
'net.ipv4.tcp_syncookies' : [0, 1],
'net.ipv4.tcp_tw_reuse' : [0, 1],
'tcp_moderate_rcvbuf' : [0, 1],
'net.ipv4.tcp_synack_retries' : (1, 5),
'net.ipv4.tcp_max_orphans' : [512, 1024, 2048, 4096]
我还要指出的是。假设根据结果我得到了一组相当好的参数值,iperf 中的网络带宽为每秒 500 兆字节。如果我再次根据这组值测试带宽,带宽值会发生变化,有时变化很大。有没有办法进行更明确的测试?