NSX-T Tier-1 GWを使用したルーティング

今回はNSX-Tを使用して、ESXiホストにルーティング機能を追加する方法と、その際の動作についてまとめました。

 

概要

vSphere環境での通信の問題点

データセンター内を流れるトラフィックには、仮想マシンやサーバ間のトラフィックであるEast-West Traffic、仮想マシンやサーバとデータセンター外部とのトラフィックであるNorth-South Trafficが存在します。
現状は、データセンター内のトラフィック量の約70~80%がEast-West Trafficになります。

 

従来のvSphereでは、ESXiホストはルーティング機能をサポートしてません。そのため、同じESXiホスト上にデプロイされている仮想マシン間の通信であっても、仮想マシンのvNICの接続先のポートグループのVLANが異なる場合、ESXiホスト内だけで通信は完結せず、物理ネットワーク側のルータでパケットをルーティングする必要があります。
そのため、ESXiホストと物理ネットワーク側のルータ間の経路を同じトラフィックが2回流れることになります。この結果、データセンター内の約70~80%のトラフィックが非効率に処理されていることになります。

 

NSX-Tのルーティング

vSphere環境にNSX-Tを導入することで、ESXiホストで異なるサブネット間のパケットをルーティングできるようになります。
これにより、同じESXiホストにデプロイされている仮想マシン間の通信は物理ネットワーク側には転送されず、ESXiホスト内で完結させることが可能です。

 

NSX-TではTier-1 GW、または、Tier-0 GWがルーティング機能を提供します。

一般的にTier-1 GWはテナント単位、Tier-0 GWはシステム単位で使用します。また、Tier-1 GWとTier-0 GWではサポートしている機能が異なっています。例えば、物理ネットワークとNSX-Tの仮想ネットワーク間を接続する機能はTier-0 GWのみサポートしております。

 

また、Tier-1 GW、Tier-0 GWはDR(Distributed Router)、SR(Service Router)と呼ばれる2種類のコンポーネントで構成されます。

DRはSegment間のルーティングを実施するためのルータで、各ESXiホストに存在しています。
一方、SRはDHCPやLB等のソフトウェアベースの処理が必要な機能を提供するためのルータで、Edgeと呼ばれるNSX-T専用の仮想マシン上で動作しています。ESXiホストと同様にEdgeもTransport Nodeとして動作しているため、ESXiホストとEdge間ではGeneveを使用したオーバレイネットワークが構成されています。仮想マシンから受信したトラフィックをSRで処理する必要がある場合、ESXiホストはトラフィックをGeneveでカプセル化し、Edgeに転送します。

 

今回はTier-1 GWのDRを使用したSegment間のルーティングについて解説します。Tier-0 GW、SR、Edgeに関しては、別の記事で解説します。

 

ESXiホストに跨るSegment間のルーティング

2台のESXiホストに跨る通信でSegment間のルーティングが発生する場合、行きと戻りで通信フローが異なります。

NSX-Tの実装をAsymmetric IRB(Integarate Route and Bridge)と呼びます。最初に、送信元の仮想マシンが存在するESXiホストのDRでパケットをルーティングます。その後、Geneveでパケットをカプセル化をして、対向のESXiホストに転送します。宛先の仮想マシンが存在するESXiホストでは、DRでパケットをルーティングしません。

以下はESXi1のSegment 1に存在する仮想マシンからESXi2のSegment 2に存在する仮想マシンへの通信フローになります。
最初、ESXi1のDRがSegment 1からSegment 2にパケットをルーティングします。その後、Geneveでパケットをカプセル化し、ESXi2にパケットを転送します。この際、Segment 2のパケットをGeneveでカプセル化したため、GeneveヘッダにはSegment 2のVNIが格納されます。
ESXi2では、DRでパケットをルーティングせず、そのまま宛先の仮想マシンにパケットを転送します。

 

一方、以下はESXi2のSegment 2に存在する仮想マシンからESXi1のSegment 1に存在する仮想マシンへの通信フローになります。
最初、ESXi2のDRがSegment 2からSegment 1にパケットをルーティングします。その後、Geneveでパケットをカプセル化し、ESXi1にパケットを転送します。この際、Segment 1のパケットをGeneveでカプセル化したため、GeneveヘッダにはSegment 1のVNIが格納されます。
ESXi1では、DRでパケットをルーティングせず、そのまま宛先の仮想マシンにパケットを転送します。

 

上記のように、NSX-Tでは、同一の仮想マシン間の通信であっても、行きと戻りで通信フローが異なります。

 

