sakashita_spc
2019年7月20日 2時45分
Armadillo-840 At-Distの環境で使っており、ethernの通信について、確認させてください。
ifconfigを見ると、受信パケットのDropが確認されています。
ネットワークの構成は、840どうしをHUBで接続して、HUBにはMoble routerが接続されています。
HUBはGigaHubです。
Routerなどを取り除いて、840のみにして、シリアルコンソールで確認したところ、
[guest@armadillo840-0 (ttySC2) ~]$ ifconfig eth0;sleep 5;ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:11:0C:23:00:90
inet addr:192.168.0.151 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22124 errors:0 dropped:3127 overruns:0 frame:0
TX packets:13893 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1523632 (1.4 MiB) TX bytes:19373837 (18.4 MiB)
Interrupt:142 DMA chan:ff
eth0 Link encap:Ethernet HWaddr 00:11:0C:23:00:90
inet addr:192.168.0.151 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22129 errors:0 dropped:3132 overruns:0 frame:0
TX packets:13893 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1523932 (1.4 MiB) TX bytes:19373837 (18.4 MiB)
Interrupt:142 DMA chan:ff
となりました。この5秒間(sleep)で、RXは5パケット受信して、5バケットドロップになっています。
Droppedの数も全体の1割程度になっています。
これらのDroppedはどのようなパケットが含まれますか?
また、ドライバーのアップデートなどはあるのでしょうか?
よろしくお願いします。
コメント
sakashita_spc
お世話になります。
> 以下のファイル等で、"rx_dropped"をインクリメントする条件を満したパケットです。
> net/core/dev.c
https://elixir.bootlin.com/linux/v4.14/source/net/core/dev.c
を参考に見ると、受信パケットでShort packetぐらいがDropさせていますね。
この層はdriverの上位になると思うので、driverでdropされたパケットは含まれないと
考えていいでしょうか?
> 気になっているのは以下の条件です。
> - Linuxカーネルが認識できないプロトコルタイプのパケットを受信した
否定はできませんが、可能性は少ないと思います。ただ、Dropのパケット数が多いです。
> - backlogの許容量を越えた
これは、オープンしているソケット数ですか?
ぐらい的にはどのくらい以上になるのでしょうか?
> まず、以下の確認をしていただけますか。
> - LANケーブルの信号品質に問題は無いか(LANケーブルの交換)
> - 処理しきれない程の大量のパケットを受信していないか(送信パケットを減らしてみる)
>
> > Routerなどを取り除いて、840のみにして、シリアルコンソールで確認したところ、
>
> 上記、a840同士をLANケーブルで直結したという理解で良いでしょうか。
GigaHUBを間に入れています。HUB(TP-Link社)には、840の2台のみです。
atmarkさんの環境では、全く問題ないさそうですか?
(たとえば、PCとPINGをした場合のケースなど。。。)
at_mizo
溝渕です。
> https://elixir.bootlin.com/linux/v4.14/source/net/core/dev.c
> を参考に見ると、受信パケットでShort packetぐらいがDropさせていますね。
Armadillo-840で動作しているLinuxカーネルのソースを参照した方が無難と思
います。ソースは以下より取得可能です。
https://users.atmark-techno.com/armadillo-840/software
> この層はdriverの上位になると思うので、driverでdropされたパケットは含まれないと
> 考えていいでしょうか?
MAC driver(drivers/net/ethernet/renesas/)から直接"rx_dropped"の値を変
更している箇所は見当りませんでした(grepしただけですが)。
上記driverで、ring bufferが溢れた場合にもパケットが破棄されますが、こ
の場合はdroppedではなくoverrunsになります。
> > 気になっているのは以下の条件です。
> > - Linuxカーネルが認識できないプロトコルタイプのパケットを受信した
>
> 否定はできませんが、可能性は少ないと思います。ただ、Dropのパケット数が多いです。
経路内でのパケットの損傷/破損の可能性は低いということですね。
> これは、オープンしているソケット数ですか?
> ぐらい的にはどのくらい以上になるのでしょうか?
これは、backlog(未処理のパケット)の数を示しており、1000個までです。
> GigaHUBを間に入れています。HUB(TP-Link社)には、840の2台のみです。
Armadillo-840同士をethernet cableで直結して確認してみていただけますか。
> atmarkさんの環境では、全く問題ないさそうですか?
> (たとえば、PCとPINGをした場合のケースなど。。。)
対PCでPINGしてみましたが、dropは1つもありませんでした。
at_mizo
溝渕です。
含みを持たせたような表現をしてしまったので補足します。
> 対PCでPINGしてみましたが、dropは1つもありませんでした。
上記、drop含め通信エラーが発生していないという意味です。
Armadillo-840のソフトウェアは出荷状態のもので、ネットワーク設定等も一
切変更してない状態です。各イメージファイルのバージョンは次の通りです。
- ブートローダー: v3.11.0
- Linuxカーネル: v1.21
- ユーザーランド: v1.14
対向のPCのethernet contorllerはI217-Vで、ドライバはe1000eです。GigaHUB
はTL-SG505を使っています。
ifconfigコマンドの結果は次の通りです。
[root@armadillo840-0 (ttySC2) ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr [MACアドレス] inet addr:[IPアドレス] Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2115 errors:0 dropped:0 overruns:0 frame:0 TX packets:60 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:271522 (265.1 KiB) TX bytes:7223 (7.0 KiB) Interrupt:142 DMA chan:ff
sakashita_spc
at_mizo
2019年7月22日 16時36分
溝渕です。
> これらのDroppedはどのようなパケットが含まれますか?
以下のファイル等で、"rx_dropped"をインクリメントする条件を満したパケットです。
net/core/dev.c
気になっているのは以下の条件です。
- Linuxカーネルが認識できないプロトコルタイプのパケットを受信した
- backlogの許容量を越えた
まず、以下の確認をしていただけますか。
- LANケーブルの信号品質に問題は無いか(LANケーブルの交換)
- 処理しきれない程の大量のパケットを受信していないか(送信パケットを減らしてみる)
> Routerなどを取り除いて、840のみにして、シリアルコンソールで確認したところ、
上記、a840同士をLANケーブルで直結したという理解で良いでしょうか。