レイテンシーがかなり高いサイト(250-300msec)にファイル転送をするテストを色々とやっているのですが、輻輳制御アルゴリズムをbbrに変更することで速度が設定前と比べるとそれなりにあがったので(とはいっても30-50Mbps程度にですが)、rsyncをssh越えで使ってみました。環境はローカル・リモートともにDebian 12です。
まず、輻輳制御アルゴリズムの設定ですが、/etc/sysctl.confに以下を追加し、sysctl -p で反映させます。
まず、輻輳制御アルゴリズムの設定ですが、/etc/sysctl.confに以下を追加し、sysctl -p で反映させます。
net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbrつづいて、rsyncですがまず、上り(upload)を実行してみました。
someuser@mymachine:~$ rsync -Pav -e "ssh -i $HOME/.ssh/id_ed25519" someuser@high-latency-site.example.com:~/test-trans test-trans receiving incremental file list created directory test-trans test-trans/ test-trans/128MB.file 134,217,728 100% 4.17MB/s 0:00:30 (xfr#1, to-chk=8/10) test-trans/16MB.file 16,777,216 100% 3.24MB/s 0:00:04 (xfr#2, to-chk=7/10) test-trans/1MB.file 1,048,576 100% 1.24MB/s 0:00:00 (xfr#3, to-chk=6/10) test-trans/256MB.file 268,435,456 100% 4.21MB/s 0:01:00 (xfr#4, to-chk=5/10) test-trans/2MB.file 2,097,152 100% 1.55MB/s 0:00:01 (xfr#5, to-chk=4/10) test-trans/32MB.file 33,554,432 100% 4.28MB/s 0:00:07 (xfr#6, to-chk=3/10) test-trans/4MB.file 4,194,304 100% 3.34MB/s 0:00:01 (xfr#7, to-chk=2/10) test-trans/64MB.file 67,108,864 100% 4.51MB/s 0:00:14 (xfr#8, to-chk=1/10) test-trans/8MB.file 8,388,608 100% 4.69MB/s 0:00:01 (xfr#9, to-chk=0/10) sent 199 bytes received 535,953,773 bytes 4,203,560.56 bytes/sec total size is 535,822,336 speedup is 1.00下りは以下のようになりました。
someuser@mymachine:~$ rsync -Pav -e "ssh -i $HOME/.ssh/id_ed25519" test-trans someuser@high-latency-site.example.com:~/test-trans sending incremental file list created directory /root/test-trans test-trans/ test-trans/test-trans/ test-trans/test-trans/128MB.file 134,217,728 100% 5.12MB/s 0:00:24 (xfr#1, to-chk=8/11) test-trans/test-trans/16MB.file 16,777,216 100% 6.99MB/s 0:00:02 (xfr#2, to-chk=7/11) test-trans/test-trans/1MB.file 1,048,576 100% 3.64MB/s 0:00:00 (xfr#3, to-chk=6/11) test-trans/test-trans/256MB.file 268,435,456 100% 5.47MB/s 0:00:46 (xfr#4, to-chk=5/11) test-trans/test-trans/2MB.file 2,097,152 100% 2.66MB/s 0:00:00 (xfr#5, to-chk=4/11) test-trans/test-trans/32MB.file 33,554,432 100% 5.20MB/s 0:00:06 (xfr#6, to-chk=3/11) test-trans/test-trans/4MB.file 4,194,304 100% 3.66MB/s 0:00:01 (xfr#7, to-chk=2/11) test-trans/test-trans/64MB.file 67,108,864 100% 4.54MB/s 0:00:14 (xfr#8, to-chk=1/11) test-trans/test-trans/8MB.file 8,388,608 100% 4.60MB/s 0:00:01 (xfr#9, to-chk=0/11) sent 535,953,811 bytes received 238 bytes 5,280,335.46 bytes/sec total size is 535,822,336 speedup is 1.00bbrにする前は大体2MB/s程度だったので2倍から3倍程度まで速度があがりました。 ちなみにpingは以下のようになっています。
ping high-latency-site.example.com -c 8 PING high-latency-site.example.com(2001:db8:280:1:100::2 (001:db8:280:1:100::2)) 56 data bytes 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=1 ttl=48 time=246 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=2 ttl=48 time=241 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=3 ttl=48 time=238 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=4 ttl=48 time=312 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=5 ttl=48 time=237 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=6 ttl=48 time=237 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=7 ttl=48 time=238 ms 64 bytes from 2001:db8:280:1:100::2 (2001:db8:280:1:100::2): icmp_seq=8 ttl=48 time=238 ms --- high-latency-site.example.com ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7001ms rtt min/avg/max/mdev = 237.305/248.528/312.070/24.162 ms高レイテンシーかつジッターの大きなサイトに対してbbrはlinuxでは有効なんだなと思いました。なおwindows11でも結果はよくなりました。windowsでbbr(bbr2)を有効にするには管理者権限で以下のようにします。
netsh int tcp set supplemental Template=Internet CongestionProvider=bbr2 netsh int tcp set supplemental Template=Datacenter CongestionProvider=bbr2 netsh int tcp set supplemental Template=Compat CongestionProvider=bbr2 netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=bbr2 netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr2もとに戻す場合は以下のようにします。
netsh int tcp set supplemental Template=Internet CongestionProvider=cubic netsh int tcp set supplemental Template=Datacenter CongestionProvider=cubic netsh int tcp set supplemental Template=Compat CongestionProvider=newreno netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=cubic netsh int tcp set supplemental Template=InternetCustom CongestionProvider=cubic今回は以上です。それでは。
コメント
コメントを投稿