在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三个逻辑网络的三层路由。
- 在实现逻辑路由之前,先确认逻辑交换的状态是否正常
- 在高级网络和安全-网络-路由器界面,添加一个Tier-1路由器
- 定义该逻辑路由器命名为T1-LR_T1
注:对于Tier-1级路由器,在不配置Edge群集的情况下,默认不会创建T1SR
同时,各位也会发现,在NSXMGR的配置页面,不会区分添加DR或者SR角色;当管理员添加一个逻辑路由器实例的时候,系统会自行判断并创建DR或者SR角色
- 等待T1LR完成创建后,进入配置-路由器端口,添加内部接口
- 添加内部接口,连接到T1-dev-web-tier,并设置网关地址为10.0.10.1
- 重复上述操作,完成其他内部接口的设置,包括:
T1-dev-app-tier:10.0.20.1
T1-dev-db-tier:10.0.30.1
- 完成T1LR(T1DR)创建后,web-01a与其他网络的虚拟机,包括app-01a和db-01a三层通信已经可以正常建立
- 此时访问主机节点命令行,对于有虚拟机承载的Hypervisor主机,无论是KVM和vSphere,都可以看到三个逻辑交换机和一个逻辑路由器,并且逻辑路由器的角色是T1DR
- 在Edge节点,只有1个逻辑交换机,用于Overlay流量,目前没有任何T1的DR生成
注:在创建T1SR之后,Edge节点会生成对应的T1DR实例
经过上述步骤,我部署了一台T1DR,实现了vSphere和KVM不同Hypervisor主机上,不同逻辑网络虚拟机的三层互访。 其实单从配置的角度而言,NSX-T的逻辑路由配置并不复杂,但是底层实现和SR、DR、T0、T1多种组合的理解,是需要花一番心思研究摸索的。在后续的分享中,我也非常愿意和各位探讨这些问题。
0x06-02:部署T0LR,实现物理-逻辑网络互访
===================
在上文分享中,我提及想要实现物理-逻辑网络互访,必须借助于T0SR角色,因为只有T0SR才能连接VLAN类型的逻辑交换机。现在我的环境中,已经部署了T1DR角色,自然有2个问题:
- ▪T1DR如何连接T0SR,是否可以直接连接
- ▪如何部署T0SR角色
在接下来的演示中,我们一起来回答这两个问题:
- 与T1LR创建相类似,选择创建Tier-0路由器
- 命名Tier-0逻辑路由器,并选择sa-edge-cluster1作为该逻辑路由器的SR角色承载群集
- 如果需要在T0SR开启NAT等有状态的服务,必须选择Active-Standby的高可用模式,故障切换模式选择非主动,不需要指定首选Edge承载
- 完成T0LR创建后,在没有任何接口配置的情况下,Hypervisor和Edge底层都不会生成实例
此时,我们依旧无法回答上述两个问题
- 选择将T1-LR_T1连接到T0-LR_T1-T2,选中T1-LR_T1,点击操作-连接到Tier-0路由器即可
- 完成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
- 在Edge节点,由于尚未创建T0SR角色,因此依旧不会创建任何逻辑路由器实例
- 但是对于Hypervisor主机节点,由于T1DR已经连接到T0DR,因此在原来T1DR实例的基础上,多了一个T0DR的实例
现在,我们可以回答第一个问题了,T1DR无法直接连接到T0SR,连接的逻辑必须是T1DR连接到T0DR,T0DR连接到T0SR。
- 在配置T0LR的上联VLAN物理网络之前之前,需要创建一个用于VLAN上联的逻辑交换机,命名为T0-dev-uplink-external,VLAN为0
注:如果该逻辑交换机用于T0LR的上联网络,VLAN不可以是中继,如1-4094
- 选择T0-LR_T1-T2逻辑路由器,选择配置-路由器端口,添加一个上联到物理VLAN网络的接口
- 定义该路由器端口信息,实现T0LR到VLAN网络的互通,必须部署T0SR角色,因此必须要从Edge群集中指定一个Edge作为传输节点
- 设置T0LR的Uplink地址为172.18.11.100/24
注:在我的环境中,最终的uplink地址为172.18.12.100/24,此处定义为172.18.11.100/24是为了静态路由演示配置
- 在完成T0LR的上联配置后,相当于部署了T0SR角色,因此在Edge节点,可以看到T1DR、T0DR和T0SR角色
- 现在我们可以回答另一个问题,T0LR的创建,与T1LR相类似,在配置上联到VLAN物理网络的过程中,系统会自动判断这是T0SR角色实现的功能,会自动创建T0SR角色
- 由于T0LR模式为Active-Standby,在选择sa-edge-01作为传输节点的情况下,sa-edge-02内核不会创建T0SR角色,自然也不会有T0DR和T1DR
- 在主机节点内核,由于T1SR和T0SR角色只能在Edge节点生成,因此不会出现T0SR角色
- 虚拟机Edge流量还要经过ESXI主机的虚拟交换机,因此必须开启虚拟交换机的“伪传输"
注:混杂模式开启的情况下,可能会出现PING DUP!情况
- 在172.18.11.0/24的网关ping T0LR的上联,可以看到接口已经激活,二层可达
经过了上述演示,我们已经为实现物理-网络互通打下了基础,接下来要思考以下几个问题:
- 在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逻辑路由的奇妙,敬请关注。