IT関連資格の勉強記録と備忘録

MPLS/VPNアーテキテクチャオペレーション

ケーススタディ:基本的MPLS/VPNイントラネットサービス

  • VPN顧客とサービスプロバイダ(SuperCom)ループバックアドレススペース
企業名サイトサブネットPE-CE接続性
FastFoodsSan Jose195.12.2.0/24RIP2
New York10.2.2.0/24Static
Lyon10.2.1.0/24Static
EuroBankSan Francisco10.2.1.0/24RIP2
New York10.1.2.0/24Static
Paris196.7.25.0/24Static
SuperComParis(Loopback 0)194.22.15.1/32
San Jose(Loopback 0)194.22.15.2/32
New York(Loopback 0)194.22.15.3/32
  • MPLS/VPNバックボーン展開のステップ
  1. VRFを定義し、設定します。
  2. ルート識別子(RD)を定義し、設定します。
  3. インポート及びエクスポートポリシーを定義し、設定します。
  4. PE-CE間リンクを設定します。
  5. CEインタフェースをあらかじめ定義してあるVRFに関連付けます。
  6. マルチプロトコルBGPを設定します。

VRFの設定とルート識別子(RD)およびルートターゲット(RT)の指定

VRF名は大文字、小文字を区別する。
hostname SanJose
!
ip vrf EuroBank
rd 100:27
route-target export 100:27
route-target import 100:27
!
ip vrf FastFoods
rd 100:26
route-target export 100:26
route-target import 100:26
!

ルート識別子とVPN-IPv4アドレスプリフィックス

ルート識別子の設定

ルート識別子にAS番号:nnフォーマットを使用していても、ルート識別子自体が特定の意味を持つわけではなく、BGPとしてはビットのシーケンスとして(VPN-IPv4アドレスの一部として)のみ解釈される。
  • SuperComでのルート識別子定義
VPN顧客サービスプロバイダASN一意の値ルート識別子
FastFoods10026100:26
EuroBank10027100:27

BGP拡張コミュニティ属性

MPLS/VPNバックボーンがパーティション化されたサイトを相互接続している場合は、SOOは不要です。この場合、ルートはサイトの一部から学習され、他のPEにあるもう一方の部分に広報される。

ルートターゲットBGP拡張コミュニティ

エクストラネットを構成する場合はroute-target exportで追加されたRTがリモートサイトのVRFのroute-target importに含まれるようにRTの値を指定しなければならない。
スポークサイトは各自、単一のエクスポートRTを定義し中央サイトは複数のインポートRTを定義する等。
単純なイントラネットを構成する場合は同じVPNの各自のVRFにおいてRD=RT(Export,Import)と構成するシンプルな設定となる。

サイト オブ オリジン(Site of Origin)BGP拡張コミュニティ

SOOはマルチホームBGP接続を使用しかつASオーバーライド機能を使用していても、パーティション化されたサイトを相互接続するためにMPLS/VPNバックボーンを使用しているような場合には必要ない。

SOOはまた、PE-CE間でBGPが使用される場合にのみ使用される。

PE-CE間でBGPが使用されており、ASオーバーライド機能を使用していて
マルチホーム接続しているサイトで片方のPEでCEから受信した経路を
もう片方のPE経由で同一サイトのCEへ再び広告してしまうことを
防ぐための拡張Community属性。
optional transitiveである。
ルート オリジンともいう。

BGP経由で学習したかどうかに関わらず、特定VRFから学習したルートに適用される。
他プロトコルからBGPに再配布された経路の可能性もある。
SOO設定
hostname NewYork
!
route-map setsoo permit 10
set extcommunity soo 100:28
!
router bgp 1
no synchronization
no bgp default ipv4-unicast
neighbor 194.22.15.4 remote-as 1
neighbor 194.22.15.4 update-source loopback 0
!
address-family ipv4 vrf NYBank
neighbor 192.168.65.5 remote-as 250
neighbor 192.168.65.5 activate
nei 192.168.65.5 route-map setsoo in
no auto-summary
no synchronization
exit-address-family
!
address-family vpnv4
neighbor 194.22.15.4 activate
neighbor 194.22.15.4 sent-community extended
no auto-summary
exit-address-family
!
BGPテーブルにてコミュニティ属性を確認
# show ip bgp vpnv4 vrf NYBank 193.1.1.0
------
Extended Community:
SoO:100:28'' RT:100:27

