理解NSX T0和T1的架构

NSX T0与T1架构的理解

DR,顾名思义就是分布式路由器,不是存在Edge Node上,他存在于Transport Node也就是ESXi的内核模块中,主要处理东西向的流量,数据中心内部流量,包括相同的虚拟子网(Segment之内)或者不同的虚拟子网(Segment之间),如果基于传统架构,这些虚拟子网之间的数据流量都需要到固定的虚拟路由器交换,这不仅仅容易造成流量瓶颈和发卡弯,也容易受到Edge的性能瓶颈以及单点故障。而这些年吹的神乎其神的SDN,就是依靠中央控制平面和数据平面二者分离的优势,解决这些问题,DR就是SDN经典模型的体现。在NSX架构中CCP是中央控制单元,是SDN的指挥中枢,LCP是运行在数据平面(Transport Node,ESXi),二者配合实现流表的中央控制和分发,而DR就是运行在每台ESXi主机上的数据转发部件。

在每台主机上网络的核心架构与传统网络类似,分为两部分,也就是虚拟交换机和虚拟路由器。

虚拟交换机,是一个逻辑形态,类似于物理交换机,在虚拟交换机上有ARP、MAC地址表,但由于实施网络虚拟化之后,这些虚拟的子网是运行在三层的真实的物理网络之上,多出了一层Overlay的封装,这就产生了虚拟子网号(VNI)-VM-IP-MAC-TEP的映射表。基于这个映射表,虚拟机到达子网内部或者其他子网之间的路由就必须都考虑在内。如下图所示,LCP把本机上创建的虚拟机、虚拟子网的信息报告给CCP,CCP又加工汇总了集群中其他主机的信息之后,再推送更新给LCP,这样每个Transport Node上都构建了一张涵盖虚拟网络VNI、虚拟机IP/MAC、TEP等信息的查询表。

这部分具体的表现可以登录ESXi主机的nsxcli,可以通过查看虚拟交换机相关命令获取具体信息。

Image

以上图为例,ESXi-10主机上有多个虚拟子网,以Ls-web这个segment为例,可以查该子网的信息,这些信息可以决定虚拟机的路由交换数据流向。

esxi-10.vcf.sddc.lab> get logical-switch 42104a9d-b6d2-4a8e-8137-deb0122bd590 arp-table
esxi-10.vcf.sddc.lab> get logical-switch 42104a9d-b6d2-4a8e-8137-deb0122bd590 mac-table
esxi-10.vcf.sddc.lab> get logical-switch 42104a9d-b6d2-4a8e-8137-deb0122bd590 vtep-table

image-20241222191108449

虚拟路由又分为两部分,包括东西向流量与南北向流量。

  • 东西向流量

也就是数据中心内部的虚拟机之间的通讯,也就是东西向的虚拟机网络流量,由于实施了虚拟网络优化了这部分网络的效率,每个Transport Node上都有运行在内核中的DR处理东西向流量的转发,转发规则当然是基于上述的VNI—VM IP/MAC—TEP的表,这部分虚拟路由又分为两个具体实现:Single Tier和Multiple Tier。

image-20241222233350463

  • Single Tier。结构简单,适合私有云客户环境,东西向流量通过T0的DR(Distributed Router)实现主机间交换。但是该架构无法实现数据中心内部的多租户、隔离等要求,所以可以在小规模环境中部署。T0 DR也就是个逻辑部件,运行在各Transport Node上,连接到T0的子网内部或子网之间都可以直接实现交换,无需通过Edge服务节点。

image-20241223000028282

  • Multiple Tier。结构略显复杂,但是实际图中的T1和T0都是逻辑结构。这个结构的优点就是可以实现扩展和隔离,同时T0也可以用Cluster方式,与外部路由器之间通过ECMP构建最多8条路径。T1如果是Distributed Only的类型,T1只有DR(没有Service Router,SR),所有接入到T1的虚拟网络的东西流量就可以通过T1分布式的DR在Transport Node上实现路由交换。不同T1之间的子网通讯,也是东西向流量,也会经过T1和T0的DR处理。当创建T1并连接到T0时会发现,在NSX网络拓扑页面,会自动创建出一条虚拟网络(100.64.0.x)连接T1和T0。

image-20241223000459023

  • 同一主机上的不同T1之间的东西向流量

