SUN Solarisのfull-duplex, half-duplexの設定の仕方
(参考資料:The hme SunFastEthernet Device
Drier, part No.802-7308-10)
現在の動作状態を見る方法.これらのコマンドで見ることができる.
ndd /dev/hme link_status
0: down, 1:up
ndd /dev/hme link_mode
0:
half-duplex, 1:full-duplex
ndd /dev/hme link_speed
0:10M, 1:100M
現在の動作可能な設定を見る方法.各パラメタはその動作が可能かどうかを設定するだけである.そのため,複数項目1にしてもかまわないし,1になっているからその設定で動作しているとは限らない.あくまでも,その動作が可能かどうかである.auto-negotiationモードの場合には,それ以下の1になっている項目の中からネゴシエーションを行う.forced modeの場合には,それ以下の1になっている項目のうち,プライオリティのもっとも高い項目を設定値とする.プライオリティは,ここに書いてある順(上が高い)である.
ndd /dev/hme adv_autuneg_cap
0:
forced mode, 1: auto-negotiation
ndd /dev/hme adv_100fdx_cap
0: OFF, 1:ON 以下同じ
ndd
/dev/hme adv_100T4_cap
ndd
/dev/hme adv_100hdx_cap
ndd
/dev/hme adv_10fdx_cap
ndd
/dev/hme adv_10hdx_cap
ネットワークのリンク先(HUBやスイッチ)のパラメータも知ることができる.これによって,HUB側の設定可能な値を知ることができる.
ndd /dev/hme lp_autoneg_cap
ndd
/dev/hme lp_100fdx_cap
ndd
/dev/hme lp_100T4_cap
ndd
/dev/hme lp_100hdx_cap
ndd
/dev/hme lp_10fdx_cap
ndd
/dev/hme lp_10hdx_cap
パラメータには,その他,autoneg_cap, 100T4_cap,
100fdx_cap, 100hdx_cap, 10fdx_cap, 10hdx_capがある.これらは,ハード的にその動作が可能かどうかを示すパラメータである.リードオンリーであり,あまり関係ない.
例)手動で100BTのFull duplexに設定する.
オートネゴシエーションにしていると,HUB側とサーバ側とでFull-duplexとHalf-duplexの値が違ってしまい,通信が不安定な状態になってしまうことがある.原因は分からないが,それぞれを手動にして値を設定することで状況を改善することが出来る.
リンク先の動作の可能性は以下のコマンドで確認可能.
ndd /dev/hme lp_autoneg_cap
ndd /dev/hme lp_100fdx_cap
ndd
/dev/hme lp_100T4_cap
ndd
/dev/hme lp_100hdx_cap
ndd
/dev/hme lp_10fdx_cap
ndd /dev/hme lp_10hdx_cap
ただし,リンク先の実際の動作はこれら値でも分からないので,その情報を事前に入手する.
これらの情報によって,ネゴシエーションをオートにするのか手動にするのか,どの設定にするのか検討する.ここでは,手動で100BTのFull-duplexに設定することを例にする.(SUNのマシンが単一のhmeデバイスしか持っていないことを想定)
まず,HUB側を手動で100BT, Full-duplexにする.
次に100BTのFull duplexの動作を可能にする.
ndd set /dev/hme adv_100fdx_cap
1
それ以外の動作を不可にする.
ndd set /dev/hme adv_100T4_cap
0
ndd
set /dev/hme adv_100hdx_cap 0
ndd
set /dev/hme adv_10fdx_cap 0
ndd
set /dev/hme adv_10hdx_cap 0
最後にforced modeにする.このとき通信が一瞬途切れる.
ndd set /dev/hme
adv_autoneg_cap 0
動作の確認.以下の両方とも1になっていることを確認する.
ndd /dev/hme link_mode
ndd
/dev/hme link_speed
ここまでは動作確認だけである.
マシンをリブートしたら設定値は消えてしまうので,/etc/systemファイルにこれらを同じように記入する.リブートが可能なマシンであれば,最初から/etc/systemファイルに書いても良い.
/etc/systemに以下の値を記入する.パラメータ名が頭hme_と多少変わるがこれはマニュアル通り.
set hme:hme_adv_100fdx_cap = 1
set
hme:hme_adv_100T4_cap = 0
set
hme:hme_adv_100hdx_cap = 0
set
hme:hme_adv_10fdx_cap = 0
set
hme:hme_adv_10hdx_cap = 0
set
hme:hme_adv_autoneg_cap = 0
リブート後,再度通信と設定の確認を行い完了.
ndd /dev/hme link_mode
ndd
/dev/hme link_speed
追記)複数のhmeデバイスがあり,それぞれ別の設定をしたい時には,設定が多少複雑になる.nddでの動作確認の時には,先にこのコマンドを打つ必要がある.
ndd set /dev/hme hme 1 (hme1を設定したい場合)
このときのデバイスとhmeなどのインスタンス名とのマッピングは/etc/path_to_instに記録されている.また,/etc/systemの設定では,マシン上にある全てのhmeデバイスに関して同一の設定をしてしまうようである.リブート後も残るようにするためには,/kernal/drv中にhme.confファイルを作る方法で設定する.やり方が複雑なため,ここでは省略する.詳しくは参考資料の24ページにある. |