Asymmetric IRBとは異なり、行きと戻りで通信フローが等しいSymmetric IRBと呼ばれる方式も存在します。Symmetric IRBではオーバレイの通信の際は、専用のVNIを使用します。この専用のVNIをL3 VNIと、仮想マシンやサーバが収容されているセグメントのVNIをL2 VNIと呼びます。

 

Anycast Gatewayについて

複数のESXiホストに展開されるDRの各インタフェースは同じIPアドレスとMACアドレスを保持しております。このような機能をAnycast Gatewayと呼ぶこともあります。

 

これにより、vMotionによって、仮想マシンが移動した場合でも、ルーティングテーブルやARPテーブルの変更無しで、仮想マシンは通信を継続できます。

 

vDSとDR間の接続について

各ESXiホストにおいて、Tier-1 GWやTier-0 GWのDRはVDR(Virtual Distributed Router)カーネルモジュールとして実装されています。

特定のVDRインスタンスに複数のSegmentを接続している場合や複数のVDRインスタンスが存在する場合でも、VDRカーネルモジュールとvDS間は1つのリンクで接続されています。
VDRカーネルモジュールと接続しているvDS側のポートをvdrPortと呼び、VLANのTrunk Portとして動作しています。

 

検証結果

検証内容、構成

ESXi1とESXi2をTransport Zoneに参加させ、ESXi1とESXi2に跨るL2オーバレイネットワークを構築します。
ESXi1とESXi2にTier-1 GWのDRを配置し、ESXiホストが10.1.1.0/24と10.2.2.0/24間のトラフィックをルーティングできるようにします。

アンダーレイの物理スイッチではGENEVEの通信をVLAN 100に収容します。

 

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


vlan 100
!
interface GigabitEthernet1/0/1
 switchport access vlan 100
 switchport mode access
!
interface GigabitEthernet1/0/2
 switchport access vlan 100
 switchport mode access
            


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 GigabitEthernet2
 ip address 10.2.2.2 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.2.2.254
            


interface GigabitEthernet2
 ip address 10.2.2.3 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.2.2.254
            

 

Tier-1 GWの作成

最初にTier-1 GWを作成します。ただし、Tier-1 GWを作成しただけでは、ESXiホスト上でTier-1 GWのDRは生成されません。

 

今回は、Tier-1 GWの名前を指定するのみです。

 

Tier-1 GWとSegment間の接続

Tier-1 GWとSegmentを接続したタイミングで、そのSegmentが展開されているESXiホスト上にTier-1 GWのDRが生成されます。

 

Segmentにおいて、接続先のTier-1 GWとゲートウェイ用のアドレスを指定します。

 

状態確認

トポロジーの確認(NSX ManagerのGUI)

Tier-1 GWとSegmentが接続されていることが確認できます。

 

Tier-1 GWの状態確認(NSX ManagerのCLI)

作成されたTier-1 GWの一覧はget logical-routersコマンドで確認できます。

NSX Manager

nsx-manager1> get logical-routers
LR-ID  LR-Name       Router-Type               ClusterId  UUID

0x1    DR-Tier-1_GW  DISTRIBUTED_ROUTER_TIER1             76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8
            

 

Tier-1 GWのDRのインタフェースはget logical-router <UUID> interfacesコマンドで確認できます。Segment向けのインタフェースとアドレスが確認できます。

NSX Manager

nsx-manager1> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 interfaces
Interface            IP                          Urpf-Mode    Admin-State-Up  UUID

bp-dr-port           169.254.0.1/28              PORT_CHECK   false           81f45e40-691a-45fc-91e8-3fd9048c7bb5
                     fe80::50:56ff:fe56:4452/64
infra-Segment1-dlrp  10.1.1.254/24               STRICT_MODE  true            910a1dca-4574-4c20-8b4f-c7bad6863ba2
infra-Segment2-dlrp  10.2.2.254/24               STRICT_MODE  true            3d5bc8de-8b4b-438e-b73d-294fa24acc62
            

 

Segmentのポート一覧を見ると、Tier-1 GWのDR向けのインタフェースが追加されていることが確認出来ます。

NSX Manager

#Segment 1のポート情報
nsx-manager1> get logical-switch f865bcfe-dfab-4cba-bf88-94e24e20b391 ports
LogSwitchPort-ID                      LogSwitch-ID                          Child-UUID                            Child-EntityType   TransportNode-ID
2e07f458-4430-4174-a678-85ab48d7e202  f865bcfe-dfab-4cba-bf88-94e24e20b391  7218f920-b8be-4f63-86a7-5ee8721fa902  Vif                12eabcd6-77ee-4d25-a57c-32ec97c638ea
894eeadf-043b-4a6c-8025-6686e8dc7924  f865bcfe-dfab-4cba-bf88-94e24e20b391  910a1dca-4574-4c20-8b4f-c7bad6863ba2  LogicalRouterPort  af6f1ca6-7d47-488d-a220-744bd83ffc72
                                                                                                                                     12eabcd6-77ee-4d25-a57c-32ec97c638ea

