kazmax - Linux で自宅サーバー

sk98lin - スペシャルファイル (デバイス)の説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 引き数
  5. ファイル
  6. バグ
  7. 著者
  8. 関連項目

名前

sk98lin - Marvell/SysKonnect ギガビットイーサネットドライバ v6.21

書式

insmod sk98lin.o [ Speed_A= i,j,... ][ Speed_B= i,j,... ][ AutoNeg_A= i,j,... ][ AutoNeg_B= i,j,... ][ DupCap_A= i,j,... ][ DupCap_B= i,j,... ][ FlowCtrl_A= i,j,... ][ FlowCtrl_B= i,j,... ][ Role_A= i,j,... ][ Role_B= i,j,... ][ ConType= i,j,... ][ Moderation= i,j,... ][ IntsPerSec= i,j,... ][ PrefPort= i,j,... ][ RlmtMode= i,j,... ]

説明

sk98lin は Marvell と SysKonnect のネットワークアダプタカードの ギガビットイーサネットドライバである。 これは SysKonnect SK-98xx/SK-95xx 互換のギガビットイーサネットアダプタと Yukon 互換のチップセットをサポートしている。
insmod を使ってドライバをロードする場合、 ネットワークアダプタカードのパラメータを コンマで区切られたコマンドの列として指定することができる。 2 つのネットワークアダプタがインストールされている時に、 例えば、1 つ目のアダプタのポート A の自動ネゴシエーションは ON にするが、 2 つ目のアダプタのポート A は OFF にする場合は、 以下のように入力すればよい:
insmod sk98lin.o AutoNeg_A=On,Off
sk98lin が 1 つ以上のアダプタカードに関連づけられていて、 かつ /proc ファイルシステムがシステムにマウントされている場合、 インストールされているネットワークアダプタカードの全てのポートについて、 (各ポート) 専用の統計ファイルがフォルダ /proc/net/sk98lin に作られる。 これらのファイルは eth[x] という名前であり、 x はインタフェースの番号である。 この番号はシステムによって各ポート毎に割り当てられたものである。
ロードが完了すると、   ifconfig (8) コマンドを使って、各 eth[x] インタフェースに希望する IP アドレスを割り当てることができる。 これによりアダプタがイーサネットに接続され、 コンソールに状態メッセージが表示される。 このメッセージは、 "ethx: network connection up using port y" の後に 設定または検出された接続パラメータを続けたものである。
sk98lin はラージフレーム (ジャンボフレームとも呼ばれる) もサポートする。 ジャンボフレームを使うと、大量のデータを転送する際に、 スループットを非常に向上させることができる。 ラージフレームを有効にするには、 インタフェースの MTU (maximum transfer unit, 最大転送単位) サイズを 大きな値に設定すればよい。 デフォルトの MTU サイズは 1500 であり、 9000 (バイト) まで変更することができる。 MTU サイズを設定するのは、 インタフェースに IP アドレスを割り当てるときにもできるし、   ifconfig (8) コマンドに mtu 引き数を指定することで後から設定することもできる。 例えば、eth0 に IP アドレスとラージフレーム MTU サイズが必要な場合、 以下の 2 つのコマンドが使える:
ifconfig eth0 10.1.1.1 ifconfig eth0 mtu 9000
これらの 2 つのコマンドは 1 つに纏めることもできる:
ifconfig eth0 10.1.1.1 mtu 9000
使用者のネットワーク環境が許している場合にのみ、 ラージフレームが使用できる点に注意すること。 これは使用者のイーサネットで使われている全てのスイッチでも ラージフレームがサポートされていなければならないことを意味する。 多くのスイッチがラージフレームをサポートしてはいるが、 設定を行う必要がある。 多くの場合、デフォルトの設定では標準フレーム (1500 バイトの MTU サイズ) だけしかサポートしない。 ネットワーク内のスイッチに加え、 使用される全てのネットワークアダプタでも ジャンボフレームが有効になっていなければならない。 アダプタがラージフレームを受け取るように設定されていない場合、 アダプタはそのフレームを単純に捨ててしまう。
標準のイーサネットフレームサイズに戻すのは、再び   ifconfig (8) コマンドを使うことで可能である:
ifconfig eth0 mtu 1500
Linux の Marvell/SysKonnect ギガビットイーサネットドライバは、 IEEE 規格 802.1, 802.1q, 802.3ad に基づいて、 VLAN と Link Aggregation をサポートすることができる。 これらの機能は、インターネットにあるオープンソースモジュールを インストールした後でのみ利用可能である:
VLAN : http://www.candelatech.com/~greear/vlan.html
Link Aggregation : http://www.st.rim.or.jp/~yumo

