目次
本コラムでは、異なるOS間が接続される相互接続環境を対象に、具体的な試験結果を交えてネットワークの技術情報を紹介したいと思います。
今回は『PBB-EVPN』を対象とし、前編となる本ページには、下記の情報が含まれています。
●PBB-EVPNの設定例:IOS-XRとJUNOSの相互接続 -3サイト間のレイヤ2接続:シングルホームサイト*3
| 連載インデックス |
|---|
ターゲット
今回の相互接続例では、昨今ホットなEVPNを利用した技術の一つである、PBB-EVPNをターゲットに据えました。EVPNの概要に関しては次のページも併せてご参照頂ければと思います。(⇒EVPN で変わる・変えられるデータセンターネットワーク)
過去に実施したEVPN-VXLANの試験では、製品によって異なるService Interfaceを採用している結果が得られていました(□)。対してPBB-EVPNの場合、ServiceInterfaceに応じたEthernetTagIDのエンコーディングに、選択肢がありません。また、BUMトラフィックの配送に対するトランスポートへの要求に関しても、VPLS実装の経緯からIngressReplicationは共通して実装される方式になると考えられます。EVPN-MPLSを比較すれば定められた仕様として提供可能な動作は絞られることも、見方を変えれば今回の焦点である相互接続のハードルを下げると捉えることもできます。
それでは、繋がりそうな雰囲気を力の限り醸し出したところで、試験の環境と結果を紹介していきたいと思います。
本コラムで紹介している情報は当該環境に対し正常な稼働を保証するものではなく、参考情報としてお役立ていただければと思います。また、実装はHardware/Softwareの進化に伴い移り変わっていく可能性があり、特にOSのバージョンにはご留意頂ければと思います。
シングルホーム構成:試験の環境
最初に、図1で示されるトポロジで基本的な接続性において課題が無いか確認します。本試験では、以下の製品を用いて環境を構築しました。
<シングルホーム構成>
- Cisco Systems ASR 9000 Series / IOS-XR 6.1.2
- Cisco Systems IOS-XRv 9000 / IOS-XR 6.1.2
- Juniper Network MX Series / JUNOS 16.1R3.10
- Juniper Network vMX / JUNOS 16.1R3.10
なおMXのPBB-EVPNはJUNOS 16.1以降で設定可能となりますが、この時点ではリリースノートで明確な記載を発見することができませんでした。正式な対応状況に関しても併せてご注意頂ければと思います。
最終的に投入された設定情報の抜粋は表1の様になります。
表1:設定の抜粋(VPN関連)
| XRv9000 |
|---|
router bgp 65001
bgp router-id 10.0.0.100
address-family l2vpn evpn
retain route-target all
neighbor 10.0.0.10
remote-as 65001
update-source Loopback0
address-family l2vpn evpn
route-reflector-client
neighbor 10.0.0.20
remote-as 65001
update-source Loopback0
address-family l2vpn evpn
route-reflector-client
neighbor 10.0.0.30
remote-as 65001
update-source Loopback0
address-family l2vpn evpn
route-reflector-client
|
| ASR9000 |
interface Bundle-Ether1.2 l2transport
encapsulation dot1q 2
interface Bundle-Ether1.3 l2transport
encapsulation dot1q 3
router bgp 65001
bgp router-id 10.0.0.10
address-family l2vpn evpn
neighbor 10.0.0.100
remote-as 65001
update-source Loopback0
address-family l2vpn evpn
evpn
interface Bundle-Ether1
ethernet-segment
force single-homed
l2vpn
pbb
backbone-source-mac 0000.0000.0010
bridge group BRIDGE-GROUP
bridge-domain BRIDGE-DOMAIN-B
pbb core
evi 1
bridge-domain BRIDGE-DOMAIN-I-05002
interface Bundle-Ether1.2
pbb edge i-sid 5002 core-bridge BRIDGE-DOMAIN-B
bridge-domain BRIDGE-DOMAIN-I-05003
interface Bundle-Ether1.3
pbb edge i-sid 5003 core-bridge BRIDGE-DOMAIN-B
|
| MX |
set chassis aggregated-devices ethernet device-count 2
set chassis network-services enhanced-ip
set interfaces ae0 flexible-vlan-tagging
set interfaces ae0 encapsulation flexible-ethernet-services
set interfaces ae0 unit 2 encapsulation vlan-bridge
set interfaces ae0 unit 2 vlan-id 2
set interfaces ae0 unit 3 encapsulation vlan-bridge
set interfaces ae0 unit 3 vlan-id 3
set interfaces cbp0 unit 1 family bridge interface-mode trunk
set interfaces cbp0 unit 1 family bridge bridge-domain-type bvlan
set interfaces cbp0 unit 1 family bridge isid-list all
set interfaces pip0 unit 1 family bridge interface-mode trunk
set interfaces pip0 unit 1 family bridge bridge-domain-type svlan
set interfaces pip0 unit 1 family bridge isid-list all-service-groups
set routing-options autonomous-system 65001
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 10.0.0.20
set protocols bgp group IBGP family evpn signaling
set protocols bgp group IBGP neighbor 10.0.0.100
set routing-instances B-COMPONENT instance-type virtual-switch
set routing-instances B-COMPONENT interface cbp0.1
set routing-instances B-COMPONENT route-distinguisher 10.0.0.20:1
set routing-instances B-COMPONENT vrf-target target:65001:1
set routing-instances B-COMPONENT protocols evpn control-word
set routing-instances B-COMPONENT protocols evpn pbb-evpn-core
set routing-instances B-COMPONENT protocols evpn extended-isid-list 5002
set routing-instances B-COMPONENT protocols evpn extended-isid-list 5003
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B vlan-id 1
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B isid-list 5002
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B isid-list 5003
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B vlan-id-scope-local
set routing-instances I-COMPONENT instance-type virtual-switch
set routing-instances I-COMPONENT interface pip0.1
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05002 vlan-id 2
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05002 interface ae0.2
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05003 vlan-id 3
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05003 interface ae0.3
set routing-instances I-COMPONENT pbb-options peer-instance B-COMPONENT
set routing-instances I-COMPONENT service-groups SERVICE-GROUP service-type elan
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options isid 5002 vlan-id-list 2
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options isid 5003 vlan-id-list 3
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options source-bmac 00:00:00:00:00:20
|
| vMX |
set chassis aggregated-devices ethernet device-count 2
set chassis network-services enhanced-ip
set interfaces ae0 flexible-vlan-tagging
set interfaces ae0 encapsulation flexible-ethernet-services
set interfaces ae0 unit 2 encapsulation vlan-bridge
set interfaces ae0 unit 2 vlan-id 2
set interfaces ae0 unit 3 encapsulation vlan-bridge
set interfaces ae0 unit 3 vlan-id 3
set interfaces cbp0 unit 1 family bridge interface-mode trunk
set interfaces cbp0 unit 1 family bridge bridge-domain-type bvlan
set interfaces cbp0 unit 1 family bridge isid-list all
set interfaces pip0 unit 1 family bridge interface-mode trunk
set interfaces pip0 unit 1 family bridge bridge-domain-type svlan
set interfaces pip0 unit 1 family bridge isid-list all-service-groups
set routing-options autonomous-system 65001
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 10.0.0.30
set protocols bgp group IBGP family evpn signaling
set protocols bgp group IBGP neighbor 10.0.0.100
set routing-instances B-COMPONENT instance-type virtual-switch
set routing-instances B-COMPONENT interface cbp0.1
set routing-instances B-COMPONENT route-distinguisher 10.0.0.30:1
set routing-instances B-COMPONENT vrf-target target:65001:1
set routing-instances B-COMPONENT protocols evpn control-word
set routing-instances B-COMPONENT protocols evpn pbb-evpn-core
set routing-instances B-COMPONENT protocols evpn extended-isid-list 5002
set routing-instances B-COMPONENT protocols evpn extended-isid-list 5004
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B vlan-id 1
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B isid-list 5002
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B isid-list 5004
set routing-instances B-COMPONENT bridge-domains BRIDGE-DOMAIN-B vlan-id-scope-local
set routing-instances I-COMPONENT instance-type virtual-switch
set routing-instances I-COMPONENT interface pip0.1
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05002 vlan-id 2
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05002 interface ae0.2
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05004 vlan-id 3
set routing-instances I-COMPONENT bridge-domains BRIDGE-DOMAIN-I-05004 interface ae0.3
set routing-instances I-COMPONENT pbb-options peer-instance B-COMPONENT
set routing-instances I-COMPONENT service-groups SERVICE-GROUP service-type elan
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options isid 5002 vlan-id-list 2
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options isid 5004 vlan-id-list 3
set routing-instances I-COMPONENT service-groups SERVICE-GROUP pbb-service-options source-bmac 00:00:00:00:00:30
|
シングルホーム構成:試験の結果
PBB-EVPNのエッジ機器(以下、PE)が『Broadcast通信』『MACエントリ未登録でFloodingされる初回のUnicast通信』『MACエントリが登録された後のUnicast通信』として転送する様に、テスターからIPv4 UnicastおよびARPのトラフィックを印加した結果、全ての通信が宛先で受信されることを確認しました。今回の環境ではRRを介した「ピアの自動発見」およびVPNを挟んでの「3つのサイト間接続」という要素を含んでおり、この点も実現可能であることが確認できたと言えます。以下より、動作の詳細や併せて確認された事項を掘り下げていきます。
図2・図3は、同一サブネット内通信において複数のフロー数を作成し、VPN上でUnicastとして転送されているトラフィックをキャプチャした結果となります。外側ヘッダのMACアドレスに着目すると、複数のフロー間で異なる値が利用されており、同一PE間における同一サブネット内の通信がWAN-1およびWAN-2の両セグメントを経由して交換されている様子が窺えます。これはASR9000がPEとなるサイト1から転送されるトラフィックおよびMXがPEとなるサイト2から転送されるトラフィックの双方で観測されました。これより、PBB-EVPNでは通信をマルチパスで伝送できることが確認できました。なおTransit LSRでフローベースのロードバランシングを行う際には別途対応のラベルが必要となりますが、今回の焦点にも挙がったIngress PEのバランシングにおいては、転送対象のフロー情報に基づいて伝送するLSPを選択する動作が可能であればマルチパスを実現することができます。
また、Unicastトラフィックは各サイト間で直接通信可能な状態であると同時に、BUMトラフィックとなるARPは他サイト宛に一回ずつ複製された分のみVPN上で交換されている様子が確認できました。上記図2・図3で示された、Unicastトラフィックのキャプチャ結果を再度参照すると、3サイト間の各Unicast通信全てがトランスポートラベルの付与されないサイズで共通しており、常に1ホップで直接通信していることが読み取れます。以下の図4はARPをキャプチャした結果で、サイト1およびサイト2から発信されたARPがそれぞれリモートサイトの数である2個分しか現れていないことが窺えます。これらよりPBB-EVPNにおけるBUMトラフィックの転送は、『VPNから受信したBUMトラフィックをVPN側に戻さない』動作となる、VPLSと同様のsplit-horizon forwardingルールが適用されている動作となりました。
これまでの結果は全て各サイトで共通してI-SID 5002にマップされるVLAN 2のサブネット内通信に関するものでした。次に示す図5はVLAN 3に関するARPをキャプチャした結果となります。
サイト1・サイト2から発信されたARPはサイト3宛に転送されず、またサイト3から発信されたARPはVPN側に転送されていないことが窺えます。これは試験環境のサイト3では、VLAN 3がI-SID 5004にマップされていることに因るものです。PBB-EVPNにおいてI-SIDの値はBUMトラフィックの到達性を制御するRoute Type 3のEVPN Routeにエンコーディングされ、PE間で共有されます。結果、サイト内のVLAN IDに関わらず、I-SIDの値が異なるPEは他のPEからBUMの配送先として認識されません。同様に、サイト内から受信したBUMトラフィックを配送すべきPEが存在しなければVPN側への転送処理は行われません。なお、I-SIDが共通であれば、サイト間でVLAN IDが異なる環境においてもサブネット内通信が疎通することを別の試験にて確認しています。セグメント単位で接続サイトを選択してPseudowireが確立されたVPLSの様に、PBB-EVPNではI-SIDに基づいたbroadcast domainの形成が自動で行われることを確認できました。
シングルホーム構成:補足
EVPN Route Type 2(以下、RT-2・Unicastトラフィックの到達性に関係)およびEVPN Route Type 3(以下、RT-3・BUMトラフィックの到達性に関係)の経路にエンコーディングされるRoute Target(以下、RT)の値がインポートポリシーに合致しない場合、経路がインポートされず転送可能な状態となりません。この点に関して、IOS-XRのデフォルトでは、RTはASNとEVIに対するIDの値から自動で算出されました。相互接続環境でRTの自動生成機能を利用する場合は、値は何になるか・その値は接続する両端で一致するかという点を改めて意識することになります。
なお、後編で紹介予定のマルチホーム構成で生成されるEVPN Route Type 4(以下、RT-4)では、従来のRoute Targetは付与されず、EVPNで新設されたES-import Route Targetが用いられます(□)。EVPNではNLRI以外にも拡張が及んでいるため、エッジ機器間の経路交換にRouteReflectorやTransitASが介在する環境では、中継のBGP機器が意図通りに経路を伝播可能かという点にも注意が必要となるかもしれません。
また、環境準備の過程で、B-tagやC-tagの設定不一致によって疎通しない現象を確認しました。ルータ製品のレイヤ2 VPNではEthernet tagの付け外しが柔軟に行える反面、整合性の取れない設定も可能になってしまう側面があります。今回の様な環境で、経路の状態は正常であるにも関わらず転送データの破棄が継続する様な場面に遭遇した場合は、タグ周辺の設定を見直すと解決に繋がる可能性があります。
(後編に続く)
※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。