Ubuntu 作为路由器时包转发性能低,转发速度慢

Ubuntu 作为路由器时包转发性能低,转发速度慢

我已经构建了一个基于Ubuntu 桌面 18.04.1(内核:4.15.0-32-generic x86_64)。

我遵循了本指南https://killtacknine.com/building-an-ubuntu-16-04-router-part-1-network-interfaces/

可是当我真正尝试之后,却发现不对劲。

网络不正常。

我的 ISP 是中国电信,我的下行带宽为 200 Mbps,上行带宽为 20 Mbps。

我在 speedtest.net 上测试了 Ubuntu 的带宽。它达到了我的带宽。
但如果我在连接 Ubuntu 的 Windows 主机上测试它。它只达到 10Mbps / 20 Mbps(是的,上传速度比下载速度快)。(他们在同一个节点上测试)

我已经安装了 Realtek 的最新以太网驱动程序。

但是如果我在 Windows 主机上使用 Chrome 从最近的大学的镜像下载 iso 文件,下载速度会非常快。

我已经尝试通过我的真实路由器进行 pppoe,它也可以给我提供不错的速度。

文件/etc/network/interfaces

auto lo
iface lo inet loopback

auto enp3s0
iface enp3s0 inet manual

auto br0
iface br0 inet static
  address 10.0.0.1
  network 10.0.0.0
  netmask 255.0.0.0
  broadcast 10.0.0.255
  bridge_ports enp1s0 enp2s0 enp4s0
  bridge_stp on

命令ifconfig

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.0.0.0  broadcast 10.0.0.255
        inet6 fe80::2e0:4cff:fe68:141  prefixlen 64  scopeid 0x20<link>
        ether 00:e0:4c:68:01:41  txqueuelen 1000  (以太网)
        RX packets 82694  bytes 141679903 (141.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96992  bytes 63026899 (63.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:e0:4c:68:01:41  txqueuelen 1000  (以太网)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:e0:4c:68:01:42  txqueuelen 1000  (以太网)
        RX packets 0  bytes 0 (0.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:e0:4c:68:01:43  txqueuelen 1000  (以太网)
        RX packets 132766  bytes 64971378 (64.9 MB)
        RX errors 0  dropped 376  overruns 0  frame 0
        TX packets 144862  bytes 147788638 (147.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:e0:4c:68:01:44  txqueuelen 1000  (以太网)
        RX packets 80626  bytes 85799840 (85.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45697  bytes 30678421 (30.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 56  bytes 5804 (5.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 56  bytes 5804 (5.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492
        inet 125.xxx.xxx.61  netmask 255.255.255.255  destination 125.xxx.xxx.1
        ppp  txqueuelen 3  (点对点协议)
        RX packets 132010  bytes 61697165 (61.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 143928  bytes 144553030 (144.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

上面enp3s0是支持(pppoe)的WAN口ppp0

enp1s0、、为LAN端口,enp2s0为桥接端口。enp4s0br0

您可能会注意到enp3s0RX 丢弃了一些包裹,但我不知道这是怎么发生的。

文件/etc/sysctl.conf

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.ip_forward=1
net.core.netdev_budget=1000
net.core.netdev_max_backlog=1000

Netdata 向我发出了警报number of times, during the last 10min, ksoftirq ran out of sysctl net.core.netdev_budget or time slice, with work remaining (this can be a cause for dropped packets),所以我增加了net.core.netdev_budgetnet.core.netdev_max_backlog。但是没用。

谁能告诉我怎么解决这个问题?我只想获得正常的网络速度。

感谢所有提前回答或注意到这个问题的人。

添加

当我通过 Speedtest 进行测试时:

一些系统信息。

顶部

免费-m

答案1

我解决了。

这是network-manager我用来初始化 pppoe 连接的。

我不知道为什么network-manager会这样。但问题就是他造成的。

解决方式:

# delete my older pppoe(dsl) connection
nm-connection-editor
# configure new connection by pppoeconf
pppoeconf
# disable network-manager due to it is not useful to me
systemctl disable network-manager
systemctl start network-manager

相关内容