ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での仮想ネットワークの使用 Oracle Solaris 11.1 Information Library (日本語) |
1. Oracle Solaris でのネットワーク仮想化およびリソース管理
2. Oracle Solaris での仮想ネットワークの作成および管理
3. Oracle Solaris でのネットワークリソースの管理
NIC 上にある受信 (Rx) リングと送信 (Tx) リングはそれぞれ、システムがネットワークパケットの受信と送信を行うために使用するハードウェアリソースです。以降のセクションでは、リングの概要について説明したあと、ネットワークプロセスにリングを割り当てるために使用される手順を示します。また、リングを割り当てるコマンドを発行したときに、このメカニズムがどのように動作するかを示す例も提供されます。
VNIC やその他のデータリンクなどの MAC クライアントは、システムとほかのネットワークノードの間の通信を可能にするために NIC 上に構成されます。各クライアントは構成されたあと、Rx リングと Tx リングの両方を使用して、それぞれネットワークパケットを受信または送信します。MAC クライアントは、ハードウェアベースまたはソフトウェアベースのどちらかです。ハードウェアベースのクライアントは、次の条件のいずれかを満たします。
1 つ以上の Rx リングを専用に使用できます。
1 つ以上の Tx リングを専用に使用できます。
1 つ以上の Rx リングと 1 つ以上の Tx リングを専用に使用できます。
これらのいずれの条件も満たさないクライアントは、ソフトウェアベースの MAC クライアントです。
NIC によっては、ハードウェアベースのクライアントにリングを排他的使用のために割り当てることができます。nxge などの NIC は、動的なリング割り当てをサポートしています。このような NIC では、ハードウェアベースのクライアントを構成できるだけではありません。リングが割り当てに使用できる状態のままにあると仮定すると、このようなクライアントに割り当てるリングの数を決定できる柔軟性もあります。リングの使用は、常にプライマリインタフェース (たとえば、net0) のために最適化されます。プライマリインタフェースは、プライマリクライアントとも呼ばれます。ほかのクライアントによって排他的使用のために割り当てられていない使用可能なリングはすべて、プライマリインタフェースに自動的に割り当てられます。
ixge などのほかの NIC は、静的なリング割り当てのみをサポートしています。これらの NIC では、ハードウェアベースのクライアントだけを作成できます。各クライアントには、クライアントごとに固定されたリングのセットが自動的に構成されます。この固定されたセットは、NIC ドライバの初期構成中に決定されます。静的なリング割り当てのためのドライバの初期構成についての詳細は、『Oracle Solaris 11.1 カーネルのチューンアップ・リファレンスマニュアル』を参照してください。
ソフトウェアベースのクライアントは、リングを排他的に使用できません。代わりに、これらのクライアントは、ほかの既存のソフトウェアベースのクライアントまたはプライマリクライアントとリングを共有します。ソフトウェアベースのクライアントが使用するリングは、リング割り当てで優先順位を持つハードウェアベースのクライアントの数によって異なります。
プライマリクライアントとその他のセカンダリクライアントの区別を理解することが重要です。プライマリクライアントは、NIC の物理的なデータリンクです。インストール中に Oracle Solaris によって提供される汎用名に基づいて、プライマリクライアントには netN という名前が付けられます。ここで、N はインスタンス番号です。データリンクの汎用名については、『Oracle Solaris 11 ネットワーキングの紹介』の「ネットワークデバイスとデータリンク名」を参照してください。VNIC は、物理的なデータリンク上に作成されるセカンダリクライアントです。これらのクライアントがハードウェアベースのクライアントである場合は、リングを排他的に使用できます。それ以外の場合、これらのクライアントはソフトウェアベースです。
VLAN でのリングの割り当て処理は、その VLAN が作成された方法によって異なります。VLAN は、次の 2 つの方法のどちらかで作成されます。
dladm create-vlan サブコマンドを使用して:
# dladm create-vlan -l link -v vid vlan
dladm create-vnic サブコマンドを使用して:
# dladm create-vnic -l link -v vid vnic
dladm create-vlan サブコマンドで作成された VLAN は、ベースとなるインタフェースと同じ MAC アドレスを共有します。その結果、その VLAN は、ベースとなるインタフェースの Rx リングと Tx リングも共有します。dladm create-vnic コマンドを使用して VNIC として作成された VLAN には、ベースとなるインタフェースとは異なる MAC アドレスが割り当てられます。このような VLAN へのリングの割り当ては、ベースとなるリンクへの割り当てとは独立して行われます。そのため、NIC がハードウェアベースのクライアントをサポートしていると仮定すると、その VLAN には独自の専用リングを割り当てることができます。
リングを管理するために、dladm コマンドを使用して、次の 2 つのリングプロパティーを設定できます。
rxrings は、指定されたリンクに割り当てられた Rx リングの数を示します。
txrings は、指定されたリンクに割り当てられた Tx リングの数を示します。
各プロパティーを次の 3 つの指定可能な値のいずれかに設定できます。
sw は、ソフトウェアベースのクライアントを構成していることを示します。このクライアントは、リングを排他的に使用できません。代わりに、このクライアントは、同様に構成されたほかのすべての既存のクライアントとリングを共有します。
n > 0 (0 より大きい数) は、ハードウェアベースのクライアントの構成にのみ適用されます。この数は、クライアントに排他的使用のために割り当てるリングの数量を示します。数を指定できるのは、ベースとなる NIC が動的なリング割り当てをサポートしている場合だけです。
hw もまた、ハードウェアベースのクライアントの構成に適用されます。ただし、このようなクライアントでは、専用リングの実際の数を指定することはできません。代わりに、NIC ドライバの初期構成に従って、クライアントごとに固定された数のリングがすでに設定されています。*rings プロパティーを hw に設定するのは、ベースとなる NIC が静的なリング割り当てをサポートしている場合だけです。
現在のリングの割り当てと使用に関する情報を表示するために、次の追加の読み取り専用のリングプロパティーが使用できます。
rxrings-available と txrings-available は、割り当てに使用できる Rx リングと Tx リングの数を示します。
rxhwclnt-available と txhwclnt-available は、NIC 上に構成できる Rx と Tx のハードウェアベースのクライアントの数を示します。
データリンクの受信および送信リングの使用を管理するには、次の主体 dladm サブコマンドを使用します。
dladm show-linkprop – リンクプロパティーの現在の値を表示します (Rx および Tx リングを含む)。この出力では、データリンクのリングサポート機能に関する次の情報が提供されます。Rx および Tx リングを使用するように構成できるクライアントのタイプを判定するには、これらの情報が必要です。
作成できる使用可能なクライアント
使用可能なクライアントに割り当てることのできる使用可能なリング
動的または静的なリング割り当てをサポートするための機能
静的なリング割り当てのみがサポートされている場合は、既存のクライアントへのリングの現在の配布
このコマンドの出力を解釈する方法についての詳細は、「リング割り当てのためのデータリンクプロパティー」を参照してください。
dladm show-phys -H datalink – 物理的なデータリンクのリングが現在、既存のクライアントによってどのように使用されているかを表示します。
dladm create-vnic -p ring-properties vnic – トラフィックの処理に使用するための特定の数の Tx または Rx リングを持つクライアントを作成します。
dladm set-linkprop -p ring-properties datalink – リングが使用可能であり、かつリング割り当てがサポートされている場合は、特定のクライアントにリングを割り当てます。
このセクションでは、データリンクのリング関連のプロパティーを表示する dladm show-linkprop 出力について説明します。
このセクションでは、リング関連のプロパティーに関するコマンド出力の例を示したあと、取得できる情報の種類について説明します。これらの例では、次の NIC が使用されています。
net0 (nxge 上)
net1 (ixgbe 上)
net2 (e1000g 上)
例 3-1 nxge のリング情報
# dladm show-linkprop net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net0 rxrings rw -- -- sw,<1-7> ... net0 txrings rw -- -- sw,<1-7> ... net0 rxrings-available r- 5 -- -- net0 txrings-available r- 5 -- -- net0 rxhwclnt-available r- 2 -- -- net0 txhwclnt-available r- 2 -- -- ...
net0 では、POSSIBLE フィールドの値は、rxrings と txrings に対して sw と <1-7> です。これらの値は、nxge がソフトウェアベースのクライアントだけでなく、ハードウェアベースのクライアントをサポートしていることを示します。範囲 <1-7> は、クライアントに対して設定できる Rx リングまたは Tx リングの数の制限を示しています。この範囲はまた、NIC が受信側と送信側の両方に対して動的なリング割り当てをサポートしていることも示しています。
さらに、*rings-available プロパティーは、ハードウェアベースのクライアントに割り当てるために 5 つの Rx リングと 5 つの Tx リングが使用可能なことを示しています。
ただし、*clnt-available プロパティーは、使用可能な Rx リングを排他的に使用できるクライアントを 2 つしか構成できないことを示しています。同様に、使用可能な Tx リングを排他的に使用できるクライアントは 2 つしか構成できません。
例 3-2 ixgbe のリング情報
# dladm show-linkprop net1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net1 rxrings rw -- -- sw,hw ... net1 txrings rw -- -- sw,hw,<1-7> ... net1 rxrings-available r- 0 -- -- net1 txrings-available r- 5 -- -- net1 rxhwclnt-available r- 0 -- -- net1 txhwclnt-available r- 7 -- -- ...
net1 では、rxrings と txrings の両方に対する POSSIBLE フィールドの値 sw と hw は、ixgbe がハードウェアベースのクライアントとソフトウェアベースのクライアントの両方をサポートしていることを示しています。Rx リングでは、静的なリング割り当てのみがサポートされています。つまり、ハードウェアがハードウェアベースの各クライアントに、固定された Rx リングのセットを割り当てます。ただし、Tx リングの場合、範囲 <1–7> は、動的割り振りがサポートされていることを示しています。ハードウェアベースのクライアントに割り当てる Tx リングの数 (この例では、最大 7 リング) を判定できます。
さらに、*rings-available プロパティーは、ハードウェアベースのクライアントに割り当てるために 5 つの Tx リングが使用可能であるが、割り当て可能な Rx リングはないことを示しています。
最後に、*hwclnt-available プロパティーに基づいて、ハードウェアベースの 7 つの Tx クライアントを Tx リングを排他的に使用するように構成できます。ただし、動的な Rx リング割り当てがサポートされていないため、Rx リングを排他的に使用できるハードウェアベースのクライアントを作成することはできません。
どちらかの *rings-available プロパティーの VALUE フィールドにあるゼロ (0) は、次のどちらかを示すことがあります。
クライアントに割り当てるために使用可能なリングがなくなった。
動的なリング割り当てがサポートされていない。
rxrings および txrings の POSSIBLE フィールドと、rxrings-available および txrings-available の VALUE フィールドと比較することによって、この 0 の意味を確認できます。
たとえば、次のように txrings-available が 0 であるとします。
# dladm show-linkprop net1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net1 rxrings rw -- -- sw,hw net1 txrings rw -- -- sw,hw,<1-7> net1 rxrings-available r- 0 -- -- net1 txrings-available r- 0 -- -- ...
この出力では、rxrings-available の VALUE フィールドが 0 であるのに対して、rxrings の POSSIBLE フィールドは sw,hw です。これらの情報を組み合わせると、使用可能な Rx リングがないのは NIC が動的なリング割り当てをサポートしていないためであることがわかります。送信側では、txrings-available の VALUE フィールドが 0 であるのに対して、txrings の POSSIBLE フィールドは sw,hw,<1-7> です。これらの情報を組み合わせると、使用可能な Tx リングがないのはすべての Tx リングがすでに割り当てられているためであることがわかります。ただし、txrings の POSSIBLE フィールドが示しているように、動的なリング割り当てはサポートされています。そのため、Tx リングが使用可能になったら、これらのリングを割り当てることができます。
例 3-3 e1000g のリング情報
# dladm show-linkprop net2 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net2 rxrings rw -- -- -- ... net2 txrings rw -- -- -- ... net2 rxrings-available r- 0 -- -- net2 txrings-available r- 0 -- -- net2 rxhwclnt-available r- 0 -- -- net2 txhwclnt-available r- 0 -- -- ...
この出力は、e1000g ではリング割り当てがサポートされていないため、リングもハードウェアベースのクライアントも構成できないことを示しています。
次の 2 つの読み取り専用のデータリンクプロパティーによって、リングが現在、データリンク上の既存のクライアントによってどのように使用されているかに関する情報が提供されます。
rxrings-effective
txrings-effective
リングの使用と、どのリングがクライアントに配布されているかに関する情報を取得するには、dladm show-linkprop サブコマンドと dladm show-phys -H サブコマンドの両方を使用します。
次の例は、Rx および Tx リングの使用と、これらのリングがクライアント間でどのように配布されているかに関して、この 2 つのコマンドによって生成された異なるタイプの出力を示しています。
例 3-4 プライマリクライアントのリングの使用
プライマリクライアントは、NIC の物理的なデータリンク上に構成されたインタフェースです。この例の場合、NIC は ixgbe カードです。デフォルトでは、そのデータリンクは net0 です。net0 上の IP インタフェースはプライマリクライアントです。
# dladm show-linkprop net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net0 rxrings rw -- -- sw,hw net0 rxrings-effective r 2 -- -- net0 txrings rw -- -- sw,hw,<1-7> net0 txrings-effective r 8 -- -- net0 txrings-available r- 7 -- -- net0 rxrings-available r- 0 -- -- net0 rxhwclnt-available r- 3 -- -- net0 txhwclnt-available r- 7 -- -- ... # dladm show-phys -H net0 LINK RINGTYPE RINGS CLIENTS net0 RX 0-1 <default,mcast> net0 TX 0-7 <default>net0 net0 RX 2-3 net0 net0 RX 4-5 -- net0 RX 6-7 --
この出力では、プライマリクライアント net0 でのリングの使用と配布に関する次の情報が提供されます。
rxrings-effective は、net0 が 2 つの Rx リングを自動的に受信することを示しています。txrings-effective は、net0 が 8 つの Tx リングを使用していることを示しています。デフォルトでは、未使用のリングはすべて、プライマリクライアントに自動的に割り当てられます。
dladm show-phys -H コマンドの出力に基づくと、net0 に割り当てられた 2 つの Rx リングはリング 2 および 3 です。Tx リングに関しては、net0 はリング 0 から 7 を使用しています。
例 3-5 セカンダリクライアントのリングの使用
この例では、net0 上の VNIC クライアント vnic1 および ixgbe カードの物理的なデータリンクの構成を前提にしています。
# dladm show-linkprop vnic1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic1 rxrings rw hw -- sw,hw vnic1 rxrings-effective r- 2 -- -- vnic1 txrings rw hw -- sw,hw,<1-7> vnic1 txrings-effective r- 1 -- -- ... # dladm show-linkprop net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... net0 rxrings rw -- -- sw,hw net0 rxrings-effective r- 2 -- -- net0 txrings rw -- -- sw,hw,<1-7> net0 txrings-effective r- -- -- -- net0 txrings-available r- 6 -- -- net0 rxrings-available r- 0 -- -- net0 rxhwclnt-available r- 3 -- -- net0 txhwclnt-available r- 6 -- -- ... # dladm show-phys -H net0 LINK RINGTYPE RINGS CLIENTS net0 RX 0-1 <default,mcast> net0 TX 0,2-7 <default>net0 net0 RX 2-3 net0 net0 RX 4-5 vnic1 net0 RX 6-7 -- net0 TX 1 vnic1
これらの 3 つのコマンドの出力を組み合わせると、次の情報が提供されます。
vnic1 の rxrings-effective は、この VNIC が 2 つの Rx リングを自動的に受信することを示しています。txrings-effective は、vnic1 が 1 つの Tx リングを使用していることを示しています。*ring プロパティーに対して設定された hw 値で示されているように、これらのリングは静的に割り当てられます。
dladm show-phys -H コマンドの出力に基づくと、net0 に割り当てられた 2 つの Rx リングはリング 2 および 3 です。Tx リングに関しては、net0 はリング 0 とリング 2 から 7 を使用しています。vnic1 は、Tx リングにはリング 1 を、Rx リングにはリング 4 および 5 を使用しています。
vnic1 は、静的なリング割り当てでハードウェアベースのクライアントとして構成されていることに注意してください。その結果、net0 上に作成できる使用可能な Tx ハードウェアクライアント (txhwclnt-available) の数は 6 に削減されています。
この手順では、リング割り当てに対するサポートの種類に基づいて、データリンク上にクライアントを構成する方法について説明します。「データリンクのリング割り当て機能の表示」および 「データリンク上でのリングの使用とリングの割り当ての表示」で説明されているように、データリンクのリングプロパティーを表示する dladm コマンドの出力を解釈できることを確認してください。これらの情報は、クライアントを構成するうえで役立ちます。
# dladm show-linkprop datalink
この出力から、次の内容を判定します。
NIC がハードウェアベースのクライアントをサポートしているかどうか
NIC がサポートしているリング割り当てのタイプ
ハードウェアベースのクライアントに割り当てるためのリングの可用性
リンク上に構成できるハードウェアベースのクライアントの可用性
NIC が動的なリング割り当てをサポートしている場合は、次の構文を使用してハードウェアベースのクライアントを作成します。
# dladm create-vnic -p rxrings=number[,txrings=number] -l link vnic
このクライアントが以前に作成されている場合は、次の構文を使用します。
# dladm set-linkprop -p rxrings=number[,txrings=number] vnic
注 - NIC によっては、Rx リングまたは Tx リングのどちらかで動的なリング割り当てをサポートしているが、両方のタイプではサポートしていないものがあります。number は、動的なリング割り当てがサポートされているリングのタイプに対して指定してください。
NIC が静的なリング割り当てをサポートしている場合は、次の構文を使用してハードウェアベースのクライアントを作成します。
# dladm create-vnic -p rxrings=hw[,txrings=hw] -l link vnic
このクライアントが以前に作成されている場合は、次の構文を使用します。
# dladm set-linkprop -p rxrings=hw[,txrings=hw] vnic
注 - NIC によっては、Rx リングまたは Tx リングのどちらかで静的なリング割り当てをサポートしているが、両方のタイプではサポートしていないものがあります。hw は、静的なリング割り当てがサポートされているリングのタイプに対して指定してください。
NIC がソフトウェアベースのクライアントのみをサポートしている場合は、次の構文を使用してクライアントを作成します。
# dladm create-vnic -p rxrings=sw[,txrings=sw] -l link vnic
このクライアントが以前に作成されている場合は、次の構文を使用します。
# dladm set-linkprop -p rxrings=sw[,txrings=sw] vnic
# dladm show-linkprop vnic
# dladm show-phys -H datalink
参照
仮想ネットワーク内のネットワークトラフィックを処理するためにフローを使用する方法や、システムリソース (Rx および Tx リングを含む) を割り当てる方法を示す例については、例 3-8 を参照してください。