在之前的几篇分享中,我的演示环境已经就绪了主机传输节点和Edge传输节点,并且利用Geneve Overlay,实现了跨VMware与KVM异构化平台的逻辑交换功能。在今天的分享中,我将演示如何实现跨异构化平台的逻辑路由功能,并为最终实现Web-App-DB(后文称3-Tier-App)与外部网络的三层互访打下基础。

在NSX-V的架构中,逻辑路由组件由三大件组成:

数据平面的“分布式逻辑路由器”,也叫作DLR Instance,是运行在Hypervisor内核中的组件,连接多个逻辑交换机后,实现不同网络的三层路由互访。

数据平面的“边界服务网关”(后文简称ESG),是运行在Hypervisor用户空间的一台虚拟机,打通物理网络和逻辑网络,并提供多种网络服务虚拟化功能,如网络地址转换、负载均衡器等。

控制平面的“分布式逻辑路由器控制虚拟机”,也叫作DLR CVM,是运行在Hypervisor用户空间的一台虚拟机,借助OPSF或者BGP动态路由协议,实现与ESG以及物理网络的三层路由互访。

在NSX-T的架构中,逻辑路由组件发生了比较大的变化(我们再来回顾一下上一篇的内容):

逻辑路由器可分为Tier-0和Tier-1两个分级(后文称T0和T1);

每个逻辑路由器可以分为分布式路由器角色DR和服务路由器角色SR;做个不恰当的比喻,NSX-T架构中的DR相当于NSX-V架构中的DLR,SR相当于ESG;其中SR角色必须由NSX-T的Edge传输节点来承载。

0x06-01:部署T1DR,实现逻辑网络三层路由


对于小型环境而言,管理员可以只部署T0LR实现逻辑路由和物理-逻辑互访,以3-Tier-App环境为例:

部署T0DR,实现Web、App、DB三个逻辑交换网络的三层路由

部署T0SR,实现逻辑网络与物理网络的三层互访

有人会问,为什么不可以只使用一个T0DR,即实现逻辑网络三层路由,又实现物理-逻辑互访?

请注意:只有T0SR角色才能连接VLAN类型的逻辑交换机,实现物理-逻辑互访,因此在一个标准NSX-T的架构中,至少需要T0DR和T0SR两个角色。

但是在多租户场景中,由于逻辑网络拓扑高复杂度和可能存在的网络地址段重叠,建议采用T0和T1两个分级,现在我先演示如何部署T1DR角色,率先实现Web、App、DB三个逻辑网络的三层路由。

在实现逻辑路由之前,先确认逻辑交换的状态是否正常

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图31

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图32

在高级网络和安全-网络-路由器界面,添加一个Tier-1路由器

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图33

定义该逻辑路由器命名为T1-LR_T1注:对于Tier-1级路由器,在不配置Edge群集的情况下,默认不会创建T1SR同时,各位也会发现,在NSXMGR的配置页面,不会区分添加DR或者SR角色;当管理员添加一个逻辑路由器实例的时候,系统会自行判断并创建DR或者SR角色

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图34

等待T1LR完成创建后,进入配置-路由器端口,添加内部接口

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图35

添加内部接口,连接到T1-dev-web-tier,并设置网关地址为10.0.10.1

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图36

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图37

重复上述操作,完成其他内部接口的设置,包括:T1-dev-app-tier:10.0.20.1T1-dev-db-tier:10.0.30.1

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图38

完成T1LR(T1DR)创建后,web-01a与其他网络的虚拟机,包括app-01a和db-01a三层通信已经可以正常建立

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图39

此时访问主机节点命令行,对于有虚拟机承载的Hypervisor主机,无论是KVM和vSphere,都可以看到三个逻辑交换机和一个逻辑路由器,并且逻辑路由器的角色是T1DR

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图40

在Edge节点,只有1个逻辑交换机,用于Overlay流量,目前没有任何T1的DR生成注:在创建T1SR之后,Edge节点会生成对应的T1DR实例

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图41

经过上述步骤,我部署了一台T1DR,实现了vSphere和KVM不同Hypervisor主机上,不同逻辑网络虚拟机的三层互访。 其实单从配置的角度而言,NSX-T的逻辑路由配置并不复杂,但是底层实现和SR、DR、T0、T1多种组合的理解,是需要花一番心思研究摸索的。在后续的分享中,我也非常愿意和各位探讨这些问题。



0x06-02:部署T0LR,实现物理-逻辑网络互访

===================

在上文分享中,我提及想要实现物理-逻辑网络互访,必须借助于T0SR角色,因为只有T0SR才能连接VLAN类型的逻辑交换机。现在我的环境中,已经部署了T1DR角色,自然有2个问题:

T1DR如何连接T0SR,是否可以直接连接

如何部署T0SR角色

在接下来的演示中,我们一起来回答这两个问题:

与T1LR创建相类似,选择创建Tier-0路由器

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图42

命名Tier-0逻辑路由器,并选择sa-edge-cluster1作为该逻辑路由器的SR角色承载群集

如果需要在T0SR开启NAT等有状态的服务,必须选择Active-Standby的高可用模式,故障切换模式选择非主动,不需要指定首选Edge承载

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图43

完成T0LR创建后,在没有任何接口配置的情况下,Hypervisor和Edge底层都不会生成实例此时,我们依旧无法回答上述两个问题

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图44

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图45

选择将T1-LR_T1连接到T0-LR_T1-T2,选中T1-LR_T1,点击操作-连接到Tier-0路由器即可

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图46

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图47

完成T1LR和T0LR的互联后,可以看到如下变化:对于T1LR而言,多了一个自动创建的逻辑网络,并且自动设置了一个100.64.0.0/24的网络地址;这一点与NSX-V的配置略有不同,在NSX-V架构下,管理员需要手动配置一个Transit逻辑交换机,用于连接DLR和ESG(相当于DR和SR连接)如:在我的环境中,T1-LR_T1的Uplink口,分配了一个100.64.112.1/31地址;相应地,T0-LR_T1-T2的下联地址一定是100.64.112.0/31

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图48

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图49

在Edge节点,由于尚未创建T0SR角色,因此依旧不会创建任何逻辑路由器实例

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图50

但是对于Hypervisor主机节点,由于T1DR已经连接到T0DR,因此在原来T1DR实例的基础上,多了一个T0DR的实例现在,我们可以回答第一个问题了,T1DR无法直接连接到T0SR,连接的逻辑必须是T1DR连接到T0DR,T0DR连接到T0SR。

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图51

在配置T0LR的上联VLAN物理网络之前之前,需要创建一个用于VLAN上联的逻辑交换机,命名为T0-dev-uplink-external,VLAN为0注:如果该逻辑交换机用于T0LR的上联网络,VLAN不可以是中继,如1-4094

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图52

选择T0-LR_T1-T2逻辑路由器,选择配置-路由器端口,添加一个上联到物理VLAN网络的接口

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图53

定义该路由器端口信息,实现T0LR到VLAN网络的互通,必须部署T0SR角色,因此必须要从Edge群集中指定一个Edge作为传输节点

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图54

设置T0LR的Uplink地址为172.18.11.100/24注:在我的环境中,最终的uplink地址为172.18.12.100/24,此处定义为172.18.11.100/24是为了静态路由演示配置

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图55

在完成T0LR的上联配置后,相当于部署了T0SR角色,因此在Edge节点,可以看到T1DR、T0DR和T0SR角色

现在我们可以回答另一个问题,T0LR的创建,与T1LR相类似,在配置上联到VLAN物理网络的过程中,系统会自动判断这是T0SR角色实现的功能,会自动创建T0SR角色

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图56

由于T0LR模式为Active-Standby,在选择sa-edge-01作为传输节点的情况下,sa-edge-02内核不会创建T0SR角色,自然也不会有T0DR和T1DR

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图57

在主机节点内核,由于T1SR和T0SR角色只能在Edge节点生成,因此不会出现T0SR角色

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图58

虚拟机Edge流量还要经过ESXI主机的虚拟交换机,因此必须开启虚拟交换机的“伪传输”注:混杂模式开启的情况下,可能会出现PING DUP!情况

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图59

在172.18.11.0/24的网关ping T0LR的上联,可以看到接口已经激活,二层可达

🌖3x06变形金刚外传:实现跨VMware与KVM的逻辑路由 - 图60

经过了上述演示,我们已经为实现物理-网络互通打下了基础,接下来要思考以下几个问题:

在NSX-V的架构中,DLR和ESG之间需要配置静态/动态路由,DLR连接的逻辑网络虚拟机才能PING通ESG的Uplink地址,在NSX-T的架构中,是否也有类似的配置步骤。

在NSX-V的架构中,ESG与上联物理核心之间,同样需要配置静态/动态路由,实现物理-逻辑网络互通,在NSX-T的架构中,如何来实现这些需求。

在后续的若干分享中,我将依次演示如下路由场景:

T0SR Active-Standby模式下,静态路由实现物理-逻辑网络互访

T0SR Active-Standby模式下,BGP动态路由实现物理-逻辑网络互访

T0SR Active-Active模式下,BGP动态路由实现物理-逻辑网络互访

届时,再与各位细细探索和讨论NSX-T逻辑路由的奇妙,敬请关注。