NSX-T BGP AS_PATHの比較

今回はNSX-TのBGPにおけるAS_PATHの比較についてまとめます。

 

概要

AS_PATHについて

AS_PATHはルート情報が経由した組織のAS番号を格納するためのパスアトリビュートです。EBGPネイバー対して、ルータがルート情報を広報する際、AS_PATHの先頭に自身のAS番号を追加します。AS_PATHの先頭にAS番号を追加する処理をAS_PATH Prependと呼びます。

 

特定のルート情報を複数のBGPネイバーから学習している場合、AS_PATH長が最短なルート情報がベストパスに選択されます。もし、ルート情報のAS_PATH長が同じ場合、Originの優先度が高いルート情報がベストパスに選択されます。

 

また、ルート情報がループのように転送され続けることを回避するために、AS_PATHは使用されます。もし受信したルート情報のAS_PATHに自身のAS番号が含まれている場合、受信したルート情報はループしていると判断され、破棄されます。

 

AS_PATHとMEDの比較

MEDの仕様上、特定のEBGPネイバーから学習したルート情報に付加されていたMEDは、別のEBGPネイバーにルート情報を転送する際、削除されます。

そのため、下図において、AS 10でEBGPネイバーにルート情報を広報する際にMEDを調整しても、MEDの情報はAS 40には伝搬されません。その結果、AS 40はAS 10宛のパケットをAS 20ではなく、AS 30に転送してしまう可能性があります。つまり、MEDは隣接しているASに対してのみ効果があります。

 

一方、AS_PATHに追加されたAS番号の情報は途中で削除されません。(厳密にいえば、64512~65535のPrivate AS番号を削除することは可能です。)
そのため、AS_PATHを調整することで、隣接してない離れたASのベストパスの選択処理に影響を与えることが可能です。

 

検証結果

検証内容、構成

Tier-1 GWでSegment 1を収容します。
Tier-1 GWとTier-0 GWを接続します。
NSX EdgeにTier-0 GWのSRを配置し、物理ネットワークとNSX-Tの仮想ネットワークを接続します。

Tier-0 GWのSRをAS 100、R2をAS 200として、R3をAS 300とします。
Tier-0 GWのSRとR2間、Tier-0 GWのSRとR3間でEBGPネイバーを構築します。
Tier-0 GWのSRはBGP経由で10.1.1.0/24を広報します。
R2とR3はBGP経由で20.2.2.0/24を広報します。

最初、Tier-0 GWのSRがR2から学習した20.2.2.0/24をベストパスに選択できるように、Originを調整します。

この状況で、Tier-0 GWのSRがR2から20.2.2.0/24を受信した際、AS_PATHに200を追加します。

 

ネットワーク機器のCLIの設定


interface GigabitEthernet2
 ip address 10.1.1.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.254
            


interface Loopback0
 ip address 20.2.2.23 255.255.255.0
!
interface GigabitEthernet2
 ip address 20.1.1.102 255.255.255.0
!
router bgp 200
 bgp router-id 2.2.2.2
 network 20.2.2.0 mask 255.255.255.0
 neighbor 20.1.1.1 remote-as 100
            


interface Loopback0
 ip address 20.2.2.23 255.255.255.0
!
interface GigabitEthernet2
 ip address 20.1.1.103 255.255.255.0
!
router bgp 300
 bgp router-id 3.3.3.3
 network 20.2.2.0 mask 255.255.255.0
 neighbor 20.1.1.1 remote-as 100
 neighbor 20.1.1.1 route-map BGP_MAP out
!
route-map BGP_MAP permit 10
 set origin incomplete
            

 

AS_PATH変更前

Tier-0 GWのSRとR2、R3間でEBGPネイバーを構成します。

その後、Tier-0 GWのSRに対して、R2とR3から20.2.2.0/24を広報します。R3は20.2.2.0/24を広報する際、OriginにIncompleteを格納します。

 

BGPの設定

 

状態確認

Tier-0 GWのSRはOriginの優先度の高いR2から学習した20.2.2.0/24をベストパスに選択していることが確認できます。(末尾のiや?がOriginを示しています。Originに関しては、別の記事で説明します。)

NSX Edge1

edge1(tier0_sr)> get bgp
BGP IPv4 table version is 116, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete

EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network      Next Hop      Metric  LocPrf  Weight  Path       RD
 > 10.1.1.0/24  100.64.128.1  0       100     32768   100 ?
   20.2.2.0/24  20.1.1.103    0       100     0       300 100 ?
 > 20.2.2.0/24  20.1.1.102    0       100     0       200 100 i
            

 

Tier-0 GWのSRのルーティングテーブルを見ると、20.2.2.0/24のネクストホップがR2の20.1.1.102であることが確認できます。

NSX Edge1

edge1(tier0_sr)> get route

