Code: Select all
GPON ONT (syncs at 1Gbps, symmetric)
|
|- Unifi DreamMachine Pro (1Gbps) - acting as PPPoE client
The problem with this was sporadic packet loss, ISP connection drops, etc.
I have since introduced a MikroTik RB2011UAS into the network chain, which is acting as the PPPoE client. The connection is now stable with almost no packet loss:
The problem now is that the WAN throughput is highly variable and can be as much as 20x lower.
BEFORE, GPON ONT -> UDM Pro (PPPoE) -> Linux host
Code: Select all
root@linux-host:~# iperf3 -c w.gerhard.io
Connecting to host w.gerhard.io, port 5201
[ 5] local 192.168.1.11 port 48876 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 93.8 MBytes 787 Mbits/sec 0 3.10 MBytes
[ 5] 1.00-2.00 sec 110 MBytes 923 Mbits/sec 17 1.54 MBytes
[ 5] 2.00-3.00 sec 106 MBytes 891 Mbits/sec 1 1.63 MBytes
[ 5] 3.00-4.00 sec 109 MBytes 912 Mbits/sec 0 1.68 MBytes
[ 5] 4.00-5.00 sec 109 MBytes 912 Mbits/sec 0 1.73 MBytes
[ 5] 5.00-6.00 sec 110 MBytes 923 Mbits/sec 0 1.77 MBytes
[ 5] 6.00-7.00 sec 110 MBytes 923 Mbits/sec 0 1.82 MBytes
[ 5] 7.00-8.00 sec 109 MBytes 912 Mbits/sec 0 1.86 MBytes
[ 5] 8.00-9.00 sec 111 MBytes 933 Mbits/sec 0 1.90 MBytes
[ 5] 9.00-10.00 sec 110 MBytes 923 Mbits/sec 0 1.94 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.05 GBytes 904 Mbits/sec 18 sender
[ 5] 0.00-10.04 sec 1.05 GBytes 899 Mbits/sec receiver
root@linux-host:~# iperf3 -c w.gerhard.io -R
Connecting to host w.gerhard.io, port 5201
Reverse mode, remote host w.gerhard.io is sending
[ 5] local 192.168.1.11 port 48880 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 104 MBytes 876 Mbits/sec
[ 5] 1.00-2.00 sec 111 MBytes 928 Mbits/sec
[ 5] 2.00-3.00 sec 111 MBytes 933 Mbits/sec
[ 5] 3.00-4.00 sec 107 MBytes 894 Mbits/sec
[ 5] 4.00-5.00 sec 112 MBytes 936 Mbits/sec
[ 5] 5.00-6.00 sec 111 MBytes 934 Mbits/sec
[ 5] 6.00-7.00 sec 111 MBytes 934 Mbits/sec
[ 5] 7.00-8.00 sec 111 MBytes 934 Mbits/sec
[ 5] 8.00-9.00 sec 110 MBytes 921 Mbits/sec
[ 5] 9.00-10.00 sec 111 MBytes 928 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 1.08 GBytes 921 Mbits/sec 3 sender
[ 5] 0.00-10.00 sec 1.07 GBytes 922 Mbits/sec receiver
AFTER, GPON ONT -> RB2011UAS (PPPoE) -> UDM Pro -> Linux host
Code: Select all
root@linux-host:~# iperf3 -c w.gerhard.io
Connecting to host w.gerhard.io, port 5201
[ 5] local 192.168.1.11 port 49414 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 7.97 MBytes 66.8 Mbits/sec 1 113 KBytes
[ 5] 1.00-2.00 sec 9.68 MBytes 81.2 Mbits/sec 1 114 KBytes
[ 5] 2.00-3.00 sec 9.56 MBytes 80.2 Mbits/sec 0 165 KBytes
[ 5] 3.00-4.00 sec 13.1 MBytes 109 Mbits/sec 1 151 KBytes
[ 5] 4.00-5.00 sec 10.1 MBytes 84.3 Mbits/sec 1 145 KBytes
[ 5] 5.00-6.00 sec 11.8 MBytes 98.7 Mbits/sec 1 192 KBytes
[ 5] 6.00-7.00 sec 15.0 MBytes 125 Mbits/sec 1 170 KBytes
[ 5] 7.00-8.00 sec 11.0 MBytes 92.5 Mbits/sec 2 110 KBytes
[ 5] 8.00-9.00 sec 6.99 MBytes 58.6 Mbits/sec 1 127 KBytes
[ 5] 9.00-10.00 sec 9.99 MBytes 83.8 Mbits/sec 1 128 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 105 MBytes 88.1 Mbits/sec 10 sender
[ 5] 0.00-10.04 sec 104 MBytes 86.8 Mbits/sec receiver
root@linux-host:~# iperf3 -c w.gerhard.io -R
Connecting to host w.gerhard.io, port 5201
Reverse mode, remote host w.gerhard.io is sending
[ 5] local 192.168.1.11 port 49430 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 60.0 MBytes 503 Mbits/sec
[ 5] 1.00-2.00 sec 28.6 MBytes 240 Mbits/sec
[ 5] 2.00-3.00 sec 23.2 MBytes 195 Mbits/sec
[ 5] 3.00-4.00 sec 21.0 MBytes 176 Mbits/sec
[ 5] 4.00-5.00 sec 22.5 MBytes 189 Mbits/sec
[ 5] 5.00-6.00 sec 20.4 MBytes 171 Mbits/sec
[ 5] 6.00-7.00 sec 22.8 MBytes 192 Mbits/sec
[ 5] 7.00-8.00 sec 19.9 MBytes 167 Mbits/sec
[ 5] 8.00-9.00 sec 23.4 MBytes 196 Mbits/sec
[ 5] 9.00-10.00 sec 26.5 MBytes 222 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 272 MBytes 227 Mbits/sec 619 sender
[ 5] 0.00-10.00 sec 268 MBytes 225 Mbits/sec receiver
This is the full network layout used for iperf3 testing:
Code: Select all
|- w.gerhard.io (2.5Gbps) - public iperf3 server
|
GPON ONT (syncs at 1Gbps, symmetric)
|
|- MikroTik RB2011UAS (1Gbps) - acting as PPPoE client
|
|- Mac host A (1Gbps)
|- Unifi DreamMachine Pro (1Gbps)
|
|- Linux host (1Gbps)
|- FreeBSD host (1Gbps)
|- Mac host B (10Gbps)
I have no issues inside the Unifi network, as all 3 hosts consistently max out 1Gbps.
As soon as I go through the RB2011UAS, I get the up to 20x slower & highly variable throughput. Starts at 500Mbps and drops to as low as 50Mbps
I thought it may be the double NAT, so I ran iperf3 from Mac host A which is wired directly into the RB2011UAS:
Code: Select all
gerhard@mac-host-a ~ % iperf3 -c w.gerhard.io
Connecting to host w.gerhard.io, port 5201
[ 7] local 192.168.88.251 port 60581 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate
[ 7] 0.00-1.00 sec 77.1 MBytes 647 Mbits/sec
[ 7] 1.00-2.00 sec 77.3 MBytes 648 Mbits/sec
[ 7] 2.00-3.00 sec 62.2 MBytes 522 Mbits/sec
[ 7] 3.00-4.00 sec 35.0 MBytes 293 Mbits/sec
[ 7] 4.00-5.00 sec 18.6 MBytes 156 Mbits/sec
[ 7] 5.00-6.00 sec 26.2 MBytes 220 Mbits/sec
[ 7] 6.00-7.00 sec 23.8 MBytes 200 Mbits/sec
[ 7] 7.00-8.00 sec 26.8 MBytes 225 Mbits/sec
[ 7] 8.00-9.00 sec 22.8 MBytes 191 Mbits/sec
[ 7] 9.00-10.00 sec 24.6 MBytes 206 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 7] 0.00-10.00 sec 394 MBytes 331 Mbits/sec sender
[ 7] 0.00-10.01 sec 394 MBytes 330 Mbits/sec receiver
gerhard@mac-host-a ~ % iperf3 -c w.gerhard.io -R
Connecting to host w.gerhard.io, port 5201
Reverse mode, remote host w.gerhard.io is sending
[ 7] local 192.168.88.251 port 60595 connected to 176.58.103.232 port 5201
[ ID] Interval Transfer Bitrate
[ 7] 0.00-1.00 sec 56.0 MBytes 470 Mbits/sec
[ 7] 1.00-2.00 sec 36.7 MBytes 308 Mbits/sec
[ 7] 2.00-3.00 sec 35.1 MBytes 295 Mbits/sec
[ 7] 3.00-4.00 sec 31.3 MBytes 262 Mbits/sec
[ 7] 4.00-5.00 sec 16.9 MBytes 142 Mbits/sec
[ 7] 5.00-6.00 sec 13.9 MBytes 117 Mbits/sec
[ 7] 6.00-7.00 sec 17.5 MBytes 146 Mbits/sec
[ 7] 7.00-8.00 sec 21.4 MBytes 179 Mbits/sec
[ 7] 8.00-9.00 sec 22.5 MBytes 189 Mbits/sec
[ 7] 9.00-10.00 sec 20.4 MBytes 171 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 7] 0.00-10.01 sec 275 MBytes 230 Mbits/sec 1023 sender
[ 7] 0.00-10.00 sec 272 MBytes 228 Mbits/sec receiver
Should the RB2011UAS be able to sustain 1Gbps TCP traffic over PPPoE? Do I have a misconfiguration?
This is my current RB2011UAS config (removed the less relevant sections like ipv6, lcd, etc.)
Code: Select all
# oct/29/2021 11:20:20 by RouterOS 6.49
# software id = 0YXJ-NGJP
#
# model = 2011UAS
# serial number = 3747022BB7F7
/interface bridge
add admin-mac=D4:CA:6D:79:23:12 auto-mac=no comment=defconf name=bridge
/interface vlan
add interface=ether1 name=Vodafone vlan-id=911
/interface pppoe-client
add add-default-route=yes disabled=no interface=Vodafone keepalive-timeout=disabled name="Vodafone PPPoE" password=XXX user=XXX
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add name=dhcp ranges=192.168.88.10-192.168.88.254
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge name=defconf
/tool user-manager customer
set admin access=own-routers,own-users,own-profiles,own-limits,config-payment-gw
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=ether6
add bridge=bridge comment=defconf interface=ether7
add bridge=bridge comment=defconf interface=ether8
add bridge=bridge comment=defconf interface=ether9
add bridge=bridge comment=defconf interface=ether10
add bridge=bridge comment=defconf interface=sfp1
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
add interface="Vodafone PPPoE" list=WAN
/ip address
add address=192.168.88.1/24 comment=defconf interface=bridge network=192.168.88.0
/ip dhcp-client
add comment=defconf disabled=no interface=ether1
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=192.168.88.1
/ip dns
set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN
/system identity
set name=MikroTik-RB2011UAS