BGP拡張コミュニティ属性フォーマット

  • 定義された16のコミュニティコードを持つ
  • 8オクテットの値としてエンコードされる
    • 最初の2オクテットがタイプコード
      • 0〜0x7FFFまではIANAが割り当て
      • 0x8000〜0xFFFFはベンダ専用
    • 残りの6オクテットが属性値
  • 値フィールドの構造及び表示方法はタイプフィールドの上位バイトによって決まる
  • RTは 0x0002 または 0x0102
  • SOOは 0x0003 または 0x0103
タイプフィールドの上位バイトが0x00の場合
管理者サブフィールド:2オクテット(AS番号)
割当番号サブフィールド:4オクテット
16ビットタイプAS番号32ビット値
←2オクテット→←2オクテット→←4オクテット→
タイプフィールドの上位バイトが0x01の場合
管理者サブフィールド:4オクテット(IPアドレス)
割当番号サブフィールド:2オクテット
16ビットタイプIPアドレス16ビット値
←2オクテット→←4オクテット→←2オクテット→

基本的なPE-CEリンク設定

PE-CEリンク設定 スタティックルーティング

(config)# ip route vrf FastFoods 10.2.1.0 255.255.255.0 serial 0
(config)# ip route vrf EuroBank 196.7.25.0 255.255.255.0 serial 1
hostname Paris
!
router bgp 1
!
address-family ipv4 vrf EuroBank
redistribute static
exit address-family
!
address-family ipv4 vrf FastFoods
redistritube static
exit address-family

PE-CEリンク設定 RIPバージョン2

hostname SanJose
!
interface serial 0
description ** interface to EuroBank San Francisco**
ip vrf forwarding EuroBank
ip address 10.20.10.5 255.255.255.252
!
interface serial 1
description ** interface to FastFoods San Jose**
ip vrf forwarding FastFoods
ip address 195.12.2.5 255.255.255.252
!
router rip
version 2
!
address-family ipv4 vrf EuroBank
version 2
redistribut bgp 1 metric 1
network 10.0.0.0
no auto-summary
exit-address-family
!
address-family ipv4 vrf FastFoods
version 2
redistribute bgp 1 metric 1
network 195.120.2.0
no auto-summary
exit-address-family
!
redistribut bgp 1 metric 1
このコマンドはMP-iBGPセッションから学習したVPNルートがRIPプロセスによりCEルータに広告されるために必要。
これらのルートはiBGPで、標準BGP-4が実行されている場合は通常再配布されませんが、インタフェースがVRFに対応している場合は正常に再配布される。

RIPルートをMP-iBGPを通じて他のPEに広告するには
BGPプロセス内の特定のVRF用のアドレスファミリを前のスタティックルートの
ように設定しRIPルートをBGPに再配布する必要がある
hostname SanJose
!
router bgp 1
!
address-family ipv4 vrf EuroBank
redistribute rip
exit address-family
!
address-family ipv4 vrf FastFoods
redistritube rip
exit address-family

RIPをPE-CE設定として使用する場合は(通常の再配布の場合と同様)BGPルートをRIPに再配布する場合、BGPメトリックをデフォルトメトリックとして設定する必要があったが、それは操作することができない。
ただし、最近のIOSではMPLS/VPNバックボーンに redistribute bgp metric transparent というコマンドでRIPメトリックを透過的に送信する事が可能。
このコマンドにより元来のメトリックはBGP MED値としてMPLS/VPNバックボーンに運ばれ、RIPが再配布されたルートのルーティングテーブルメトリックをRIPメトリックとして使用することになります。
RIP〜MP-iBGP〜RIPの構成などでRIPメトリックをバックボーンを通じて透過できる

インタフェースとVRFの関連付け

