(ネットワーク)オートネゴシエーションは信用できない?でネゴシエーションの話をしましたが、今回は Solaris でネゴシエーションの設定がどうなっているかの確認方法です。
これらのネットワークインターフェイスの確認や設定は Solraris では NDD コマンドを使うようですね。( ndd /dev/hme ? とすると使用できるパラメタの一覧が分かります。)
まず自身のインタフェース状況(速度やモード)は下記コマンドで分かります。
bash-3.00# ndd /dev/nge0 link_status
1 //0:切断 1:接続
bash-3.00# ndd /dev/nge0 link_speed
100 //スピード
bash-3.00# ndd /dev/bge link_duplex
2 //ドライババージョン < 0.37 0:半二重 1:全二重
//ドライババージョン >= 0.37 1:半二重 2:全二重
(ただし上記はBCMのNICの場合。他のベンダー(今回はngeということでnVidiaですが)のNICは意味が異なるかも)
//↓ドライババージョンの確認方法
もしくは、dladm で搭載してるNIC一括で調べることもできるようです。
bash-3.00# dladm show-dev
nge0 リンク: up 速度: 100 Mbps デュプレックス: full
nge1 リンク: up 速度: 100 Mbps デュプレックス: full
bge0 リンク: unknown 速度: 0 Mbps デュプレックス: unknown
bge1 リンク: unknown 速度: 0 Mbps デュプレックス: unknown
自機のオートネゴシエーションが有効かどうかは下記コマンドで分かります。
ndd /dev/nge0 adv_autoneg_cap
1 //0:無効 1:有効
そして、AutoNegotiationモードの場合には,下記の1になっている項目の中からネゴシエーションを行うようですね。
ndd /dev/nge0 adv_1000fdx_cap //1G全二重
1 //0:無効 1:有効
ndd /dev/nge0 adv_1000hdx_cap //1G半二重
0
ndd /dev/nge0 adv_100fdx_cap
1
ndd /dev/nge0 adv_100T4_cap
0
ndd /dev/nge0 adv_100hdx_cap
1
ndd /dev/nge0 adv_10fdx_cap
1
ndd /dev/nge0 adv_10hdx_cap
1
さらにパラメータに lp_xxxxx とすると、リンク先(通常はスイッチ)のモードもわかるようです。(ただし正確とは言えないみたいなので、実際はスイッチを直接見た方がいいかもしれません。)
ndd /dev/nge0 lp_autoneg_cap //リンク先オートネゴシエーション
1
ndd /dev/nge0 adv_1000fdx_cap
0
ndd /dev/nge0 adv_1000hdx_cap
0
ndd /dev/nge0 lp_100fdx_cap
1
ndd /dev/nge0 lp_100hdx_cap
1
....
試してないので、確実とは言えませんが、ネットの情報見る限りモードを設定したいときは下記のような書式にすれば可能なようです。
ndd -set /dev/nge0 パラメタ
例えば1G/Fullだけ有効にし、オートネゴシエーションを無効にする時はこうします。
ndd -set /dev/nge0 adv_1000fdx_cap 1
ndd -set /dev/nge0 adv_1000hdx_cap 0
ndd -set /dev/nge0 adv_100fdx_cap 0
ndd -set /dev/nge0 adv_100hdx_cap 0
ndd -set /dev/nge0 adv_100T4_cap 0
ndd -set /dev/nge0 adv_10fdx_cap 0
ndd -set /dev/nge0 adv_10hdx_cap 0
ndd -set /dev/nge0 adv_autoneg_cap 0
しかし、Solaris というか Unix のネットワーク周り、ドライバ周りはあんまり触ったことないので四苦八苦しますね。
参考:
オートネゴシエーション設定の変更方法 - Solaris User
Solaris でネットワーク speed と duplex を変更する