今回はNSX-TのBGPの基本動作の検証証跡をまとめました。
検証結果
検証内容、構成
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として、EBGPネイバーを構築します。
Tier-0 GWのSRはBGP経由で10.1.1.0/24を広報します。
R2はBGP経由で20.2.2.0/24を広報します。
ネットワーク機器の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.2 255.255.255.0
!
interface GigabitEthernet2
ip address 20.1.1.100 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
BGPの設定
Tier-0 GWでBGPを有効にし、自身のAS番号(100)を指定します。
次に、BGPネイバーのアドレス(20.1.1.100)とAS番号(200)を指定します。デフォルトでBGPネイバーに対してはIPv4 AF(Address Family)が有効、つまり、IPv4のルート情報の交換が有効になっています。
BGPの設定後の状態確認
NSX Edge(Tier-0 GWのSR)の状態確認
最初にvrf <id>コマンドを使用して、NSX Edge内に作成されたTier-0 GWのSRに移動します。(vrf <id>コマンドには<id>は、get logical-routersコマンドで確認可能なTier-0 GWのSRのVRF IDを指定します。)
edge1> vrf 9
edge1(tier0_sr)>
BGPネイバーの状態はget bgp neighborコマンドで確認可能です。状態がEstablishedの場合、BGPネイバーが確立されていることを示します。また、IPv4のルート情報の交換が有効なことが確認できます。
edge1(tier0_sr)> get bgp neighbor
BGP neighbor is 20.1.1.100, remote AS 200, local AS 100, external link
BGP version 4, remote router ID 2.2.2.2, local router ID 20.1.1.1
BGP state = Established, up for 00:04:23
Last read 00:00:40, Last write 00:00:23
Hold time is 180, keepalive interval is 60 seconds
Configured hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
4 Byte AS: advertised and received
AddPath:
IPv4 Unicast: RX advertised IPv4 Unicast
Route refresh: advertised and received(old & new)
Address Family IPv4 Unicast: advertised and received
Hostname Capability: advertised (name: edge1,domain name: n/a) not received
Graceful restart information:
Local GR Mode : Disable*
Remote GR Mode : NotApplicable
R bit : False
Timers :
Configured Restart Time(sec) : 180
Received Restart Time(sec) : 0
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 6 6
Notifications: 10 0
Updates: 0 2
Keepalives: 5 5
Route Refresh: 0 0
Capability: 0 0
Total: 21 13
Minimum time between advertisement runs is 0 seconds
Update source is 20.1.1.1
For address family: IPv4 Unicast
Update group 10, subgroup 9
Packet Queue length 0
Community attribute sent to this neighbor(all)
1 accepted prefixes
Connections established 1; dropped 0
Last reset 00:05:13, due to NOTIFICATION sent (OPEN Message Error/Bad Peer AS)
Local host: 20.1.1.1, Local port: 179
Foreign host: 20.1.1.100, Foreign port: 15807
Nexthop: 20.1.1.1
Nexthop global: ::
Nexthop local: ::
BGP connection: shared network
BGP Connect Retry Timer in Seconds: 10
Read thread: on Write thread: on
BGPテーブルの状態はget bgpコマンドで確認可能です。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 49, 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
> 20.2.2.0/24 20.1.1.100 0 100 0 200 100 i
NSX Edge1はR2からBGP経由で20.2.2.0/24を学習していることが確認できます。
しかし、BGPテーブルにはTier-1 GW側の10.1.1.0/24が存在しないことが確認できます。(想定通りです)
BGPテーブルに存在するルート情報の詳細はget bgp <address>/<prefix-length>コマンドで確認可能です。
edge1(tier0_sr)> get bgp 20.2.2.0/24
BGP routing table entry for 20.2.2.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin IGP, Metric 0, LocalPref 100, Weight 0, best, valid
Peer is 20.1.1.100 with router id 2.2.2.2
Last Updated: Thu Aug 20 11:35:20 2020
ルーティングテーブルはget routeコマンドで確認可能です。Tier-0 GWのSRのルーティングテーブルにBGP経由で学習した20.2.2.0/24が存在していることが確認できます。
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, 2d20h51m
t0c> * 20.1.1.0/24 is directly connected, uplink-325, 5d21h45m
b > * 20.2.2.0/24 [20/0] via 20.1.1.100, uplink-325, 00:04:18
t0c> * 100.64.128.0/31 is directly connected, linked-333, 5d21h45m
t0c> * 169.254.0.0/24 is directly connected, downlink-327, 5d21h45m
t0c> * fcc3:7c30:4fbf:b800::/64 is directly connected, linked-333, 5d21h45m
t0c> * fe80::/64 is directly connected, linked-333, 5d21h45m
BGPネイバーに対して広報しているルート情報はget bgp neighbor <address> advertised-routeコマンドで確認可能です。現在、R2に対して、Tier-0 GWのSRは10.1.1.0/24を広報していないことが確認できます。
edge1(tier0_sr)> get bgp neighbor 20.1.1.100 advertised-routes
NSX Manager(Tier-0 GWのDR)の状態確認
Tier-0 GWのDRのルーティングテーブルを見ると、Tier-0 GWのSRがBGP経由で学習した20.2.2.0/24は存在しないことが確認出来ます。これより、Tier-0 GWのSRからTier-0 GWのDRに対して、Static RouteやConnected Routeのルート情報は広報されますが、BGP経由で学習したルート情報は広報されないことが確認できます。
しかし、Tier-0 GWのDRのルーティングテーブルにはTier-0 GWのSRをネクストホップとしたデフォルトルートが存在するため、Tier-0 GWのDRは物理ネットワーク側へのパケットをTier-0 GWのSRに転送可能です。
nsx-manager1> get logical-router 031757a6-06d8-44bb-9e06-1ba1ac0e78c1 route
Router/Cluster-UUID Destination Next-Hop LR-Port-Id Blackhole Blackhole-Action Route-Type Admin-Distance Admin-State-Up Route-UUID
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 100.64.128.0/31 N/A 5117fa5c-029d-49e4-958f-344b56b0d4ed false N/A CONNECTED 0 true 0af964e3-1873-4cf2-8b06-a38214d031cd
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 ::/0 fe80::50:56ff:fe56:5300 efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A NSX_CONNECTED 250 true 3e8393c3-2b67-416e-b469-930d6b0f1c51
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 fe80::/64 N/A 5117fa5c-029d-49e4-958f-344b56b0d4ed false N/A CONNECTED 0 true bf36db6d-05d3-4e83-90ab-0208f1077629
N/A efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A CONNECTED 0 true
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 20.1.1.0/24 169.254.0.2 efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A NSX_CONNECTED 0 true 646125d9-ab2e-422e-a6b2-9546a1f7478d
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 20.1.1.1/32 169.254.0.2 efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A NSX_CONNECTED 0 true 6e6dfa96-0040-44fe-8730-17c71cb74f63
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 fcc3:7c30:4fbf:b800::/64 N/A 5117fa5c-029d-49e4-958f-344b56b0d4ed false N/A CONNECTED 0 true 4f4baa36-4df1-4c8a-a3e8-20cece774d20
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 169.254.0.0/24 N/A efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A CONNECTED 0 true f7abf229-707e-4abe-97a6-217d28ff28b1
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 169.254.0.0/25 N/A efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A CONNECTED 0 true df580895-7d5f-4976-b014-565d2884e283
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 0.0.0.0/0 169.254.0.2 efa2a0a3-5dc9-4a43-9c02-9ba5e760fbfa false N/A NSX_CONNECTED 250 true a63b25b0-0f84-4393-9b3f-8d5154b7dbcf
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 10.1.1.0/24 100.64.128.1 5117fa5c-029d-49e4-958f-344b56b0d4ed false N/A T1_DOWNLINK 3 true dcaf5669-0e99-46eb-bd5b-4be88b8ce716
R2の状態確認
R2のBGPテーブルを見ると、R2はTier-0 GWのSRから10.1.1.0/24を学習していないことが確認できます。
R2#show ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path, L long-lived-stale,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 20.2.2.0/24 0.0.0.0 0 32768 i
BGPへのルート情報の再配送の設定
Tier-0 GWのSRにおいて、BGP経由で10.1.1.0/24を広報するためには、ルーティングテーブルに存在する10.1.1.0/24をBGPプロセスに投入する必要があり、この処理をRedistributeや再配送と呼びます。(NSX-TのGUIでは再配分と表示されますが、この表現は初めて見ました。)
今回はSegmentのルート情報をBGPに再配送します。
BGPへのルート情報再配送後の状態確認
NSX Edge(Tier-0 GWのSR)の状態確認
Tier-0 GWのSRのBGPテーブルに10.1.1.0/24が投入されていることが確認できます。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 49, 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.100 0 100 0 200 100 i
BGPテーブルに投入された10.1.1.0/24の詳細情報は以下になります。(OriginやWeight等は別の記事で説明します。)
edge1(tier0_sr)> get bgp 10.1.1.0/24
BGP routing table entry for 10.1.1.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin incomplete, Metric 0, LocalPref 100, Weight 32768, best, valid
Peer is 0.0.0.0 with router id 20.1.1.1
Last Updated: Thu Aug 20 11:44:23 2020
R2に対して、Tier-0 GWのSRが10.1.1.0/24を広報していることが確認できます。
edge1(tier0_sr)> get bgp neighbor 20.1.1.100 advertised-routes
BGP IPv4 table version is 50
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
> 10.1.1.0/24 0.0.0.0 0 100 32768 ?
R2の状態確認
R2のBGPテーブルを見ると、Tier-0 GWのSRからR2は10.1.1.0/24を学習していることが確認できます。
R2#show ip bgp
BGP table version is 3, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path, L long-lived-stale,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.1.1.0/24 20.1.1.1 0 0 100 ?
*> 20.2.2.0/24 0.0.0.0 0 32768 ii
疎通確認
R1の10.1.1.1からR2の20.2.2.2へPingを実施します。
R1の10.1.1.1からR2の20.2.2.2へのPingが成功したため、Tier-0 GWのSRはBGP経由で学習したルート情報を基に、パケットをルーティングしていることが確認できます。
R1#ping 20.2.2.2 source 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 20.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 10.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
コメント