在多云时代的企业云服务中,经常遇到混合云和异构资源问题,作为开源SDN的代表,Tungsten Fabric能够很好实现SDN互通,在网络层面打通异构资源池。
7月9日,在TF中文社区线上直播活动【 TF Live 】中,华胜天成网络架构师王峻与大家进行了在线交流,演示了基于Tungsten Fabric开源SDN功能,如何实现vCenter、OpenStack、K8s之间的异构资源池互通,以及服务链的引流功能。
本期活动,由TF中文社区和SDNLAB联合举办。
【pdf文档下载】
https://tungstenfabric.org.cn/assets/uploads/files/tf-live4-sdn.pdf
【直播视频回放】
https://v.qq.com/x/page/m31138leucf.html
王峻,华胜天成网络架构师。拥有10多年网络行业经验,曾参与设计建设大型银行骨干网、互联网政务云等项目。在7月9日的TF Live直播和问答环节,王峻也分享了自己的实践心得,以及Tungsten Fabric在企业云计算应用中的作用和表现。
基于Tungsten Fabric实现资源池互通
作为老牌云计算综合服务商和云计算运营商,华胜天成在服务客户云计算业务的过程中,开发了适应多云异构资源的统一管理平台,通过统一的云管平台,去对接OpenStack、K8s、vCenter、PowerVC、Ironic/xCAT、裸机、公有云等各自不同的资源池。
不过,在网络层面上,每类资源池其实都有各自的一套网络体系和插件。这对于云管平台来说,网络层就变得比较复杂,需要寻找统一网络管理解决方案,应对客户支持异构资源池的需求。同时,许多客户并不希望被厂商绑定,希望构建一个解耦的架构。
王峻介绍,华胜天成的云开发团队经过大量调研比较,在多云环境覆盖、混合资源池网络应用编排、SDN功能、设备支持友好度、开源架构、专业网络支持等方面综合考量,最终选择了Tungsten Fabric作为未来统一网络管理的技术方向。
从Tungsten Fabric的整体架构来看,不管是OpenStack的资源池,还是 k8s的资源,或者VMware的资源池,都通过Tungsten Fabric计算节点里边的vRouter来实现。
QA问答
在实际应用使用中,一般什么场景会出现这种多个异构资源?
从现在很多项目上来看,客户本身一直通过VMWARE使用虚拟化,后来又上了OpenStack,这种情况很多,但两边管理是割裂的。对于客户来说,一方面想要解耦,不希望绑定厂商;另一方面,比如互联网出口有内外两层防火墙,也需要做成异构的,在金融行业都是比较常见的。
原来用某厂的OpenStack方案,想用Tungsten Fabric的话是不是改动太大了?
改动应该比较大,我不知道您用的是他们SDN哪个版本?像厂商这种的,都是基于硬件下发相应配置,然后在边界上去做一个VLAN到VXLAN的一个转换。而 Tungsten Fabric主要是开源软件,可以看到,我们所有的vRouter全都是在宿主机上去装的,然后跟underlay的网络其实没什么关系,只要保证互通就行。
Vrouter替换了OVS,架构变化还是挺大的。
对。变化确实比较大,vRouter相当于都是路由的东西。比如说我在vCenter里面创建了一个虚机,然后接到了分布式交换机上,就算我们用的是相同的网络,Tungsten Fabric也会分配不同的VLAN tag,这就会导致所有的流量都会上到vRouter上去,不会在这个vSwitch上去做转发。
三个资源池的互通演示
接下来王峻进行了细致的演示,基于Tungsten Fabric在vmware中的实现(Tungsten Fabric和vCenter的集成),来进一步说明Tungsten Fabric的功能。
- Tungsten Fabric通过监控VM的创建的event,部署网络和安全策略;
- Tungsten Fabric会为每个VM分配vlan id,每一个VM都有一个独立的vlan id;
- vRouter一个口通过trunk连接到vCenter的分布式交换机,所有VM流量到交换机上打上相应tag,通过trunk发给vRouter,进入相应vrf,接下来处理方式和openstack和k8s就都一样了;
- vRouter另一个口通过标准端口组连接物理网卡,和其他的ESXi和KVM资源池建立MPLSoverUDP的隧道;
- 实际运行中,会在vRouter装一个vCenter的manager,去管理VLAN的tag。
在直播的演示环境中,包含了OpenStack,K8s和vCenter三个资源池。通过在vCenter上部署两台机器:一台为TF的Controller,一台为部署了vRouter 的ESXi,后者创建一个虚机,然后去和K8s和OpenStack上虚机的互通。
在三个资源池互通演示完成后,王峻还演示了数据流追踪,在vRouter上通过命令追踪数据流,查看了中间的转发过程和互通的实现。
QA问答
每个资源池都有一个vRouter,这个是谁提供的?
比如说我们在OpenStack有两个计算节点,这两个节点宿主机上面都会有相应的vRouter,去负责它的宿主机的转发。再看K8s里面的Pod,两个node上都有vRouter。对于vCenter来说,每个ESXi上都有vRouter。
刚才这些演示的操作,都在一台宿主机上完成的吗?
不是的,我们的OpenStack和K8s是嵌套虚拟化,在现有的虚拟化平台上又搭建了环境,vCenter这块也是用一个工作站去搭的,还有vCenter的环境,VMX出口的路由器是在一个vCenter的环境上。
Tungsten Fabric只能用于二层的网络,来连接几个资源池,是这样吗?
它其实本质上是三层的,你的每一个虚机上来,它都在vRouter上面,刚才我们也看了追踪路由,虚拟机接上来之后会给它分配相应的虚拟接口,划到相应的VRF里边,刚才看到 VRF里面的路由表,会生成一个32位的路由,本质上我觉得还是路由,但它是一个32位的路由。
服务链的功能及引流
除了异构资源池互通,王峻还分享了服务链的引流功能。
虚机一般是通过vRouter到网关,然后出去访问互联网,但为了保护虚机安全,可能还要在路径上增加一个防火墙。此时防火墙有可能是在OpenStack、KVM资源池里边,那就需要把流量引到防火墙,再从防火墙出来,然后再通过网关出去上网。
也就是说,当我们需要在路径上增加一些NFV相应的功能,比如防火墙或者检测的设备,然后把流量引过来,就要用到服务链的功能。
针对服务链引流的演示,首先在 K8s里边创建一个pod,然后接入到一个自定义的网络里边,通过Floating IP绑定给pod。
接下来,防火墙是在vCenter环境里的一个VSRX,有两个VN,通过RT,去把Floating IP网络和left网络(trust接口)打通,将流量引到防火墙上来。
最后,再通过right网络,和vmx边界打通,进而访问外网。
QA问答
中间有没有碰到过比较难解决的问题?跑通的过程中踩过什么坑?
部署的过程中还好,但因为vCenter文档比较少,我们团队这边找了很多东西,遇到些麻烦。其实vCenter这块来说,Tungsten Fabric的支持不是特别好,比如防火墙导入文件镜像的时候,只能选一个网卡,导入成功之后,要新添加网卡(需要三个接口:管理、left、right),这个时候Tungsten Fabric就不能识别到了,暂时只能手动解决。比如关联了新建的网络,或者原来关联的网路改了,不能同步更改,要手动更改,才能一致互通。
Tungsten Fabric管理裸机的方向是什么?
Tungsten Fabric目前不能完美地实现裸机的东西,我们裸机可以注册到OpenStack上面,然后去部署操作系统,完成后但就没有办法去切换到租户网络上去,还需要一些改进。
在实验环境中的underlay是在一个局域网吗?可以在广域网实现吗?
广域网其实有更好的方案,我们现在的环境,所有的出口都是通过一个VMX,这样的话不可能两个数据中心通过同一个出口出去,我觉得更合理的方案是,每个数据中心都会有一个出口,然后通过出口去把两边实现互通,隧道应该是可以互通的,我们下一阶段就要测这个场景。
在直播过程中,王峻也提到,Tungsten Fabric还有很多需要改进完善的地方,但作为华胜天成下一步的网络技术发展方向,团队会和大家一样,做好研究开发,在社区积极交流,探索如何更好地应用Tungsten Fabric,打造更高可用的异构混合云架构。
往期回顾
KK/建勋:多云、SDN,还有网工进化论
杨雨:Tungsten Fabric如何增强Kubernetes的网络性能
Frank Wu:当OpenStack遇到Tungsten Fabric