Marvell/SysKonnect はこれらのオープンソースモジュールをサポートしておらず、 これらを使った場合に生じるいかなる失敗や問題についても 責任を負わない点に注意すること。

引き数

Speed_A= i,j,...
このパラメータはアダプタカードのポート A の速度機能を設定するのに使われる。 これは Yukon copper アダプタでのみ有効である。 使用可能な値は以下の通り: 10 , 100 , 1000 , Auto 。ここで Auto がデフォルトである。 通常、この速度はリンクの確立時に 2 つのポートの間でネゴシエートされる。 これに失敗した場合、ポートはこの引き数で指定された設定になる。
Speed_B= i,j,...
このパラメータはアダプタカードのポート B の速度機能を設定するのに使われる。 これは Yukon copper アダプタでのみ有効である。 使用可能な値は以下の通り: 10 , 100 , 1000 , Auto 。ここで Auto がデフォルトである。 通常、この速度はリンクの確立時に 2 つのポートの間でネゴシエートされる。 これに失敗した場合、ポートはこの引き数で指定された設定になる。
AutoNeg_A= i,j,...
アダプタカードのポート A の自動ネゴシエーションの使用を有効または無効にする。 使用可能な値は以下の通り: On , Off , Sense 。ここで On がデフォルトである。 Sense モードはリンクパートナが自動ネゴシエーションをサポートしているか否かを 自動的に検知する。
AutoNeg_B= i,j,...
アダプタカードのポート B の自動ネゴシエーションの使用を有効または無効にする。 使用可能な値は以下の通り: On , Off , Sense 。ここで On がデフォルトである。 Sense モードはリンクパートナが自動ネゴシエーションをサポートしているか否かを 自動的に検知する。
DupCap_A= i,j,...
この引き数はアダプタカードのポート A で使う二重通信 (duplex) モードを示す。 使用可能な値は以下の通り: Half , Full , Both 。ここで Both がデフォルトである。 この引き数はポート A の AutoNeg_A が Sense に設定されていない場合にのみ意味がある。 AutoNeg_A が On の場合、DupCap_A の 3 つの値 ( Half , Full , Both ) のうちどれでも指定することができる。 AutoNeg_A が Off の場合、DupCap_A の値 FullHalf のみを指定することができる。 この DupCap_A 引き数は、リンクパートナが全ての二重通信の組合わせを サポートしていない場合に役に立つ。
DupCap_B= i,j,...
この引き数はアダプタカードのポート B で使う二重通信モードを示す。 使用可能な値は以下の通り: Half , Full , Both 。ここで Both がデフォルトである。 この引き数はポート B の AutoNeg_B が Sense に設定されていない場合にのみ意味がある。 AutoNeg_B が On の場合、DupCap_B の 3 つの値 ( Half , Full , Both ) のうちどれでも指定することができる。 AutoNeg_B が Off の場合、DupCap_B の値 FullHalf のみを指定することができる。 この DupCap_B 引き数は、リンクパートナが全ての二重通信の組合わせを サポートしていない場合に役に立つ。
FlowCtrl_A= i,j,...
この引き数は自動ネゴシエーションのときにポートが使用する フロー制御機能を設定する。 使用可能な値は以下の通り: Sym , SymOrRem , LocSend , None 。ここで SymOrRem がデフォルトである。 それぞれのモードには以下のような意味がある:

Sym = Symmetric リンクパートナの双方が PAUSE フレームを送ることができる。
SymOrRem = SymmetricOrRemote リンクパートナの双方またはリモートパートナのみが PAUSE フレームを送ることができる。
LocSend = LocalSend ローカルリンクパートナのみが PAUSE フレームを送ることができる。
None = None リンクパートナのどちらも PAUSE フレームを送ることはできない。
このパラメータは AutoNeg_A が Off の場合には無視される点に注意すること。
FlowCtrl_B= i,j,...
この引き数は自動ネゴシエーションのときにポートが使用する フロー制御機能を設定する。 使用可能な値は以下の通り: Sym , SymOrRem , LocSend , None 。ここで SymOrRem がデフォルトである。 それぞれのモードには以下のような意味がある:
Sym = Symmetric リンクパートナの双方が PAUSE フレームを送ることができる。
SymOrRem = SymmetricOrRemote リンクパートナの双方またはリモートパートナのみが PAUSE フレームを送ることができる。
LocSend = LocalSend ローカルリンクパートナのみが PAUSE フレームを送ることができる。
None = None リンクパートナのどちらも PAUSE フレームを送ることはできない。

