この記事は富士通クラウドテクノロジーズ Advent Calendar 2020 23日目です。
はじめに
ネットワークサービス部でネットワークの設計/構築/運用を担当しているid:foobaronです。
本記事では、EVPN L2VPN All-Active MultihomingにおけるRoute Typeと経路迂回についてまとめています。
EVPNの概要については、次の記事「EVPN-VXLANのAll-Active Multihomingによる拠点間の接続を試しました」もご参照ください。
AFI/SAFI
EVPNでは、仮想ネットワークの到達性情報を交換するための制御プロトコルとしてMP-BGP (Multiprotocol BGP) を使用します。
IPv4以外のaddress familyの到達性情報の交換のために、MP-BGPではMP_REACH_NLRI
とMP_UNREACH_NLRI
の2つのpath attributeを定義しています。
BGP UPDATEメッセージにより、到達性情報 (NLRI: Network Layer Reachability Information) をこれら2つのpath attributeで広報します。
+---------------------------------------------------------+ | Address Family Identifier (2 octets) | +---------------------------------------------------------+ | Subsequent Address Family Identifier (1 octet) | +---------------------------------------------------------+ | Length of Next Hop Network Address (1 octet) | +---------------------------------------------------------+ | Network Address of Next Hop (variable) | +---------------------------------------------------------+ | Reserved (1 octet) | +---------------------------------------------------------+ | Network Layer Reachability Information (variable) | +---------------------------------------------------------+
MP-BGPでは、これら2つのpath attributeでサポートするネットワークプロトコルの識別子としてAFI (Address Family Identifier) を使用します。 例えばIPv4はAFI = 1、IPv6はAFI = 2と定義されています。 同一のAFIの中で更に区別するための識別子として、SAFI (Subsequent Address Family Identifier) があります。 例えば、unicastとmulticastの到達性情報の区別にSAFIを使用します。
AFI | SAFI | 内容 |
---|---|---|
1 | 1 | IPv4 unicast |
1 | 2 | IPv4 multicast |
2 | 1 | IPv6 unicast |
2 | 2 | IPv6 multicast |
25 | 70 | EVPN L2VPN |
MP-BGPでは、EVPNのAFI/SAFIの組み合わせとしてAFI = 25 (L2VPN) 、SAFI = 70 (BGP EVPNs) を使用します。
EVPN Route Type
ほとんどのAFI/SAFIの組み合わせでは、NLRIの構造と内容はそのAFI/SAFIの組み合わせ全体で同じです。 しかしEVPNでは、交換される情報が「特定のMACアドレスへの到達性」や「Multihomingのために利用するESI (Ethernet Segment Identifier) 」等と多岐にわたり、その構造と内容もバラバラです。 そこでEVPN NLRIでは、情報の細分化とエンコードのためにRoute Typeを使用します。
EVPN L2VPNのRoute Typeは次のとおりです。
Route Type | 内容 | 主な用途 |
---|---|---|
1 | Ethernet Auto-Discovery | EVPN Multihomingの対の検出 |
2 | MAC/IP Advertisement | 仮想ネットワーク内の特定のMACアドレスへの到達性 |
3 | Inclusive Multicast | BUMトラフィックを転送するトンネルエンドポイントへの到達性 |
4 | Ethernet Segment | Multihomingの対のうちBUMトラフィックを転送するノードの選出 |
各Route Typeと、それぞれのRoute Typeの経路広報を撤回 (MP_UNREACH_NLRI
を広報) したときの挙動を見ていきます。
Type-1: Ethernet AD Route
Type-1は、EVPNのMultihomingに利用します。 図のように同一ESI (Ethernet Segment Identifier) を設定したProvider Edge (PE) Router (= EVI: EVPN Instance) の対は、CE deviceに対して論理的に1台の機器として動作します。
Type-1 Routeの広報を停止すると、対向および対のPE RouterからはMultihomedノードとして認識されなくなります。 そのため、known unicastトラフィックが対向のPE RouterからそのPE Routerへ流入しなくなります。
Type-2: MAC Advertisement
Type-2は、仮想ネットワーク内の特定のMACアドレスへの到達性 (およびそのIPアドレスの情報) の広報に利用します。 あるESIに属するMACアドレスへの到達性を示すもので、Type-1 Routeとともに機能します。
仮想ネットワークに属するホストのMACアドレスへの到達性を、各トンネルエンドポイントがMP-BGPで学習することで、unknown unicastのfloodingを削減します。
Type-2 Routeを撤回すると、仮想ネットワークに属するホストへの通信において、対向のPE RouterからそのPE Routerへトラフィックの流入がなくなります。
Type-3: Inclusive Multicast
Type-3は、BUMトラフィックを転送するトンネルエンドポイントのIPアドレスの広報に利用します。
Type-3 Routeを撤回したPE Routerには、BUMトラフィックが転送されなくなります。 BUMトラフィックの観点では他のPE Routerから認識されなくなるためです。
Type-4: Ethernet Segment
Type-4は同一ESIに所属しMultihomingの対となっているPE Routerのうち、BUMトラフィックを転送するDF (Designated Forwarder) の選出に利用します。
次の図のように、EVPN MultihomingではDFのみがCEにBUMフレームを転送することで、CEがBUMフレームを重複して受信することを防止します。
Type-4 Routeを撤回すると、同一ESIでMultihomingを組んでいるPE Routerからは、DF選出に使用されなくなります。 Type-4 Routeを撤回したPE Router自身が(1)DFの場合と(2)BDFの場合で、DF再選出時の挙動が異なります。
(1)の場合、BDFからはDFが認識できなくなり、BDFがDFに昇格します。しかし、Type-4 Routeを撤回したPE Router自身はDFのままです。 両者がDFになるので、CEにはBUMフレームが重複して転送されてしまいます。
(2)の場合、DFがBDFを認識できなくなってもDFのままです。また、Type-4 Routeを撤回したBDFもBDFのままとなります。
(1)の事象を防ぐためには、Type-3 Routeも同時に撤回する必要があります。
EVPN Multihomingにおける経路迂回 (drain traffic)
Route Typeごとに広報を撤回したときの挙動に基づき、EVPN L2VPN MultihomingにおけるPE Routerの経路迂回を考えます。
経路迂回は、ネットワーク機器の計画メンテナンス (ファームウェア更新等) で必要になります。
その機器にトラフィックが流れないようにすることで、通信断なしで機器をネットワークから外すことができます。
例えばeBGPではas-path prepend
を使うことで経路迂回を実現します。
L2プロトコルでは経路迂回はできないため、リンクをダウン (= インタフェースをダウン) させることでトラフィック流入を停止させる必要があります。 そのため、リンクをシャットダウンした際に通信断が発生します。
EVPN L2VPN Multihomingの場合、PE Routerへ流れてくるトラフィックは、次の図のように2種類あります。 (1) remote PE RouterからのL2 over L3トラフィックと(2)local CE deviceからのL2トラフィックです。
(2)は単なるL2のため経路迂回はできず、リンクダウンによる切り離しが必要となってしまいます。 しかし(1)はEVPNのcontrol planeであるMP-BGPの制御により実現可能です。
Juniper NetworksのJunosの設定例として、EVPNのMP-BGPによる経路迂回を見ていきます。
remote PE Routerからのトラフィックのうち、known unicastはType-1 Routeの撤回で実現できます。 Type-1 Routeさえ撤回できればknown unicastが流れてくることが無くなります。Type-2 Routeの撤回は必須ではありません。
余談ですが、EVPNではPE Router - CE Device間のリンク障害発生時の高速収束のために、Type-1 Routeを優先的に撤回します。 ただし、remote PE Router側の転送テーブルの状態が収束するまでは、remote PE Routerからlocal PE Routerへトラフィックが流れ続けてしまい通信断が発生します。 そのため、remote PE Routerからのトラフィックは事前に流れこないように経路迂回しておきます。
- 参考: ジュニパーネットワークス EVPN 次世代データセンターアーキテクチャの実装 10ページ目
BUMトラフィックの迂回は、Type-3 Route, Type-4 Routeの撤回により実現します。 Type-3 Routeを撤回することで、remote PE Routerから自身に対してBUMトラフィックが流れてこなくなります。 Type-4 Routeを撤回することで、Multihomingを組んでいる別のlocal PE RouterがDFになるため、CE Deviceへは問題なくBUMトラフィックが流れ続けます。
よって、Route-Type 1, 3, 4を撤回する経路フィルタをBGPに設定することで、remote PE Routerからlocal PE Routerトラフィックが流れなくなります。
Junosではpolicy-options policy-statement
により経路フィルタのpolicyを定義します。
policy-statement deny-evpn-rt1rt3rt4-policy { term 1 { # EVPN Route Type-1 from { family evpn; nlri-route-type 1; } then reject; } term 3 { # EVPN Route Type-3 from { family evpn; nlri-route-type 3; } then reject; } term 4 { # EVPN Route Type-4 from { family evpn; nlri-route-type 4; } then reject; } term last-term { # それ以外は許可 then accept; } }
作成したpolicyをMP-BGPに適用します。Junosの場合はpolicy適用にvpn-apply-export
が必要な点に注意です。
protocols { bgp { export deny-evpn-rt1rt3rt4-policy; # 経路広報 (= RIBからBGPへexportする経路) に対してpolicyを適用 group evpn { type internal; local-address <local IP address>; family evpn { signaling; } vpn-apply-export; # VRF(vrf-name.evpn.0)でのbgp export policyを有効化 local-as <local ASN>; multipath; neighbor <neighbor’s IP address>; neighbor <neighbor’s IP address>; ... ... ... } } }
policyを適用すると、Type-1, Type-3, Type-4 Routeが到達不能であるという情報がBGP UPDATEのMP_UNREACH_NLRI
により広報されます。
その後にremote PE Routerの経路情報が収束すると、policyを適用したPE Routerには、次の図のようにremote PE Routerからの流入トラフィックがなくなります。
最後にCE Device向けリンクをダウンさせることで、PE Routerの切り離しが完了します。 CE Deviceからの流入は単なるL2のため迂回できず、リンクダウン時には瞬間的に通信断が発生しますが、 remote PE Routerからのトラフィックは事前に迂回しているため通信影響は小さくなりました。
終わりに
EVPNでは、MP-BGPでRoute Typeを用いて様々な到達性情報を交換します。 このMP-BGPの制御により、PE Router間で経路迂回ができます。 remote PE Routerからのトラフィック流入をなくすことで、 local PE Routerのネットワークからの切り離しの影響を極小化できます。