ポート制御プロトコル
ポート制御プロトコルの概要
ポート制御プロトコル(PCP)は、NAT44やファイアウォールデバイスなどのアップストリームデバイスによる着信パケットの転送を制御する方法、およびアプリケーションのキープアライブトラフィックを削減する方法を提供します。PCPは、MS-DPC、MS-100、MS-400、MS-500マルチサービスPICでサポートされています。Junos OS リリース 17.4R1 以降、NAPT44 向け PCP は MS-MPC および MS-MIC でもサポートされています。Junos 20.2R1 以降、CGNAT DS-Lite サービスの PCP が次世代サービスでサポートされています。Junos OS リリース 18.2R1 以降、MS-MPC および MS-MIC の PCP が DS-Lite をサポートしています。Junos OS リリース 18.1 以前のリリースでは、MS-MPC および MS-MIC の PCP は DS-Lite をサポートしていません。
PCP は、キャリアグレード NAT(CGN)と小規模 NAT(住宅 NAT など)の両方のコンテキストで実装されるように設計されています。PCP を使用すると、ホストは、ISP が運用する CGN の背後にある場合を含め、NAT デバイスの背後にいるときに、長時間 (Web カメラの場合など) または短時間 (ゲームのプレイ中や通話中など) サーバーを操作できます。PCP を使用すると、アプリケーションは外部IPアドレスとポートから内部 IP アドレスとポートへのマッピングを作成できます。これらのマッピングは、NAT またはファイアウォールの内側にあるマシン宛ての受信通信を成功させるために必要です。着信接続のマッピングを作成したら、着信接続の IP アドレスとポートをリモート コンピューターに通知する必要があります。これは通常、アプリケーション固有の方法で行われます。
Junos OS は、PCP バージョン 2 およびバージョン 1 をサポートしています。
PCPは、次のコンポーネントで構成されています。
PCP クライアント:リソースを取得および制御するために PCP 要求を PCP サーバに発行するホストまたはゲートウェイ。
PCP サーバ - 通常は、PCP リクエストを受信して処理する CGN ゲートウェイまたはコロケーション サーバ
Junos OS では、ポート転送やポートブロック割り当てなどの NAPT44 機能を使用して、マッピング フロー用に PCP サーバーを設定できます。フローは、次のソースから処理できます。
図1に示すように、ユーザー機器から直接受信したPCPリクエストを含むトラフィック。
図 1:基本的な PCP NAPT44 トポロジー
DS-Lite ソフトワイヤ イニシエータ(B4)として機能するルーターによって追加された PCP 要求を含むトラフィックのマッピング。このモードは DS-Lite プレーン モードと呼ばれ、 図 2 に示されています。
図2:DS-Liteプレーンモード
を使用したPCP
Junos OSは、PCP発信トラフィックの確定的なポートブロック割り当てをサポートしていません。
ポート制御プロトコルのメリット
NATに対応したアプリケーションの多くは、NATデバイスによってセッションがタイムアウトしないように、アプリケーションレベルのメッセージを頻繁に送信します。PCPは、次の目的で使用されます。
これらの NAT キープアライブ メッセージの頻度を減らします
加入者のアクセスネットワークの帯域幅を削減
サーバーへのトラフィックを削減する
モバイルデバイスのバッテリー消費を削減
ポート制御プロトコル バージョン 2
Junos OS リリース 15.1 以降、RFC 6887 に準拠した PCP(ポート制御プロトコル)バージョン 2 がサポートされています。PCP は、NAT44 などのアップストリーム デバイスやファイアウォール デバイスによる着信パケットの転送を制御する方法、およびアプリケーションのキープ アライブ トラフィックを削減する方法を提供します。PCP バージョン 2 は nonce 認証をサポートしています。PCP を使用すると、アプリケーションは外部IPアドレスとポートから内部 IP アドレスとポートへのマッピングを作成できます。ノンスペイロードはリプレイ攻撃を防止し、明示的に無効にしない限り、デフォルトで送信されます。
バージョン 2 のマップ要求(更新または削除)に対するクライアントの nonce 検証では、PCP マッピングが作成される原因となった元のマップ要求で受信した nonce が保持される必要があります。マッピングの作成を可能にする初期要求のバージョンも保持されます。nonce パラメーターと version パラメーターを保存するこの動作は、PCP マッピングごとに 13 バイトが使用されることを示します。このストレージ・スペースのわずかな増加は、単一の要求されたマッピングに対するシステムの現在のメモリー使用量と一致する場合、重要ではありません (それと共に作成されるエンドポイントに依存しないマッピング (EIM) およびエンドポイントに依存しないフィルタリング (EIF) を考慮に入れます)。お客様のデプロイメントでは、PCP により、EIM マッピングと EIF マッピングは、そのようなすべてのマッピングの一部を表します。
Junos リリース 15.1 までは、サービス PIC は、バージョン 1 メッセージ エンコーディングの PCP ドラフト バージョン 22 に従って、ジュニパーネットワークス ルーター上の PCP サーバーをサポートします。PCP は、 Port Control Protocol (PCP) draft-ietf-pcp-base-22 (2012 年 7 月終了) で定義されているドラフト バージョンから、RFC 6887 -- Port Control Protocol (PCP) で定義されている最終的な標準バージョンに改良され、メッセージ エンコーディングはバージョン 2 に変更され、必要に応じてピアおよびマップ要求を認証するためのランダムな nonce ペイロードが追加されました。バージョン 1 では、バージョン 2 形式に準拠したメッセージはデコードされず、nonce 認証はサポートされていません。実際のネットワーク環境では、カスタマー構内機器(CPE)デバイスがバージョン2のみをサポートすることが増えているため、バージョン2のメッセージを解析して送信する必要があります。バージョン 1 をサポートする CPE デバイスとの下位互換性は維持され(バージョン ネゴシエーションは標準の一部です)、v2 メッセージが使用されている場合、要求 nonce ペイロード パケットを認証します。
show services pcp statistics コマンドの出力には、バージョンが 1 または 2 でないことを示すためにインクリメントされる PCP unsupported version フィールドが含まれています。新しいフィールド PCP 要求 nonce が既存のマッピングと一致しない(認証に失敗した)ため無視された PCP バージョン 2 要求の数を示すために導入されました。バージョン 2 が使用されている場合、認証にはクライアント nonce が使用されます。
ポート制御プロトコルの設定
このトピックでは、ポート制御プロトコル(PCP)の設定方法について説明します。PCPは、MS-DPC、MS-100、MS-400、MS-500マルチサービスPICでサポートされています。Junos OS リリース 17.4R1 以降、NAPT44 向け PCP は MS-MPC および MS-MIC でもサポートされています。Junos OS リリース 18.2R1 以降、MS-MPC および MS-MIC の PCP は DS-Lite をサポートしています。Junos OS リリース 18.1 以前のリリースでは、MS-MPC および MS-MIC の PCP は DS-Lite をサポートしていません。Junos OS リリース 20.2R1 以降、CGNAT サービスの MX-SPC3 セキュリティ サービス カードで PCP がサポートされています。
以下の設定タスクを実行します。
PCP サーバ オプションの設定
PCP ルールの設定
PCP ルールには、すべてのサービス セット ルールと同じ基本オプションがあります。
1 つのルールに複数のアプリケーションを含めることができる
termオプション。次世代サービス向けMX-SPC3セキュリティサービスカードを実行する場合、期間は必要ありません。
ルールの対象となるトラフィックを識別する
fromオプション。実行するアクションを識別する
thenオプション。PCP ルールの場合、このオプションは、選択されたトラフィックを処理する pcp サーバーを識別します
NAT ルールの設定
NAT ルールを設定するには:
PCP を適用するためのサービス セットの設定
PCP を使用するには、 pcp-rule rule-name オプションにルール名(またはルール名のリストの名前)を指定する必要があります。
また、サービス セットで必要な nat-rule と softwire-ruleを特定する必要があります。
SYSLOGメッセージ設定
PCP ログ生成を制御するために、新しい syslog クラス、設定オプション pcp-logs が提供されました。以下のレベルのログ記録を提供します。
protocol- マッピングの作成、削除に関連するすべてのログが、このレベルのログに含まれます。protocol-error—–すべてのプロトコル エラー関連ログ(マッピング更新の失敗、PCP ルックアップの失敗、マッピングの作成の失敗など)。は、このレベルのログに含まれます。system-error- メモリとインフラストラクチャのエラーは、このレベルのロギングに含まれます。
ポート制御プロトコル動作の監視
以下の運用コマンドで、ポート制御プロトコル(PCP)の動作を監視できます。
MS-MPCの場合は、
show services nat mappings pcpコマンドを使用します。手記:PCP は、Junos OS リリース 19.3R2 の次世代サービスではサポートされていません
MS-MPCの場合は、
show services nat mappings endpoint-independentコマンドを使用します。次世代サービスの場合は、
show services nat source mappings endpoint-independentコマンドを使用します。show services pcp statistics protocol
次に、これらのコマンドの出力例を示します。
user@host> show services nat mappings pcp Interface: sp-0/0/0, Service set: in NAT pool: p PCP Client : 10.1.1.2 PCP lifetime : 995 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 106 Mapping : 88.1.0.47 : 47 --> 70.70.70.1 :41972 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services nat mappings endpoint-independent Interface: sp-0/0/0, Service set: in NAT pool: p Mapping : 10.1.1.2 :57400 --> 8.8.8.8 : 1024 Session Count : 0 Mapping State : Timeout PCP Client : 10.1.1.2 PCP lifetime : 991 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 190 Mapping : 88.1.1.3 : 4001 --> 70.70.70.2 :58989 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services pcp statistics protocol Protocol Statistics: Operational Statistics Map request received :0 Peer request received :0 Other operational counters :0 Option Statistics Unprocessed requests received :0 Third party requets received :0 Prefer fail option received :0 Filter option received :0 Other options counters :0 Option optional received :0 Result Statistics PCP success :0 PCP unsupported version :0 Not authorized :0 Bad requests :0 Unsupported opcode :0 Unsupported option :0 Bad option :0 Network failure :0 Out of resources :0 Unsupported protocol :0 User exceeded quota :0 Cannot provide external :0 Address mismatch :0 Excessive number of remote peers :0 Processing error :0 Other result counters :0
例:NAPT44 を使用したポート制御プロトコルの設定
PCPは、MS-DPC、MS-100、MS-400、MS-500マルチサービスPICでサポートされています。Junos OS リリース 17.4R1 以降、NATP44 向け PCP は MS-MPC および MS-MIC でもサポートされています。
必要条件
ハードウェア要件
PCP クライアントを持つ UE。
MS-DPCサービスPICを搭載したMX 3Dルーター。
ソフトウェア要件
Junos OS 13.2
レイヤー 3 サービス パッケージ
概要
ISP は、PCP クライアントを持つ UE がタイムアウトせずにサーバーへの接続を維持できるようにしたいと考えています。PCP クライアントは、必要な接続のタイプと期間の PCP 要求を生成します。接続は、Web カメラを使用するアプリケーションのように長時間のものから、オンライン ゲームのように短い時間まであります。MX 3Dルーターは、PCPクライアントリクエストを解釈するためのPCPサーバーとNAPT44を提供します。 図 3 は、この例の基本的なトポロジーを示しています。
を有するPCP
PCP 設定
CLIクイック構成
この例を素早く設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に合わせて必要な詳細を変更し、コマンドを[edit]階層レベルのCLIにコピー&ペーストしてください。
set chassis fpc 2 pic 0 adaptive-services service-package layer-3 set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic set interfaces sp-2/0/0 unit 0 family inet set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24 set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24 set services nat pool pcp-pool address 44.0.0.0/16 set services nat pool pcp-pool port automatic random-allocation address-allocation round-robin set services nat pool pcp-pool address-allocation round-robin set services nat rule pcp-rule match-direction input set services nat rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services pcp server pcp-s1 ipv4-address 124.124.124.122 set services pcp server pcp-s1 mapping-lifetime-minimum 600 mapping-lifetime-maximum 86500 set services pcp server pcp-s1 short-lifetime-error 120 long-lifetime-error 1200 set services pcp server pcp-s1 max-mappings-per-client 128 pcp-options third-party prefer-failure set services service-set sset_0 pcp-rules r1 set services service-set sset_0 nat-rules pcp-rule set services service-set sset_0 interface-service service-interface sp-2/0/0.0
シャーシ構成
手順
レイヤー3サービスパッケージでサービスPIC(FPC 2スロット0)を設定するには:
階層レベルに [edit chassis] 移動します。
user@host# edit chassis
レイヤー3サービスパッケージを設定します。
[edit chassis]user@host# set fpc 2 pic 0 adaptive-services service-package layer-3
業績
user@host# show chassis fpc 2 pic 0
pcp-rules pcp-napt44-rule;
nat-rules pcp-rule;
interface-service {
service-interface sp-2/0/0.0;
}
インターフェイス設定
手順
サービスMS-DPCを設定します。
user@host# set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic user@host# set interfaces sp-2/0/0 unit 0 family inet
NATおよびPCPサービスに使用する顧客向けインターフェイスを設定します。
user@host# set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24
インターネットに接続するインターフェイスを設定します。
user@host# set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24
業績
user@host#
sp-2/0/0 {
services-options {
inactivity-timeout 180;
cgn-pic;
}
unit 0 {
family inet;
}
}
xe-3/2/0 {
unit 0 {
family inet {
service {
input {
service-set sset_0;
}
output {
service-set sset_0;
}
}
address 30.0.0.1/24;
}
}
}
xe-5/0/0 {
unit 0 {
family inet {
address 25.0.0.1/24;
}
}
}
NAT 設定
手順
[edit services nat]階層に移動します。user@host# edit services nat
pcp-poolと呼ばれるNAT プールを設定します。[edit services nat]user@host# set pool pcp-pool address 44.0.0.0/16 user@host# set pool pcp-pool port automatic random-allocation user@host# set pool pcp-pool address-allocation round-robinと呼ばれるNAT ルールを設定します
pcp-rule。[edit services nat]user@host# set rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 user@host# set rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent
業績
user@host# show services nat
pool pcp-pool {
address 44.0.0.0/16;
port {
automatic {
random-allocation;
}
}
address-allocation round-robin;
}
rule pcp-rule {
match-direction input;
term t0 {
then {
translated {
source-pool pcp-pool;
translation-type {
napt-44;
}
mapping-type endpoint-independent;
filtering-type {
endpoint-independent;
}
}
}
}
}
PCP 設定
手順
PCP サーバーと PCP ルールのオプションを設定します。
サーバーの
edit services pcp階層レベルに移動しますpcp-s1user@host# edit services pcp server pcp-s1
PCP サーバ オプションを設定します。
[edit services pcp server pcp-s1] user@host# set ipv4-address 124.124.124.122 user@host# set mapping-lifetime-minimum 600 user@host# set mapping-lifetime-maximum 86500 user@host# set short-lifetime-error 120 user@host# set long-lifetime-error 1200 user@host# set max-mappings-per-client 128 user@host# set pcp-options third-party prefer-failure
PCP ルールを作成します。
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
PCP ルールのオプションを設定します。
[edit services pcp rule pcp-napt44-rule] user@host# set match-direction input user@host# set term t0 then pcp-server pcp-s1
業績
user@host# show services pcp
server pcp-s1 {
ipv4-address 124.124.124.122;
mapping-lifetime-minimum 600;
mapping-lifetime-maximum 86500;
short-lifetime-error 120;
long-lifetime-error 1200;
max-mappings-per-client 128;
pcp-options third-party prefer-failure;
}
rule pcp-napt44-rule {
match-direction input;
term t0 {
then {
pcp-server pcp-s1;
}
}
}
サービス セットの構成
手順
edit services service-set階層レベルでサービスセットsset_0を作成します。user@host# edit services service-set sset_0
service-set sset_0 { pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; } }サービス セットに関連付けられている NAT ルールを特定します。
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
サービス セットに関連付けられている PCP ルールを特定します。
[edit services service-set sset_0] user@host# set pcp-rules r1
サービス・セットに関連づけられているサービス・インターフェースを識別します。
[edit services service-set sset_0] user@host# set interface-service service-interface sp-2/0/0.0
業績
user@host# show
pcp-rules pcp-napt44-rule;
nat-rules pcp-rule;
interface-service {
service-interface sp-2/0/0.0;
}
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。