このパラメータは AutoNeg_B が Off の場合には無視される点に注意すること。
Role_A= i,j,...
この引き数は 1000Base-T アダプタカードでのみ有効である。 2 つの 1000Base-T ポートが通信する場合、 片方が (タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: Auto , Master , Slave 。ここで Auto がデフォルトである。 通常、ポートの役割は 2 つのポートでリンクを確立するときにネゴシエートされる。 しかしこれに失敗した場合、 アダプタカードのポート A はこの引き数で指定された設定になる。
Role_B= i,j,...
この引き数は 1000Base-T アダプタカードでのみ有効である。 2 つの 1000Base-T ポートが通信する場合、 片方が (タイミング情報を提供する) マスタの役割をしなければならず、 もう片方がスレーブにならなければならない。 使用可能な値は以下の通り: Auto , Master , Slave 。ここで Auto がデフォルトである。 通常、ポートの役割は 2 つのポートでリンクを確立するときにネゴシエートされる。 しかしこれに失敗した場合、 アダプタカードのポート B はこの引き数で指定された設定になる。
ConType= i,j,...
この引き数は、ポート毎に指定する全 5 個の引き数の組み合わせを、 1 つの引き数にしたものである。 これによりアダプタカードの 2 つのポートの設定が簡略化される。 この変数のそれぞれの値は、 最も意味のあるポート引き数の組み合わせを反映したものである。 使用可能な値とそれに対応するポート毎のパラメータの組み合わせは、 以下の通り:

ConType | DupCap AutoNeg FlowCtrl Role Speed --------+-------------------------------------------
Auto | Both On SymOrRem Auto Auto
100FD | Full Off None Auto 100
100HD | Half Off None Auto 100
10FD | Full Off None Auto 10
10HD | Half Off None Auto 10
その他のポート引き数を、 この ConType 引き数と組み合わせて指定すると、それらの設定を混ぜ合わせた設定となる。 これは、ポート毎の引き数 (例えば Speed_A )が組み合わせ変数 ConType より優先順位が高いということに拠るものである。
Moderation= i,j,...
割り込み調停 (interrupt moderation) は、 ドライバが処理しなければならない割り込みの最大回数の制限として使用される。 つまり、ドライバが処理を行うまで、1 回以上の割り込み (送信または受信パケットが処理されること) がキューに入れられる。 キューに入れられた割り込みがいつ処理されるかは、 以下で説明する IntsPerSec 引き数で決定される。 使用可能な調停モードは以下の通り: None , Static , Dynamic 。ここで None がデフォルトである。 それぞれのモードは以下の意味を持つ:
None アダプタカードに対して割り込み調停を適用しない。 よって送信または受信割り込みは、 アダプタカードの割り込み線に現れると直ぐに処理される。

Static アダプタカードに対して割り込み調停が適用される。 全ての送信または受信割り込みは、完全な調停間隔が終わるまでキューに入れられる。 この調停間隔が終わると、キューに入れられた全ての割り込みは、 1 回の大きな分岐で遅延なく処理される。 Static という用語は、あるインタフェースに現在どれだけの ネットワーク負荷が通過しているかに関わらず、 割り込み調停が常に有効になっていることを意味する。 更に調停間隔の時間は固定で、ドライバが動作している間は変化しない。

Dynamic システムの負荷に応じて、アダプタカードに対して割り込み調停が適用される。 システムの負荷が高いことをドライバが検出した場合、 割り込み調停を有効にすることにより、 過剰なネットワーク負荷からシステムを保護する。 \(em その後に \(em CPU 利用率が再び下がった場合 (またはネットワーク負荷が極わずかになった場合)、 割り込み調停は自動的に無効にされる。
ネットワーク負荷が高い 1 つ以上のインタフェースを ドライバが扱わなければならない場合 \(em 結果として \(em CPU 利用率が高い場合、割り込み調停を使うべきである。 ネットワーク負荷が高い状況で調停が適用されると、 遅いコンピュータでは CPU 負荷が 20-30% 削減される。
割り込み調停を使うことの欠点として、 調停時に割り込みをキューに入れたり処理したりすることによる 往復遅延時間 (round-trip-time, RTT) の増加がある点に注意すること。
IntsPerSec= i,j,...
この引き数は割り込み調停の間隔を決定する。 静的 (static) 割り込み調停が使われている場合、 IntsPerSec 引き数の値は 2000 であり、割り込み調停の間隔は 500 ミリ秒になる。 この引き数に使用可能な値は、 30...40000 (1 秒毎の割り込み回数) の範囲である。 デフォルト値は 2000 である。
この引き数は静的 (static) または動的 (dynamic) 割り込み調停が 有効になっているときにのみ使用される。 この引き数は調停が適用されていない場合には無視される。
調停間隔の期間は注意して選ぶこと。 一見したところでは、とても長い期間 (例えば 1 秒間に 100 回だけの割り込み) を 選ぶことに意味があるように見えるかもしれないが、 パケット処理の遅延の増加が酷くなる。 一方、とても短い調停時間を選ぶと、適用される調停で使用する分が補償される。
PrefPort= i,j,...
この引き数は (2 ポートのネットワークアダプタで) 優先 (preferred) ポートを A または B のどちらにするかを指定するのに使われる。 優先ポートは A と B の両方のポートが完全に機能していると検知された場合に 使用されるポートである。 使用可能な値は以下の通り: A または B 。ここで A がデフォルトである。
RlmtMode= i,j,...
RLMT はポートの状態を監視する。 アクティブなポートのリンクが失敗した場合、 RLMT は待機しているリンクに即時に切り替える。 少なくとも 1 つの「物理的」リンクが起動するまでは、仮想リンクが維持される。 この引き数は RLMT が両方のポートをどのように監視するかを決める。 使用可能な値は以下の通り: CheckLinkState , CheckLocalPort , CheckSeg , DualNet 。ここで CheckLinkState がデフォルトである。 各モードは以下のような意味を持つ。
CheckLinkState リンク状態のチェックのみ: RLMT は、各ポートについてアダプタハードウェアが報告する状態を使い、 全てのネットワークトラフィックのために 1 つのポートを使用できるか否かを決定する。

CheckLocalPort このモードでは、RLMT はアダプタカードの 2 つのポートの間で 定期的にパケットを交換することにより、 2 つのポートの間のネットワーク経路を監視する。 このモードでは 2 つのポートが互いに「見える」ような ネットワーク設定が必要である (つまり、ポート間にルータがあってはならない)。

CheckSeg ローカルポートとセグメントをチェックする。 このモードは CheckLocalPort モードと同じ機能を提供し、 更にポート間のネットワークセグメントをチェックする。 よって、このモードはネットワーク上に スパニングツリープロトコル (Spanning Tree protocol) を 使うように設定されたギガビットイーサネットスイッチが 設置されている場合にのみ使用できる。

DualNet このモードでは、ポート A と B が別々のデバイスとして使用される。 2 ポートのアダプタを持っている場合、ポート A を eth[x] に、ポート B を eth[x+1] に設定することができる。 2 つのポートは別々の IP アドレスを付けて独立に使用することができる。 優先ポートの設定は使用されない。 RLMT は無効にされる。
RLMT モード CheckLocalPortCheckLinkState は、1 つのアダプタ上のポート間でネットワーク経路があるような設定で 動作するように設計されている。 さらに、このモードはアダプタ同士が back-to-back で 接続されている状態で動作するようには設計されていない。

ファイル

/proc/net/sk98lin/eth[x]

アダプタカードの特定のインタフェースの統計ファイル。 このファイルには、アダプタカードの一般的な情報と、 全ての送信・受信カウンタの詳細な一覧が含まれる。
/usr/src/linux/Documentation/network/sk98lin.txt

これは sk98lin ドライバの README ファイルである。 これには詳細なインストール HOWTO が含まれており、 ドライバの全ての引き数が記述されている。 また一般的な問題とその解決法も示している。

バグ

バグは linux@syskonnect.de に報告してほしい。

著者

Ralph Roesler \(em rroesler@syskonnect.de
Mirko Lindner \(em mlindner@syskonnect.de

関連項目