Solaris Bandwidth Manager の設定ファイルには、帯域幅をネットワークトラフィックに割り振るために使用される一般的な設定パラメータといくつかの定義が入っています。これらの定義の順番は任意ですが、他の定義を前方参照することはできません。
設定ファイルには、次の項目についての定義が入っています。
URL グループ
ホストグループ
サブネットグループ
サービス
フィルタ
インタフェース
クラス
定義の終わりは、次の定義の始まりを示すキーワードかファイルの終了 (EOF) で示されます。定義には、キーワードとその値のペアが連続して含まれます。クラス名とフィルタ名は 20 文字以内である必要があります。
いくつかのキーワードは、1 つの値しか指定できないが、1 つのサブセクションに複数回現れることができます。他のキーワードは、コンマで区切って複数値を指定できます。コンマは値の中に指定できません。キーワードの値の一覧が 1 行を超える場合、バックスラッシュ (¥) を継続文字として使用してください。バックスラッシュは、行の最後の文字でなければ値の中に指定できます。行の最後の文字の場合、バックスラッシュは継続文字として扱われます。
コメント行も含めることができます。コメント行はハッシュ記号 (#) で始まります。ハッシュ記号で始まる行はすべてコメントとして扱われます。ただし、ハッシュ記号は値の中に指定できます。コメント行の中では、どのような文字も使用できます。
設定ファイルを編集するためには、root である必要があります。
設定ファイルには、次のような一般的なパラメータが含まれます。
timeout 秒 - 動的なクラスまたはフィルタにトラフィックがクラス分けされない場合の、その動的なクラスまたはフィルタが削除されるまでの制限時間 (秒) を示す。デフォルトの値は 30 秒です。値に 0 を指定した場合、動的なクラスまたはフィルタは削除されない
version - 使用中の製品のバージョンを示す。この製品の場合は 1.6
URL グループの定義は、1 つまたは複数の URL (Uniform Resource Locator) のリストです。
url_group name url url_address
name は URL グループ名を示す
url_address は URL ベースのフィルタを示す。protocol://username:password@host:port/path のように指定する。各要素の説明は次のとおり
protocol は、使用される転送プロトコルを示す。たとえば、http、ftp、nntp など。使用されなかった場合は http が使用される。ワイルドカードとしてアスタリスク (*) を使用すると、任意のプロトコルを指定できる
username は、リモートサーバーに接続するためのログイン名を示す。username を使用するかどうかは任意。ワイルドカードとしてアスタリスク (*) を使用すると、任意のユーザー名 (ログイン名) を指定できる
password は、ユーザーのログイン名 (username) に対応するパスワードを示す。password を使用するかどうかは任意。ワイルドカードとしてアスタリスク (*) を使用すると、任意のパスワードを指定できる。クラス分けに対して、パスワードは無視される
host は Web サーバーを示す。このフィルタの値には、IP アドレス、ホスト名、またはドメイン名を指定できる。ワイルドカードとしてアスタリスク (*) を使用すると、任意のホストを指定できる
port はポート番号を示す。ワイルドカードとしてアスタリスク (*) を使用すると、任意のプロトコルを指定できる。指定されなかった場合は、/etc/services ファイルで指定されたデフォルトのプロトコルが使用される
path は URL のパスを示す。ワイルドカードとしてアスタリスク (*) を使用すると、*.htm などの特定のパターンを指定できる。1 つのパスには複数のアスタリスクを指定できない
次の文字は制限されており、パーセント記号 (%) のあとにアスキーコードとして入力する必要があります。
文字 |
アスキーコード |
---|---|
% |
25 |
@ |
40 |
: |
3A |
, |
2C |
# |
23 |
スラッシュ文字 (/) はパスの一部としてだけ使用できます。
url_group web_sun_group url http://www.sun.com/*.html url http://www.sun.com/*.gif url http://*:8080/‾mylogin url ftp://ftp.sun.com/*
ホストグループは、IP アドレス (ドット形式) またはホスト名のリストです。ホスト名は、Solaris Bandwidth Manager が動作しているシステム上にあるホストのデータベースによって解釈処理されます。
host_group name address address_list
name はホストグループ名を示す
address_list は、当該グループに含めるホストのリストを示す
host_group grp_sales address 134.xxx.yyy.1, 134.xxx.yyy.2 host_group grp_paris address 125.xxx.yyy.1, 125.xxx.yyy.2, apple, pear,¥ orange
サブネットグループは、IP アドレス (ドット形式) またはネットワーク名のリストです。ネットワーク名は、Solaris Bandwidth Manager が動作しているシステム上にあるホストのデータベースによって、またはネットワークテーブルによって解釈処理されます。サブネットグループにはサブネットマスクも含まれます。
subnet_group name address address_list mask subnet_mask
name はサブネットグループ名を示す
address_list は、このグループに含めるネットワークのリストを示す。ネットワーク名で入力する場合、リスト中のネットワークは /etc/hosts ファイルまたは /etc/networks ファイルに定義されている必要がある
subnet_mask はドット形式のサブネットマスクを示す。+ スタイルのサブネットマスクは使用できない
subnet_group grp_nets address 129.xxx.yyy.0, plum mask 225.225.225.0
サービスの定義は、アプリケーション層の用語で定義されるサービス (という概念) と、実際に使用されるプロトコルとポートの間にマッピングを提供します。サービスの定義には、PIM、RSVP、IGMP などの制御プロトコルも含まれます。 /opt/SUNWconn/ba/lib/services.def ファイルには、いくつかのサービスが事前定義されています。「完全な設定」には、事前定義されているサービスが示してあります。
service name protocol protocol ports local_port,remote_port
name はサービス名を示す
protocol はキーワード ANY か、/etc/protocols ファイルに定義されている任意のプロトコルを示す
local_port と remote_port は、サービスが使用する発信元ポートと着信先ポートで、コンマで区切られる。アスタリスク (*) を使用すると、任意のポートを指定できる。キーワード ports と、ポートのペアは複数回指定できる
混乱を避けるために、トラフィックの方向に関係なく、「ローカル」と「リモート」という形容詞は、同じサーバーまたはポートを指します。「ローカル」は Solaris Bandwidth Manager が動作しているサーバーを指し、「リモート」はネットワーク上の残りのマシンを指します。Solaris Bandwidth Manager の IP 透過モードでは、「ローカル」は LAN 側を示し、「リモート」は WAN 側を指します。
service tv protocol tcp ports 2023,* ports 2024,* ports *,2023 ports *,2024
フィルタには、ローカルの情報、リモートの情報、およびサービスが入っています。フィルタは、パケットのクラスを決定するために使用されます。フィルタには、URL 情報と TOS 値も入っています。
filter name local type type local_info remote type type remote_info url type urltype url_info tos_match tos_match tos_match_mask tos_match_mask service service
name はフィルタを示す。フィルタ名には 20 文字まで含むことができる
type は、ローカルまたはリモートのネットワークエンティティを識別する情報の種類を示す。次のうちの 1 つ
host
host_group
subnet
subnet_group
local_info と remote_info は、特定のローカルとリモートのネットワークエンティティ情報を示す。「ローカル」と「リモート」の意味はサービスの定義と同様。その形式は、type の値によって異なる
type が host の場合、キーワード address と、IP アドレスまたはホスト名を指定する
type が host_group の場合、キーワード name と、設定ファイル内ですでに定義されているホストグループ名を指定する
type が subnet の場合、キーワード mask と、サブネットマスク (10 進数のドット形式のみ) を指定する。さらに、キーワード address と、IP アドレスまたはネットワーク名を指定する
type が subnet_group の場合、キーワード name と、設定ファイル内ですでに定義されているサブネットグループ名を指定する
urltype は url 設定を識別する情報の種類を示す。次のうちの 1 つ
url
url_group
url_info は特定の URL 情報を示す。その形式は urltype の値によって異なる
urltype が url の場合、キーワード address と、protocol://username:password@host:port/path の形式で URL を指定する
urltype が url_group の場合、キーワード name と、設定ファイル内ですでに定義されている url グループ名を指定する
tos_match は 0 から 255 までの TOS (Type of Service) 値を示す。この値は、16 進数、10 進数、または 8 進数で指定できる。詳細は、「TOS (Type of Service) 値」を参照。16 進数の接頭辞は 0x で、8 進数の接頭辞は 0
tos_match_mask は、IP ヘッダーの TOS 値のどのビットを tos_match で指定した値と比較させるかを定義するビットマスクを示す。詳細は、「TOS (Type of Service) 値」を参照
service は 1 つまたは複数のサービスの名前を示す。どのサービスでもいい場合には、キーワード service を指定しないでください
filter filter1 local type host address apricot remote type host_group name grp_sales tos_match 0x03 tos_match_mask 0x0F service ftp,http filter filter2 local type subnet_group name grp_nets remote type subnet address 129.xxx.yyy.0 mask 255.255.255.0 url type url_group name web_sun_group service http
インタフェースの定義は、Solaris デバイス名、そのフロー方向、および関連付ける帯域幅を指定します。
interface name rate bandwidth activate status router_addr router_addr router_mac router_mac network network_device multicast multicast nonip_mode non_ipmode
name はデバイス名を示し、次の接尾辞が続く。
_out は、このインタフェースの下にある階層が発信トラフィックだけを調節することを示す。接尾辞を指定しなかった場合、これがデフォルト
_in は、このインタフェースの下にある階層が着信トラフィックだけを調節することを示す
bandwidth は、このデバイスに関連する運用上の帯域幅の速度を示す。この値は、必ずしもデバイスで利用できる最大値である必要はない。この値は、デバイスの最大値を超えてはならない
帯域幅の速度の値を決定するときは、デバイスの公称の速度ではなく、実際の運用上の速度を考慮します。
status は、Solaris Bandwidth Manager に関して、インタフェースの状態を示す。次のうちの 1 つ。
enabled は、分類機能とスケジューラが動作していることを示す。インタフェース上で帯域幅の割り振りが利用され、統計が収集される。これはデフォルトの値
tos は、分類機能が動作しているが、スケジューラが動作していないことを示す。統計が収集され、TOS がアクティブ化される。このモードでは、TOS はクラスでマーキングに使用される
stats は、分類機能が動作しているが、スケジューラが動作していないことを示す。統計が収集される
disabled は、インタフェース上で帯域幅の割り振りが利用されないことを示す
Solaris Bandwidth Manager を IP 透過モードで使用する場合、キーワード router_addr、network、および router_mac を指定する必要があります。
router_address は、ルーターの IP アドレス (またはホスト名) のリストを示す。複数のアドレスを指定する場合はコンマで区切る
network_device は、LAN に接続されているデバイス名を示す
router_mac はルーターの MAC アドレスを示す。この値は、標準の 16 進数形式か、ethers テーブルで参照されているホスト名で指定できる
IP 透過モードでは、次のパラメータは任意です。
multicast は、マルチキャストパケットの転送方法を定義する
none は、マルチキャストパケットが転送されないことを示す
all は、すべてのマルチキャストパケットが ipqos 経由で転送されることを示す。ただし、time-to-live が 2 より少ない場合、またはパケットがローカルのサブネットトラフィックである (つまり、着信先アドレスが 224.0.0.0 から 224.0.0.255 の範囲内のトラフィックである) 場合は、ルーターに直接送信される
direct は、すべてのマルチキャストパケットが、ipqos 経由ではなく直接転送されることを示す
Solaris Bandwidth Manager のマルチキャストトラフィックの処理方法の詳細は、「マルチキャスト経路制御と Solaris Bandwidth Manager」を参照のこと
nonip_mode は、非 IP パケットをどのように転送するかを定義する
ipqos は、すべての非 IP パケットを分類およびスケジュールすることを示す
direct は、すべての非 IP パケットが、ipqos 経由ではなく直接転送されることを示す。このようなパケットは統計に記録されない
interface qe0_out rate 512000 activate enabled router_addr 134.xxx.yyy.3 router_mac 809xxxxx network le0 multicast all nonip_mode ipqos
クラスの定義は、クラスのパラメタを含みます。パケットをこのクラスに分類する要因となるフィルタも含みます。
class name parent parent_class interface interface bandwidth bandwidth max_bandwidth max_bandwidth priority priority bandwidth_bps bandwidth_bps max_bandwidth_bps max_bandwidth_bps tos_mark tos_mark tos_mark_mask tos_mark_mask flow_events flow_events filter filter
name はクラス名を示す。クラス名は、指定したインタフェースに対してユニークである必要がある。このクラスをデフォルトのクラスとして機能させる場合、default というクラス名を指定する必要がある
parent_class は、階層内でこのクラスの上にあるクラスの名前を示す
interface は、このクラスのトラフィックで使用されるインタフェース名を示す
bandwidth は、クラスに割り振られているインタフェースの帯域幅 (%) を示す。このパラメータか bandwidth_bps のどちらかを使用する
max_bandwidth は、このクラスが使用できる最大帯域幅 (%) を示す。この値には、親クラスから借用する帯域幅も含まれる。このパラメータか max_bandwidth_bps のどちらかを使用する
priority はクラスの優先度を示す。1 (最高の優先度) から 7 (最低の優先度) までの整数を指定する
bandwidth_bps は、クラスに割り振られている帯域幅の絶対値 (bps) を示す。このパラメータか bandwidth のどちらかを使用する
max_bandwidth_bps は、このクラスで使用できる最大帯域幅の絶対値 (bps) を示す。この値には、親クラスから借用する帯域幅も含まれる。このパラメータか max_bandwidth のどちらかを使用する
tos_mark は 0 から 255 までの TOS (Type of Service) 値です。この値は、このクラス内にある分類されたパケットの既存の値を変更する。詳細は、「TOS (Type of Service) 値」を参照
tos_mark_mask は、IP ヘッダーにおける TOS 値のどのビットを tos_mark で指定した値で変更するかを定義するビットマスクを示す。詳細は、「TOS (Type of Service) 値」を参照
flow_events は、新しいフローがクラスで検出されたときに、フロー追加イベントが生成されることを示す。このキーワードの値に意味はない。フロー追加イベントを無効にするには、この行をファイルから削除する
filter は、このクラスにパケットを割り振るフィルタ名を示す。複数のフィルタを指定する場合はコンマで区切る
class test_class parent root interface qe0_out bandwidth 35 max_bandwidth 45 priority 3 tos_mark 0x07 tos_mark_mask 0x0F flow_events ip_source filter filter1,filter2
Solaris Bandwidth Manager は、次のような方法で TOS バイトを使用します。
フィルタ内で、分類の基準として使用する
クラス内で、TOS バイトをどのように上書きする必要があるかを定義するのに使用する
1000 |
最小遅延 |
0100 |
最大スループット |
0010 |
最大信頼性 |
0001 |
金銭的な最小コスト |
0000 |
通常サービス |
フィルタ内の分類基準は、tos_match パラメータと tos_match_mask パラメータで定義されます。tos_match_mask は、TOS バイトのどのビットをチェックする必要があるかを定義するビットマスクです。tos_match はチェックする値です。
たとえば、TOS フィールドで「最小遅延」ビットが設定されていて「金銭的な最小コスト」ビットが設定されていない (つまり、xxx 1xx0x である) すべてのパケットをフィルタにかけるには、tos_match_mask を 000 1001 0 (0x12) に設定し、tos_match を 000 1000 0 (0x10) に設定する必要があります。
クラス内では、tos_mark_mask パラメータと tos_mark パラメータが使用されます。tos_mark_mask は、TOS バイトのどのビットを変更するかを定義するビットマスクです。tos_mark は適用する値です。