
Ubuntu日本語フォーラム

ログインしていません。
みなさん、こんにちは。
いつも参考にさせていただき、お世話になっております。
今回、当方のUbuntu14.04TLSで、NICから送信ができなくなるトラブルが起こり、悩んでいます。
NICはUSBの有線LANアダプタでバッファローのlua4-u3-agtという製品です。
チップはAX88179で、最新のドライバをASIX社からDL、インストール済みです。もちろんmodinfoで適用されていることは確認しました。
【現象】
通常時は問題なく通信できているのですが、ある事(後述します)をきっかけに全く通信ができなくなってしまいます。
tcpdumpで見ていると、パケットを送信したり、受信したりしているように表示されるのですが、「実際には」パケットが出ていないようです。
ifdown/ifupでは復旧せず、アダプタの抜き差しで復旧します。
【調査したこと】
例えば、Ubuntu側からPingを打つと、ARPリクエストを延々と出しているのですが、相手から応答が着ません。
対向PCでパケットキャプチャしてみると、何もキャプチャされないので、当然応答などしないといった状況です。
逆に、対向PCから何かしらのパケットを受信してもARPテーブルに登録されず、ARPリクエストを出し続けています。
そこで、対向のMACを静的登録してみたところ、ARPリクエストは出さなくなり、ICMPechoを送信し始めますが対向PCではやはり届いておらず、タイムアウトになります。
通信できなくなってからifconfigを見ると、エラー、ドロップ、オーバーランは0となっていますが、しばらくPINGを打ち続けていると送信エラーカウンタが上昇します。
NICのSpeedが1Gなので、CPU負荷が掛かっているのかと思い、100Mに落としてみましたが同じことが発生します。
【現象が起きるきっかけ】
通信できなくなるきっかけとは、OpenIscsiで正常に認識しているディスクへ大き目のファイルを転送(500Mくらい)したりmkfsを行うと、最初はうまく
行っているのですが、途中でTCP接続がきれ、ディスクを見失うというものです。
こうなると、NICへのPingも応答がなくなり、このNICでの通信が何もできなくなってしまいます。
syslogやdmesgには、"sd 6:0:0:0 rejecting i/o to offline device"のメッセージが大量に出ていますが、
これはTCPコネクションが切れたために、DISKを見失ったということで、肝心のNWが不通になった原因が全く出ていません。
私の感触として、送受信バッファが物理NICと切り離されてしまったように感じるのですが、これ以上の調査方法が見つかっていません。
Google検索の結果を元に、手探りでカーネルパラメータを下記のように書き換えてみましたが、あまり変化はありませんでした。
net.ipv4.neigh.default.gc_thresh1 = 2048
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
なにか切り分け方法などご存知の方がいらっしゃいましたらご教示いただけるとありがたいです。
よろしくお願いいたします。
オフライン
自己解決したので一応。
このデバイスはUbuntu14.04TLSでは使えないと考えたほうがよさそうです。
DriverのBugなのかもしれませんが、非公式のドライバ(https://launchpad.net/~qji/+archive/ubuntu/ax88179)でも同じ現象が発生したので、チップの特性だと思っています。
そこで、Linux対応と謳っているプラネックスのUSB-LAN1000Rに交換してみたところ、上記のような事象も起こらず1GbpsでISCSI上のファイルを送受信できるようになりました。
CDC-ECMドライバ対応とのことで、ドライバのインストール等は不要でした。どういう仕組みかわかりませんがこれすごいですね!?
教訓
・Linux対応と書いてないデバイスでは一見正常に動いてても信用しちゃいけない
・tcpdumpで見えている内容を完全に信用してはいけない。特にローカルからの送信データは対向側でキャプらないとだめ。
オフライン