たけふ@JE3KMZです。

ある方から有用な情報を頂きましたので、転載と結果報告をしておきます。

> とおりすがりのものです。
> うちでもおなじような問題があって
> /etc/rc.confを
> ifconfig_em0="... -tso"
> のようにTSOを無効にすることで解決しました。
>
> http://www.freebsd.org/cgi/query-pr.cgi?pr=121257

ポイントのご教授ありがとうございます!

早速試してみたところパケットロスは起こりませんでした。
で、TSO って何ぞや?と思い sys/dev/e1000/README を読んでみると、
TCP segmentation offload の頭文字で、TCPセグメンへの分割処理をハードウェアで実施するカラクリのなんですね。
いままで知りませんでした。
ed(4) や de(4) なんかを多様していた天罰のようですHi

で、で、PCI-Express だと無指定ではこの TSO は有効となるけどその他のバスではリスクあるぞって書いてますね。
非対応チップリストに 82547 と 82544 が載っていましたけど、
当方の利用中のチップが 82573L(chip=0x109a8086) なので一応データシートを調べたら、
http://download.intel.com/design/network/datashts/82573e_v.pdf
PCI-Express なので TSO が有効でもリスクは少ないと判断できそうなのですが...

<ぼそ>PCI-Express to PCI ブリッジが噛んでたらどうなんねやろ...</ぼそ>

この TSO を無効にすることで、ジャンボフレームなどのパフォーマンスが悪くなるかもしれませんが、
運用環境が 100BASE-TX なので当面 TSO を無効にして運用することにします。

/etc/sysctl.conf
net.inet.tcp.tso=0

send-pr(1) の方も ad hoc が流れてからはなしのつぶての用ですから、当面はこの方法か ipnat で逃げてみたいと思います。

情報ありがとうございました。

それでは。

メールによる返信