#Segment 2のポート情報
nsx-manager1> get logical-switch e83dd12e-e419-4fb9-b1f6-62655a7a567f ports
LogSwitchPort-ID                      LogSwitch-ID                          Child-UUID                            Child-EntityType   TransportNode-ID
78793dcf-0553-41c1-b4bd-921645228a7d  e83dd12e-e419-4fb9-b1f6-62655a7a567f  59023c1e-4a87-4c9b-a515-54f0291aaa4a  Vif                af6f1ca6-7d47-488d-a220-744bd83ffc72
488f1d81-a064-40de-807f-56753598aa3e  e83dd12e-e419-4fb9-b1f6-62655a7a567f  d2adbaab-2532-4599-87c7-ef160c2afc19  Vif                12eabcd6-77ee-4d25-a57c-32ec97c638ea
19eef7b4-399a-4ebf-adcb-f01ae0825992  e83dd12e-e419-4fb9-b1f6-62655a7a567f  3d5bc8de-8b4b-438e-b73d-294fa24acc62  LogicalRouterPort  af6f1ca6-7d47-488d-a220-744bd83ffc72
                                                                                                                                     12eabcd6-77ee-4d25-a57c-32ec97c638ea
            

 

Tier-1 GWのDRのルーティングテーブルはget logical-router <UUID> routeコマンドで確認できます。

NSX Manager

nsx-manager1> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 route
Router/Cluster-UUID                    Destination    Next-Hop  LR-Port-Id                            Blackhole  Blackhole-Action  Route-Type  Admin-Distance  Admin-State-Up  Route-UUID                          

76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8  10.1.1.0/24     N/A       910a1dca-4574-4c20-8b4f-c7bad6863ba2  false      N/A               CONNECTED   0               true            72f12704-c0b9-499e-9d80-c4415878a318
76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8  fe80::/64       N/A       81f45e40-691a-45fc-91e8-3fd9048c7bb5  false      N/A               CONNECTED   0               false           ad0e94fa-b8b2-4e26-819b-010e3084de24
76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8  10.2.2.0/24     N/A       3d5bc8de-8b4b-438e-b73d-294fa24acc62  false      N/A               CONNECTED   0               true            cbd181b3-f971-4834-b7fc-90107b0ae05d
76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8  169.254.0.0/28  N/A       81f45e40-691a-45fc-91e8-3fd9048c7bb5  false      N/A               CONNECTED   0               false           728748bb-d029-4eb3-8fff-b3941a154806
            

 

ESXiホストのNSX-Tの状態確認(ESXiホストのNSX-T CLI)

ESXiホスト上に作成されたTier-1 GWのDRはget logical-routersコマンドで確認できます。

ESXi1とESXi2の両方にTier-1 GWのDRが作成されていることが確認できます。

ESXi1

esxi1.local.com> get logical-routers
                  Logical Routers Summary
------------------------------------------------------------
                VDR UUID                 LIF num  Route num
  76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8      2        2
            
ESXi2

esxi1.local.com> get logical-routers
                  Logical Routers Summary
------------------------------------------------------------
                VDR UUID                 LIF num  Route num
  76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8      2        2
            

 

ESXiホスト上に作成されたTier-1 GWのDRのインタフェースの状態はget logical-router <UUID> interfacesコマンドで確認できます。

ESXi1とESXi2が同じIPアドレス、MACアドレスを使用していることが確認できます。

ESXi1

esxi1.local.com> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 interfaces
                         Logical Router Interfaces
---------------------------------------------------------------------------
LIF UUID                 : 3d5bc8de-8b4b-438e-b73d-294fa24acc62
Mode                     : [b'Routing']
Overlay VNI              : 65537
IP/Mask                  : 10.2.2.254/24
Mac                      : 02:50:56:56:44:52
Connected DVS            : NSX-vDS1
Control plane enable     : True
Replication Mode         : 0.0.0.1
State                    : [b'Enabled']
Flags                    : 0x388
DHCP relay               : Not enable
DAD-mode                 : ['LOOSE']
RA-mode                  : ['UNKNOWN']

