ポート制御プロトコル
ポート制御プロトコルの概要
ポート制御プロトコル(PCP)は、NAT44やファイアウォールデバイスなどのアップストリームデバイスによる受信パケットの転送を制御する方法と、アプリケーションのキープアライブトラフィックを削減する方法を提供します。PCPは、MS-DPC、MS-100、MS-400、MS-500マルチサービスPICでサポートされています。Junos OSリリース17.4R1以降、PCP for NAPT44は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 は、CGN(キャリアグレード NAT)と小規模 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は、ナンス認証をサポートしています。PCPを使用すると、アプリケーションは外部IPアドレスとポートから内部IPアドレスとポートへのマッピングを作成できます。ノンスペイロードはリプレイ攻撃を防ぎ、明示的に無効にしない限り、デフォルトで送信されます。
バージョン2のマップ要求(更新または削除用)のクライアントnonce検証では、PCPマッピングの作成の原因となる元のマップ要求で受信したnonceが保持されている必要があります。マッピングの作成を可能にする初期リクエストのバージョンも保持されます。nonceパラメーターとバージョンパラメーターを保存するこの動作は、PCPマッピングごとに13バイトが使用されることを示しています。このストレージ領域のわずかな増加は、単一の要求されたマッピングに対するシステムの現在のメモリ使用量と一致した場合、有意ではありません(それに伴って作成されるエンドポイント独立マッピング(EIM)とエンドポイント独立フィルタリング(EIF)を考慮します)。顧客デプロイメントでは、PCP によって EIM マッピングと EIF マッピングがそのようなマッピングのほんの一部を占めるようにします。
Junosリリース15.1まで、サービスPICは、バージョン1のメッセージエンコーディングを備えたPCPドラフトバージョン22に従って、ジュニパーネットワークスルーター上のPCPサーバーをサポートします。PCPが、 ポート制御プロトコル(PCP)draft-ietf-pcp-base-22(2012年7月有効期限) で定義されたドラフトバージョンから、RFC 6887で定義された最終的な標準バージョンに改良されたことにより、必要に応じてピアとマッピングリクエストを認証するためのランダムナンスペイロードが追加され、メッセージエンコーディングがバージョン2に変更されました。バージョン1は、バージョン2形式に準拠したメッセージをデコードせず、ナンス認証はサポートされていません。実際のネットワーク環境では、カスタマー構内機器(CPE)デバイスがバージョン2のみをサポートするようになったため、バージョン2メッセージを解析して送信する必要があります。バージョン1をサポートするCPEデバイスとの下位互換性は維持され(バージョンネゴシエーションは標準の一部です)、v2メッセージの使用中にリクエストナンスペイロードパケットを認証します。
show services pcp statisticsコマンドの出力には、PCPサポートされていないバージョンフィールドが含まれており、バージョンが1または2でないときはいつでもインクリメントされます。新しいフィールド「PCPリクエストnonceは既存のマッピングに一致しません」が導入され、nonsペイロードがマッピングに記録されたものと一致しなかったために無視されたPCPバージョン2リクエストの数を示します(認証に失敗しました)。バージョン2が使用されている場合、クライアントナンスが認証に使用されます。
ポート制御プロトコルの設定
このトピックでは、ポート制御プロトコル(PCP)の設定方法について説明します。PCPは、MS-DPC、MS-100、MS-400、MS-500マルチサービスPICでサポートされています。Junos OSリリース17.4R1以降、PCP for NAPT44は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以降、PCPはCGNATサービスのMX-SPC3セキュリティサービスカードでサポートされています。
以下の設定タスクを実行します。
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クライアントリクエストとNAPT44を解釈するPCPサーバーを提供します。 図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-robinpcp-ruleというNATルールを設定します。[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;
}
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。