%20%E8%A8%AD%E5%AE%9A%E6%99%82%EF%BC%8CUbuntu%2018.04%20%E4%B8%8A%E7%9A%84%E7%B6%B2%E8%B7%AF%E9%80%A3%E7%B7%9A%E4%B8%AD%E6%96%B7.png)
我有一個具有以下設定的機器人,[電腦 A] 的乙太網路介面 (enp4s0) 隨機掉落。
當電腦不做太多事情時,介面不會斷線。然而,當[電腦B]開始透過[電腦A]將壓縮影像流傳輸到[我的電腦]時,乙太網路介面斷開。
因此,這似乎是一個配置問題,我可能會無意中淹沒網絡,從而導致網絡連接斷開,我想就此事獲得一些建議。
dmesg 的輸出並沒有太大幫助
來自計算機 A 的 dmesg
[Mon Apr 12 13:43:33 2021] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Down
[Mon Apr 12 13:43:33 2021] br0: port 1(enp4s0) entered disabled state
[Mon Apr 12 13:43:35 2021] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[Mon Apr 12 13:43:35 2021] br0: port 1(enp4s0) entered blocking state
[Mon Apr 12 13:43:35 2021] br0: port 1(enp4s0) entered listening state
[Mon Apr 12 13:43:39 2021] br0: port 1(enp4s0) entered learning state
[Mon Apr 12 13:43:44 2021] br0: port 1(enp4s0) entered forwarding state
[Mon Apr 12 13:43:44 2021] br0: topology change detected, propagating
[Mon Apr 12 14:05:50 2021] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Down
[Mon Apr 12 14:05:50 2021] br0: port 1(enp4s0) entered disabled state
[Mon Apr 12 14:05:52 2021] igb 0000:04:00.0 enp4s0: igb: enp4s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
我已經做過的事:
- 檢查並更換所有乙太網路電纜。
- 用備件更換所有電腦和感測器
- 在網橋上啟用 STP,轉送延遲為 4
不幸的是,由於機器人內部的尺寸限制,我無法將所有東西連接到開關。
設定
所有計算機都運行 Ubuntu 18.04ROS 旋律莫尼亞。
我已經使用 netplan 設定了一個網橋,如下所示
# Netplan on Computer A
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
#Computer B
enp1s0:
dhcp4: no
#Sensor
enp2s0:
dhcp4: no
#SBC to switch
enp4s0:
dhcp4: no
#Setup a bridge and link eno1 to it
bridges:
br0:
interfaces: [enp1s0, enp2s0, enp4s0]
addresses: [192.168.1.1/24]
gateway4: 192.168.1.253
nameservers:
addresses: [8.8.8.8]
dhcp4: no
我嘗試過的其他事情:
啟用連接埠轉送並新增從 [電腦 B] 到 [電腦 A] 的路由,並在不同子網路上設定 NIC /etc/sysctl.conf
:
net.ipv4.ip_forward = 1
電腦B
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1
# Netplan on Computer A
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
#Computer B
enp1s0:
addresses:
- 192.168.2.1/24
dhcp4: no
#Sensor
enp2s0:
addresses:
- 192.168.3.1/24
dhcp4: no
#SBC to switch
enp4s0:
addresses:
- 192.168.1.1/24
dhcp4: no
gateway4: 192.168.1.253
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
答案1
我發現 eno1 和 enp4s0 使用不同的驅動程式。所以我嘗試切換兩個介面,現在介面沒有斷線。可能是過時的驅動程式導致了下降。
sudo lspci -v
接口eno1
Ethernet controller: Intel Corporation Ethernet Connection (6) I219-LM (rev 30)
Subsystem: Intel Corporation Ethernet Connection (6) I219-LM
Flags: bus master, fast devsel, latency 0, IRQ 141
Memory at a1a00000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [c8] Power Management version 3
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Kernel driver in use: e1000e
Kernel modules: e1000e
介面 enp4s0
Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at a1780000 (32-bit, non-prefetchable) [size=512K]
I/O ports at 3000 [disabled] [size=32]
Memory at a1800000 (32-bit, non-prefetchable) [size=16K]
Expansion ROM at a1700000 [disabled] [size=512K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
Capabilities: [70] MSI-X: Enable+ Count=5 Masked-
Capabilities: [a0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number c4-00-ad-ff-ff-4c-52-bf
Capabilities: [1a0] Transaction Processing Hints
Kernel driver in use: igb
Kernel modules: igb
電腦 A 上的當前網路規劃
network:
version: 2
renderer: NetworkManager
ethernets:
enp2s0:
addresses:
- 192.168.3.1/24
dhcp4: no
enp1s0:
mtu: 1500
addresses:
- 192.168.2.1/24
dhcp4: no
eno1:
mtu: 1500
dhcp4: no
addresses: [192.168.1.1/24]
gateway4: 192.168.1.253
nameservers:
addresses: [8.8.4.4,8.8.8.8]
enp4s0:
mtu: 1500
dhcp4: no
addresses: [192.168.1.2/24]
gateway4: 192.168.1.253
nameservers:
addresses: [8.8.4.4,8.8.8.8]