こんにちは。川崎と申します。
おわかりの方がいらっしゃいましたら、お力添えください。

FreeBSD をルータとして使っているのですが、このルータを通過して行う通信
が lftp の表示で 10-20kbps と非常に遅くて困っています。
TCP スタックのオプションが原因かと思って外してみたのですが、あまり変化
がありません。この辺を確認しろとかあの辺が怪しいとか、ご指摘を頂ければ
幸いです。

# 以下、FQDN や IP アドレスは適宜書き換えております。
# また、長文ですみません。

[ハードウェア]
HP DL120G5 (Xeon 3...@2.33ghz, 8GB memory)

[uname -a]
FreeBSD KaliDurga.kawasaki3.org 7.2-RELEASE-p2 FreeBSD 7.2-RELEASE-p2 #0: Thu 
Jul  9 10:42:30 JST 2009     r...@example.org:/usr/obj/usr/src/sys/GENERIC  
amd64

この GENERIC はオリジナルの GENERIC に次の4行を加えています。
  options         IPFILTER
  options         IPFILTER_LOG
  options         IPFILTER_LOOKUP
  #options        IPFILTER_DEFAULT_BLOCK

[NIC (ifconfig)]
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=88<VLAN_MTU,VLAN_HWCSUM>
        ether 00:18:71:eb:dd:3a
        inet 192.168.1.230 netmask 0xfffffff0 broadcast 192.168.1.239
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80<VLAN_HWCSUM>
        ether 00:1f:29:0e:7a:0a
        inet 192.168.0.166 netmask 0xfffffff8 broadcast 192.168.0.167
        inet 192.168.0.164 netmask 0xffffffff broadcast 192.168.0.164
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active

この em0 も bge0 も、デフォルトでは RXCSUM, TXCSUM, VLAN_MTU,
VLAN_HWTAGGING, VLAN_HWCSUM などのオプションが ON になった状態でしたの
で、もしやと思って /etc/rc.conf で ifconfig するときに OFF になるよう
に指定しました。

  ifconfig_bge0="inet 192.168.0.166 netmask 255.255.255.248 -rxcsum
      -txcsum -vlanmtu -vlanhwtag -tso"
  ifconfig_bge0_alias0="inet 192.168.0.164 netmask 255.255.255.255"
  ifconfig_em0="inet 192.168.1.230 netmask 255.255.255.240 -rxcsum
      -txcsum -vlanmtu -vlanhwtag -tso"
  (↑適宜改行)

[XORP]
  XORP で OSPF を使って動的ルーティングをやっています。

    protocols {
        ospf4 {
            router-id: 192.168.1.230
            area 0.0.0.0 {
                interface em0 {
                    vif em0 {
                        address 192.168.1.230 {
                        }
                    }
                }
                interface bge0 {
                    vif bge0 {
                        address 192.168.0.166 {
                            passive {
                            }
                        }
                    }
                }
            }
        }
    }
    fea {
        unicast-forwarding4 {
            disable: false
        }
        unicast-forwarding6 {
            disable: false
        }
    }
    interfaces {
        restore-original-config-on-shutdown: true
        interface bge0 {
            description: "BackNet"
            default-system-config {
            }
        }
        interface em0 {
            description: "INTERNET SIDE"
            default-system-config {
            }
        }
    }

[現象]

  o em0 の側がインターネットに接続され手いる。
  o bge0 の側には別の筐体のサーバがある。
  o ルータとして使っているノードを X と呼び、bge0 の先のサーバを Y と
    呼ぶことにする。
  o 通信速度の計測は、ftp://ftp.jp.freebsd.org/pub/FreeBSD/ls-lR.gz を
    lftp で GET する時の bps 表示を使った。
    o ping -c 10 ftp.jp.freebsd.org の結果は、
      round-trip min/avg/max/stddev = 1.306/1.490/1.694/0.115 ms
  o X から通信速度を測ると、2 から 3 Mbps 程度。Last 1 Mile が 100Mbps
    なのでもう少し出て欲しいところだが、ここではいつもこんなものです。
  o Y から通信速度を測ると、TCP スタックのオプションを解除(-rxcsumなど)す
    る前で 11-12 kbps 程度。解除したあとで 19-20 kbps 程度。いずれにし
    ても2桁くらい遅い。
    o tcpdump をしてみると、"TCP Retransmission", "TCP Window Update",
      "TCP Dup ACK", "TCP Fast Retransmission" が続発している。


moto kawasaki <m...@kawasaki3.org>

メールによる返信