hostname SanJose
!
interface serial 0
description ** interface to EuroBank San Francisco**
ip vrf forwarding EuroBank
ip address 10.20.10.5 255.255.255.252
!
interface serial 1
description ** interface to FastFoods San Jose**
ip vrf forwarding FastFoods
ip address 195.12.2.5 255.255.255.252

インタフェースが特定のVRFに関連づけられると、IPアドレスはグローバルルーティングテーブルとインタフェースから削除される。
これは、アドレスが複数のルーティングテーブルにまたがる場合は、有効ではないと想定されるためであり、インタフェースにVRFのメンバーシップが与えられてから設定し直す必要があります。
インタフェースのIPアドレスはVRFへの割り当て後に設定した方がよい。

割り当てるインタフェースはCEFを実行させる必要がある。
これはラベルの挿入がCEFスイッチにより行われるため、正常にMPLS/VPNデータを転送するには、CEFスイッチングメカニズムが必要不可欠であるためである。

マルチプロトコルBGPの用途と採用

BGP OPENメッセージにはオプションのパラメータが含めることができ、そのうちの1つが Capabilities パラメータであり、ピアが理解し実行できるオプション機能を示している。

2つの optional non-transitive 属性が追加されており
マルチプロトコル到達可能NLRI=MP_REACH_NLRIが新しいマルチプロトコルルートを広報する。
もう一方の属性はマルチプロトコル到達不能NLRI=MP_UNREACH_NLRIはMP_REACH_NLRIが広報したルートを取り消す。

MP_REACH_NLRI属性には次の3つで構成される組み合わせが1つまたは複数含まれる。
  • アドレスファミリ情報
    • アドレスファミリ情報ではアップデートされるネットワークレイヤプロトコルを識別するためのもの。MPLS/VPNでは、AFI=1およびサブAFI=128に設定される。
  • ネクストホップ情報
    • 宛先へのパス上にあるネクストホップアドレスの情報です。MPLS/VPNではそのルートを広報するPEルータとなる。
      ネクストホップアドレスはNLRIと同じアドレスファミリでなければならないため、この要件を満たすためネクストホップのルート識別子(RD)フィールドはすべてゼロに設定される。
      MP-iBGPでピア接続しているので通常、ネクストホップの下位4バイトはピアのループバックIFアドレス(Router ID)となる。
  • NLRI(Network Layer Reachability Information)
    • NLRIは次のMPLSフォーマットでエンコードされる
      • 長さ:ラベル+プリフィックス(RDを含む)の全長
      • ラベル:24ビットBGPアップデートでは1つしか1つしかラベルを持ちませんが、複数のスタックされたラベルを運ぶこともできる。
        このフィールドには次のMPLSシムヘッダ部分が含まれる。
ラベル値:20ビット
エクスペリメンタルビット:3ビット
ボトムオブスタックビット:1ビット
      • プリフィックス:ルート識別子(64ビット)+IPv4プリフィックス(32ビット)

特定のVPNルートに割り当てられているラベルを識別するコマンド
  • show ip bgp vpnv4 all tags
NetworkNext HopIn tag/Out tag
Route Distinguisher:1:27(EuroBank)
0.0.0.010.2.1.2550/notag
2.2.2.2/320.0.0.046/aggregate(EuroBank)
8.8.8.8/3210.2.1.2551/notag
9.90.90.9/3210.2.1.2552/notag

PEルータが隣接ルータとVPN-IPv4アドレス情報を交換するかを判定するコマンド
  • show ip bgp neighbor ネイバーアドレス
----------------
Neighbor capabilities:
Address family IPv4 Unicast: advertised and received
----------------
For address family: VPNv4 Unicast
Prefix advertised 174, suppressed 0, withdrawn 25

マルチプロトコルBGPの設定

