このページの内容
マルチプロトコルBGP
マルチプロトコル BGP について
マルチプロトコルBGP(MP-BGP)は、BGPが複数のネットワーク層やアドレスファミリーのルーティング情報を伝送できるようにするBGPの拡張機能です。MP-BGPは、マルチキャストルーティングに使用するユニキャストルートを、ユニキャストIP転送に使用するルートとは別に伝送できます。
MP-BGPを有効にするには、 family inet ステートメントを含めることで、IPv4以外のアドレスファミリーのネットワーク層到達可能性情報(NLRI)ユニキャスト伝送するようにBGPを設定します。
family inet { (any | flow | labeled-unicast | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; topology name { community { target identifier; } } } }
MP-BGPがIPv6アドレスファミリーのNLRIを伝送できるようにするには、 family inet6 ステートメントを含めます。
family inet6 { (any | labeled-unicast | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; } }
ルーターのみで、MP-BGPがIPv4アドレスファミリーのレイヤー3 仮想プライベートネットワーク(VPN)NLRIを伝送できるようにするには、 family inet-vpn ステートメントを含めます。
family inet-vpn { (any | flow | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } rib-group group-name; } }
ルーターのみで、MP-BGPがIPv6アドレスファミリー向けのレイヤー3 VPN NLRIを伝送できるようにするには、 family inet6-vpn ステートメントを含めます。
family inet6-vpn { (any | multicast | unicast) { accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;} } <loops number>; prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}} rib-group group-name; } }
ルーターのみで、MP-BGPがIPv4アドレスファミリー向けのVPN NLRIマルチキャスト伝送できるようにし、VPNシグネリングを有効にするには、 family inet-mvpn ステートメントを含めます。
family inet-mvpn {
signaling {
accepted-prefix-limit {
maximum number;
teardown <percentage> <idle-timeout (forever | minutes)>;
drop-excess <percentage>;
hide-excess <percentage>;}}
<loops number>;
prefix-limit {
maximum number;
teardown <percentage> <idle-timeout (forever | minutes)>;
drop-excess <percentage>;
hide-excess <percentage>;}}
}
}
MP-BGPがIPv6アドレスファミリー向けのVPN NLRIマルチキャスト伝送できるようにし、VPNシグネリングを有効にするには、 family inet6-mvpn ステートメントを含めます。
family inet6-mvpn {
signaling {
accepted-prefix-limit {
maximum number;
teardown <percentage> <idle-timeout (forever | minutes)>;
drop-excess <percentage>;
hide-excess <percentage>;}}
<loops number>;
prefix-limit {
maximum number;
teardown <percentage> <idle-timeout <forever | minutes>;
drop-excess <percentage>;
hide-excess <percentage>;}}
}
}
マルチプロトコル BGP ベースのマルチキャスト VPN の詳細については、 Junos OS マルチキャストプロトコルユーザーガイドを参照してください。
これらのステートメントを含めることができる階層レベルの一覧については、これらのステートメントのステートメント概要セクションを参照してください。
[edit protocols bgp family]階層レベルで指定されたアドレスファミリーを変更すると、ルーティングデバイス上の現在のBGPセッションはすべて削除され、その後再確立されます。
Junos OS リリース 9.6 以降では、特定の BGP アドレスファミリーに対してループ値を指定できます。
デフォルトでは、BGPピアは、ユニキャスト転送の目的で使用されるユニキャストルートのみを伝送します。BGPピアがマルチキャストルートのみを伝送するように設定するには、 multicast オプションを指定します。BGPピアがユニキャストルートとマルチキャストルートの両方を伝送するように設定するには、 any オプションを指定します。
MP-BGPが設定されている場合、BGPはMP-BGPルートを異なるルーティングテーブルにインストールします。各ルーティングテーブルは、プロトコルファミリーまたはアドレスファミリーインジケーター(AFI)と、それに続くアドレスファミリー識別子(SAFI)によって識別されます。
次のリストは、可能なすべての AFI と SAFI の組み合わせを示しています。
AFI=1、SAFI=1、IPv4 ユニキャスト
AFI=1、SAFI=2、IPv4 マルチキャスト
AFI=1、SAFI=128、L3VPN IPv4 ユニキャスト
AFI=1、SAFI=129、L3VPN IPv4 マルチキャスト
AFI=2、SAFI=1、IPv6 ユニキャスト
AFI=2、SAFI=2、IPv6 マルチキャスト
AFI=25、SAFI=65、BGP-VPLS/BGP-L2VPN
AFI=2、SAFI=128、L3VPN IPv6 ユニキャスト
AFI=2、SAFI=129、L3VPN IPv6 マルチキャスト
AFI=1、SAFI=132、RT-Constrain
AFI=1、SAFI=133、フローの仕様
AFI=1、SAFI=134、フローの仕様
AFI=3、SAFI=128、CLNS VPN
AFI=1、SAFI=5、NG-MVPN IPv4
AFI=2、SAFI=5、NG-MVPN IPv6
AFI=1、SAFI=66、MDT-SAFI
AFI=1、SAFI=4、ラベル付き IPv4
AFI=2、SAFI=4、ラベル付き IPv6 (6PE)
inet.2 ルーティングテーブルにインストールされたルートは、SAFI を使用しているため、MP-BGP ピアにのみエクスポートでき、マルチキャスト ソースへのルートとして識別されます。inet.0 ルーティングテーブルにインストールされたルートは、標準の BGP ピアにのみエクスポートできます。
inet.2 ルーティングテーブルは、inet.0 にあるルートのサブセットである必要があります。これは、ユニキャストトラフィックを送信できないマルチキャストソースへのルートがある可能性は低いからです。inet.2 ルーティングテーブルには、マルチキャストリバースパスフォワーディングチェックに使用されるユニキャストルートと、MP-BGP が NLRI マルチキャストアップデートから学習した追加の到達可能性情報が格納されています。inet.2 ルーティングテーブルは、MP-BGP を設定すると(NLRI を any に設定することで)自動的に作成されます。
MP-BGPを有効にすると、次のことが可能になります。
- BGPピアセッションで受信するプレフィックス数の制限
- BGPピアセッションで受け入れるプレフィックス数の制限
- BGPルーティングテーブルグループの設定
- 他の AS にある PE ルーティングデバイスへのルートの解決
- ラベル付きルートとラベルなしルートの許可
BGPピアセッションで受信するプレフィックス数の制限
BGPピアセッションで受信するプレフィックスの数を制限し、注入されたプレフィックスの数が設定された制限値を超えた場合に、レート制限メッセージをログに記録することができます。また、プレフィックス数が制限を超えた場合、ピアリングを解消することもできます。
BGP セッションで受信できるプレフィックス数に制限を設定するには、 prefix-limit ステートメントを含めます。
prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>; }
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
maximum numberの場合は、1〜 4,294,967,295の範囲の値 を指定します。指定された最大プレフィックス数を超えた場合、システムログメッセージが送信されます。
teardownステートメントを含む場合、最大プレフィックス数を超えた時点でセッションは破棄されます。パーセンテージを指定した場合、プレフィックス数が指定された最大限の割合を超えた場合にメッセージがログに記録されます。セッションが中断された後、(idle-timeoutステートメントを除く)短時間で再確立されます。idle-timeoutステートメントを含める場合、指定された時間、または永久にセッションを停止することができます。foreverを指定した場合、clear bgp neighborコマンドを発行した後にのみセッションが再確立されます。drop-excess <percentage>オプションを含めると、プレフィックス数の最大に達した時点で、過剰なルートが削除されます。パーセンテージを指定した場合、プレフィックス数が最大数のパーセント値を超えると、ルートが記録されます。hide-excess <percentage>オプションを含めると、プレフィックス数の最大に達した時点で、過剰なルートが非表示になります。パーセンテージを指定した場合、プレフィックス数が最大数のパーセント値を超えると、ルートが記録されます。割合が変更された場合、ルートは自動的に再評価されます。アクティブなルートが指定されたパーセントを下回ると、それらのルートは非表示のままとなります。
Junos OS リリース 9.2 以降では、BGPピア セッションで受け入れ可能なプレフィックス数に制限を設定することもできます。詳細については、「 BGPピアセッションで受け入れるプレフィックス数の制限」を参照してください。
BGPピアセッションで受け入れるプレフィックス数の制限
Junos OS リリース 9.2 以降では、BGPピア セッションで受け入れ可能なプレフィックスの数を制限することができます。その指定した制限を超えた場合、システムログメッセージが送信されます。また、指定したプレフィックス数の上限を超えた場合に、BGPセッションをリセットするように指定することもできます。
BGPピアセッションで受け入れ可能なプレフィックス数に制限を設定するには、 accepted-prefix-limit ステートメントを含めます。
accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop <percentage>; hide <percentage>; }
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
最大numberの場合は、1〜 4,294,967,295の範囲 の値を指定します。
受け入れたプレフィックスの数が設定された制限を超えた場合に、BGPピアセッションをリセットするためのteardownステートメントを含めます。また、受け入れたプレフィックスの数が上限のパーセンテージを超えた場合に、システムログメッセージを送信するために、1 から 100 までの パーセント値 を含めることもできます。デフォルトでは、リセットされたBGPセッションは短時間で再確立されます。指定した期間にBGPセッションを再確立しないようにするためのidle-timeoutステートメントを含めます。タイムアウトの値は、1 分から 2400 分まで 設定できます。clear bgp neighborコマンドを発行するまでBGPセッションが再確立されないようにするforeverオプションを含めます。drop-excess <percentage>ステートメントを含めてパーセンテージを指定すると、プレフィックス数がパーセンテージを超えた場合に超過したルートを削除します。hide-excess <percentage>ステートメントを含めてパーセンテージを指定すると、プレフィックス数がパーセンテージを超えた場合に余剰ルートを非表示にします。割合が変更された場合、ルートは自動的に再評価されます。
ノンストップアクティブルーティング(NSR)が有効で、バックアップのルーティングエンジンへの切り替えが発生すると、ダウンしたBGPピアは自動的に再起動されます。 idle-timeout forever ステートメントが設定されていても、ピアは再起動されます。
または、BGPピアセッションで 受信 できる(受け入れるのではなく)プレフィックスの数に制限を設定することもできます。詳細については、「 BGPピアセッションで受信するプレフィックス数の制限」を参照してください。
BGPルーティングテーブルグループの設定
BGPセッションがユニキャストまたはマルチキャストNLRIを受信すると、適切なテーブル(ユニキャストにはinet.0 または inet6.0 、マルチキャストには inet.2 または inet6.2 )にルートをインストールします。ユニキャストテーブルとマルチキャストテーブルの両方にユニキャストプレフィックスを追加するには、BGPルーティングテーブルグループを設定します。これは、マルチキャスト NLRI ネゴシエーションを実行できない場合に有効です。
BGPルーティングテーブルグループを設定するには、 rib-group ステートメントを含めます。
rib-group group-name;
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
他の AS にある PE ルーティングデバイスへのルートの解決
ラベル付きルートを、ルート解決のために inet.3 ルーティングテーブルに配置することができます。次に、これらのルートは、リモートPEが別の自律システム(AS)にまたがって配置されている場合、プロバイダエッジ(PE)ルーティングデバイスの接続のために解決されます。PE ルーティングデバイスが VPN ルーティングおよび転送(VRF)ルーティングインスタンスにルートをインストールするためには、ネクストホップが inet.3 テーブル内に格納されているルートに解決する必要があります。
ルートを inet.3 ルーティングテーブルに解決するには、 resolve-vpn ステートメントを含めます。
resolve-vpn group-name;
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
ラベル付きルートとラベルなしルートの許可
単一セッションで、ラベル付きルートとラベルなしルートの両方を交換することができます。ラベル付きルートは、inet.3またはinet.6.3ルーティングテーブルに配置され、ラベル付きおよびラベルなしのユニキャストルートの両方をルーティングデバイスによって送信または受信することができます。
ラベル付きルートとラベルなしルートの両方を交換できるようにするには、 rib ステートメントを含めます。
rib (inet.3 | inet6.3);
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
例:IPv4トランスポート上のIPv6 BGPルートの設定
この例では、両側にIPv4インターフェイスが設定されているIPv4接続上で、IPv6とIPv4の両方のプレフィックスをエクスポートする方法を示します。
要件
この例を設定する前に、デバイスの初期化以外の特別な設定は必要ありません。
概要
IPv6 BGPプレフィックスをエクスポートする際には、以下の点に注意してください。
BGPは、IPv4にマッピングされたIPv6プレフィックスを使用してネクストホッププレフィックスを導き出します。例えば、IPv4のネクストホッププレフィックスは、IPv6のネクストホッププレフィックス::ffff:10.19.1.1に変換
10.19.1.1。注:IPv6 BGPプレフィックスをエクスポートするには、IPv4にマッピングされたBGPネクストホップへのアクティブなルートが必要です。
リンク上にIPv6接続を設定する必要があります。接続は、IPv6 トンネルまたはデュアルスタック構成のいずれかである必要があります。この例では、デュアルスタッキングを使用しています。
IPv4にマッピングされたIPv6プレフィックスを設定する際には、96 ビットより長いマスクを使用します。
通常のIPv6プレフィックスを使用したい場合は、スタティックルートを設定します。この例では、スタティックルートを使用しています。
図1 は、サンプルトポロジーを示しています。
上のIPv6 BGPルートを設定するためのトポロジー
設定
CLIクイックコンフィグレーション
この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、 [edit] 階層レベルのCLIにコマンドをコピー アンド ペーストします。
デバイスR1
set interfaces fe-1/2/0 unit 1 family inet address 192.168.10.1/24 set interfaces fe-1/2/0 unit 1 family inet6 address ::ffff:192.168.10.1/120 set interfaces lo0 unit 1 family inet address 10.10.10.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 192.168.10.10 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options rib inet6.0 static route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10 set routing-options static route 192.168.20.0/24 next-hop 192.168.10.10 set routing-options autonomous-system 100
デバイスR2
set interfaces fe-1/2/0 unit 2 family inet address 192.168.10.10/24 set interfaces fe-1/2/0 unit 2 family inet6 address ::ffff:192.168.10.10/120 set interfaces fe-1/2/1 unit 3 family inet address 192.168.20.21/24 set interfaces fe-1/2/1 unit 3 family inet6 address ::ffff:192.168.20.21/120 set interfaces lo0 unit 2 family inet address 10.10.0.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext neighbor 192.168.10.1 peer-as 100 set protocols bgp group ext neighbor 192.168.20.1 peer-as 300 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options autonomous-system 200
デバイスR3
set interfaces fe-1/2/0 unit 4 family inet address 192.168.20.1/24 set interfaces fe-1/2/0 unit 4 family inet6 address ::ffff:192.168.20.1/120 set interfaces lo0 unit 3 family inet address 10.10.20.1/32 set protocols bgp group ext type external set protocols bgp group ext family inet unicast set protocols bgp group ext family inet6 unicast set protocols bgp group ext export send-direct set protocols bgp group ext export send-static set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 192.168.20.21 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options rib inet6.0 static route ::ffff:192.168.10.0/120 next-hop ::ffff:192.168.20.21 set routing-options static route 192.168.10.0/24 next-hop 192.168.20.21 set routing-options autonomous-system 300
デバイスR1の設定
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
デバイスR1を設定するには:
IPv4アドレスとIPv6アドレスの両方を含むインターフェイスを設定します。
[edit interfaces] user@R1# set fe-1/2/0 unit 1 family inet address 192.168.10.1/24 user@R1# set fe-1/2/0 unit 1 family inet6 address ::ffff:192.168.10.1/120 user@R1# set lo0 unit 1 family inet address 10.10.10.1/32
EBGPを設定します。
[edit protocols bgp group ext] user@R1# set type external user@R1# set export send-direct user@R1# set export send-static user@R1# set peer-as 200 user@R1# set neighbor 192.168.10.10
-
BGPがIPv4ユニキャストルートとIPv6ユニキャストルートを伝送できるようにします。
[edit protocols bgp group ext] user@R1# set family inet unicast user@R1# set family inet6 unicast
IPv4 ユニキャストルートは、デフォルトで有効になっています。ただし、他のNLRIアドレスファミリーを設定する場合は、IPv4ユニキャストを明示的に設定する必要があります。
-
ルーティングポリシーを設定します。
[edit policy-options] user@R1# set policy-statement send-direct term 1 from protocol direct user@R1# set policy-statement send-direct term 1 then accept user@R1# set policy-statement send-static term 1 from protocol static user@R1# set policy-statement send-static term 1 then accept
いくつかのスタティックルートを設定します。
[edit routing-options] user@R1# set rib inet6.0 static route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10 user@R1# set static route 192.168.20.0/24 next-hop 192.168.10.10
自律システム(AS)番号を設定します。
[edit routing-options] user@R1# set autonomous-system 100
結果
設定モードから、 show interfaces、 show policy-options、 show protocols、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R1# show interfaces
fe-1/2/0 {
unit 1 {
family inet {
address 192.168.10.1/24;
}
family inet6 {
address ::ffff:192.168.10.1/120;
}
}
}
lo0 {
unit 1 {
family inet {
address 10.10.10.1/32;
}
}
}
user@R1# show policy-options
policy-statement send-direct {
term 1 {
from protocol direct;
then accept;
}
}
policy-statement send-static {
term 1 {
from protocol static;
then accept;
}
}
user@R1# show protocols
bgp {
group ext {
type external;
family inet {
unicast;
}
family inet6 {
unicast;
}
export [ send-direct send-static ];
peer-as 200;
neighbor 192.168.10.10;
}
}
user@R1# show routing-options
rib inet6.0 {
static {
route ::ffff:192.168.20.0/120 next-hop ::ffff:192.168.10.10;
}
}
static {
route 192.168.20.0/24 next-hop 192.168.10.10;
}
autonomous-system 100;
デバイスの設定が完了したら、設定モードから コミット を入力します。デバイスR2とデバイスR3の設定を繰り返し、必要に応じてインターフェイス名とIPアドレスを変更します。
検証
設定が正常に機能していることを確認します。
ネイバーステータスの確認
目的
BGPがIPv6のユニキャストルートを伝送できるようになっていることを確認します。
アクション
動作モードから、 show bgp neighbor コマンドを入力します。
user@R2> show bgp neighbor
Peer: 192.168.10.1+179 AS 100 Local: 192.168.10.10+54226 AS 200
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Export: [ send-direct send-static ]
Options: <Preference AddressFamily PeerAS Refresh>
Address families configured: inet-unicast inet6-unicast
Holdtime: 90 Preference: 170
Number of flaps: 0
Peer ID: 10.10.10.1 Local ID: 10.10.0.1 Active Holdtime: 90
Keepalive Interval: 30 Peer index: 0
BFD: disabled, down
Local Interface: fe-1/2/0.2
NLRI for restart configured on peer: inet-unicast inet6-unicast
NLRI advertised by peer: inet-unicast inet6-unicast
NLRI for this session: inet-unicast inet6-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI that restart is negotiated for: inet-unicast inet6-unicast
NLRI of received end-of-rib markers: inet-unicast inet6-unicast
NLRI of all end-of-rib markers sent: inet-unicast inet6-unicast
Peer supports 4 byte AS extension (peer-as 100)
Peer does not support Addpath
Table inet.0 Bit: 10000
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 1
Received prefixes: 3
Accepted prefixes: 2
Suppressed due to damping: 0
Advertised prefixes: 4
Table inet6.0 Bit: 20000
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 0
Received prefixes: 1
Accepted prefixes: 1
Suppressed due to damping: 0
Advertised prefixes: 2
Last traffic (seconds): Received 24 Sent 12 Checked 60
Input messages: Total 132 Updates 6 Refreshes 0 Octets 2700
Output messages: Total 133 Updates 3 Refreshes 0 Octets 2772
Output Queue[0]: 0
Output Queue[1]: 0
Peer: 192.168.20.1+179 AS 300 Local: 192.168.20.21+54706 AS 200
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Export: [ send-direct send-static ]
Options: <Preference AddressFamily PeerAS Refresh>
Address families configured: inet-unicast inet6-unicast
Holdtime: 90 Preference: 170
Number of flaps: 0
Peer ID: 10.10.20.1 Local ID: 10.10.0.1 Active Holdtime: 90
Keepalive Interval: 30 Peer index: 1
BFD: disabled, down
Local Interface: fe-1/2/1.3
NLRI for restart configured on peer: inet-unicast inet6-unicast
NLRI advertised by peer: inet-unicast inet6-unicast
NLRI for this session: inet-unicast inet6-unicast
Peer supports Refresh capability (2)
Stale routes from peer are kept for: 300
Peer does not support Restarter functionality
NLRI that restart is negotiated for: inet-unicast inet6-unicast
NLRI of received end-of-rib markers: inet-unicast inet6-unicast
NLRI of all end-of-rib markers sent: inet-unicast inet6-unicast
Peer supports 4 byte AS extension (peer-as 300)
Peer does not support Addpath
Table inet.0 Bit: 10000
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 1
Received prefixes: 3
Accepted prefixes: 2
Suppressed due to damping: 0
Advertised prefixes: 4
Table inet6.0 Bit: 20000
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 0
Received prefixes: 1
Accepted prefixes: 1
Suppressed due to damping: 0
Advertised prefixes: 2
Last traffic (seconds): Received 1 Sent 15 Checked 75
Input messages: Total 133 Updates 6 Refreshes 0 Octets 2719
Output messages: Total 131 Updates 3 Refreshes 0 Octets 2734
Output Queue[0]: 0
Output Queue[1]: 0
意味
出力に inet6-ユニキャスト が多数出現していることは、BGPがIPv6ユニキャストルートを伝送できるようになっていることを示しています。
ルーティングテーブルのチェック
目的
デバイスR2のinet6.0ルーティングテーブルにBGPルートがあることを確認します。
アクション
動作モードから、 show route protocol bgp inet6.0 コマンドを入力します。
user@R2> show route protocol bgp table inet6.0
inet6.0: 7 destinations, 10 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
::ffff:192.168.10.0/120 [BGP/170] 01:03:49, localpref 100, from 192.168.20.1
AS path: 300 I
> to ::ffff:192.168.20.21 via fe-1/2/1.3
::ffff:192.168.20.0/120 [BGP/170] 01:03:53, localpref 100, from 192.168.10.1
AS path: 100 I
> to ::ffff:192.168.10.10 via fe-1/2/0.2
BGP IPv6セッション上でのIPv4ルートのアドバタイズの概要
IPv6ネットワークでは、BGPは通常、BGPピア間のIPv6セッションを介してIPv6ネットワーク層の到達可能性情報をアドバタイズします。以前のリリースでは、Junos OSは、inet6ユニキャスト、inet6マルチキャスト、またはinet6ラベル付きユニキャストアドレスファミリーのみの交換をサポートしていました。この機能により、すべてのBGPアドレスファミリーの交換が可能になります。コアにIPv6があるデュアルスタック環境において。この機能により、BGPは、IPv6 BGPセッション上でIPv4ネクストホップを使用して、IPv4ユニキャストの到達可能性をアドバタイズできます。
この機能は、両方のエンドポイントでIPv4が設定されているBGP IPv6セッションのみに対応しています。 local-ipv4-address には、IBGPまたはマルチホップEBGPセッション用のループバックアドレスまたは任意のipv4アドレスを指定できます。BGPコンフェデレーションに属していないシングルホップの外部BGPスピーカーの場合、設定されたローカルIPv4アドレスが直接接続されていないと、BGPセッションが閉じられてアイドル状態になり、エラーが発生して show bgp neighbor コマンドの出力に表示されます。
IPv6セッション上でIPv4ルートアドバタイズを有効にするには、次のように local-ipv4-address を設定します。
[edit protocols bgp family inet unicast] local-ipv4-address local ipv4 address;
inet6 ユニキャスト、inet6 マルチキャスト、inet6ラベル付きユニキャストアドレスファミリーには、これらのアドレスファミリーをIPv6 BGPセッション上でアドバタイズする機能がすでにあるため、この機能をBGPアドレスファミリーには設定できません。
設定された local-ipv4-address は、BGPがセルフネクストホップでルートをアドバタイズする場合のみに使用されます。IBGPがEBGPピアから学習したルートをアドバタイズしたり、ルートリフレクターがBGPルートをクライアントにアドバタイズしたりする場合、BGPルートのネクストホップを変更せず、設定された local-ipv4-addressを無視し、元のIPv4ネクストホップを使用します。
関連項目
例:IPv6 BGPセッション上でのIPv4ルートのBGPルートのアドバタイズ
この例では、IPv6 BGPセッション上でIPv4ルートをアドバタイズする方法を示しています。コアにIPv6があるデュアルスタック環境では、リモートのIPv4ホストに到達する必要があります。そのため、BGPは、IPv6の送信元アドレスと宛先アドレスを使用して、BGPセッション上のBGPピアにIPv4ネクストホップを持つBGPルートをアドバタイズします。この機能により、BGPはIPv6のBGPセッション上で、IPv4ネクストホップを使用してIPv4ユニキャスト到達可能性をアドバタイズできます。
要件
この例では、以下のハードウェアおよびソフトウェアコンポーネントを使用しています。
-
デュアルスタッキング機能を備えた3つのルーター
-
すべてのデバイスで実行されている Junos OS リリース 16.1 以降
IPv6 BGPセッション上でのIPv4アドバタイズメントを有効にする前に、BGPを使用してください。
-
デバイスインターフェイスを設定します。
-
すべてのデバイスでデュアルスタッキングを設定します。
概要
リリース16.1以降、Junos OSでは、BGPがIPv6 BGPセッション上でIPv4ネクストホップを使用して、BGPでIPv4ユニキャストの到達可能性をアドバタイズできます。以前のJunos OSリリースでは、BGPは、IPv6 BGPセッション上で、inet6ユニキャスト、inet6マルチキャスト、およびinet6ラベル付きユニキャストアドレスファミリーのみをアドバタイズできました。この機能により、BGPはIPv6セッション上ですべてのBGPアドレスファミリーを交換できます。BGPを有効にして、IPv4ネクストホップを持つIPv4ルートをIPv6セッション上のBGPピアにBGPピアにアドバタイズすることができます。設定された local-ipv4-address は、BGPがセルフネクストホップでルートをアドバタイズする場合にのみ使用されます。
inet6 ユニキャスト、inet6 マルチキャスト、inet6ラベル付きユニキャストアドレスファミリーには、これらのアドレスファミリーをIPv6 BGPセッション上でアドバタイズする機能がすでにあるため、この機能をBGPアドレスファミリーには設定できません。
トポロジー
図2では、IPv6外部BGPセッションがルーターR1とR2の間で実行されています。IPv6 IBGPセッションは、ルーターR2とルーターR3の間で確立されます。IPv4スタティックルートは、R1のBGPに再配布されます。IPv6 BGPセッション上で IPv4 ルートを再配布するには、[edit protocols bgp address family]階層レベルのすべてのルーターで新機能を有効にする必要があります。
設定
CLIクイックコンフィグレーション
この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピー アンド ペーストして、設定モードから commit を入力します。
ルーターR1
set interfaces ge-0/0/0 unit 0 description R1->R2 set interfaces ge-0/0/0 unit 0 family inet address 140.1.1.1/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::140.1.1.1/126 set interfaces lo0 unit 0 family inet6 address 1::1/128 set routing-options static route 11.1.1.1/32 discard set routing-options static route 11.1.1.2/32 discard set routing-options autonomous-system 64497 set protocols bgp group ebgp-v6 type external set protocols bgp group ebgp-v6 export p1 set protocols bgp group ebgp-v6 peer-as 64496 set protocols bgp group ebgp-v6 neighbor ::140.1.1.2 description R2 set protocols bgp group ebgp-v6 neighbor ::140.1.1.2 family inet unicast local-ipv4-address 140.1.1.1 set policy-options policy-statement p1 from protocol static set policy-options policy-statement p1 then accept
ルーターR2
set interfaces ge-0/0/0 unit 0 description R2->R1 set interfaces ge-0/0/0 unit 0 family inet address 140.1.1.2/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::140.1.1.2/126 set interfaces ge-0/0/1 unit 0 description R2->R3 set interfaces ge-0/0/1 unit 0 family inet address 150.1.1.1/24 set interfaces ge-0/0/1 unit 0 family inet6 address ::150.1.1.1/126 set interfaces lo0 unit 0 family inet6 address 1::2/128 set routing-options autonomous-system 64496 set protocols bgp group ibgp-v6 type internal set protocols bgp group ibgp-v6 export change-nh set protocols bgp group ibgp-v6 neighbor ::150.1.1.2 description R3 set protocols bgp group ibgp-v6 neighbor ::150.1.1.2 family inet unicast local-ipv4-address 150.1.1.1 set protocols bgp group ebgp-v6 type external set protocols bgp group ebgp-v6 peer-as 64497 set protocols bgp group ebgp-v6 neighbor ::140.1.1.1 description R1 set protocols bgp group ebgp-v6 neighbor ::140.1.1.1 family inet unicast local-ipv4-address 140.1.1.2 set policy-options policy-statement change-nh from protocol bgp set policy-options policy-statement change-nh then next-hop self set policy-options policy-statement change-nh then accept
ルーターR3
set interfaces ge-0/0/0 unit 0 description R3->R2 set interfaces ge-0/0/0 unit 0 family inet address 150.1.1.2/24 set interfaces ge-0/0/0 unit 0 family inet6 address ::150.1.1.2/126 set interfaces lo0 unit 0 family inet6 address 1::3/128 set routing-options autonomous-system 64496 set protocols bgp group ibgp-v6 type internal set protocols bgp group ibgp-v6 neighbor ::150.1.1.1 description R2 set protocols bgp group ibgp-v6 neighbor ::150.1.1.1 family inet unicast local-ipv4-address 150.1.1.2
ルーターR1の設定
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。
ルーターR1を設定するには:
適切なインターフェイス名、アドレス、およびその他のパラメーターを変更した後、他のルーターに対してこの手順を繰り返します。
-
インターフェイスにIPv4およびIPv6アドレスを設定します。
[edit interfaces] user@R1# set ge-0/0/0 unit 0 description R1->R2 user@R1# set ge-0/0/0 unit 0 family inet address 140.1.1.1/24 user@R1# set ge-0/0/0 unit 0 family inet6 address ::140.1.1.1/126
-
ループバックアドレスを設定します。
[edit interfaces] user@R1# set lo0 unit 0 family inet6 address 1::1/128
-
アドバタイズする必要があるIPv4スタティックルートを設定します。
[edit routing-options] user@R1# set static route 11.1.1.1/32 discard user@R1# set static route 11.1.1.2/32 discard
-
BGPホストの自律システムを設定します。
[edit routing-options] user@R1# set autonomous-system 64497
-
外部エッジルーターに EBGP を設定します。
[edit protocols] user@R1# set bgp group ebgp-v6 type external user@R1# set bgp group ebgp-v6 peer-as 64496 user@R1# set bgp group ebgp-v6 neighbor ::140.1.1.2 description R2
-
この機能を有効にして、BGP IPv6セッション上でIPv4アドレス140.1.1.1をアドバタイズします。
[edit protocols] user@R1# set bgp group ebgp-v6 neighbor ::140.1.1.2 family inet unicast local-ipv4-address 140.1.1.1
-
ポリシーp1を定義して、すべてのスタティックルートを受け入れます。
[edit policy-options] user@R1# set policy-statement p1 from protocol static user@R1# set policy-statement p1 then accept
-
ポリシーp1をEBGPグループebgp-v6に適用します。
[edit protocols] user@R1# set bgp group ebgp-v6 export p1
結果
設定モードから、 show interfaces、 show protocols、 show routing-options、 show policy-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@R1# show interfaces
ge-0/0/0 {
unit 0 {
description R1->R2;
family inet {
address 140.1.1.1/24;
}
family inet6 {
address ::140.1.1.1/126;
}
}
lo0 {
unit 0 {
family inet {
address 1::1/128;
}
}
}
}
[edit]
user@R1# show protocols
bgp {
group ebgp-v6 {
type external;
export p1;
peer-as 64496;
neighbor ::140.1.1.2 {
description R2;
family inet {
unicast {
local-ipv4-address 140.1.1.1;
}
}
}
}
}
[edit]
user@R1# show routing-options
static {
route 11.1.1.1/32 discard;
route 11.1.1.2/32 discard;
}
autonomous-system 64497;
[edit]
user@R1# show policy-options
policy-statement p1 {
from {
protocol static;
}
then accept;
}
デバイスの設定が完了したら、設定をコミットします。
user@R1# commit
検証
設定が正常に機能していることを確認します。
BGPセッションが稼働していることの確認
目的
設定されたインターフェイスで BGP が動作していること、および各ネイバーアドレスで BGP セッションがアクティブであることを確認します。
アクション
運用モードから、ルーターR1で show bgp summary コマンドを実行します。
user@R1> show bgp summary
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
::140.1.1.2 64496 4140 4158 0 0 1d 7:10:36 0/0/0/0 0/0/0/0
意味
BGPセッションが起動・実行され、BGPピアリングが確立されています。
IPv4アドレスがアドバタイズされていることの確認
目的
設定したIPv4アドレスが、ルーターR1によって設定されたBGPネイバーにアドバタイズされていることを確認します。
アクション
運用モードから、ルーターR1で show route advertising-protocol bgp ::150.1.1.2 コマンドを実行します。
user@R1> show route advertising-protocol bgp ::150.1.1.2 inet.0: 48 destinations, 48 routes (48 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 11.1.1.1/32 Self 64497 64497 I * 11.1.1.2/32 Self 64497 64497 I
意味
IPv4スタティックルートは、BGPネイバールーターR2にアドバタイズされています。
BGPネイバールーターR2がアドバタイズされたIPv4アドレスを受信していることを確認
目的
ルーターR2が、ルーターR1がIPv6を介してBGPネイバーにアドバタイズしているIPv4アドレスを受信していることを確認します。
アクション
user@R2> show route receive-protocol bgp ::140.1.1.1 inet.0: 48 destinations, 48 routes (48 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 11.1.1.1/32 140.1.1.1 64497 I * 11.1.1.2/32 140.1.1.1 64497 I iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) inet6.0: 9 destinations, 10 routes (9 active, 0 holddown, 0 hidden)
意味
ルーターR2のルーティングテーブルにスタティックIPv4ルートが存在することは、ルーターR1からアドバタイズされたIPv4ルートを受信していることを示しています。
IPv6 ネクストホップを持つ IPv4 ルートの BGP への再配分を理解する
主にIPv6トラフィックを伝送するネットワークでは、必要に応じてIPv4ルートをルーティングする必要があります。例えば、インターネットサービスプロバイダが、IPv6 のみのネットワークを構築しているが、まだ IPv4 トラフィックをルーティングする顧客がいる場合などです。この場合、そのような顧客に対応し、IPv4 トラフィックを IPv6 ネットワーク上に転送する必要があります。RFC 5549 の IPv6 ネクストホップによる IPv4 ネットワーク層到達可能性情報のアドバタイズ で説明されているように、IPv4 トラフィックは、カスタマー構内機器(CPE)デバイスから IPv4-over-IPv6 ゲートウェイにトンネルリンクされます。これらのゲートウェイは、エニーキャストアドレスを介してCPEデバイスに通知されます。ゲートウェイデバイスは、リモートCPEデバイスへの動的IPv4-over-IPv6トンネルを作成し、トラフィックを誘導するためにIPv4集約ルートをアドバタイズします。
動的 IPv4-over-IPv6 トンネル機能は、Junos OS リリース 17.3R1 の統合型 ISSU をサポートしていません。
プログラム可能なインターフェイスを備えたルートリフレクタ(RR)は、IBGP を介してゲートウェイルーターに接続され、IPv6 アドレスをネクストホップとするルートをホストします。これらの RR は、IPv4 /32 アドレスをアドバタイズして、トンネル情報をネットワークに注入します。ゲートウェイルーターは、リモートの顧客プロバイダーエッジへの動的 IPv4-over-IPv6 トンネルを作成します。また、ゲートウェイルーターは、トラフィックを誘導するために、IPv4 の集合経路をアドバタイズします。そして、RR はトンネル送信元ルートを ISP にアドバタイズします。RR がトンネル ルートを削除すると、BGP もルートを撤回するため、トンネルは削除され、CPE は到達不能になります。また、ゲートウェイ・ルーターは、すべての集合経路が削除された場合、IPv4 集約ルートと IPv6 トンネル送信元ルートを切断します。ゲートウェイルーターは、アンカーのパケット転送エンジンラインカードがダウンした場合、ルート切断を送信するため、トラフィックを他のゲートウェイルーターにリダイレクトします。
IPv6 をネクストホップとする IPv4 ルートをサポートするために、以下の拡張機能が導入されます。
BGPネクストホップ符号化
BGPは、IPv6ネクストホップでIPv4ルートを送信するために使用されるネクストホップ符号化機能で拡張されています。リモートピアでこの機能が利用できない場合、BGP はこの符号化機能に基づいてピアをグループ化し、符号化機能のない BGP ファミリーをネゴシエートされたネットワーク層到達可能性情報(NLRI)リストから削除します。Junos OSでは、inet.0などの解決テーブルは1つしか使用できません。IPv6 のネクストホップを持つ IPv4 BGP ルートを許可するために、BGP は新しい解決ツリーを作成します。この機能により、Junos OSのルーティングテーブルに複数の解決ツリーを持たせることができます。
RFC 5549 の IPv6 ネクストホップによる IPv4 ネットワーク層の到達可能性情報のアドバタイズ の他に、RFC 5512 で規定されている新しいカプセル化コミュニティである BGP カプセル化後続アドレスファミリー識別子(SAFI)と BGP トンネル カプセル化属性 を導入し、ネクストホップアドレスのアドレスファミリーを決定します。カプセル化コミュニティは、イングレスノードが作成する必要があるトンネルのタイプを示しています。BGPがIPv6ネクストホップアドレスとV4oV6カプセル化コミュニティを持つIPv4ルートを受信すると、BGPはIPv4-over-IPv6動的トンネルを作成します。BGPがカプセル化コミュニティのないルートを受信した場合、V4oV6トンネルを作成せずにBGPルートが解決されます。
新しい拡張カプセル化をサポートするために、[edit policy-statement policy name term then]階層レベルで新しいポリシーアクションdynamic-tunnel-attributes dyan-attribute が利用可能です。
トンネルローカライゼーション
ダイナミックトンネルインフラストラクチャは、トンネルローカリゼーションによって強化され、より多くのトンネルをサポートします。アンカーに障害が発生した場合に、トラフィックを処理するための回復力を提供するために、トンネルをローカライズする必要があります。1台以上のシャーシが互いにバックアップし、ルーティングプロトコルプロセス(rpd)によって、障害ポイントからバックアップシャーシへとトラフィックを誘導します。シャーシは、個々のループバックアドレスではなく、これらの集約プレフィックスのみをネットワークにアドバタイズします。
トンネル処理
IPv6 トンネル上の IPv4 では、ダイナミック トンネル インフラストラクチャとトンネル アンカーリングを使用して、必要なシャーシを幅広くサポートします。トンネルの状態はパケット転送エンジンに限定され、他のパケット転送エンジンがトラフィックをトンネルアンカーに誘導します。
トンネルイングレス
上にある場合のトンネルイングレス処理
-
IPv6 ヘッダー内に IPv4 トラフィックをカプセル化します。
カプセル化の前に、最大伝送単位(MTU)の適用が実行されます。カプセル化されたパケットのサイズがトンネルMTUを超え、IPv4パケットの
DF-bitが設定されていない場合、パケットはフラグメント化され、これらのフラグメントがカプセル化されます。 -
内部パケットヘッダーにハッシュベースのトラフィックロードバランシングを使用します。
-
宛先 IPv6 アドレスにトラフィックを転送します。IPv6 アドレスは、IPv6 ヘッダーから取得します。
トンネルイグレス
でトンネルの状態が利用可能な場合のトンネルイグレス処理
-
IPv6 パケット内に存在する IPv4 パケットをカプセル化解除します。
-
なりすまし防止チェックを実行して、IPv6 と IPv4 のペアがトンネルの設定に使用された情報と一致していることを確認します。
-
カプセル化解除されたパケットの IPv4 ヘッダーから IPv4 宛先アドレスを検索し、指定された IPv4 アドレスにパケットを転送します。
トンネル負荷分散とアンカーパケット転送エンジンの障害処理
パケット転送エンジンの障害は、パケット転送エンジンに固定されたトンネルトラフィックの空値ルートフィルタリングを避けるために、迅速に対処する必要があります。トンネルのローカライズでは、BGPアドバタイズを使用してグローバルに障害を修復します。トンネルトラフィックは、障害ポイントから、同一のトンネル状態を持つ他のバックアップシャーシに迂回されます。トラフィックのロードバランシングのために、シャーシは、プレフィックスセットごとに異なる複数の出口識別子(MED)値をアドバタイズするように設定され、トンネルの4分の1のトラフィックだけが各シャーシを通過するようになっています。CPE トラフィックも同様に、各シャーシに同じエニーキャストアドレスのセットを設定し、各シャーシに向けてトラフィックの 4 分の 1 だけを誘導することで処理されます。
アンカーパケット転送エンジンは、トンネルのすべての処理を行う単一のエンティティです。アンカーのパケット転送エンジンの選択は、静的プロビジョニングによって行われ、パケット転送エンジンの物理インターフェイスに関連付けられています。パケット転送エンジンの 1 つがダウンした場合、デーモンはラインカード上のすべてのパケット転送エンジンがダウンしたことをマークし、この情報をルーティングプロトコルプロセスのルーティングプロトコルプロセスやその他のデーモンに通知します。ルーティングプロトコルプロセスは、障害が発生したパケット転送エンジンに固定されているプレフィックスと、ダウンしたパケット転送エンジンに割り当てられたIPv6アドレスのBGP切断を送信します。これらのアドバタイズメントは、他のバックアップシャーシにトラフィックを迂回させます。障害が発生したパケット転送エンジンが再びアップすると、シャーシはパケット転送エンジンを up としてマークし、ルーティングプロトコルプロセスを更新します。ルーティングプロトコルプロセスは、特定のパケット転送エンジンに固定されたトンネルがトラフィックのルーティングに利用できるようになったことを、ピアへのBGP更新をトリガーします。このプロセスは、大規模なトンネル設定では数分かかることがあります。そのため、 Ack メカニズムがシステムに組み込まれており、トラフィックを元のシャーシに戻す際にトラフィックの損失を最小限に抑えることができます。
トンネルのループバックストリーム統計情報
動的トンネルインフラストラクチャは、パケット転送エンジンのループバックストリームを使用して、カプセル化後のパケットをループします。このループバックストリームの帯域幅は限られているため、トンネルループバックストリームのパフォーマンスを監視する必要があります。
ループバックストリームの統計情報を監視するには、転送レート、ドロップパケットレート、バイトレートなどの集約されたループバックストリームの統計情報を表示する運用コマンド show pfe statistics traffic detail を使用します。
関連項目
IPv6 ネクストホップアドレスを持つ IPv4 ルートを再分配するための BGP の設定
リリース17.3R1以降、Junos OSデバイスは、通常はIPv4トラフィックを転送できないIPv6専用ネットワーク上でIPv4トラフィックを転送できるようになりました。RFC 5549 で説明されているように、IPv4 トラフィックは CPE デバイスから IPv4-over-IPv6 ゲートウェイにトンネリングされます。これらのゲートウェイは、エニーキャストアドレスを介してCPEデバイスに通知されます。ゲートウェイデバイスは、リモートのカスタマー構内機器への動的 IPv4-over-IPv6 トンネルを作成し、トラフィックを誘導するために IPv4 集約ルートを告知します。プログラム可能なインターフェイスを備えたルートリフレクターは、トンネル情報をネットワークに注入します。ルートリフレクタは、IBGPを介してゲートウェイルーターに接続されており、ゲートウェイルーターはIPv6アドレスをネクストホップとしてホストルートのIPv4アドレスをアドバタイズします。
動的 IPv4-over-IPv6 トンネル機能は、Junos OS リリース 17.3R1 の統合型 ISSU をサポートしていません。
IPv6 ネクストホップアドレスを持つ IPv4 ルートを配信するための BGP の設定を開始する前に、以下を実行します。
デバイスインターフェイスを設定します。
OSPFまたはその他のIGPプロトコルを設定します。
MPLSとLDPを設定します。
BGPを設定します。
IPv6 ネクストホップアドレスを持つ IPv4 ルートを配信するように BGP を設定するには、以下を行います。
関連項目
レイヤー 2 VPN と VPLS シグナリングの有効化
BGP を有効にして、レイヤー 2 VPN および VPLS NLRI メッセージを伝送できます。
VPN と VPLS のシグナリングを有効にするには、 family ステートメントを含めます。
family { l2vpn { signaling { prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>; } } } }
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
プレフィックスの最大数を設定するには、 prefix-limit ステートメントを含めます。
prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop-excess <percentage>; hide-excess <percentage>;}
このステートメントを含めることができる階層レベルの一覧については、このステートメントの「ステートメント概要」セクションを参照してください。
プレフィックスの最大数を設定すると、その数に達したときにメッセージが記録されます。 teardown ステートメントを含む場合、最大プレフィックス数に達した時点でセッションは破棄されます。パーセンテージを指定した場合、プレフィックス数がそのパーセンテージに達するとメッセージがログに記録されます。一度壊したセッションは、短時間で再確立されます。指定された時間、または永遠にセッションを停止させるための idle-timeout ステートメントを含めます。 foreverを指定した場合、 clear bgp neighbor コマンドを使用した後にのみセッションが再確立されます。 drop-excess <percentage> ステートメントを含めてパーセンテージを指定すると、プレフィックス数がパーセンテージを超えた場合に超過したルートを削除します。 hide-excess <percentage> ステートメントを含めてパーセンテージを指定すると、プレフィックス数がパーセンテージを超えた場合に余剰ルートを非表示にします。割合が変更された場合、ルートは自動的に再評価されます。
関連項目
トラフィックフィルタリングのためのBGPフロールートを理解する
フロールートとは、IP パケットの一致条件の集計です。フロー ルートは、インプット転送テーブル フィルター(暗黙的)としてインストールされ、フロー仕様ネットワーク層到達可能性情報(NLRI)メッセージを使用してネットワークを介して伝播され、フロー ルーティングテーブル instance-name.inetflow.0にインストールされます。パケットは、特定の一致条件が満たされた場合にのみ、フロー ルートを通過できます。
フロールートとファイアウォールフィルターは、そのコンポーネントに基づいてパケットフィルタリングし、一致したパケットに対してアクションを実行するというという点で類似しています。フロールートは、ファイアウォールフィルターと同様にトラフィックフィルタリングとレート制限機能を提供します。さらに、異なる自律システム間でフロー ルートを伝播できます。
フロー ルートは、フロー指定 NLRI メッセージを通じて BGP によって伝播されます。これらのNLRIを伝播するには、BGPを有効にする必要があります。
Junos OS リリース 15.1 以降、既存の inet フローと inetvpn フロー ファミリーに対するノンストップ アクティブ ルーティング(NSR)サポートを拡張し、draft-ietf-idr-bgp-flowspec-oid-01 に従って BGP flowspec のルート検証を拡張するための変更が実装されます。この拡張機能の一部として、2つの新しいステートメントが導入されます。 enforce-first-as と no-install を参照してください。
Junos OSリリース16.1以降、IPv6のサポートは、IPv6およびVPN-IPv6パケットのトラフィックフロー仕様ルールの伝播を許可するBGPフロー仕様に拡張されます。BGPフロー仕様は、ノンストップアクティブルーティング(NSR)中の分散型サービス拒否攻撃を軽減するために、トラフィックフィルタリングルールの調整を自動化します。
リリース 16.1R1 以降Junos OS、フロー仕様BGPトラフィック マーキング extended-community フィルタリング アクションがサポートされています。IPv4トラフィックの場合、Junos OSは、転送するIPv4パケットのDiffServコードポイント(DSCP)ビットを拡張コミュニティの対応する値に変更します。IPv6パケットについては、Junos OS送信するIPv6パケットの traffic class フィールドの最初の6ビットを拡張コミュニティの対応する値に変更します。
Junos OSリリース17.1R1以降、BGPは、第3世代FPC(PTX5000のFPC3-PTX-U2とFPC3-PTX-U3、PTX3000のFPC3-SFF-PTX-U0とFPC3-SFF-PTX-U1)を搭載したPTXシリーズルーターでフロー指定ネットワーク層到達可能性情報(NLRI)メッセージを伝送できます。BGPの一部としてファイアウォールフィルター情報を伝送させることで、サービス拒否(DOS)攻撃に対するファイアウォールフィルターを自律システム間で動的に伝送させることができます。
Junos OSリリース17.2R1以降、BGPは、第3世代FPCが搭載されているPTX1000ルーターでフロー指定ネットワーク層到達可能性情報(NLRI)メッセージを伝送できます。BGPの一部としてファイアウォールフィルター情報を伝送させることで、サービス拒否(DOS)攻撃に対するファイアウォールフィルターを自律システム間で動的に伝送させることができます。
cRPDリリース20.3R1以降、BGPフロー仕様NLRIを介して伝播されたフロールートとポリシングルールは、cRPD環境のLinux Netfilterフレームワークを介してLinuxカーネルにダウンロードされます。
フロー ルートの一致条件
フロー ルートに対して then ステートメントでアクションが実行される前に、パケットが一致する条件を指定します。 from ステートメントのすべての条件が一致し、実行するアクションに一致する必要があります。一致が発生するためにはパケットが項内のすべての条件に一致する必要があるため、一致条件を指定する順序は重要ではありません。
一致条件を設定するには、[edit routing-options flow]階層レベルでmatchステートメントを含めます。
表1は 、フロールート一致条件を示しています。
| 一致条件 |
説明 |
|---|---|
|
|
IP 宛先アドレス フィールドです。
|
|
|
TCPまたはUDP(ユーザーデータグラムプロトコル)宛先ポートフィールド。同じ条件に 数値の代わりに、次のテキスト同義語(ポート番号も記載されています)のいずれかを指定できます: |
|
|
差別化されたサービスコードポイント(DSCP)。DiffServプロトコルは、IPヘッダーでサービスタイプ(ToS) バイトを使用します。この バイトの最上位の 6 ビットが DSCP を形成します。 DSCPは、16進または10進形式で指定できます。 |
|
|
フローラベル値に一致します。このフィールドの値の範囲は0から1048575です。 この一致条件は、 |
|
|
フラグメント タイプ フィールドです。キーワードは、それらが関連するフラグメント タイプによってグループ化されます。
この一致条件は、 |
|
|
ICMP コード フィールドです。この値またはキーワードは、 数値の代わりに、以下のテキスト同義語(フィールド値も記載されています)のいずれかを指定します。キーワードは、それらが関連するICMPタイプによってグループ化されます。
|
|
|
ICMP パケット タイプ フィールドです。通常、 数値の代わりに、 |
|
|
総 IP パケット長。 |
|
|
TCP または UDP 送信元または宛先ポート フィールド。同じ項に 数値の代わりに、 |
|
|
IP プロトコル フィールドです。数値の代わりに、 この一致条件は、IPv6に対して、 |
|
|
IP 送信元アドレス フィールドです。
|
|
|
TCP または UDP 送信元ポート フィールド。同じ条件に 数値フィールドの代わりに、 |
|
|
TCP ヘッダー形式です。 |
フロー ルートのアクション
パケットがフロー ルートで設定した条件に一致した場合のアクションを指定できます。アクションを設定するには、[edit routing-options flow]階層レベルでthenステートメントを含めます。
表2は 、フロールートアクションを示しています。
| アクションまたはアクション 修飾子 |
説明 |
|---|---|
| アクション | |
|
|
パケットを受け取ります。これがデフォルトです。 |
|
|
インターネット制御メッセージプロトコル(ICMP)メッセージを送信せずに、気付かれることなくパケットを無効にします。 |
|
|
ルート内のコミュニティーを指定したコミュニティーに置き換えます。 |
| マーク value |
このフローに一致するトラフィックの DSCP 値を設定します。0〜63の値を指定します。このアクションは、 |
|
|
評価のための次の一致条件に進みます。 |
|
|
パケットが転送されるルーティングインスタンスを指定します。 |
|
|
フロー ルートの帯域幅を制限します。ビット単位(bps)で制限を表現します。Junos OSリリース16.1R4以降、レート制限の範囲は[0〜10000000000000]です。 |
|
|
フロー ルートのトラフィックをサンプルします。 |
フロー ルートの検証
Junos OS は、検証手順を使用して検証された場合のみ、フロー ルートをフロー ルーティングテーブルにインストールします。ルーティングエンジンは、フロールーティングテーブルにルートをインストールする前に検証を行います。
BGPネットワーク層到達可能性情報(NLRI)メッセージを使用して受信したフロー ルートは、フロー プライマリ インスタンスルーティングテーブル instance.inetflow.0にインストールされる前に検証されます。検証手順については、draft-ietf-idr-flow-spec-09.txtフロー 仕様ルールの普及に記載されています。BGP NLRI メッセージを使用したフロー ルートの検証プロセスをバイパスし、独自に固有のインポート ポリシーを使用することができます。
検証操作をトレースするには、[edit routing-options flow]階層レベルでvalidationステートメントを含めます。
BGPフロー指定アルゴリズムバージョン7以降のサポート
デフォルトでは、Junos OS は BGP フロー仕様ドラフトのバージョン 6 で定義された項順序アルゴリズムを使用します。Junos OSリリース10.0以降では、最初にBGPフロー仕様のバージョン7で定義され、RFC 5575( フロー仕様ルートの普及)でサポートされている項順序アルゴリズムに準拠するようにルーターを設定することができます。
BGPフロー仕様ドラフトのバージョン7で最初に定義された項順序アルゴリズムを使用するようにJunos OSを設定することをお勧めします。また、ルーターに設定されたすべてのルーティング インスタンスで同じ項順序アルゴリズムを使用するように Junos OS を設定することをお勧めします。
インターネット ドラフトのバージョン 7 で最初に定義されたフロー指定アルゴリズムを使用するようにBGPを設定するには、[edit routing-options flow term-order]階層レベルに standard ステートメントを含めます。
バージョン 6 で定義された項順序アルゴリズムを使用するように戻すには、[edit routing-options flow term-order] 階層レベルに legacy ステートメントを含めます。
設定された用語順序にはローカルな意味しかありません。つまり、項順序はリモート BGP ピアに送信されたフロー ルートでは伝播されず、その項順序は独自の項順序設定によって完全に決定されます。そのため、順序依存アクションを設定する場合 next term 、リモートピアの項順序設定を認識しない場合に注意する必要があります。ローカル next term は、リモートピアに設定された next term とは異なる場合があります。
Junos OS Evolvedでは、 next term アクションの最終項として表示することはできません。 next term がアクションとして指定されているが、一致条件が設定されていないフィルター項はサポートされていません。
Junos OSリリース16.1以降、特定のインターフェイスで受信したトラフィックに flowspec フィルターを適用しないオプションがあります。これらの特定のインターフェイスで受信したパケットを受信する flowspec フィルターの先頭に新しい項が追加されます。新しい項は、フロー仕様フィルターの一部として転送テーブル フィルターにアタッチされた項の除外リストを作成する変数です。
特定のインターフェイスで受信するトラフィックにflowspecフィルターが適用されないようにするには、まず、[edit interfaces]階層レベルでファミリーinetフィルターグループgroup-idステートメントを含めることで、そのようなインターフェイスにgroup-idを設定し、次に[edit routing-options]階層レベルにflow interface-group group-id excludeステートメントを含めることで、インターフェイスグループにflowspecフィルターをアタッチする必要があります。set routing-options flow interface-group group-idステートメントでルーティングインスタンスごとに1つのgroup-idのみを設定できます。
関連項目
例:BGPによるフロー指定ルートの伝送の有効化
この例では、BGP がフロー指定ネットワーク層到達可能性情報(NLRI)メッセージを伝送できるようにする方法を示しています。
要件
始める前に:
デバイスインターフェイスを設定します。
内部ゲートウェイプロトコル(IGP)を設定します。
BGPを設定します。
ルーティングテーブルからBGPにルート(直接ルートやIGPルートなど)をエクスポートするルーティングポリシーを設定します。
概要
BGPの一部としてファイアウォールフィルター情報を伝送させることで、サービス拒否(DOS)攻撃に対するファイアウォールフィルターを自律システム間で動的に伝送させることができます。フロー ルートはフロー指定 NLRI にカプセル化され、フィルターのような情報を共有しながらネットワークまたは仮想プライベート ネットワーク(VPN)を通じて伝送されます。フロー ルートは、パケットに対する一致条件とその結果のアクションの集合体です。ファイアウォールフィルターと同様に、トラフィックフィルタリングとレート制限機能を提供します。ユニキャストフロールートは、デフォルトインスタンス、VPNルーティングおよび転送(VRF)インスタンス、および仮想ルーターインスタンスでサポートされています。
インポートとエクスポートのポリシーは、他のBGPのファミリに適用する方法と同様に、NLRIinet-vpn flowのファミリinet flowまたはファミリに適用して、受け入れまたはアドバタイズされるフロールートに影響を与えることができます。唯一の違いは、フロー ポリシーの設定に from rib inetflow.0 ステートメントを含める必要があることです。このステートメントにより、フロー ルートにポリシーが適用されるようになります。ただし、ポリシーにthen rejectまたはthen acceptステートメントのみがあり、fromステートメントがない場合、このルールは例外となります。そして、ポリシーは IP ユニキャストと IP フローを含むすべてのルートに影響します。
フロー ルート フィルターは、まずルーターに静的に設定され、一連の一致基準とそれに続くアクションが設定されます。次に、 family inet unicastに加えて、このBGP対応デバイスとそのピアの間に family inet flow (または family inet-vpn flow)が設定されます。
デフォルトでは、静的に設定されたフロー ルート(ファイアウォール フィルター)は、 family inet flow または family inet-vpn flow NLRI をサポートする他の BGP 対応デバイスにアドバタイズされます。
受信側のBGP対応デバイスは、ファイアウォールフィルターをフロールーティングテーブル instance-name.inetflow.0に取り付ける前に検証処理を行います。検証手順は、RFC 5575、 フロー仕様ルールの普及に記載されています。
受信側の BGP 対応デバイスは、次の条件を満たせばフロー ルートを受け入れます。
フロー ルートの起点は、ルートに埋め込まれている宛先アドレスのベスト マッチ ユニキャスト ルートの起点と一致します。
フロー ルートの宛先アドレスと比較した場合、異なるネクストホップ自律システムからアクティブなルートを受信している特定のユニキャスト ルートは存在しません。
最初の基準は、フロー ルートに埋め込まれた宛先アドレスに対して、ユニキャスト転送で使用されるネクストホップによってフィルターがアドバタイズされていることを保証するものです。例えば、フロー ルートに 10.1.1.1、proto=6、port=80 と指定した場合、受信側の BGP 対応デバイスは、宛先プレフィックス 10.1.1.1/32 に一致する、ユニキャスト ルーティングテーブルのより具体的なユニキャスト ルートを選択します。10.1/16 と 10.1.1/24 を含むユニキャスト ルーティングテーブルでは、後者が比較対象のユニキャスト ルートとして選択されます。アクティブなユニキャスト ルート エントリーのみが考慮されます。これは、最良のユニキャスト ルートの発信元によってアドバタイズされれば、フロー ルートは有効であるという概念に従ったものです。
2 つ目の基準は、特定のアドレス ブロックが異なるエンティティに割り当てられている場合に対応します。集約ルートであるベストマッチのユニキャストルートに解決されるフローは、異なるネクストホップの自律システムにルーティングされているより具体的なルートをカバーしない場合にのみ受け入れられます。
BGP NLRI メッセージを使用したフロー ルートの検証プロセスをバイパスし、独自に固有のインポート ポリシーを使用することができます。BGPがフロー指定 NLRI メッセージを伝送する場合、[edit protocols bgp group group-name family inet flow]階層レベルの no-validate ステートメントは、パケットがポリシーによって受け入れられた後のフロー ルート検証手順を省略します。インポート ポリシーは、宛先アドレスとコミュニティ、ネクストホップ、AS パスなどのパス属性で一致するように設定できます。パケットがフロー ルートで設定した条件に一致した場合のアクションを指定できます。アクションを設定するには、[edit routing-options flow]階層レベルでステートメントを含めます。フロー指定 NLRI タイプには、RFC 5575 で定義されている宛先プレフィックス、ソース プレフィックス、プロトコル、ポートなどのコンポーネントが含まれます。インポート ポリシーでは、フロー仕様 NLRI 内のパス属性と宛先アドレスを使用して、受信ルートをフィルタリングできます。インポート ポリシーは、RFC 5575 の他のコンポーネントをフィルタリングすることはできません。
フロー仕様は、IPv4 ユニキャスト フィルタリングと VPN ユニキャスト フィルタリングの最も一般的なアプリケーションに対応するために必要なユニキャスト プロトコル拡張を定義しています。同じメカニズムを再利用し、新しい一致基準を追加することで、他の BGP アドレスファミリー(例えば、IPv6 ユニキャスト)に対して同様のフィルタリングを行うことができます。
フロー ルートが inetflow.0 テーブルにインストールされると、カーネル内のファイアウォール フィルターのリストにも追加されます。
ルーターのみで、VPN でフロー指定 NLRI メッセージがサポートされています。VPN は、NLRI のルート ターゲット拡張コミュニティとインポート ポリシーを比較します。一致する場合、VPN はパケット トラフィックのフィルタリングとレート制限のためにフロー ルートの使用を開始することができます。受信したフロー ルートは、フロー ルーティングテーブル instance-name.inetflow.0にインストールされます。また、フロー ルートは、VPN ネットワーク全体に伝播し、VPN 間で共有することもできます。マルチプロトコルBGP(MP-BGP)がinet-vpnアドレスファミリーのフロー指定NLRIを伝送できるようにするには、[edit protocols bgp group group-name family inet-vpn]階層レベルにflowステートメントを含めます。VPN フロー ルートは、デフォルトのインスタンスでのみサポートされます。ファミリーinet-vpnを持つVPNに設定されたフロールートは自動的に検証されないため、no-validateステートメントは[edit protocols bgp group group-name family inet-vpn]階層レベルではサポートされません。フロールートが単一AS内のデバイス間でローカルに設定されている場合、検証は必要ありません。
インポートとエクスポートのポリシーは、他のBGPファミリにインポートとエクスポートのポリシーを適用する方法と同様に、 family inet flow または family inet-vpn flow NLRIに適用して、受け入れまたはアドバタイズされるフロールートに影響を与えることができます。唯一の違いは、フロー ポリシーの設定に from rib inetflow.0 ステートメントを含める必要があることです。このステートメントにより、フロー ルートにポリシーが適用されるようになります。ただし、ポリシーに then reject または then accept ステートメントのみがあり、 from ステートメントがない場合、このルールは例外となります。そして、ポリシーは IP ユニキャストと IP フローを含むすべてのルートに影響します。
この例では、次のエクスポート ポリシーを設定する方法を示しています。
ルート フィルターで指定されたフロー ルートのアドバタイズを許可するポリシー。10.13/16 ブロックがカバーするフロー ルートのみをアドバタイズします。このポリシーは、ユニキャストルートには影響しません。
すべてのユニキャスト ルートとフロー ルートをネイバーにアドバタイズすることを許可するポリシーです。
すべてのルート(ユニキャストまたはフロー)をネイバーにアドバタイズすることを禁止するポリシーです。
トポロジー
設定
- スタティック フロー ルートの設定
- ルート フィルターで指定されたフロー ルートをアドバタイズする
- すべてのユニキャストおよびフロー ルートを広告
- 広告 ユニキャストまたはフロー ルートなし
- ルーティング テーブルにインストールされるフロー ルートの数を制限する
- BGPピアリングセッションで受信するプレフィックス数の制限
スタティック フロー ルートの設定
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set routing-options flow route block-10.131.1.1 match destination 10.131.1.1/32 set routing-options flow route block-10.131.1.1 match protocol icmp set routing-options flow route block-10.131.1.1 match icmp-type echo-request set routing-options flow route block-10.131.1.1 then discard set routing-options flow term-order standard
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
BGPピアセッションを設定するには:
整合条件を設定します。
[edit routing-options flow route block-10.131.1.1] user@host# set match destination 10.131.1.1/32 user@host# set match protocol icmp user@host# set match icmp-type echo-request
アクションを設定します。
[edit routing-options flow route block-10.131.1.1] user@host# set then discard
(推奨)フロー指定アルゴリズムでは、スタンダードベースの項順を設定します。
[edit routing-options flow] user@host# set term-order standard
flowspec RFC ドラフト第 6 版で規定されているデフォルトの項順序アルゴリズムでは、整合条件の特定度が低い項が、整合条件の特定度が高い項よりも常に先に評価されます。これにより、より具体的な整合条件を持つ項が評価されることはありません。RFC 5575 のバージョン 7 では、より具体的な整合条件をより具体的でない整合条件より先に評価するようにアルゴリズムを修正しました。下位互換性のために、新しいアルゴリズムの方が理にかなっているにもかかわらず、Junos OSではデフォルトの動作は変更されていません。新しいアルゴリズムを使用するには、設定に
term-order standardステートメントを含めます。このステートメントは、Junos OSリリース10.0以降でサポートされています。
結果
設定モードから、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show routing-options
flow {
term-order standard;
route block-10.131.1.1 {
match {
destination 10.131.1.1/32;
protocol icmp;
icmp-type echo-request;
}
then discard;
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
ルート フィルターで指定されたフロー ルートをアドバタイズする
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a from rib inetflow.0 set policy-options policy-statement p1 term a from route-filter 10.13.0.0/16 orlonger set policy-options policy-statement p1 term a then accept set policy-options policy-statement p1 term b then reject set routing-options autonomous-system 65001
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
BGPピアセッションを設定するには:
BGPグループを設定します。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
フローポリシーを設定します。
[edit policy-options policy-statement p1] user@host# set term a from rib inetflow.0 user@host# set term a from route-filter 10.13.0.0/16 orlonger user@host# set term a then accept user@host# set term b then reject
ローカル自律システム(AS)番号を設定します。
[edit routing-options] user@host# set autonomous-system 65001
結果
設定モードから、 show protocols、 show policy-options、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show protocols
bgp {
group core {
family inet {
unicast;
flow;
}
export p1;
peer-as 65000;
neighbor 10.12.99.5;
}
}
[edit]
user@host# show policy-options
policy-statement p1 {
term a {
from {
rib inetflow.0;
route-filter 10.13.0.0/16 orlonger;
}
then accept;
}
term b {
then reject;
}
}
[edit] user@host# show routing-options autonomous-system 65001;
デバイスの設定が完了したら、設定モードから commit を入力します。
すべてのユニキャストおよびフロー ルートを広告
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a then accept set routing-options autonomous-system 65001
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
BGPピアセッションを設定するには:
BGPグループを設定します。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
フローポリシーを設定します。
[edit policy-options policy-statement p1] user@host# set term a then accept
ローカル自律システム(AS)番号を設定します。
[edit routing-options] user@host# set autonomous-system 65001
結果
設定モードから、 show protocols、 show policy-options、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show protocols
bgp {
group core {
family inet {
unicast;
flow;
}
export p1;
peer-as 65000;
neighbor 10.12.99.5;
}
}
[edit]
user@host# show policy-options
policy-statement p1 {
term a {
prefix-list inetflow;
}
then accept;
}
}
[edit] user@host# show routing-options autonomous-system 65001;
デバイスの設定が完了したら、設定モードから commit を入力します。
広告 ユニキャストまたはフロー ルートなし
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set protocols bgp group core family inet unicast set protocols bgp group core family inet flow set protocols bgp group core export p1 set protocols bgp group core peer-as 65000 set protocols bgp group core neighbor 10.12.99.5 set policy-options policy-statement p1 term a then reject set routing-options autonomous-system 65001
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
BGPピアセッションを設定するには:
BGPグループを設定します。
[edit protocols bgp group core] user@host# set family inet unicast user@host# set family inet flow user@host# set export p1 user@host# set peer-as 65000 user@host# set neighbor 10.12.99.5
フローポリシーを設定します。
[edit policy-options policy-statement p1] user@host# set term a then reject
ローカル自律システム(AS)番号を設定します。
[edit routing-options] user@host# set autonomous-system 65001
結果
設定モードから、 show protocols、 show policy-options、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show protocols
bgp {
group core {
family inet {
unicast;
flow;
}
export p1;
peer-as 65000;
neighbor 10.12.99.5;
}
}
[edit]
user@host# show policy-options
policy-statement p1 {
term a {
then reject;
}
}
[edit] user@host# show routing-options autonomous-system 65001;
デバイスの設定が完了したら、設定モードから commit を入力します。
ルーティング テーブルにインストールされるフロー ルートの数を制限する
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set routing-options rib inetflow.0 maximum-prefixes 1000 set routing-options rib inetflow.0 maximum-prefixes threshold 50
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
ルート制限を適用すると、動的ルート プロトコルの動作が予測できなくなる可能性があります。例えば、一度上限に達してルートが拒否されている場合、ルート数が上限を下回った後、BGPは必ずしも拒否したルートの再インストールを試みることはありません。この問題を解決するには、BGPセッションのクリアが必要な場合があります。
フロー ルートを制限するには:
テーブルにインストールされるプレフィックス数の上限を設定します
inetflow.0。[edit routing-options rib inetflow.0] user@host# set maximum-prefixes 1000
しきい値を50%に設定し、500ルートがインストールされると、システムログに警告が記録されます。
[edit routing-options rib inetflow.0] user@host# set maximum-prefixes threshold 50
結果
設定モードから、 show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show routing-options
rib inetflow.0 {
maximum-prefixes 1000 threshold 50;
}
デバイスの設定が完了したら、設定モードから commit を入力します。
BGPピアリングセッションで受信するプレフィックス数の制限
CLIクイックコンフィグレーション
この例を簡単に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、コマンドを [edit] 階層レベルのCLIにコピー&ペーストしてください。
set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit maximum 1000 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit teardown 50 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit drop-excess 50 set protocols bgp group x1 neighbor 10.12.99.2 family inet flow prefix-limit hide-excess 50
teardown <percentage>、drop-excess <percentage>、またはhide-excess<percentage>ステートメントオプションのいずれかを一度に含めることができます。
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディタの使用」を参照してください。
特定のネイバーに対してプレフィックス制限を設定することで、どのピアがどれだけのフロー ルートをアドバタイズできるかをより予測しやすく制御できます。
プレフィックス数を制限するには:
ネイバー 10.12.99.2 からの BGP ルートの上限を 1000 に設定します。
[edit protocols bgp group x1] user@host# set neighbor 10.12.99.2 family inet flow prefix-limit maximum 1000
-
セッションまたはプレフィックスが上限に達したときに、
teardown <percentage>、drop-excess <percentage>、またはhide-excess<percentage>ステートメントオプションのいずれかを実行するようにネイバーセッションまたはプレフィックスを設定します。[edit routing-options rib inetflow.0] user@host# set neighbor 10.12.99.2 family inet flow prefix-limit teardown 50 set neighbor 10.12.99.2 family inet flow prefix-limit drop-excess 50 set neighbor 10.12.99.2 family inet flow prefix-limit hide-excess 50
teardown <percentage>ステートメントを指定してパーセンテージを指定すると、プレフィックス数がそのパーセンテージに達したときにメッセージがログに記録されます。セッションがダウンした後、idle-timeoutステートメントを入れない限り、セッションは短時間で再確立されます。drop-excess <percentage>ステートメントを指定し、パーセンテージを指定すると、プレフィックス数がそのパーセンテージを超えた場合に余剰ルートを削除しますhide-excess <percentage>ステートメントを指定してパーセンテージを指定すると、プレフィックス数がそのパーセンテージを超えた場合に超過したルートを非表示にします。
結果
設定モードから、 show protocols コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show protocols
bgp {
group x1 {
neighbor 10.12.99.2 {
flow {
prefix-limit {
maximum 1000;
teardown 50;
drop-excess <percentage>;
hide-excess <percentage>;
}
}
}
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認します。
- NLRI の検証
- ルートの検証
- フロー検証の検証
- ファイアウォールフィルターの検証
- 許可されたフロー ルート数を超えた場合のシステム ロギングの検証
- BGPピアリングセッションで受信したプレフィックス数を超えた場合のシステムロギングの検証
NLRI の検証
目的
ネイバーに有効な NLRI を見ます。
アクション
動作モードから、 show bgp neighbor 10.12.99.5 コマンドを実行します。出力で inet-flow を探します。
user@host> show bgp neighbor 10.12.99.5 Peer: 10.12.99.5+3792 AS 65000 Local: 10.12.99.6+179 AS 65002 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ direct ] Options: <Preference HoldTime AddressFamily PeerAS Refresh> Address families configured: inet-unicast inet-multicast inet-flow Holdtime: 90 Preference: 170 Number of flaps: 1 Error: 'Cease' Sent: 0 Recv: 1 Peer ID: 10.255.71.161 Local ID: 10.255.124.107 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 0 Local Interface: e1-3/0/0.0 NLRI advertised by peer: inet-unicast inet-multicast inet-flow NLRI for this session: inet-unicast inet-multicast inet-flow Peer supports Refresh capability (2) Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 2 Received prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 3 Table inet.2 Bit: 20000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0 Table inetflow.0 Bit: 30000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 0 Last traffic (seconds): Received 29 Sent 15 Checked 15 Input messages: Total 5549 Updates 2618 Refreshes 0 Octets 416486 Output messages: Total 2943 Updates 1 Refreshes 0 Octets 55995 Output Queue[0]: 0 Output Queue[1]: 0 Output Queue[2]: 0
ルートの検証
目的
フロー ルートを見ます。サンプル出力では、BGP から学習したフロー ルートと、静的に設定されたフロー ルートが表示されます。
ローカルに設定されたフロー ルート( [edit routing-options flow] 階層レベルで設定)の場合、ルートはフロー プロトコルによってインストールされます。そのため、 show route table inetflow.0 や show route table instance-name.inetflow.0のように、 instance-name がルーティングインスタンス名であるテーブルを指定することで、フロールートを表示することができます。また、 show route protocol flow コマンドを実行することで、複数のルーティングインスタンスにまたがってローカルに設定されたすべてのフロールートを表示することができます。
フロー ルートがローカルに設定されておらず、ルーターの BGPピアから受信した場合、このフロー ルートは BGP によってルーティングテーブルにインストールされます。テーブルを指定するか、すべてのBGPルート(フローおよび非フロー)を表示する show route protocol bgpを実行することで、フロー ルートを表示できます。
アクション
動作モードから、 show route table inetflow.0 コマンドを実行します。
user@host> show route table inetflow.0
inetflow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
100.100.100.100,*,proto=1,icmp-type=8/term:1
*[BGP/170] 00:00:18, localpref 100, from 100.0.12.2
AS path: 2000 I, validation-state: unverified
Fictitious
200.200.200.200,*,proto=6,port=80/term:2
*[BGP/170] 00:00:18, localpref 100, from 100.0.12.2
AS path: 2000 I, validation-state: unverified
Fictitious
user@host> show route table inetflow.0 extensive
inetflow.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
7.7.7.7,8.8.8.8/term:1 (1 entry, 1 announced)
TSI:
KRT in dfwd;
Action(s): accept,count
*Flow Preference: 5
Next hop type: Fictitious
Address: 0x8d383a4
Next-hop reference count: 3
State: <Active>
Local AS: 65000
Age: 9:50
Task: RT Flow
Announcement bits (1): 0-Flow
AS path: I
user@host> show route hidden
inetflow.0: 2 destinations, 2 routes (0 active, 0 holddown, 2 hidden)
+ = Active Route, - = Last Active, * = Both
100.100.100.100,*,proto=1,icmp-type=8/term:N/A
[BGP ] 00:00:17, localpref 100, from 100.0.12.2
AS path: 2000 I, validation-state: unverified
Fictitious
200.200.200.200,*,proto=6,port=80/term:N/A
[BGP ] 00:00:17, localpref 100, from 100.0.12.2
AS path: 2000 I, validation-state: unverified
Fictitious
意味
フロー ルートは、ファイアウォール フィルターの項を表します。フロー ルートを設定する際には、整合条件とアクションを指定します。match 属性では、送信元アドレス、宛先アドレス、およびポートやプロトコルなどの修飾子を一致させることができます。複数の一致条件を含む単一フロー ルートの場合、すべての一致条件はルートのプレフィックス フィールドにカプセル化されます。フロー ルートで show route コマンドを発行すると、ルートのプレフィックス フィールドにすべての整合条件が表示されます。 10.12.44.1,* は、整合条件が match destination 10.12.44.1/32であることを意味します。出力のプレフィックスが *,10.12.44.1場合、一致条件が match source 10.12.44.1/32であることを意味します。一致条件に送信元と送信先の両方が含まれる場合、アスタリスクはアドレスに置き換えられます。
項順序は、ファイアウォールフィルターで評価される項(フロールート)の順序を示します。 show route extensive コマンドは、各項目(ルート)に対するアクションを表示します。
フロー検証の検証
目的
フロー ルート情報を表示します。
アクション
動作モードから、 show route flow validation detail コマンドを実行します。
user@host> show route flow validation detail
inet.0:
0.0.0.0/0
Internal node: best match, inconsistent
10.0.0.0/8
Internal node: no match, inconsistent
10.12.42.0/24
Internal node: no match, consistent, next-as: 65003
Active unicast route
Dependent flow destinations: 1
Origin: 10.255.124.106, Neighbor AS: 65003
10.12.42.1/32
Flow destination (1 entries, 1 match origin)
Unicast best match: 10.12.42.0/24
Flags: Consistent
10.131.0.0/16
Internal node: no match, consistent, next-as: 65001
Active unicast route
Dependent flow destinations: 5000
Origin: 10.12.99.2, Neighbor AS: 65001
10.131.0.0/19
Internal node: best match
10.131.0.0/20
Internal node: best match
10.131.0.0/21
ファイアウォールフィルターの検証
目的
カーネルにインストールされているファイアウォールフィルターを表示します。
アクション
動作モードから、 show firewall コマンドを実行します。
user@host> show firewall Filter: __default_bpdu_filter__ Filter: __flowspec_default_inet__ Counters: Name Bytes Packets 10.12.42.1,* 0 0 196.1.28/23,* 0 0 196.1.30/24,* 0 0 196.1.31/24,* 0 0 196.1.32/24,* 0 0 196.1.56/21,* 0 0 196.1.68/24,* 0 0 196.1.69/24,* 0 0 196.1.70/24,* 0 0 196.1.75/24,* 0 0 196.1.76/24,* 0 0
許可されたフロー ルート数を超えた場合のシステム ロギングの検証
目的
ルーティング テーブルにインストールされるフロー ルートの数を制限するで説明されているように、フロー ルートのインストール数に制限を設定した場合、しきい値に達したときにシステム ログ メッセージを表示します。
アクション
動作モードから、 show log <message> コマンドを実行します。
user@host> show log message Jul 12 08:19:01 host rpd[2748]: RPD_RT_MAXROUTES_WARN: Number of routes (1000) in table inetflow.0 exceeded warning threshold (50 percent of configured maximum 1000)
BGPピアリングセッションで受信したプレフィックス数を超えた場合のシステムロギングの検証
目的
BGPピアリングセッションで受信するプレフィックス数の制限で説明されているように、フロールートのインストール数に制限を設定した場合、しきい値に達したときにシステムログメッセージを表示します。
アクション
動作モードから、 show log message コマンドを実行します。
teradown <percentage>ステートメントオプションを指定した場合:
user@host> show log message Jul 12 08:44:47 host rpd[2748]: 10.12.99.2 (External AS 65001): Shutting down peer due to exceeding configured maximum prefix-limit(1000) for inet-flow nlri: 1001
drop-excess <percentage>ステートメントオプションを指定した場合:
user@host> show log message Jul 27 15:26:57 R1_re rpd[32443]: BGP_DROP_PREFIX_LIMIT_EXCEEDED: 1.1.1.2 (Internal AS 1): Exceeded drop-excess maximum prefix-limit(4) for inet-unicast nlri: 5 (instance master)
hide-excess <percentage>ステートメントオプションを指定した場合:
user@host> show log message Jul 27 15:26:57 R1_re rpd[32443]: BGP_HIDE_PREFIX_LIMIT_EXCEEDED: 1.1.1.2 (Internal AS 1): Exceeded hide-excess maximum prefix-limit(4) for inet-unicast nlri: 5 (instance master)
例:IPv6フロー仕様ルートを伝送するためのBGPの設定
この例では、トラフィックフィルタリング用にIPv6フロー仕様を設定する方法を示しています。BGPフロー仕様を使用して、サービス拒否攻撃を緩和するために、ドメイン間およびドメイン内のトラフィックフィルタリングルールの調整を自動化できます。
要件
この例では、以下のハードウェアおよびソフトウェアコンポーネントを使用しています。
-
2 つの MXシリーズルーター
-
Junos OSリリース16.1以降
BGP が IPv6 フロー仕様ルートを伝送できるようになる前に、以下を実行します。
-
デバイスインターフェイスにIPアドレスを設定します。
-
BGPを設定します。
-
ルーティングテーブルからBGPにルート(スタティックルート、ダイレクトルート、IGPルートなど)をエクスポートするルーティングポリシーを設定します。
概要
フロー仕様は、サービス拒否攻撃からの保護を提供し、帯域幅を消費して送信元近くでそれを止める不良なトラフィックを制限します。以前の Junos OS リリースでは、フロー仕様ルールは、ネットワーク層の到達可能性情報として BGP 上の IPv4 に伝搬されていました。Junos OSリリース16.1以降、フロー仕様機能はIPv6ファミリーでサポートされ、IPv6およびIPv6 VPNのトラフィック仕様ルールの伝搬を可能にします。
トポロジー
図7は、サンプルのトポロジーを示しています。ルーターR1とルーターR2は、異なる自律システムに属しています。IPv6フロー仕様は、ルーターR2で設定されています。すべての着信トラフィックはフロー仕様条件に基づいてフィルタリングされ、トラフィックは指定されたアクションによって異なる方法で処理されます。この例では、フロー仕様条件に一致する、abcd::11:11:11:10/128へ向かうすべてのトラフィックが破棄されます。一方、abcd::11:11:11:30/128を宛先とするトラフィックで、フロー仕様条件に一致するトラフィックは受け入れられます。
を伝送するためのBGPの設定
設定
CLIクイックコンフィグレーション
この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピー アンド ペーストして、設定モードから commit を入力します。
ルーターR1
set interfaces ge-1/1/4 unit 0 family inet6 address abcd::13:14:2:1/120 set interfaces lo0 unit 0 family inet6 address abcd::128:220:21:197/128 set routing-options router-id 128.220.21.197 set routing-options autonomous-system 64496 set protocols bgp group ebgp type external set protocols bgp group ebgp family inet6 unicast set protocols bgp group ebgp family inet6 flow set protocols bgp group ebgp peer-as 64497 set protocols bgp group ebgp neighbor abcd::13:14:2:2
ルーターR2
set interfaces ge-1/0/0 unit 0 family inet6 address abcd::192:2:1:1/120 set interfaces ge-1/1/5 unit 0 family inet6 address abcd::13:14:2:2/120 set interfaces lo0 unit 0 family inet6 address abcd::128:220:41:229/128 set routing-options rib inet6.0 static route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2 set routing-options rib inet6.0 flow route route-1 match destination abcd::11:11:11:10/128 set routing-options rib inet6.0 flow route route-1 match protocol tcp set routing-options rib inet6.0 flow route route-1 match destination-port http set routing-options rib inet6.0 flow route route-1 match source-port 65535 set routing-options rib inet6.0 flow route route-1 then discard set routing-options rib inet6.0 flow route route-2 match destination abcd::11:11:11:30/128 set routing-options rib inet6.0 flow route route-2 match icmp6-type echo-request set routing-options rib inet6.0 flow route route-2 match packet-length 100 set routing-options rib inet6.0 flow route route-2 match dscp 10 set routing-options rib inet6.0 flow route route-2 then accept set routing-options router-id 128.220.41.229 set routing-options autonomous-system 64497 set protocols bgp group ebgp type external set protocols bgp group ebgp family inet6 unicast set protocols bgp group ebgp family inet6 flow set protocols bgp group ebgp export redis set protocols bgp group ebgp peer-as 64496 set protocols bgp group ebgp neighbor abcd::13:14:2:1 set policy-options policy-statement redis from protocol static set policy-options policy-statement redis then accept
ルーターR2の設定
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。
ルーターR2を設定するには:
適切なインターフェイス名、アドレス、およびその他のパラメーターを変更した後、ルーターR1に対してこの手順を繰り返します。
-
インターフェイスにIPv6アドレスを設定します。
[edit interfaces] user@R2# set ge-1/0/0 unit 0 family inet6 address abcd::192:2:1:1/120 user@R2# set ge-1/1/5 unit 0 family inet6 address abcd::13:14:2:2/120
-
IPv6 ループバックアドレスを設定します。
[edit interfaces] user@R2# set lo0 unit 0 family inet6 address abcd::128:220:41:229/128
-
ルーターIDと自律システム(AS)番号を設定します。
[edit routing-options] user@R2# set router-id 128.220.41.229 user@R2# set autonomous-system 64497
-
ルーターR1とルーターR2の間でEBGPピアリングセッションを設定します。
[edit protocols] user@R2# set bgp group ebgp type external user@R2# set bgp group ebgp family inet6 unicast user@R2# set bgp group ebgp family inet6 flow user@R2# set bgp group ebgp export redis user@R2# set bgp group ebgp peer-as 64496 user@R2# set bgp group ebgp neighbor abcd::13:14:2:1
-
スタティックルートとネクストホップを設定します。したがって、ルートがルーティングテーブルに追加され、この例の機能を検証します。
[edit routing-options] user@R2# set rib inet6.0 static route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2
-
フロー仕様の条件を指定します。
[edit routing-options] user@R2# set rib inet6.0 flow route route-1 match destination abcd::11:11:11:10/128 user@R2# set rib inet6.0 flow route route-1 match protocol tcp user@R2# set rib inet6.0 flow route route-1 match destination-port http user@R2# set rib inet6.0 flow route route-1 match source-port 65535
-
指定された一致条件に一致するパケットを破棄するように discard アクションを設定します。
[edit routing-options] user@R2# set rib inet6.0 flow route route-1 then discard
-
フロー仕様の条件を指定します。
[edit routing-options] user@R2# set rib inet6.0 flow route route-2 match destination abcd::11:11:11:30/128 user@R2# set rib inet6.0 flow route route-2 match icmp6-type echo-request user@R2# set rib inet6.0 flow route route-2 match packet-length 100 user@R2# set rib inet6.0 flow route route-2 match dscp 10
-
指定された一致条件に一致するパケットを受信するように accept アクションを設定します
[edit routing-options] user@R2# set rib inet6.0 flow route route-2 then accept
-
BGPのスタティックルート受信を可能にするポリシーを定義します。
[edit policy-options] user@R2# set policy-statement redis from protocol static user@R2# set policy-statement redis then accept
結果
設定モードから、 show interfaces、 show protocols、 show routing-options、および show policy-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@R2# show interfaces
ge-1/0/0 {
unit 0 {
family inet6 {
address abcd::192:2:1:1/120;
}
}
}
ge-1/1/5 {
unit 0 {
family inet6 {
address abcd::13:14:2:2/120;
}
}
}
lo0 {
unit 0 {
family inet6 {
address abcd::128:220:41:229/128;
}
}
}
[edit]
user@R2# show protocols
bgp {
group ebgp {
type external;
family inet6 {
unicast;
flow;
}
export redis;
peer-as 64496;
neighbor abcd::13:14:2:1;
}
}
[edit]
user@R2# show routing-options
rib inet6.0 {
static {
route abcd::11:11:11:0/120 next-hop abcd::192:2:1:2;
}
flow {
route route-1 {
match {
destination abcd::11:11:11:10/128;
protocol tcp;
destination-port http;
source-port 65535;
}
then discard;
}
route route-2 {
match {
destination abcd::11:11:11:30/128;
icmp6-type echo-request;
packet-length 100;
dscp 10;
}
then accept;
}
}
}
router-id 128.220.41.229;
autonomous-system 64497;
[edit]
user@R2# show policy-options
policy-statement redis {
from protocol static;
then accept;
}
検証
設定が正常に機能していることを確認します。
inet6フローテーブルにおけるIPv6フロー仕様ルートの存在の検証
目的
ルーターR1とR2の inet6flow テーブルにルートを表示し、BGPがフロールートを学習したことを確認します。
アクション
運用モードから、ルーターR1で show route table inet6flow.0 extensive コマンドを実行します。
user@R1>
show route table inet6flow.0 extensive
inet6flow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535/term:1 (1 entry, 1 announced)
TSI:
KRT in dfwd;
Action(s): discard,count
*BGP Preference: 170/-101
Next hop type: Fictitious, Next hop index: 0
Address: 0x9b24064
Next-hop reference count: 2
State:<Active Ext>
Local AS: 64496 Peer AS: 64497
Age: 20:55
Validation State: unverified
Task: BGP_64497.abcd::13:14:2:2
Announcement bits (1): 0-Flow
AS path: 64497 I
Communities: traffic-rate:64497:0
Accepted
Validation state: Accept, Originator: abcd::13:14:2:2, Nbr AS: 64497
Via: abcd::11:11:11:0/120, Active
Localpref: 100
Router ID: 128.220.41.229
abcd::11:11:11:30/128,*,icmp6-type=128,len=100,dscp=10/term:2 (1 entry, 1 announced)
TSI:
KRT in dfwd;
Action(s): accept,count
*BGP Preference: 170/-101
Next hop type: Fictitious, Next hop index: 0
Address: 0x9b24064
Next-hop reference count: 2
State: <Active Ext>
Local AS: 64496 Peer AS: 64497
Age: 12:51
Validation State: unverified
Task: BGP_64497.abcd::13:14:2:2
Announcement bits (1): 0-Flow
AS path: 64497 I
Accepted
Validation state: Accept, Originator: abcd::13:14:2:2, Nbr AS: 64497
Via: abcd::11:11:11:0/120, Active
Localpref: 100
Router ID: 128.220.41.229
運用モードから、ルーターR2で show route table inet6flow.0 extensive コマンドを実行します。
user@R2> show route table inet6flow.0 extensive
inet6flow.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden)
abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535/term:1 (1 entry, 1 announced)
TSI:
KRT in dfwd;
Action(s): discard,count
Page 0 idx 0, (group pe-v6 type External) Type 1 val 0xaec8850 (adv_entry)
Advertised metrics:
Nexthop: Self
AS path: [64497]
Communities: traffic-rate:64497:0
Path abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535 Vector len 4. Val: 0
*Flow Preference: 5
Next hop type: Fictitious, Next hop index: 0
Address: 0x9b24064
Next-hop reference count: 3
State: <Active>
Local AS: 64497
Age: 14:21
Validation State: unverified
Task: RT Flow
Announcement bits (2): 0-Flow 1-BGP_RT_Background
AS path: I
Communities: traffic-rate:64497:0
abcd::11:11:11:30/128,*,proto=17,port=65535/term:2 (1 entry, 1 announced)
TSI:
KRT in dfwd;
Action(s): accept,count
Page 0 idx 0, (group pe-v6 type External) Type 1 val 0xaec8930 (adv_entry)
Advertised metrics:
Nexthop: Self
AS path: [64497]
Communities:
Path abcd::11:11:11:30/128,*,proto=17,port=65535 Vector len 4. Val: 0
*Flow Preference: 5
Next hop type: Fictitious, Next hop index: 0
Address: 0x9b24064
Next-hop reference count: 3
State: <Active>
Local AS: 64497
Age: 14:21
Validation State: unverified
Task: RT Flow
Announcement bits (2): 0-Flow 1-BGP_RT_Background
AS path: I
意味
inet6flowテーブルにabcd::11:11:11:10/128とabcd::11:11:11:30/128のルートが存在することは、BGPがフロールートを学習したことを裏付けています。
BGPサマリー情報の検証
目的
BGPの設定が正しいことを確認します。
アクション
運用モードから、ルーターR1とR2で show bgp summary コマンドを実行します。
user@R1> show bgp summary
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet6.0
1 1 0 0 0 0
inet6flow.0
2 2 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
abcd::13:14:2:2 2000 58 58 0 2 19:48 Establ
inet6.0: 1/1/1/0
inet6flow.0: 2/2/2/0
user@R2> show bgp summary
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet6.0
0 0 0 0 0 0
inet6flow.0
0 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
abcd::13:14:2:1 64496 51 52 0 0 23:03 Establ
inet6.0: 0/0/0/0
inet6flow.0: 0/0/0/0
意味
inet6.0テーブルにBGPネイバーアドレスが含まれ、BGPネイバーとのピアリングセッションが確立されたことを確認します。
フロー検証の検証
目的
フロー ルート情報を表示します。
アクション
運用モードから、ルーターR1で show route flow validation コマンドを実行します。
user@R1> show route flow validation
inet6.0:
abcd::11:11:11:0/120
Active unicast route
Dependent flow destinations: 2
Origin: abcd::13:14:2:2, Neighbor AS: 64497
abcd::11:11:11:10/128
Flow destination (1 entries, 1 match origin, next-as)
Unicast best match: abcd::11:11:11:0/120
Flags: Consistent
abcd::11:11:11:30/128
Flow destination (1 entries, 1 match origin, next-as)
Unicast best match: abcd::11:11:11:0/120
Flags: Consistent
意味
出力は、 inet6.0 テーブル内のフロールートを表示します。
IPv6ルートのフロー仕様の検証
目的
指定されたフロー仕様ルートに基づいて、破棄および受信されたパケット数を表示します。
アクション
運用モードから、ルーターR2で show firewall filter_flowspec_default_inet6_ コマンドを実行します。
user@R2> show firewall filter __flowspec_default_inet6__ Filter: __flowspec_default_inet6__ Counters: Name Bytes Packets abcd::11:11:11:10/128,*,proto=6,dstport=80,srcport=65535 0 0 abcd::11:11:11:30/128,*,proto=17,port=65535 6395472 88826
意味
この出力は、abcd::11:11:11:10/128 を宛先とするパケットは破棄され、abcd::11:11:11:11:30/128 のルートで 88826 パケットが受け入れられたことを示しています。
BGPフロー仕様の設定 IPへのリダイレクト
BGPフロー仕様IPへのリダイレクト機能は、フロー仕様(FlowSpec)ルールに基づくトラフィックリダイレクトを可能にすることで、トラフィックエンジニアリング機能を強化します。この機能は、BGP Flow-Spec Internet draft: draft-ietf-idr-flowspec-redirect-ip-02.txt, Redirect to IP Actionで説明されているように、IPv4またはIPv6アドレスへのリダイレクトをサポートします。特に、サービスプロバイダ(SP)ネットワークにおけるDDoS緩和や、仮想化サービス環境(vSCG)におけるポリシーベースの転送に有益です。
ユースケース
-
DDoS緩和 – 分析と駆除のために、悪意のあるトラフィックをスクラビングセンターにリダイレクトします。
-
ポリシーベースの転送 – 定義済みのルールに基づいてトラフィックフローを特定の宛先に誘導することで、高度なトラフィック管理を可能にします。
トポロジー
-
図8:既存のフロー
-
攻撃が検出されると、FlowSpec redirect-to-VRF が イングレスプロバイダーエッジ(PE) ルーターに適用されます。
-
ダーティVRFは、ヘッドエンドPE(HE-PE)に接続されたスクラバーにトラフィックをリダイレクトします。
-
トラフィックがクリーンアップされると、HE-PE はトラフィックを目的の宛先に転送します。
-
-
図9:新しいフロー
-
redirect-to-VRFの代わりに、FlowSpec redirect-to-IP がイングレスPEの外部に面したインターフェイスに適用されます。
-
悪意のあるトラフィックは、 HE-PEに直接転送されます。
-
その後、HE-PEはredirect-to-IPルールに基づいてトラフィックを スクラバー にリダイレクトします。
-
クリーニングされたトラフィックは、専用のダーティVRFを必要とせずに宛先に転送されます。
-
対象プラットフォーム
-
vMX、MXシリーズルーター
パフォーマンスと拡張目標
-
この機能は、トラフィックのリダイレクトを効果的に管理するために、1,000のFlowSpecルートをサポートすることを目的としています。
検証コマンド:
show firewall filter FLOWSPEC
この機能により、VRF ベースのセグメンテーションではなく、IP ベースのトラフィック処理を通じてリダイレクト プロセスが簡素化され、拡張性の向上、遅延の削減、効率的な DDoS 緩和が保証されます。
関連項目
BGPフロー仕様アクション「Redirect to IP」を設定してDDoSトラフィックをフィルタリングする
Junos OSリリース18.4R1以降、BGPフロー仕様インターネットドラフトdraft-ietf-idr-flowspec-redirect-ip-02.txtに記載されているフロー仕様BGP、 IPへのリダイレクトアクション がサポートされます。Redirect to IPアクションは、拡張BGPコミュニティを使用して、サービスプロバイダネットワークでDDoSを緩和するためのトラフィックフィルタリングオプションを提供します。従来のフロー仕様のIPへのリダイレクトは、BGPネクストホップ属性を使用します。Junos OSは、デフォルトで拡張コミュニティを使用して、IPへのリダイレクトフロー仕様アクションをアドバタイズします。この機能は、仮想サービスコントロールゲートウェイ(vSCG)でサービスチェイニングをサポートするために必要です。Redirect to IPアクションにより、一致するフロー仕様トラフィックを世界中から到達可能なアドレスへと迂回させることができ、このアドレスをDDoSトラフィックをフィルタリングし、クリーンなトラフィックをegressデバイスに送信できるフィルタリングデバイスに接続することができます。
IPv6は、従来のredirect-to-Nexthopエンコーディングモードでのみサポートされます。IPv6の新しいredirect-to-IPエンコーディング形式はサポートされません。
BGPフロー仕様ルートのトラフィックをIPにリダイレクトする前に、以下を実行してください。
デバイスインターフェイスを設定します。
OSPFまたはその他のIGPプロトコルを設定します。
MPLSとLDPを設定します。
BGPを設定します。
BGP拡張コミュニティを使用して、IPへのリダイレクト機能を設定します。
ネクストホップ属性を使用して、従来のフロー仕様のIPへのリダイレクト機能を設定します。
BGP拡張コミュニティと従来のネクストホップIPアドレスへのリダイレクトを併用して、IPアドレスへのトラフィックをリダイレクトするポリシーを設定することはできません。
インターネットドラフトdraft-ietf-idr-flowspec-redirect-ip-00.txtで指定されているレガシーフロー仕様のIPへのリダイレクトを設定する BGP、IPネクストホップへのトラフィックリダイレクトのためのフロー仕様拡張コミュニティ を階層レベルで含めます。
[edit group bgp-group neighbor bgp neighbor family inet flow] user@host# set legacy-redirect-ip-action
ネクストホップ属性に一致するポリシーを定義します。
[edit policy options] user@host#policy statement policy_name user@host#from community community-name user@host#from next-hop ip-address
例えば、ポリシーp1を定義して、ネクストホップIPアドレス10.1.1.1にトラフィックをリダイレクトします。
[edit policy options] user@host#policy statement p1 user@host#from community redirnh user@host#from next-hop 10.1.1.1
従来のフロー仕様ネクストホップ属性IPへのリダイレクトアクションを使用して、BGPコミュニティを設定、追加、または削除するポリシーを定義します。
[edit policy-options] user@host# policy-statement policy_name user@host# then community set community-name user@host# then community add community-name user@host# then community delete community-name user@host# then next-hop next-hop-address
例えば、ポリシーp1を定義し、BGPコミュニティredirnhを設定、追加、または削除して、DDoSトラフィックをネクストホップIPアドレス10.1.1.1にリダイレクトします。
[edit policy-options policy-statement p1] user@host# then community set redirnh user@host# then community add redirnh user@host# then community delete redirnh user@host# then next-hop 10.1.1.1
関連項目
BGPフロー仕様を使用したトラフィックの転送 DSCPアクション
BGPフロー仕様(FlowSpec)DSCPアクションを設定して、ネットワーク全体に転送クラスと損失の優先度情報を使用してパケットを効果的に転送します。
パケットを転送するためのBGP FlowSpec DSCPアクションのメリット
-
目的のCOSキューにトラフィックを転送し、COSポリシーがトラフィックに正しく適用されます。
-
プロビジョニングされたDSCP値に基づいて、ローカル転送動作(トンネルの選択など)に影響を与えます。
-
ネットワーク上のトラフィックを効果的に管理するのに役立ちます。
パケットがルーターに入ると、パケットはイングレスインターフェイスで適用される機能(ファイアウォール、COSなど)を通過します。イングレスインターフェイスでBGP FlowSpecフィルターを設定すると、DSCPアクションに基づいてルーティングインスタンスごとのパケットにフィルターが適用されます。DSCPアクションは、パケットを分類して書き換え、BGP FlowSpecフィルターを介してDSCPコードを変更します。転送クラスと損失優先度情報に基づいて、パケットは正しい転送キューに配置されます。パケットは、特定の一致条件が満たされた場合にのみフロー ルートを通過します。照合条件は、送信元と宛先のIPアドレス、送信元と宛先ポート、DSCP、プロトコル番号などです。フォワーディングクラスと損失の優先度情報は、リバースマッピングテーブルによって更新されます。
以下は、サービスプロバイダと企業顧客ネットワークとの間に確立されたBGPセッションのトポロジーです。
このトポロジーでは、BGP セッションが、BGP FlowSpec 用にサービスプロバイダと企業顧客ネットワークの間に設定されます。BGP FlowSpecフィルターは、PE1ルーターとPE2ルーターの両方に適用されます。これらのルーターに入るパケットは、BGP FlowSpecフィルターとDSCPアクションに基づいて書き換えられます。
デバイス上でBGP FlowSpecフィルターを有効にするには、[edit forwarding-options family (inet | inet6)]階層レベルでdscp-mapping-classifier設定ステートメントを追加する必要があります。
forwarding-options {
family inet {
dscp-mapping-classifier ipv4-classifer;
}
family inet6 {
dscp-mapping-classifier ipv6-classifer;
}
}
次のサービスクラス設定例は、DSCPコードポイントを転送クラスと損失優先度にマッピングしたものです。
class-of-service {
classifiers {
dscp dscp1 {
forwarding-class best-effort {
loss-priority low code-points 000000;
}
}
}
}
フロー ルート検証のポリシーの設定
フロー仕様を使用してネットワークを介してピアリング ポイントにフィルターを配布する場合、フロー仕様フィルターの形式はソースで検証されます。EBGP セッションを介した信号フロー ルートをピアに送信したい場合は、エッジ ルーターでフロー仕様フィルターを検証する必要があります。
ポリシーを使用して、フロー ルートのこの追加検証を実行できます。ポリシーは、フロー ルート一致条件をフィルタリングして、ソースから注入された不正な形式、サポートされていない、または望ましくないフロー ルートの許可を防止できます。また、フロー ルートがプロトコル セッションを偶発的または悪意を持ってブロックするのを防ぐこともできます。
ポリシーを使用して、次の目的で実行できます
-
特定のフロー仕様の一致/アクション条件が存在するかを確認する
-
無効または望ましくない一致条件をプログラミングすることを防ぎます。
フロー仕様の一致/アクション条件が存在するかどうかをチェックするポリシーの設定
ポリシーを設定して、特定のフロー一致/アクション条件がソースからアドバタイズされているかどうかを確認し、必要なアクションを実行できます。各フロー ルートには、一致条件とアクション条件があります。一致条件と一致が発生した場合に実行するアクションを指定する以下のステートメントを設定します。
set policy-options flowspec-attribute <> match condition <>
set policy-options flowspec-attribute < Flow Route action >
これらのポリシー設定は、フロー ルート内の完全一致または部分一致を探し、見つかった場合、ポリシーはフロー ルートと一致します。複数の一致条件を設定した場合、すべての条件が満たされた場合にのみ一致が発生します。
「反転」一致オプションを使用して、特定の一致条件を除外できます。例えば;以下の設定ステートメントでは、ポリシーは「TCPプロトコルなし」のフロールートを照合し、「DSCP値「x」と照合します。両方の一致が見つかった場合、ポリシーはフロー ルートを受け入れます。
set policy-options flowspec-attribute fl1 invert-match protocol value tcp
set policy-options flowspec-attribute fl1 match dscp value <x>
set policy-options policy-statement pl1 term 1 from flowspec-attribute fl1
set policy-options policy-statement pl1 term 1 then accept
フロー仕様一致属性をチェックするポリシーの設定
ポリシーを設定して、フロー ルートがフロー一致条件の特定の値に一致するかどうかをチェックできます。これにより、フロー ルートが偶発的または悪意を持ってプロトコル セッションをブロックするのを防ぐことができます。
属性の特定の値を指定する以下のステートメントを設定します。
set policy-options flowspec-attribute < match value >
IPv4に固有のフロースペクションポリシー一致属性は、IPv6フロールートに影響を与えず、その逆も同様です。
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。
extended-community フィルタリング アクションをサポートします。