LIF UUID                 : 910a1dca-4574-4c20-8b4f-c7bad6863ba2
Mode                     : [b'Routing']
Overlay VNI              : 65536
IP/Mask                  : 10.1.1.254/24
Mac                      : 02:50:56:56:44:52
Connected DVS            : NSX-vDS1
Control plane enable     : True
Replication Mode         : 0.0.0.1
State                    : [b'Enabled']
Flags                    : 0x388
DHCP relay               : Not enable
DAD-mode                 : ['LOOSE']
RA-mode                  : ['UNKNOWN']
            
ESXi2

esxi2.local.com> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 interfaces
                         Logical Router Interfaces
---------------------------------------------------------------------------
LIF UUID                 : 3d5bc8de-8b4b-438e-b73d-294fa24acc62
Mode                     : [b'Routing']
Overlay VNI              : 65537
IP/Mask                  : 10.2.2.254/24
Mac                      : 02:50:56:56:44:52
Connected DVS            : NSX-vDS1
Control plane enable     : True
Replication Mode         : 0.0.0.1
State                    : [b'Enabled']
Flags                    : 0x388
DHCP relay               : Not enable
DAD-mode                 : ['LOOSE']
RA-mode                  : ['UNKNOWN']

LIF UUID                 : 910a1dca-4574-4c20-8b4f-c7bad6863ba2
Mode                     : [b'Routing']
Overlay VNI              : 65536
IP/Mask                  : 10.1.1.254/24
Mac                      : 02:50:56:56:44:52
Connected DVS            : NSX-vDS1
Control plane enable     : True
Replication Mode         : 0.0.0.1
State                    : [b'Enabled']
Flags                    : 0x388
DHCP relay               : Not enable
DAD-mode                 : ['LOOSE']
RA-mode                  : ['UNKNOWN']
            

 

ESXiホスト上に作成されたTier-1 GWのDRのルーティングテーブルはget logical-router <UUID> forwardingコマンドで確認できます。

ESXi1

esxi1.local.com> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 forwarding
                        Logical Routers Forwarding Table
-----------------------------------------------------------------------------------
Flags Legend: [U: Up], [G: Gateway], [C: Connected], [I: Interface]
[H: Host], [R: Reject], [B: Blackhole], [F: Soft Flush], [E: ECMP]

Network       Gateway   Type   Interface UUID
===================================================================================
10.1.1.0/24   0.0.0.0   UCI    910a1dca-4574-4c20-8b4f-c7bad6863ba2
10.2.2.0/24   0.0.0.0   UCI    3d5bc8de-8b4b-438e-b73d-294fa24acc62
            
ESXi2

esxi2.local.com> get logical-router 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 forwarding
                         Logical Routers Forwarding Table
-----------------------------------------------------------------------------------
Flags Legend: [U: Up], [G: Gateway], [C: Connected], [I: Interface]
[H: Host], [R: Reject], [B: Blackhole], [F: Soft Flush], [E: ECMP]

Network       Gateway   Type   Interface UUID
===================================================================================
10.1.1.0/24   0.0.0.0   UCI    910a1dca-4574-4c20-8b4f-c7bad6863ba2
10.2.2.0/24   0.0.0.0   UCI    3d5bc8de-8b4b-438e-b73d-294fa24acc62
            

 

Segment 2に接続している仮想マシンのARPテーブルの確認

ESXi1にデプロイされているR3とESXi2にデプロイされているR2のARPテーブルを見ると、10.2.2.254に対応するMACアドレスが同じであることが確認できます。
この結果から、Tier-1 GWのDRがAnycast Gatewayとして動作していることが確認できます。

R2

R2#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.2.2.2                -   0050.56b9.b98a  ARPA   GigabitEthernet2
Internet  10.2.2.254             14   0250.5656.4452  ARPA   GigabitEthernet2
            
R3

R3#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.2.2.3                -   0050.56b9.4e1b  ARPA   GigabitEthernet2
Internet  10.2.2.254             15   0250.5656.4452  ARPA   GigabitEthernet2
            

 

ESXiホストのvDSとVDRインスタンスの状態確認(ESXiホストのCLI)

ESXiホストのvDSを見ると、VDRカーネルモジュール向けのvdrPortが追加されていることが確認出来ます。

ESXi1

