次の構成のいずれかを使用しているか、使用する予定である場合は、GLOBALCONFIG プロファイル・ステートメントで EXPLICITBINDPORTRANGE パラメーターを指定する必要があります。
- SRCIP ブロック内の DESTINATION 規則のソース IP アドレスとしての分散 DVIPA
- マップされた IPv4 宛先アドレスとの接続に IPv6 ソケットを使用する可能性があるアプリケーションのための、SRCIP ブロック内の JOBNAME 規則のソース IP アドレスとしての分散 DVIPA (これが当てはまるのは、スタックが IPv6 対応である場合のみです)。
GLOBALCONFIG ステートメントの EXPLICITBINDPORTRANGE パラメーターは、シスプレックス (またはサブプレックス) 全体で割り当てられたポートの固有性を保証するために管理される一時ポートのプールを設定します。
このポート・プールは、connect() 要求を発行する前に INADDR_ANY または IPv6 無指定アドレス (in6addr_any) およびポート 0 への明示 bind() を発行する任意のアプリケーションに対して、シスプレックス全体にわたる固有の一時ポートを提供するのに使用されます。
アプリケーションが接続前に、INADDR_ANY または in6addr_any およびポート 0 への明示 bind() を使用する場合、TCP は、このプールから一時ポートを割り当てて、シスプレックス全体の固有性を確保します。これは、明示 bind() の時点で、connect() 時に判別されるソース IP アドレスが、SRCIP ブロック内の JOBNAME または DESTINATION 規則での一致から得られる分散 DVIPA であるかどうかを判別できないからです。
ソース IP アドレスが分散 DVIPA であるときに、各接続 4 タプルがシスプレックス全体で固有のままであるように、割り当てられた一時ポート値のシスプレックス全体にわたる調整が必要です。
制約事項: シスプレックス全体にわたる固有ポートの EXPLICITBINDPORTRANGE プールの使用は、一部の共通 INET (CINET) 構成でサポートされません。サポートされるのは、スタック・アフィニティーが確立される場合、または CINET が管理するアクティブ TCP/IP スタックが 1 つしかない場合です。それ以外の場合は、パラメーターは受け入れられますが、結果は予測不能です。
EXPLICITBINDPORTRANGE が構成されるときに、アプリケーションがソース・ポートを 1024 未満のポート番号、もしくは PORT または PORTRANGE プロファイル・ステートメントによってジョブ用に予約された一時ポートのどちらかに明示的にバインドしている場合、一致する SRCIP JOBNAME または DESTINATION 規則から接続処理時に分散 DVIPA を選択することも可能です。しかし、ソース・ポートが、ジョブ用に予約されていない一時ポートにバインドされ、接続処理時に SRCIP 規則から選択されるソース・アドレスが分散 DVIPA である場合、接続要求は失敗します。
規則: ソース・ポートが 1024 未満であるか、このジョブ用に予約されたポートのどちらかであるときに、指定されたソースが分散 DVIPA である場合、同じ宛先 IP アドレスおよびポートとの複数のアウトバウンド接続が、同じソース IP アドレスおよびポートと並行して発生できないことを確認してください。
プロファイルが処理されるときに、EXPLICITBINDPORTRANGE パラメーターを指定する GLOBALCONFIG ステートメントを含むプロファイルを持つスタックは、以下のアクションを行います。
- シスプレックス・ポート割り当て情報が入っているカップリング・ファシリティー SYSPLEXPORTS ストラクチャーに接続する
- EXPLICITBINDPORTRANGE パラメーターによって設定されるプールとスタックを関連付ける
このストラクチャーは、DVIPA アドレスごとにエントリーがあるリスト構造で、この各エントリーには、シスプレックス (またはサブプレックスが使用される場合はサブプレックス) 内のどの場所にも SYSPLEXPORTS パラメーター指定の VIPADISTRIBUTE ステートメントがあります。
リスト 0 には、明示バインド・ポート範囲プールを維持する項目が入っています。それ自体をプールと関連付ける各スタックは、そのプールのポート範囲を設定します。
スタックは、ストラクチャーで、そのスタックの割り当てポートのサブリストをリスト 0 に作成し、初期化します。
注: このストラクチャーの名前は EZBEPORT
vvtt 形式です。ここで、
vv 値は、XCFGRPID 開始オプションで指定される、2 文字の VTAM® グループ ID サフィックスであり、
tt 値は、TCP/IP プロファイルの GLOBALCONFIG ステートメントで指定される TCP グループ ID サフィックスです。
VTAM グループ ID サフィックスが指定されず、TCP/IP グループ ID サフィックスが指定される場合、
vv は 01 です。TCP/IP グループ ID サフィックスが指定されず、VTAM グループ ID サフィックスが指定される場合、
tt は存在しません。どちらのグループ ID サフィックスも指定されない場合、
vv と
tt はどちらも存在しません。EZBEPORT
vvtt のセットアップについて詳しくは、「
z/OS Communications Server: SNA ネットワーク・インプリメンテーション・ガイド」の『
VTAM 機能および
TCP/IP 機能のためにシスプレックス環境をセットアップする』を
参照してください。
ガイドライン: - TCP/IP プロファイル内の GLOBALCONFIG EXPLICITBINDPORTRANGE ステートメントが処理されるときに、各スタックは、シスプレックス内のすべての参加スタックに対して、EXPLICITBINDPORTRANGE パラメーターによって設定されるプールの範囲を設定します。
各スタックが異なる範囲を定義する場合、最後に処理される EXPLICITBINDPORTRANGE パラメーターが、それより前に指定されたすべてのポート範囲に優先します。この範囲が、スタックがプロファイル処理を完了する順序に基づいて変動しないようにするには、GLOBALCONFIG EXPLICITBINDPORTRANGE を構成するスタックごとに同じポート範囲を指定してください。
これを行うには、INCLUDE ステートメントを使用して各スタックの TCP/IP プロファイルに組み込まれるファイルで GLOBALCONFIG EXPLICITBINDPORTRANGE ステートメントを指定します。
- 明示バインド・ポート範囲が、PORT または PORTRANGE プロファイル・ステートメントにより予約されている他のポートまたはポート範囲とオーバーラップしないようにしてください。TCPCONFIG プロファイル・ステートメントの EPHEMERALPORTS
パラメーターを使用している場合は、明示バインド・ポート範囲が、
スタックが一般使用のために必要とする一時ポートの多くが消費されていないことを確認します。EXPLICITBINDPORTRANGE パラメーターによって設定されるプール内のポートが、PORT または PORTRANGE ステートメントにより TCP/IP スタックで予約される場合、そのポートは、EXPLICITBINDPORTRANGE 処理のためにそのスタックに割り振ることができません。これにより、EXPLICITBINDPORTRANGE 処理に使用可能な明示バインド・ポート範囲内のポート数が制限される可能性があります。例えば、明示バインド・ポート範囲 40000 から 41000 を定義したときに、ポート 40500 から 41000 を予約する PORTRANGE ステートメントがそのスタックにある場合、
そのスタックには EXPLICITBINDPORTRANGE 処理にポート 40000 から 40499 しか使用できません。
アプリケーションが、PORT または PORTRANGE ステートメントを使用して予約された明示バインド・ポート範囲内のポートにバインドする場合、そのバインドは許可されますが、そのポートは EXPLICITBINDPORTRANGE ポートとして扱われません。SYSPLEXPORTS カップリング・ファシリティー・ストラクチャーで、シスプレックス全体の調整のためにマークが付けられません。この状態により、接続 4 タプルの重複の結果として接続が失敗する可能性があります。
アプリケーションが、PORT または PORTRANGE ステートメントを使用して予約されていない明示バインド・ポート範囲内のポートにバインドする場合、そのバインドは、errnojr JrExpBndPortRangeConflict (x734C) で失敗します。
EXPLICITBINDPORTRANGE パラメーターで指定されたポートは、通常の一時ポート割り振りに使用できません。したがって、EXPLICITBINDPORTRANGE パラメーターによって指定されたポート範囲が EPHEMERALPORTS パラメーターで指定されたポート範囲とオーバーラップすると、このオーバーラップは、一時ポート範囲内のポート数を制限する場合があります。
例えば、明示バインド・ポート範囲 40000 から 41000 を定義した場合に、そのスタックに対して TCPCONFIG ステートメントで一時ポートを 40000 から 41500 に制限する EPHEMERALPORTS パラメーター
が指定されているときには、41001 から 41500 のポートのみをそのスタックでの一般の一時ポート処理に使用できます。
結果: EXPLICITBINDPORTRANGE は、TCPCONFIG EPHEMERALPORTS に優先します。これは、
TCPCONFIG EPHEMERALPORTS が使用中の場合、EXPLICITBINDPORTANGE が
EPHEMERALPORTS 範囲外のポートを指定する場合があることを意味します。
スタックによる EXPLICITBINDPORTRANGE プール参加を解除するには、VARY TCPIP,,OBEYFILE コマンドを使用して NOEXPLICITBINDPORTRANGE パラメーターを指定する GLOBALCONFIG ステートメントを指定します。これにより、そのスタックは EXPLICITBINDPORTRANGE プールとの関連が解除されます。これを行うときに、このスタック上で INADDR_ANY または in6addr_any およびポート 0 との明示 bind() を発行するアプリケーションがあり、それが以下の規則と一致する場合、分散 DVIPA が一致規則でソース IP アドレスとして使用されないことを確実にする必要があります。
- このスタック上の SRCIP ブロックの DESTINATION 規則
- このスタック上の SRCIP ブロックの JOBNAME 規則。ここで、ジョブ名に関連したアプリケーションは、IPv6 ソケットを使用して、IPv4 マップ宛先アドレスに接続する場合があります (これが当てはまるのは、IPv6 対応のスタックのみです)。