有专家认为,在万物互联的未来网络世界,网络架构将发生进一步演化,如何解决可扩展性、移动性、安全性等挑战,考验着人们的智慧。
对此,Tungsten Fabric开源社区技术专家Tatsuya Naganawa就“开源SDN平台的可扩展性”问题进行了探讨。
Tatsuya多年来一直参与瞻博网络Contrail产品的研发,同时支持客户开展IaaS、NFVI、5G等方面的项目部署,具有丰富的实践经验。
社区连载文章“Tungsten Fabric入门宝典”和“Tungsten Fabric知识库” 即由Tatsuya Naganawa编写。
【视频回放】 https://v.qq.com/x/page/k3138tyukxl.html
【pdf文档下载】 https://tungstenfabric.org.cn/assets/uploads/files/tungstenfabric-for-scalabiilty-deployment.pdf
回顾Tungsten Fabric的技术发展,Tatsuya提到,最初Tungsten Fabric只是一个支持MPLS over IP的软件路由器,随着协议标准和数据平面技术的发展,Tungsten Fabric能够支持L2/L3 VXLAN,并可作为具有EVPN/VXLAN的VTEP软件来使用,带来了更多的可扩展性。
通过核心组件vRouter,Tungsten Fabric实际具有很多增加可扩展性的功能,Tatsuya主要介绍了其中三个关键功能:
1、控制器之间的两个XMPP连接和iBGP
当vRouter首先启动时,将基于XMPP连接从控制器接收来往其它虚拟机的路由。
在有多个控制器可用时,控制器将基于它们之间的iBGP连接交换到其它虚拟机的路由,以同步它们之间的所有路由,从vRouter的视角可看作是active/active的高可用模式。
因此对于vRouters,不需要连接到所有控制器节点,并且就其性质而言,即使有更多的控制器节点可用,vRouter也会仅建立两个XMPP连接。
XMPP的keepalive数据包会消耗大量的CPU周期,如果只使用1个控制器,将16个CPU节点用作控制器节点,则它可以服务有限数量的vRouter,例如500个。如果再添加更多的控制节点(例如15个),CPU使用率将大大降低。
2、路由目标过滤
由于控制进程之间具有iBGP,乍一看,好像每个控制进程在内部具有相同的前缀。实际情况并非如此,每个控制进程的前缀都略有不同,并且它们的路由表彼此不匹配。
为了理解这种行为,路由目标是一个关键概念,它在内部用virtual-network号标记每个前缀,以形成每个虚拟网络中每个前缀的完整表集,也就是VPNV4表。
当在它们之间建立iBGP时,控制进程首先协商它们当前具有的路由目标,然后请求其它控制进程仅发送VPNV4表。
因此,即使集群本身具有大量控件和vRouter,每个控件和vRouter也只需要知道该表的一部分,这样可减少RIB表的大小和所需的物理内存。
此外,此iBGP行为还允许将流量直接联合到其它的Tungsten Fabric集群,因为如果它具有相同的路由目标,则是否在相同的集群这一点并没有关系。
路由目标过滤功能允许在多个Tungsten Fabric集群之间形成更大的VPNV4表,并导入和导出前缀,这是本地vRouter和控制进程所需要的。
3、ERM-VPN
ERM-VPN是Tungsten Fabric的一个独特功能,主要是为了面向大量vRouter优化BUM复制。
由于BUM需要复制到许多节点,因此即使需要从一个vRouter发送少量流量,最终也可能是很大的流量,如果有1000个节点,那么它就需要发送1000次。
从EVPN标准来看,一种选择是使用入口复制(ingress-replication),这基本上意味着情况没变化,vRouter需要将BUM流量发送到其它节点1000次,这可能导致一个特定vRouter上的CPU峰值。
为了克服此问题,Tungsten Fabric使用了ERM-VPN功能。ERM-VPN的一个要点是首先在一个控制进程中形成BUM树,然后在控制进程之间通过iBGP来缝合一些边缘vRouter节点,以形成更大的BUM树,其中包括所有vRouter。
由于每个vRouter都包含在该BUM树中,因此当它们需要转发BUM数据包时,将仅发送BUM数据包到该BUM树直接连接的vRouter。接收到BUM数据包的vRouters会将该数据包发送到BUM树中的其它节点,最终将发送到所有vRouter,以满足BUM复制要求。
有了ERM-VPN,即使需要大量的BUM复制也不是太大的问题,因此vRouter可以作为VTEP控制器的良好来源,尤其是需要支持大量的vRouter和租户组合的时候。
作为说明,上图描述了将3个vRouter连接到control1和control3时将形成的BUM树。
它首先在一个特定的控制器中形成树,创建了两组3个节点的树,一个是vRouter11、vRouter12、vRouter13,另一个是vRouter21、vRouter22、vRouter23。
之后,ERM-VPN识别该树中的最后一个路由器ID,并通过连接它们形成更大的BUM树。
图中vRouter13和vRouter23已连接,同时形成了一个更大的BUM树,包括了所有vRouter。
针对上述三个功能,Tatsuya尝试了几种设置进行测验,包括具有15个控制节点的1000个vRouter节点,以及具有5个控制节点的2000个vRouter节点,都证明了Tungsten Fabric具有实现大规模软件VTEP集群的良好特性。
Tatsuya在“控制平面可扩展性”及“ERM-VPN”方面的更多讨论,欢迎关注“Tungsten Fabric入门宝典”和“Tungsten Fabric知识库” 两个社区连载系列文章。
开源是通向未来网络的一把钥匙。Tungsten Fabric作为开源SDN的代表,正积极依靠社区的力量,以“云原生”为技术方向,探索未来网络的边界和解决方法。
欢迎大家加入TF中文社区,了解开源SDN最新信息,参与“未来网络”超级工程的建设。