BGPセッションがCiscoルータで設定されたときのデフォルト動作はIPv4ユニキャストプリフィックスを運ぶセッションがアクティブになるようになっている。
BGPはMPLS/VPNではもっぱらVPN-IPv4のみを運ぶために使用されるためBGPセッションがデフォルトで生成されないようにする。
SanJose(config)# router bgp 1
SanJose(config-router)# no bgp default ipv4-unicast
標準IPv4 BGPセッションのアクティブ化
SanJose PEルータとNewYork PEルータ間にIPv4 BGPを設定する。
SanJose(config)# router bgp 1
SanJose(config-router)# neighbor 194.22.15.3 remote-as 1
SanJose(config-router)# neighbor 194.22.15.3 update-source loopbaack 0
SanJose(config-router)# neighbor 194.22.15.3 activate
VPN-IPv4ルート交換のためのアドレスファミリ設定
SanJose(config)# router bgp 1
SanJose(config-router)# address-family ?
ipv4 Address family
vpnv4 Address family

SanJose(config-router)# address-family vpnv4
SanJose(config-router)# neighbor 194.22.15.3 activate
この例ではVPNv4アドレスファミリの設定に1行のコマンドしか使用していません。
これは、BGP隣接ルータがグローバルBGPプロセスで設定されるため、ここではVPN-IPv4プリフィックスのみを運ぶようにセッションをアクティブかする必要があるためです。
vpnv4アドレスファミリ設定の中で更なるコマンドを追加する必要がある。
neighbnor x.x.x.x send-community extended です。
このコマンドはデフォルトで追加される拡張コミュニティ属性を広報するよう指示するために必要となります。
  • 拡張コミュニティ属性の広報
SanJose(config-router)# neighbor 194.22.15.3 send-community ?
both Send Standarrd and Extended Community attributes
extended Send Extended Community attribute
standard Send Standard Community attribute
デフォルトでは拡張コミュニティ属性のみ広報するようになっているため、ネットワークデザイン要件によって標準コミュニティ属性をVPNルートに付加する必要がある場合は neighbor x.x.x.x send-community both で指定する必要がある。

VPN-IPv4プリフィックスに関する拡張BGP決定プロセス

ルートターゲットBGP拡張コミュニティ属性およびルート識別子が、VPN-IPv4ルート選択の制御を行う。このプロセスはルートが他のPEルータからMP-iBGPセッションを通じて学習された後、かつ各VRFにインポートされる前に実行される。

関連するルートをすべてグループ化して比較できるようにする。
  • VRFに設定されたインポートステートメントと同じルートターゲットを持つ全てのルートを受け取る。
  • 処理対象のVRFに割り当てられているものと同じルート識別子を持つルートをすべて考慮対象とする。
  • 処理対象のVRFに設定されたルート識別子に等しいルート識別子を使って新しいBGPパスを作成する。

これでルートは全て比較可能になったのでBGP選択プロセスが実行される。
このプロセスは、PEルータのVPNルートを維持するために必要となるメモリ量に影響を与える。各PEルータが異なるルート識別子を特定のVPNのVRFごとに使用した場合、すべてのVPNルートを保存するのに要するメモリ量は増加する。
異なるルート識別子により増加したPEメモリ所要量
SanJose# show ip bgp vpnv4 all
-----------
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:27(default for vrf EuroBank)
*>i197.1.1.1/32 194.22.15.1 ---省略---
Route Distinguisher: 1:28
*>i197.1.1.1/32 194.22.15.1 ---省略---
SanJose# show ip bgp vpnv4 all 197.1.1.1