[root@esxi1:~] esxcfg-vswitch --list
Switch Name      Num Ports   Used Ports  Configured Ports  MTU     Uplinks
vSwitch0         8836        19          128               1500    vmnic3

  PortGroup Name                            VLAN ID  Used Ports  Uplinks
  VM Network                                0        15          vmnic3
  Management Network                        0        1           vmnic3

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks
NSX-vDS1         8836        8           64                1600    vmnic0

  DVPort ID                               In Use      Client
  1                                       1           vmnic0
  vdrPort                                 1           vdr-vdrPort
  spfPort5039f694fd3c10e9                 0
  d452743c-7a3f-423e-b8ac-ebd4b019d6c4    1           vmk10
  8e7abf1f-f706-4c70-9311-db8a49eb0028    1           vmk50
  2e07f458-4430-4174-a678-85ab48d7e202    1           R1.eth1
  488f1d81-a064-40de-807f-56753598aa3e    1           R3.eth1
            

 

ESXiホスト上に作成されたVDRインスタンスはnet-vdr –instance -lコマンドで確認できます。

ESXi1

[root@esxi1:~] net-vdr --instance -l

DR Instance Information :
---------------------------

DR UUID:                    76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8
DR Id:                      0x00000001
Number of Lifs:             2
Number of Routes:           65528
Number of Hold Pkts:        0
State:                      Enabled
Num unique nexthops:        0
Generation Number:          0
Edge Active:                No
Pmac:                       00:00:00:00:00:00
Dynamic resource pool tag:  65535
Multicast Routing:          Disabled
            

 

VDRインスタンスのインタフェースの情報はnet-vdr –lif -l <UUID>コマンドで確認できます。

ESXi1

[root@esxi1:~] net-vdr --lif -l 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8

DR 76b9e6f7-15e1-4d42-bc54-cf3d7ac040b8 LIF Information :

UUID:                3d5bc8de-8b4b-438e-b73d-294fa24acc62
Mode:                Routing, Downlink
Id:                  Overlay:65537
Ipv4/Mask:           10.2.2.254/24
Ipv6/Mask:
Mac:                 02:50:56:56:44:52
Connected Dvs:       NSX-vDS1
VXLAN Control Plane: Enabled
Replication Mode:    0.0.0.1
Multicast Routing:   Disabled, Oper Down
State:               Enabled
Flags:               0x388
DHCP Relay:          Not enabled
DAD Mode:            LOOSE
RA Mode:             UNKNOWN

UUID:                910a1dca-4574-4c20-8b4f-c7bad6863ba2
Mode:                Routing, Downlink
Id:                  Overlay:65536
Ipv4/Mask:           10.1.1.254/24
Ipv6/Mask:
Mac:                 02:50:56:56:44:52
Connected Dvs:       NSX-vDS1
VXLAN Control Plane: Enabled
Replication Mode:    0.0.0.1
Multicast Routing:   Disabled, Oper Down
State:               Enabled
Flags:               0x388
DHCP Relay:          Not enabled
DAD Mode:            LOOSE
RA Mode:             UNKNOWN
            

 

疎通確認

ESXiホスト内で完結する通信(R1-R3間の通信)

R1の10.1.1.1からR3の10.2.2.3へPingを実施します。

 

R1の10.1.1.1からR3の10.2.2.3へのPingが成功することが確認できます。これより、Tier-1 GWを設定することで、ESXiホストがSegment間のパケットをルーティングできることが確認できます。

R1

R1#ping 10.2.2.3 source 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.2.3, 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
            

 

トレースフローの結果を見ると、Tier-1 GWがパケットをルーティングしていることが確認できます。

 

2台のESXiホストに跨る通信(R1-R2間)

R1の10.1.1.1からR2の10.2.2.2へPingを実施します。

 

R1の10.1.1.1からR2の10.2.2.2へのPingが成功することが確認できます。これより、2台のESXiホストに跨る通信もルーティング可能なことが確認できます。

R1

R1#ping 10.2.2.3 source 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.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
            

 

以下は物理ネットワーク側でキャプチャしたR1の10.1.1.1からR2の10.2.2.2へのICMP Echoになります。GeneveヘッダにSegment 2のVNI 65537が格納されていることが確認できます。

 

トレースフローの結果を見ると、ESXi1でSegment 1からSegment 2にパケットをルーティングしてから、Geneveでパケットをカプセル化し、物理ネットワーク側にパケットを転送していることが確認できます。

 

Asymmetric IRBの動作を確認するために、R2の10.2.2.2からR1の10.1.1.1への戻りのトラフィックの状態を確認します。

 

以下は物理ネットワーク側でキャプチャしたR2の10.2.2.2からR1の10.1.1.1へのICMP Echo Replyになります。GeneveヘッダにSegment 1のVNI 65536が格納されていることが確認できます。

 

トレースフローの結果を見ると、ESXi2でSegment 2からSegment 1にパケットをルーティングしてから、Geneveでパケットをカプセル化し、物理ネットワーク側にパケットを転送していることが確認できます。

コメント

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