host1 # mtr host3 --report --report-cycles 30
HOST: host1 Loss% Snt Last Avg Best Wrst StDev 1. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.0 2. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.0 3. x.x.x.x 0.0% 30 174.0 173.9 173.6 174.3 0.2 4. x.x.x.x 0.0% 30 173.9 174.1 173.8 174.3 0.2 5. host3 0.0% 30 174.0 174.0 173.7 174.7 0.2host2 # iperf -t 60 -xC -c host4 -p 5001 -P16 & (~600mbit)
host1 # mtr host3 --report --report-cycles 30
HOST: host1 Loss% Snt Last Avg Best Wrst StDev 1. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.0 2. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.0 3. x.x.x.x 3.3% 30 329.4 334.3 315.3 387.8 16.4 4. x.x.x.x 6.7% 30 326.9 321.6 315.4 327.5 4.7 5. host3 13.3% 30 315.6 337.9 315.5 439.3 26.1host2 # tc qdisc
qdisc fq 8004: dev eth0 root refcnt 3 limit 10000p flow_limit 100p buckets 1024 quantum 3028 initial_quantum 15140
host2 # sysctl net.ipv4.tcp_congestion_controlnet.ipv4.tcp_congestion_control = bbrHi,I have been doing some tests of BBR between our sites (e.g. London - Vancouver) across our VPN tunnels which traverse various fixed routers and firewalls (ours+ISP). The tests showed that BBR was much better than CUBIC at maintaining consistent and steady high throughput with only ~10 threads of iperf (yay!). But it also seems to adversely effect any other traffic traversing the WAN tunnels once we start to approach the capacity of the link (~700mbit). This can be seen as increased ping times and packet loss between various hosts.My (limited) understanding is that BBR should also see this increased latency(+loss) and back off appropriately to try and ensure that it remains consistent over time. So the other (cubic) streams outside of BBR's view should also continue to experience low latency+loss?So say that host1 & host2 are on one side of the WAN link and host3 & host4 the other, then the normal (reproducible) ping/loss looks like:host1 # mtr host3 --report --report-cycles 30
HOST: host1 Loss% Snt Last Avg Best Wrst StDev1. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.02. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.03. x.x.x.x 0.0% 30 174.0 173.9 173.6 174.3 0.24. x.x.x.x 0.0% 30 173.9 174.1 173.8 174.3 0.25. host3 0.0% 30 174.0 174.0 173.7 174.7 0.2
But once we run an iperf using BBR between host2 & host4 (same WAN link, different client/server):host2 # iperf -t 60 -xC -c host4 -p 5001 -P16 & (~600mbit)
host1 # mtr host3 --report --report-cycles 30HOST: host1 Loss% Snt Last Avg Best Wrst StDev1. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.02. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.03. x.x.x.x 3.3% 30 329.4 334.3 315.3 387.8 16.44. x.x.x.x 6.7% 30 326.9 321.6 315.4 327.5 4.75. host3 13.3% 30 315.6 337.9 315.5 439.3 26.1The increased loss+latency is seen between the iperf hosts (host2 & host4) too while the iperf is running. We can also fill the capacity of the link with cubic streams (we require many more iperf streams though) and we don't see any adverse effects on the independent flows between other hosts. Also, I can only achieve around 60mbit with a single BBR stream over our WAN and need ~16 streams to saturate the ~700mbit capacity.
host2 just has a simple default fq configuration:host2 # tc qdisc
qdisc fq 8004: dev eth0 root refcnt 3 limit 10000p flow_limit 100p buckets 1024 quantum 3028 initial_quantum 15140
host2 # sysctl net.ipv4.tcp_congestion_controlnet.ipv4.tcp_congestion_control = bbr
I also noticed that there were quite a lot of retransmits (~8%) when saturating the WAN link with BBR streams. Adding a maxrate to the fq qdisc seemed to help both reduce the retransmits and the loss+latency effects but it did not entirely fix it.Maybe I am seeing similar things to Lawrence Brakmo in his "BBR Report" topic (shallow buffered paths)? I tried the patch in that group discussion but I didn't see any noticeable improvement in latency or loss with the iperf test over our infrastructure.Regards,Daire
--
You received this message because you are subscribed to the Google Groups "BBR Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On Tue, Jun 6, 2017 at 8:15 AM, Daire Byrne <daire...@gmail.com> wrote:So say that host1 & host2 are on one side of the WAN link and host3 & host4 the other, then the normal (reproducible) ping/loss looks like:host1 # mtr host3 --report --report-cycles 30
HOST: host1 Loss% Snt Last Avg Best Wrst StDev1. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.02. x.x.x.x 0.0% 30 0.2 0.1 0.1 0.2 0.03. x.x.x.x 0.0% 30 174.0 173.9 173.6 174.3 0.24. x.x.x.x 0.0% 30 173.9 174.1 173.8 174.3 0.25. host3 0.0% 30 174.0 174.0 173.7 174.7 0.2To double check: host1 uses Cubic?
But once we run an iperf using BBR between host2 & host4 (same WAN link, different client/server):host2 # iperf -t 60 -xC -c host4 -p 5001 -P16 & (~600mbit)
host1 # mtr host3 --report --report-cycles 30HOST: host1 Loss% Snt Last Avg Best Wrst StDev1. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.02. x.x.x.x 0.0% 30 0.1 0.1 0.1 0.2 0.03. x.x.x.x 3.3% 30 329.4 334.3 315.3 387.8 16.44. x.x.x.x 6.7% 30 326.9 321.6 315.4 327.5 4.75. host3 13.3% 30 315.6 337.9 315.5 439.3 26.1The increased loss+latency is seen between the iperf hosts (host2 & host4) too while the iperf is running. We can also fill the capacity of the link with cubic streams (we require many more iperf streams though) and we don't see any adverse effects on the independent flows between other hosts. Also, I can only achieve around 60mbit with a single BBR stream over our WAN and need ~16 streams to saturate the ~700mbit capacity.Regarding the single flow limit at 60mbit: the culprit could be insufficient receiver window or snd buffer. What are the wmem[2] on the sender (host1,host2) and rmem[2] on the receiver (host3,host4)? sysctl net.ipv4.tcp_{w|r}mem should return the answer.
if you are running 4.9+ kernel and latest iproute2/ss utility, ss -i reports that how often a flow has suffered rwin-limit directly.
host2 # iperf -t 60 -xC -c host4 -p 5001 -P1 &
host2 # ss --info 'dst host4'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 16374544 host2:54914 host4:commplex-link bbr wscale:9,9 rto:377 rtt:176.461/1.619 mss:1372 rcvmss:536 advmss:1448 cwnd:10903 bytes_acked:1716973245 segs_out:1276058 segs_in:480885 data_segs_out:1276056 bbr:(bw:341.8Mbps,mrtt:173.574,pacing_gain:1,cwnd_gain:2) send 678.2Mbps lastsnd:1 lastrcv:53609 lastack:4 pacing_rate 354.7Mbps delivery_rate 68.9Mbps busy:53609ms rwnd_limited:6285ms(11.7%) unacked:3365 retrans:0/21202 reordering:108 rcv_space:29200 notsent:11758040 minrtt:173host2 # iperf -t 60 -xC -c host4 -p 5001 -P16 &host2 # ss --info 'dst host4'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 5125792 host2:54962 host4:commplex-link bbr wscale:9,9 rto:378 rtt:177.979/0.737 mss:1372 rcvmss:536 advmss:1448 cwnd:660 bytes_acked:112737277 segs_out:95073 segs_in:45137 data_segs_out:95071 bbr:(bw:20.6Mbps,mrtt:173.777,pacing_gain:1,cwnd_gain:2) send 40.7Mbps lastsnd:1 lastrcv:58721 lastack:2 pacing_rate 21.4Mbps delivery_rate 20.4Mbps busy:58721ms rwnd_limited:2546ms(4.3%) unacked:331 retrans:0/12558 rcv_space:29200 notsent:4671660 minrtt:173host1 # iperf -t 60 -xC -c host3 -p 5001 -P16 &host1 # ss --info 'dst host3'
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 1267728 host1:55648 host3:commplex-link cubic wscale:10,9 rto:377 rtt:176.268/0.951 mss:1372 rcvmss:536 advmss:1448 cwnd:235 ssthresh:199 bytes_acked:118352873 segs_out:86564 segs_in:32679 data_segs_out:86562 send 14.6Mbps lastsnd:1 lastrcv:58209 lastack:1 pacing_rate 17.6Mbps delivery_rate 14.5Mbps busy:58209ms rwnd_limited:550ms(0.9%) unacked:234 retrans:0/60 rcv_space:29200 notsent:946680 minrtt:173--
host2 # tc qdisc replace dev eth0 handle 1: root htb default 1
host2 # tc class add dev eth0 parent 1: classid 1:1 htb rate 450mbit
host2 # tc qdisc add dev eth0 parent 1:1 handle 10: fqTo unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+u...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+unsubscribe@googlegroups.com.
tcp ESTAB 0 18906426 10.27.20.36:47074 10.21.20.41:commplex-link
bbr wscale:9,9 rto:353 rtt:152.429/1.302 mss:1386 rcvmss:536 advmss:1448 cwnd:1814 bytes_acked:63111547 segs_out:52781 segs_in:11070 data_segs_out:52778 bbr:(bw:134.8Mbps,mrtt:142.717,pacing_gain:1,cwnd_gain:2) send 132.0Mbps lastsnd:1 lastrcv:4869 lastack:2 pacing_rate 139.8Mbps delivery_rate 128.2Mbps busy:4869ms rwnd_limited:500ms(10.3%) unacked:2831 retrans:52/4409 lost:52 sacked:1020 reordering:300 rcv_space:29200 notsent:14982660 minrtt:142tcp ESTAB 0 1765764 10.21.20.41:43976 10.27.20.36:commplex-link
bbr wscale:9,9 rto:361 rtt:160.793/2.839 mss:1386 rcvmss:536 advmss:1448 cwnd:268 bytes_acked:2795599 segs_out:2061 segs_in:1021 data_segs_out:2059 bbr:(bw:10.1Mbps,mrtt:142.324,pacing_gain:1.25,cwnd_gain:2) send 18.5Mbps lastsnd:7 lastrcv:4963 lastack:6 pacing_rate 13.2Mbps delivery_rate 2.6Mbps busy:4963ms unacked:41 rcv_space:29200 notsent:1708938 minrtt:142.324