如上图所示,两个T1连接到一个T0,在Transport Node上,会产生T1 DR-A,T1 DR-B和T0 DR,这样Segment A和Segment B之间就可以通过T0 DR实现了,Segment A访问B时,数据首先发送到网关T1-A,然后T1-A查询路由表,通过默认路由(属于100.64.16.0/24网络)把数据交给下一跳T0 DR,T0 DR一看路由表,命中他自身的Connected路由,也就是连接到同一个T0的T1-B,数据就发给了T1-B,T1-B DR找到子网Segment B,把数据交给虚拟机。这个过程中,都是运行在Transport Node内核中的T0、T1进程间实现交互,数据不需要TEP到达主机外部网络。

  • 跨主机上的不同T1之间的东西向流量

下图所示,Transport Node1上的虚拟机VM1连接到T1 Blue DR,要与Transport Node2主机上的T1 Yellow上的虚拟机VM2通讯,T1 Blue首先就通过T0-T1 Transit Subnet(100.64.16.0/24)网络,找到了Transport Node上的T0 DR,T0上接入了多个T1,自然通过这个T0 DR就找到了去T1 Segment Yellow的路,Node1上的T1 Yellow就通过TEP把数据发送到Node2的TEP,Node2 TEP解封装之后,把数据送达本机Segment2中的VM2虚拟机。

image-20241223002907332

  • 跨主机通往Edge VM的南北向流量

当然T1-T0这个Transit Subnet最大的作用,是把请求的流量交给T0的SR。如下图所示,虚拟机VM 10.1.1.10要访问外部网络,分为以下几步:

  1. 虚拟机10.1.1.10访问192.168.10.1,显然不是同一个子网,直接发给T1网关10.1.1.1
  2. T1网关检测目标地址不在自己的子网范围,毕竟T1是接在T0上的,T1查找默认路由后,通过T0-T1 Transit Subnet,发给了本机上的T0 DR
  3. T0 DR如果收到目的地址是去他T1,就直接在T0-T1 DR层面转发了,但这个地址显然不是其他T1 DR,而是外部网络,这就要去往Edge VM了。T0 DR和T0 SR之间确实也有一条默认路由(169.254.0.0/24网络),但这毕竟是逻辑的,真正数据转发这些工作还得依靠Transport Node上的TEP隧道。
  4. T0 DR把数据封装到Geneve数据包,通过Node1上的TEP发送到Edge Node的TEP。
  5. T0 TEP收到数据包,解封装之后发给T0 SR,T0 SR根据路由表查看,去往192.168.10.0/24子网的路由,下一跳是去往172.16.215.98/29,因此数据就从上行链路发送到VLAN网络中。
  6. 外部路由器172.16.215.98收到数据包,发现自己有一个去往192.168.10.0/24的路由,数据包经过层层转发到达192.168.10.1。

image-20241223004811487

关于运行在Transport Node和Edge Node上的虚拟路由,可以通过get logical-routers查看。

image-20241223011458499

常见查看Logical Router的命令包括:
esxi-10.vcf.sddc.lab > get logical-router e6853c16-424b-4350-824a-6d73bb72db6b forwarding
esxi-10.vcf.sddc.lab > get logical-router e6853c16-424b-4350-824a-6d73bb72db6b neighbors

总结,在常用的多层架构中,T1-T0的结构必须要搞清楚,这才是NSX路由交换的精髓所在,总结四点:

  • T1是虚拟子网的网关,运行在Transport Node的内核进程中,东西向流量通过T1 DR实现,非常高效,无需经过Edge VM开销。
  • T0则涉及到东西向和南北向的流量转发,T0的DR运行在Transport Node和Edge Node上(Edge 上的T0 DR感觉就是个控制平面);但T0 SR服务虚拟机,运行在Edge VM上,把数据通过上行链路转发到数据中心的外部路由器。
  • 当T1之间通讯时,用到T1-T0 Transit Link,在Transport Node上找到T0 DR,由于多个T1 DR连接到T0 DR,因此T0 DR就可以解决东西向跨T1的数据转发。
  • 当T1上的虚拟机访问外网时,T1通过T1-T0 Transit Link找到T0 DR,T0 DR通过路由把数据通过TEP转发到Edge VM的T0 SR,T0 SR根据路由把数据转发到外部路由器。

暂无评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


虚拟化 | 云计算 | 机器学习 | 股市复盘
© 2024 涛哥,版权所有, 京ICP备20014492-2号