このページで
マルチプロトコル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 Release 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 のルーティングテーブルは、( any
に NLRI を設定することで)MP-BGP を設定した場合、自動的に作成されます。
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 Release 9.2 以降では、BGP ピア セッションで受け入れ可能なプレフィックス数に制限を設定することもできます。詳細については、BGP ピアセッションで受け入れるプレフィックス数の制限についてを参照してください。
BGP ピアセッションで受け入れるプレフィックス数の制限について
Junos OS Release 9.2 以降では、BGP ピア セッションで受け入れ可能なプレフィックス数を制限することができます。その指定した制限を超えた場合、システムログメッセージが送信されます。また、指定したプレフィックス数の上限を超えた場合に、BGP セッションをリセットするように指定することもできます。
BGP ピア セッションで受け入れ可能なプレフィックス数に制限を設定するには、accepted-prefix-limit
のステートメントを含めます:
accepted-prefix-limit { maximum number; teardown <percentage> <idle-timeout (forever | minutes)>; drop <percentage>; hide <percentage>; }
このステートメントを含めることができる階層レベルの一覧は、このステートメントのステートメント概要のセクションを参照してください。
このmaximum numberでは、1~4,294,967,295 の範囲で値を指定します。
受け入れたプレフィックスの数が設定した制限を超えた場合、BGP ピア セッションをリセットするためのteardown
ステートメントを使用します。また、受け入れたプレフィックスの数が、その上限のパーセンテージを超えた場合は、システムログメッセージを送信するために、1 から 100 までのパーセント値を含めることができます。デフォルトでは、リセットされた BGP セッションは短時間で再確立されます。指定した期間に BGP セッションを再確立しないようにするためのidle-timeout
ステートメントを使用します。タイムアウトの値は、1 分から 2400 分まで設定できます。そのforeverオプションを含めると、そのclear bgp neighbor
コマンドを発行するまで BGP セッションが再確立されません。ステート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のネクストホッププレフィックス
10.19.1.1
は、IPv6のネクストホッププレフィックス::ffff:10.19.1.1に変換されます。注:IPv6 BGPプレフィックスをエクスポートするには、IPv4にマッピングされたIPv6ネクストホップへのアクティブなルートがある必要があります。
リンク上にIPv6接続を設定する必要があります。接続は、IPv6トンネルまたはデュアルスタックの設定のいずれかである必要があります。この例では、デュアルスタッキングを使用しています。
IPv4にマッピングされたIPv6のプレフィックスを設定する際には、96ビットより長いマスクを使用します。
通常のIPv6プレフィックスを使用したい場合は、スタティックルートを設定します。この例では、スタティックルートを使用しています。
図 1サンプルのトポロジーを示しています。
設定
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エディターを使用する を参照してください。
Device 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;
デバイスの設定が完了したら、設定モードから commit を入力します。デバイス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-unicastが多数出現していることは、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;
BGPは、inet6ユニキャスト、inet6マルチキャスト、inet6ラベル付きユニキャストのアドレスファミリーを、IPv6 BGPセッション上でアドバタイズする機能をすでに有しているため、それをアドレスファミリーには設定することはできません。
設定された local-ipv4-address
は、BGPがセルフネクストホップでルートをアドバタイズする場合のみに使用されます。IBGPがEBGPピアから学習したルートをアドバタイズしたり、ルートリフレクターがそのクライアントにBGPルートをアドバタイズする場合、BGPはルートのネクストホップを変更せず、設定されたを無視しlocal-ipv4-address
、元のIPv4ネクストホップを使用します。
関連項目
例:IPv6 BGPセッション上での IPv4ルートのアドバタイズ
この例では、IPv6 BGPセッション上で、IPv4ルートをアドバタイズする方法を説明しています。コアにIPv6があるデュアルスタック環境では、リモートのIPv4ホストへの到達を必要とします。従って、BGPは、IPv4をIPv4ネクストホップで、BGPセッション上のBGPピアにアドバタイズします。その場合、IPv6の送信元と宛先のアドレスを使用します。この機能は、BGPが、IPv6 BGPセッション上で、IPv4ネクストホップを使用して、IPv4ユニキャストの到着可能性をアドバタイズすることを可能にします。
要件
この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。
デュアルスタッキング機能を備えた3つのルーター
すべてのデバイスで、Junos OS Release 16.1以降が作動していること
IPv6 BGPセッション上でのIPv4アドバタイズメントを有効にする前に、以下を実行してください。
デバイスインターフェイスを設定します。
すべてのデバイスで、デュアルスタッキングを設定します。
概要
リリース16.1以降、Junos OSは、BGPがIPv6 BGPセッション上で、IPv4ネクストホップを使用し、IPv4ユニキャストの到達可能性をアドバタイズすることを可能にします。以前のJunos OSリリースで、BGPは、IPv6 BGPセッション上で、inet6ユニキャスト、inet6マルチキャスト、およびinet6ラベル付きユニキャストアドレスファミリーのみをアドバイタイズできました。この機能は、BGPがIPv6セッション上で、すべてのBGPアドレスファミリーを交換することを可能にします。BGPを有効にして、BGPピアにIPv4ネクストホップをIPv6セッション上で使用し、IPv4ルートをアドバタイズすることができます。設定された local-ipv4-address
は、BGPがセルフネクストホップでルートをアドバタイズする場合のみに使用されます。
BGPは、inet6ユニキャスト、inet6マルチキャスト、inet6ラベル付きユニキャストのアドレスファミリーを、IPv6 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アドレスが、設定したBGPネイバーにルーターR1によってアドバタイズされていることを確認します。
アクション
運用モードから、ルーター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 Release 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 ルートを受信すると、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)の適用を実行します。
DF-bit
カプセル化されたパケットのサイズがトンネルの MTU を超え、IPv4 パケットのが設定されていない場合、パケットはフラグメント化され、これらのフラグメントがカプセル化されます。内部パケット・ヘッダーに、ハッシュベースのトラフィック負荷分散を使用します。
宛先 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 Release 17.3R1 の統合型 ISSU をサポートしていません。
IPv6 のネクストホップアドレスを持つ IPv4 ルートを配信するための BGP の設定を始める前に、以下のことを実行します。
デバイスインターフェイスを設定します。
OSPF、またはその他の IGP プロトコルを設定します。
MPLS と LDP を設定します。
BGP を設定します。
BGP を設定して、IPv6 のネクストホップアドレスを持つ IPv4 ルートを配信するには、次の手順に従います。
関連項目
レイヤー 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 によって伝播されます。BGP がこれらの NLRI を伝播できるようにする必要があります。
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)時、分散型サービス妨害攻略を軽減するためにトラフィック フィルタリング ルールの調整を自動化します。
Junos OS リリース 16.1R1 以降、BGP フロー仕様はトラフィック マーク extended-community
フィルタリング アクションをサポートします。IPv4 トラフィックについては、Junos OS は、転送する IPv4 パケットの DiffServ コード ポイント(DSCP)ビットを拡張したコミュニティーの対応する値に変更します。IPv6 パケットについては、Junos OS は転送する IPv6 パケットの フィーtraffic class
ルドの最初の 6 ビットを拡張したコミュニティーの対応する値に変更します。
Junos OS リリース 17.1R1 以降、第 3 世代 FPC (PTX5000 の FPC3-PTX-U2 と FPC3-PTX-U3、PTX300 の FPC3-SFF-PTX-U0 と FPC3-SFF-PTX-U1)を搭載した PTX シリーズでは、BGP がフロー指定ネットワーク層到達可能性情報(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 です。 この一致条件は、 モードに設定されている拡張 MPC の Junos デバイスでのみサポ |
|
フラグメント タイプ フィールドです。キーワードは、それらが関連するフラグメント タイプによってグループ化されます。
この一致条件は、 |
|
ICMP コード フィールドです。この値またはキーワードは、 数値の代わりに、以下のテキストシノニム(フィールド値も記載されています)のいずれかを指定します。キーワードは、それらが関連するICMPタイプによってグループ化されます。
|
|
ICMP パケット タイプ フィールドです。通常、 数値の代わりに、以下のテキストシノニム(フィールド値も記載されています)のいずれかを指定します。 |
|
総 IP パケット長です。 |
|
TCP または UDP 送信元または宛先ポート フィールドです。同じ項に 数値の代わりに、 |
|
IP プロトコル フィールドです。数値の代わりに、以下のテキストシノニム(フィールド値も記載されています)のいずれかを指定します。 この一致条件は、 モードに設定されている拡張 MPC を搭載した Junos デバイスでのみ IPv6 に対してサポ |
|
IP 送信元アドレス フィールドです。 モー |
|
TCP または UDP 送信元ポート フィールドです。同じ項に 数値 フィールドの代わりに、 の下に記載されているテキスト シノニムの 1 つを指定します |
|
TCP ヘッダー フォーマットです。 |
フロー ルートのアクション
パケットがフロー ルートで設定した条件に一致した場合の動作を指定することができます。アクションを設定するには、[edit routing-options flow]
階層レベルで then
ステートメントを含めます。
表 2 は、フロー ルート アクションを記述します。
アクションまたはアクション変更機能 |
説明 |
---|---|
アクション | |
|
パケットを受け取ります。これはデフォルトです。 |
|
インターネット 制御メッセージ プロトコル(ICMP)メッセージを送信することなく、気付かれることなくパケットを無効にします。 |
|
ルート内のコミュニティーを指定したコミュニティーに置き換えます。 |
mark value |
このフローに一致するトラフィックに対して DSCP 値を設定します。0~63 からの値を指定します。このアクションは、 モードに設定されている拡張 MPC を搭載した Junos デバイスでのみサポ |
|
評価のための次の一致条件に続きます。 |
|
パケットが転送されるルーティング インスタンスを指定します。 |
|
フロー ルートの帯域幅を制限します。ビット単位(bps)で制限を表現します。Junos OS リリース 16.1R4 以降、レート制限範囲は [0~1000000000000] です。 |
|
フロー ルートのトラフィックをサンプルします。 |
フロー ルートの検証
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 を設定します。
ルーティングテーブルから、ルート(ダイレクトルートもしくは IGP ルート)をエクスポートするルーティングポリシーを設定します。
概要
BGPの一部としてファイアウォールフィルタ情報を伝搬させることで、サービス拒否(DOS)攻撃に対するファイアウォールフィルタを自律システム間で動的に伝搬させることができます。フロー ルートはフロー指定 NLRI にカプセル化され、フィルターに類似する情報を共有しながらネットワークや VPN(仮想プライベート ネットワーク)を通じて伝送されます。フロー ルートは、パケットに対する整合条件とその結果のアクションの集合体です。ファイアウォール フィルターと同様に、トラフィックのフィルタリングとレート制限の機能を提供します。ユニキャスト フロー ルートは、デフォルト インスタンス、VRF(VPN ルーティングと転送)インスタンス、および仮想ルーター インスタンスでサポートされています。
インポートとエクスポートに関するポリシーは、ほかの BGP ファミリーに適用する場合と同様に、 inet flow
ファミリー またはファミリー inet-vpn flow
の NLRI に適用して、受け入れまたはアドバタイズするフロー ルートに影響を与えることができます。唯一の違いは、フロー ポリシーの設定に from ステートrib inetflow.0
メントを含める必要があることです。このステートメントにより、フロー ルートにポリシーが適用されるようになります。ただし、then reject
または then accept
ステートメントのみがあり、from
ステートメントがないポリシーは例外となります。そして、ポリシーは IP ユニキャストと IP フローを含むすべてのルートに影響します。
フロー ルート フィルターは、まずルーターに静的に設定され、整合条件のセットとそれに続くアクションが設定されます。family inet flow
そして、この BGP 対応デバイスとピアの間には、 に加えて family inet unicast
(または )family inet-vpn flow
が設定されます。
デフォルトでは、静的に設定されたフロー ルート(ファイアウォール フィルター)は、 family inet flow
または の family inet-vpn flow
NLRI をサポートする他の BGP 対応デバイスにアドバタイズされます。
受信側の BGP 対応デバイスは、ファイアウォール フィルターをフロー ルーティング テーブル にインストールする前に、検証処理を行いますinstance-name.inetflow.0
。検証手順は RFC 5575 に規定されており、Dissemination of Flow Specification Rules にも記載されています。
受信側の 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 タイプには、RFC5575 で定義された宛先プレフィックス、ソース プレフィックス、 プロトコル、ポートなどのコンポーネントが含まれます。インポート ポリシーでは、フロー仕様の NLRI に含まれるパス属性と宛先アドレスを使って、受信ルートをフィルタリングできます。インポート ポリシーは、RFC5575 の他のコンポーネントをフィルタリングすることはできません。
フロー仕様は、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 に設定されたフロー ルートは自動的に検証されないため、 階[edit protocols bgp group group-name family inet-vpn]
層レベルでは ステートno-validate
メントはサポートされません。フロールートが単一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 Release 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
や のように、 がルーティング インスタンス名instance-name
であるテーブルを指定することでshow route table instance-name.inetflow.0
、フロー ルートを表示することができます。また、show route protocol flow
コマンドを実行することで、複数のルーティング インスタンスにまたがってローカルに設定されたすべてのフロー ルートを表示することができます。
フロー ルートがローカルに設定されておらず、ルーターの BGP ピアから受信した場合、このフロー ルートは BGP によってルーティング テーブルにインストールされます。テーブルを指定してフロー ルートを表示するかshow route protocol bgp
、 を実行してすべての 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 属性では、送信元アドレス、送信先アドレス、およびポートやプロトコルなどの修飾子を一致させることができます。複数の整合条件を含む単一フロー ルートの場合、すべての整合条件はルートのプレフィックス フィールドにカプセル化されます。match destination 10.12.44.1/32
フロー ルートで コマshow route
ンドを発行すると、ルートのプレフィックス フィールドにすべての整合条件が表示されます。 は、整合条件が であることを10.12.44.1,*
意味します。出力中のプレフィックスが *,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を宛先とする、フロー仕様条件に一致するトラフィックは受信されています。
設定
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のパケットが受け付けられたことを示しています。
DDoSトラフィックをフィルターするための、BGPフロー仕様のIPへのリダイレクトアクションの設定
Junos OS Release18.4R1以降、IPへのリダイレクトアクションのインターネットドラフトdraft-ietf-idr-flowspec-redirect-ip-02.txtに記載されているBGPフロー仕様がサポートされています。IPへのリダイレクトアクションは、拡張BGPコミュニティーを使用して、DDoS攻撃緩和に対するトラフィックフィルタリングオプションをサービスプロバイダネットワークで提供しています。従来のフロー仕様のIPへのリダイレクトは、BGPネクストホップ属性を使用しています。Junos OSは、デフォルトで拡張コミュニティーを使用して、IPへのリダイレクトフロー仕様アクションをアドバタイズしています。この機能は、仮想サービスコントロールゲートウェイ(vSCG)でサービスチェイニングのサポートに必要です。IPへのリダイレクトアクションは、一致するフロー仕様トラフィックを、世界中で接続可能なアドレスに接続に迂回させることを可能にします。そのアドレスは、DDoSトラフィックをフィルターし、クリーンなトラフィックをエグレスデバイスに送信できるフィルタリングデバイスに接続することができます。
BGPフロー仕様ルートに対してのトラフィックをIPにリダイレクトする前に、以下を実行してください。
デバイスインターフェイスを設定します。
OSPF、またはその他の IGP プロトコルを設定します。
MPLS と LDP を設定します。
BGP を設定します。
BGP拡張コミュニティーを使用して、IPへのリダイレクト機能を設定します。
ネクストホップ属性を使用して、従来のフロー仕様のIPへのリダイレクトの機能を設定します。
BGP拡張コミュニティーと従来のネクストホップIPアドレスへのリダイレクトを一緒に使用して、IPアドレスへのトラフィックをリダイレクトするポリシーを設定することはできません。
IPネクストホップへのトラフィックリダイレクトのためのBGPフロースペック拡張コミュニティーにあるインターネットドラフト、draft-ietf-idr-flowspec-redirect-ip-00.txtに記載されている従来の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フロースペックDSCPアクションの利点
-
COS ポリシーがトラフィックに正しく適用される目的の COS キューにトラフィックを転送します。
-
プロビジョニングされた DSCP 値に基づいて、ローカル転送動作(トンネルの選択など)に影響を与えます。
-
ネットワーク上のトラフィックを効果的に管理するのに役立ちます。
パケットがルーターに入ると、パケットはイングレスインターフェイスで適用された機能(ファイアウォール、COSなど)を通過します。イングレス インターフェイスで BGP FlowSpec フィルターを設定すると、DSCP アクションに基づいて、ルーティング インスタンスごとのパケットにフィルターが適用されます。DSCP アクションは、BGP フロースペック フィルターを介した DSCP コードの変更と共に、パケットを分類して書き換えます。転送クラスと損失の優先度情報に基づいて、パケットは正しい転送キューに配置されます。パケットは、特定の一致条件が満たされた場合のみフロー ルートを通過します。一致条件には、送信元と宛先の IP アドレス、送信元と宛先のポート、DSCP、プロトコル番号などがあります。転送クラスと損失の優先度情報は、リバース マッピング テーブルによって更新されます。
これは、サービスプロバイダと企業の顧客ネットワーク間で確立されたBGPセッションのトポロジーを示しています。
このトポロジーでは、BGP FlowSpec 用にサービスプロバイダとエンタープライズカスタマーネットワーク間で BGP セッションが設定されます。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; } } } }
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer をご利用ください。
extended-community
フィルタリング アクションをサポートします。