ロボット オペレーティング システム (ROS) セットアップを使用すると、Ubuntu 18.04 でネットワーク接続が切断される

ロボット オペレーティング システム (ROS) セットアップを使用すると、Ubuntu 18.04 でネットワーク接続が切断される

次のようなセットアップのロボットがあり、[コンピュータ 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 

すでにやったこと:

  1. すべてのイーサネット ケーブルを点検し、新しいケーブルに交換しました。
  2. すべてのコンピューターとセンサーをスペアパーツと交換する
  3. ネットワークブリッジで転送遅延4のSTPを有効にする

残念ながら、ロボット内のサイズの制約により、すべてをスイッチに接続することはできません。

設定

SBC セットアップ

すべてのコンピューターはUbuntu 18.04を実行しており、ROSメロディックモレニア

私は以下に示すように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]

関連情報