Flags: t0c - Tier0-Connected, t0s - Tier0-Static, b - BGP,
t0n - Tier0-NAT, t1s - Tier1-Static, t1c - Tier1-Connected,
t1n: Tier1-NAT, t1l: Tier1-LB VIP, t1ls: Tier1-LB SNAT,
t1d: Tier1-DNS FORWARDER, t1ipsec: Tier1-IPSec, isr: Inter-SR,
> - selected route, * - FIB route

Total number of routes: 7

t1c> * 10.1.1.0/24 [3/0] via 100.64.128.1, linked-333, 4d15h18m
t0c> * 20.1.1.0/24 is directly connected, uplink-325, 01w0d16h
b  > * 20.2.2.0/24 [20/0] via 20.1.1.102, uplink-325, 00:04:48
t0c> * 100.64.128.0/31 is directly connected, linked-333, 01w0d16h
t0c> * 169.254.0.0/24 is directly connected, downlink-327, 01w0d16h
t0c> * fcc3:7c30:4fbf:b800::/64 is directly connected, linked-333, 01w0d16h
t0c> * fe80::/64 is directly connected, linked-333, 01w0d16h
            

 

疎通確認

R1の10.1.1.1から20.2.2.23へTracerouteを実施します。

 

Tier-0 GWのSRは20.2.2.23宛のパケットをR2に転送していることが確認できます。

R1

R1#traceroute 20.2.2.23 source 10.1.1.1 probe 1
Type escape sequence to abort.
Tracing the route to 20.2.2.23
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.1.254 1 msec
2 100.64.128.0 0 msec
3 20.1.1.102 2 msec
            

 

AS_PATH変更後

Tier-0 GWのSRがR3から学習した20.2.2.0/24をベストパスに選択できるように、R2から学習した20.2.2.0/24のAS_PATHの先頭に200を追加します。

 

Prefix Listの設定

Route Mapの条件で使用するPrefix Listを定義します。

 

Route Mapの設定

Route Mapを定義し、先程作成したPrefix Listを参照します。また、AS_PATH Prependに200を指定します。

このRoute Mapは全ルート情報のAS_PATHの先頭に200を追加します。。

 

BGPの設定

R2の入力フィルタに対して、先程定義したRoute Mapを適用します。

 

状態確認

Tier-0 GWのSRのBGPテーブルを見ると、R2から学習した20.2.2.0/24のAS_PATHに200が余分に1個追加されたことが確認できます。この結果、Tier-0 GWのSRはAS_PATH長が最短なR3から学習した20.2.2.0/24をベストパスに選択していることが確認できます。

NSX Edge1

edge1(tier0_sr)> get bgp
BGP IPv4 table version is 116, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete

EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network      Next Hop      Metric  LocPrf  Weight  Path            RD
 > 10.1.1.0/24  100.64.128.1  0       100     32768   100 ?
 > 20.2.2.0/24  20.1.1.103    0       100     0       300 100 ?
   20.2.2.0/24  20.1.1.102    0       100     0       200 200 100 i
            

 

Tier-0 GWのSRのルーティングテーブルを見ると、20.2.2.0/24のネクストホップがR3の20.1.1.103であることが確認できます。

NSX Edge1

edge1(tier0_sr)> get route

Flags: t0c - Tier0-Connected, t0s - Tier0-Static, b - BGP,
t0n - Tier0-NAT, t1s - Tier1-Static, t1c - Tier1-Connected,
t1n: Tier1-NAT, t1l: Tier1-LB VIP, t1ls: Tier1-LB SNAT,
t1d: Tier1-DNS FORWARDER, t1ipsec: Tier1-IPSec, isr: Inter-SR,
> - selected route, * - FIB route

Total number of routes: 7

t1c> * 10.1.1.0/24 [3/0] via 100.64.128.1, linked-333, 4d14h46m
t0c> * 20.1.1.0/24 is directly connected, uplink-325, 01w0d15h
b  > * 20.2.2.0/24 [20/0] via 20.1.1.103, uplink-325, 00:01:23
t0c> * 100.64.128.0/31 is directly connected, linked-333, 01w0d15h
t0c> * 169.254.0.0/24 is directly connected, downlink-327, 01w0d15h
t0c> * fcc3:7c30:4fbf:b800::/64 is directly connected, linked-333, 01w0d15h
t0c> * fe80::/64 is directly connected, linked-333, 01w0d15h
            

 

疎通確認

R1の10.1.1.1から20.2.2.23へTracerouteを実施します。

 

Tier-0 GWのSRは20.2.2.23宛のパケットをR3に転送していることが確認できます。

R1

R1#traceroute 20.2.2.23 source 10.1.1.1 probe 1
Type escape sequence to abort.
Tracing the route to 20.2.2.23
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.1.254 1 msec
2 100.64.128.0 1 msec
3 20.1.1.103 1 msec
            

コメント

タイトルとURLをコピーしました