Paths:(1 available, best #1, table EuroBank)
Local, imported path from 1:28:197.1.1.1/32

BGP routing table entry for 1:28:197.1.1.1/32, version 30
Paths:(1 available, best #1, table NULL)

VPN経路の送信元RD(1:28)と経路を受信するVRFのRD(1:27)が異なると
ローカルでのRDでのBGPテーブルに載る情報とは別に
送信元RDでのBGPテーブルを作成し同一の情報の載せることになる。

ORF(Outbound Route Filtering)とルートリフレッシュ機能

MP-iBGPで受信したBGPルートをそのPEの全VRFで使用されることが無くても、BGPテーブルには保持されることになる。受信するPEのメモリの無駄でもあり送信するPEとの間でのリソースの無駄使いにもなる。

PEルータの自動ルートフィルタリング

ルートリフレクタでのパーティショニングでも可能だが、ネットワークのサイズや複雑さにより適さない場合もある。その場合は自動ルートフィルタリングが推奨される。
すべてのPEルータにデフォルトで備わっており、追加設定は不要。
そのPEに設定されたVRFに一致しないRTを持つVPN-IPv4ルートは自動的にフィルタリングされ破棄される。
これによりPEがメモリに保存しなければならない情報量は削減される。
自動ルートフィルタリング機能デバッグ
NewYork# debug ip bgp update
-----------------
BGP(1): 10.4.1.21 rcvd 1:27:196.7.25.0/24 -- DENIED due to: extended community not supported;
この例ではRT 1:27が付与されたVPNルートが受信したPEのどのVRFインポート定義にもマッチしなかったため、アップデートを拒否したメッセージ出力です。

ただし、PEルータがVPN-IPv4プリフィックスのルートリフレクタになっている場合は使用できない。なぜならば自身以外のPEが必要とするVPNルートをそのルートリフレクタが必要としないRTであるという理由により失わせることになるため。

ある時期にこれまで必要としていなかったRTを必要とするVRFをPEに追加するケースが発生したとする。その場合、これまで破棄していたVPNルートが必要になるため自動ルートフィルタリング機能の改善が行われた。
それがルートリフレッシュとORF機能である。

PEルータ間のルーティング情報のリフレッシュ

あるVPFにおけるインポートRTのポリシーが変更された場合や新たなVRFが作成されこれまで保持していなかったRTのVPNルートが必要になった場合、設定変更の直後にMP-iBGP隣接ルータにルーティングアップデートを再送付するよう要求する
いくつかのインポートポリシー変更が行われることを想定してルーティングアップデート要求はある程度の保留時間ののち実行される。

ルートリフレッシュ機能のサポート有無はOPENメッセージで知らせる。
ルートリフレッシュ機能のデバッグ
NewYork# debug ip bgp
NewYork# conf t
NewYork(config)# ip vrf EuroBank
NewYork(config-vrf)# rd 1:27
NewYork(config-vrf)# route-target both 100:27

BGP: 194.22.15.3 sending REFRESH_REQ for afi/safi: 1/128

ルートリフレッシュ機能はCiscoの「ソフトリコンフィギュレーション」機能と似ているが、不要なルーティング情報をPEルータに残さない点が異なる。
自動ルートフィルタリングと同様、ルートリフレッシュ機能はデフォルトで設定されており、追加設定は不要。
ルートリフレッシュ機能 -- PEの識別
NewYork# show ip bgp neighbor 194.22.150.1
-------------------
Neighbor capabilities:
Route refresh: advertised and received

clear ip bgpコマンドでマニュアルでのリフレッシュが可能。
隣接ルータごと、アドレスファミリごとにBGPセッションをクリアし、関連する隣接ルータにルートリフレッシュメッセージとリフレッシュされたMP-iBGPまたはBGP情報を受け取ります。
  • 特定VRFでのクリア
SanJose# clear ip bgp * vrf EuroBank in
SanFrancisco EuroBank CEルータにのみルートリフレッシュメッセージが送信される。
  • 特定アドレスファミリでのクリア
SanJose# clear ip bgp * vpnv4 unicast in
すべてのPEルータにルートリフレッシュメッセージが送信される
  • 特定隣接ルータでのクリア
SanJose# clear ip bgp 2.2.2.2 vpnv4 unicast in
2.2.2.2のPEルータにルートリフレッシュメッセージが送信される

PEルータのORF

自動ルートフィルタリングやルートリフレッシュでは受信側PEルータでのルーティング情報の量を削減できるが、送信側PEルータは削除されるルーティング情報を依然として送信することになってしまう。
送信側PEでのルートフィルタリングを行う機能としてORF(アウトバウンドルートフィルタリング)が新しいBGP機能としてサポートされた。

ORF機能のサポート有無はOPENメッセージで知らせる。
ORFメッセージフォーマット
BGPスピーカが下流隣接ルータに使用するORF機能を広報する。
AFI
(16ビット)
RES
(8ビット)
SAFI
(8ビット)
リフレッシュ
する時間
(8ビット)
ORF
タイプ(8ビット)
ORFの長さ
(8ビット)
第1 ORFエントリ
(変数)
第2 ORFエントリ
(変数)
第N ORFエントリ
(変数)
第1〜第N:ORFタイプによってグループ化された複数のORFエントリ

ORFタイプの定義
ORFタイプORFタイプ値説明
NLRI1NLRI ORFタイプはアドレスプリフィックスに基づくルートフィルタリングを提供する。
Communities2Communities ORFタイプはコミュニティに基づくルートフィルタリングを提供する。
Extended Communities3Extended Communities ORFタイプは拡張されたコミュニティに基づくルートフィルタリングを提供する。
Prefix-list129Prefix-list ORFタイプはプリフィックスリストルートフィルタリングを提供する。

Prefix-list ORF機能がBGPスピーカにより広報されると、隣接ルータはインバウンドプレフィックスリストフィルタを変更する。
このことはローカルに設定されたアウトバウンドフィルタ(存在する場合)に加えて、受信したプリフィックスリストフィルタを適用させて互いにアウトバウンドルーティングアップデートをフィルタする場合に役に立つ。
これにより不要なルーティングアップデート処理を行わずに利ソースを削減することが可能。

拡張コミュニティORFタイプ機能もMPLS/VPNアーキテクチャでは非常に役に立つ。
これはインポートRTに定義されていないルート情報を送出時にフィルタできるため、自動ルートフィルタリングのように受信側での廃棄ではなく、受信側PEルータに広報される前に送信側でフィルタすることができるという利点があります。

ルートリフレクタをMPLS/VPNトポロジーに採用している場合
ルートリフレクタにはそれぞれ、あらかじめルートリフレクタがPEルータ間でリフレクトすべきルートに対応するルートターゲットリストを設定することができる。
ルートリフレクタはすべてのクライアント(ここではPEルータ)を1つのBGPピアグループとして扱い、そのルートリフレクタとセッションを持つ他の全てのルートリフレクタをそのピアグループのメンバではない個別のピアとして扱う。

特定ピアグループにリフレクトされるべきルートターゲット群はすでにルートリフレクタに設定されているので、全ての隣接ルータで設定されたルートターゲットのリストを含むアウトバウンドルートフィルタを設定することができる。
この機能は rr-group コマンドで実装できる。

MPLS/VPNデータプレーンパケット転送

show ip bgp vpnv4 "VRF名" tagsコマンドで発信元PEによってルータに割り当てられたVPNタグを確認することができる。
この例では tag 38 がサブネット 196.7.25.0/24 に割り当てられたことがコマンドのOut tagフィールドで確認できる。
VPNルート(インナーラベル)の確認
SanJose# show ip bgp vpnv4 vrf EuroBank tags

Network Next Hop In tag/Out tag
Route Distinguisher: 1:27(EuroBank)
10.20.10.0/24 0.0.0.0 38/aggregate(EuroBank)
196.7.25.0 194.22.15.1 notag/38

194.22.15.1はネットワーク196.7.25.0/24のBGPネクストホップアドレスであり、Paris PEルータのループバックアドレスです。
このネクストホップアドレスはSuper Com IGP経由で学習されたものであり、IGPラベルを確認するには show mpls forwarding-table コマンドを使用する。
VPNルートのBGPネクストホップアドレス(アウターラベル)の確認
SanJose# show mpls forwarding-table
Local Outgoing Prefix --省略-- tag tag or VC or Tunnel Id 33 36 194.22.15.1/32
Washington# show mpls forwarding-table
Local Outgoing Prefix --省略-- tag tag or VC or Tunnel Id 33 Pop tag 194.22.15.1/32
Paris# show mpls forwarding-table
Local Outgoing Prefix --省略-- tag tag or VC or Tunnel Id 38 Aggregate 196.7.25.0/24[V]

Paris PEルータではVPNルートであることの [V] 表記に注目すること。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます