Tungsten Fabric如何支撑大规模云平台

Tungsten Fabric如何支撑大规模云平台,第1张

TungstenFabric如何支撑大规模云平台

作者:于洋

“MTU的值设置多少合适?现在最好的做法是设置为9000。”

“其实OpenFlow只是一个概念。从SDN这几年的发展来看,并没有成为事实标准。”

“SDN对大规模云平台的要求是:首先网络基础设施要可扩展;其次,控制器应该是可扩展的;第三,数据平面中没有集中的单点;第四,跨集群的扩展网络。”

“在基础架构上,如果用钨Fabric,只要用在生产环境中,选择IPCLOS架构就行了,不用折腾Fabric之类的二层架构。”

"钨网的本质是基于MPLSVPN的SDN."

"跨集群互联,或称云互联,有两种主要模式:控制器之间的互联和云网关之间的互联."

本文由TF中文社区技术代表于洋在TF中文社区“2020FirstMeetup”上的演讲整理而成,分享了钨织对大型云平台的支持。本文经主办方和发言人审核授权。

1月7日,TF中文社区“2020FirstMeetup”活动,钨织的技术R&D和一线用户,关注多云互联的从业者,开源SDN的爱好者们相互交流,提出建议。现场气氛热烈,精彩内容不断。gsten面料在中国的广泛应用越来越真实。

请在微信官方账号“TF华人社区”后台点击“会议活动-MeetingUp”,收集本次演讲及TF华人社区“2020第一次MeetingUp”信息。

今天的分享有些技术性。先来看看SDN的本质,再从钨织物架构上分析它为什么比OVS好,为什么能支持更大的场景。

我们先来看看云对网络的要求。首先是租户隔离,IaaS是多租户的,地址复用的需求可以通过VLAN的传统方式实现。此外,传统的VXLAN协议或OVS协议仅提供两层隔离的能力,而不提供三层隔离。只要你的机器绑定到外网IP或者公共路由层,这三层就可以互相通信。所以在租户隔离层面,也需要三层隔离。

其次,云需要网络来支持虚拟机跨机柜迁移。如果用VX的话,要跨过数据中心的第二层,不是说不能实现,但是除了网络要求,还有存储要求,难度较大。跨机柜迁移虚拟机最难的是什么?传统的网络架构是接入-汇聚-核心。路由器都是两层架构,机器可以在不同的机架上迁移。但是在一个数据中心,当云足够大的时候,两层的基础网络无法支撑整个云,不同的机架在不同的三层。此时,虚拟机的迁移要求不能更改IP地址。

此外,对网络功能和服务也有要求。云上有所有的共享资源池。如果我们以负载均衡为例,虚拟一个强大的硬件负载均衡给多个租户,或者切换到一个小型的负载均衡虚拟机实例给不同的租户?本文提出了支持IaaS运行的网络虚拟化和网络功能虚拟化的需求。

网络虚拟化是SDN使用的技术之一,主要使用覆盖技术。它使用了更多的标准技术,包括VXLAN,GRE,STT,GENEVE,以及钨织物使用的MPLSoverUDP和MPLSoverGRE。主要方式是在vTEP上将二层帧封装成三层,通过VXLAN隧道传输到对端。

这样做的好处是增加了租户的数量。传统的VLAN是4096,如果VXLAN是2的24次方;其次,底层传输基于IP网络,扩展性远大于二层网络,使得网络可以扩展,虚拟机可以在不同的物理网段上迁移。但也带来了一些工作。如何让两边的设备建立通信?第一是建立VXLAN隧道,这是SDN控制器应该做的事情,第二是双方交换MAC地址信息。

3月份的华人社区聚会将重点关注钨织物和K8s的整合。重量级嘉宾将分享钨织物和K8s的部署和实践,详细演示 *** 作流程,解答所有关于钨织物和K8s的问题。关注“TF华人社区”微信官方账号,在后台点击“会议活动-Meetup”即可领取。

有两个虚拟机,在两个不同的主机上,通过覆盖解决第2层通信的问题。例如,当ESX1想要与ESX2通信时,它在ping时首先发送ARP请求。对应的MAC地址是什么?对于VXLAN,必须有转发表。MAC2需要通过VTEP2的IP做一个包,然后传输给VTEP2,解封装后再传输给对应的机器。这个转发表怎么建?这就是SDN需要做的。

一个是自学。只要VM1发送一个ARP请求并到达vTEP网关,它就会泛洪该请求,并将其广播到与它建立了隧道的vTEP节点。看谁反馈的ARP回复,知道对端的IP地址,就可以建立转发表。但是这样会有很多消耗,ARP地址也会老化。一旦衰老,你需要重新学习。直观的经验是ping数据包需要很长时间。如果是大规模网络,频繁的泛洪会给网络的可靠性带来很大的挑战。

大多数情况下,SDN与云管理平台相结合。知道这个虚拟化服务器上有哪些虚拟机,提前将MAC地址表或转发表发送给vTEP设备。这是SDN控制平面应该做的。

在OpenvSwitch方案中,是通过数据库和RabbitMQ发出一个OVSDB命令,建立相应的流表,让虚拟机知道去哪里。钨织物也有相应的机制,后面会介绍。

数据平面的作用是根据转发表转发第二层的帧,并进行打包和解包。这里提一下MTU。这是第二层的值,帧的传输单位。为什么要设置得很大?首先,一些Hdr,UTPHdr,和VXLANHDR将被添加到VX局域网协议。如果不处理数据包,超过1500,网卡就不发这个帧了。在OpenStack早期,我们经常会遇到故障排除的MTU问题。后来的解决办法是通过DHCP的代理设置一个参数。如果网卡的MTU是1500,默认为14XX,会自动递减,这样虚拟机的数据帧就可以通过二层网卡。那么MTU的值多少合适呢?现在,最佳做法是将其设置为9000。在vTEP中,它是数据包和转发。根据实际测试,如果提高MTU值,吞吐量会有很大的提高。

我刚才说了SDN是做什么的,控制转发表和传输。接下来,我们来说说SDN的分类。按照流派,SDN可以分为软件和硬件。区别在于vTEP是在vRouter上还是在交换机的硬件转发上。看看包裹在哪里。一般来说,硬件是一个专有协议,如思科使用的OPFlex。也有很多不同的软件项目,其中钨织物是最产品化的一个。

按照控制器的分类,有集中式和分布式。集中式控制器包括OpenFlow、OVSDB和XMPP(一种聊天协议),由钨结构使用。我们可以把中子的开放vSwitch理解为OVSDB协议。中子通过RabbitMQ向特定的计算节点发送信令,计算节点的OVS代理通过OVSDB命令向OVSDB交换机添加相应的流表。

分布式控制器,如EVPN-VXLAN,使用MP-BGP。

你觉得什么样的控制器会比较好?目前有哪些使用OpenDaylight的项目?华为、华三等。都在用,他们控制器的SDN架构都是参考OpenFlow做的。有些厂商有自己的R&D能力,可以基于自己的硬件设备开发出相对完整的产品。然而,在开源社区中,很少看到成功的OpenDaylight项目。它只提供了一个框架和一些组件,基于开源项目无法快速运行。其实OpenFlow只是一个概念。从SDN这几年的发展来看,并没有成为事实标准。

取而代之的是OVSDB起来应用于中子软件的控制和开关的控制。比如早期的钨架构BMS实现,虚拟机要和裸机通信,裸机通过VLAN标签到TOR交换机,再通过VLAN到VXLAN的转换到虚拟网络。从VLAN到VXLAN的转换是通过OVSDB协议发布的。理论上,你的交换机只要支持OVSDB协议,就可以做BMS场景。

我自己更喜欢这个分布式控制器。因为集中式系统总会有瓶颈,不管是软件瓶颈还是性能瓶颈。EVPN-VXLAN的核心协议是MP-BGP,那么BGP的可扩展性如何?现在,看看运行BGP协议的互联网骨干网。

MP-BGP协议,控制器发送流表信息,然后通过BGP协议与之交互。在使用的时候,只要根据你对应的架构,设计对应BGP协议的扩展性就可以了。

至于钨Fabric,其实是集中式和分布式学校的融合,不仅采用集中式架构,还采用分布式控制器技术对外连接。

总结大型云平台对SDN的要求。首先,网络基础设施应该是可扩展的。如果采用两层架构,瓶颈在于基础设施,受限于交换机的端口数量。第2层交换机采用生成树协议。对于大型网络平台来说,如果运维水平差的话,连个环就危险了。

第二,控制器是可扩展的。无论是集中式还是分布式,它在架构上都必须是可伸缩的。至于能支持多少,那就是代码实现的问题了。

第三,在数据平面中没有集中的单点。说到SDN的实际应用,运维是一个很大的挑战。无论你是开发人员还是运营人员,最重要的是了解虚拟机之间以及虚拟机与外网之间的数据流。我应该使用什么命令来查看流量并排除故障,就像传统的网络运维如何捕捉数据包一样?就可扩展性而言,实现传统网络的SNAT、浮动IP等。,每个项目都有不同的实现方式。如果实现过程中没有单点,可以在架构上进行扩展。

第四,跨集群的扩展网络。无论架构如何扩展,总有一个极限。对于单个集群来说,总会达到一个瓶颈。如果要构建更大的集群,可以横向扩展多个集群,形成一个大的资源池。那么问题是网络是否需要互相通信。如果部署了高可用性服务,它如何跨集群进行互 *** 作?一些主流的高可用性组件需要跨两个集群进行互 *** 作,它们都需要SDN来支持这样的需求。

在基础架构上,如果用钨Fabric,只要用在生产环境中,选择IPCLOS架构就行了,不用折腾Fabric之类的两层架构。IPCLOS可以带来足够的可扩展性和高性能,包括无厂商锁定,建成后基本不需要移动。

Leaf是架顶式交换机,下面有子网。不同机架使用不同子网,上层通过三层网关路由进行通信。最重要的是三层叶棘如何相互作用。JuniperNetwork有一个文档介绍了IPCLOS白皮书,并在控制平面上比较了OSPF、ISIS和BGP。最好的建议是使用eBGP进行交互。

gstenfabric的本质是基于MPLSVPN的SDN。最初的VPN是解决多个站点之间的互联,控制平面是BGP协议。在数据中心,云与云之间的互联,一台物理机可以看成一个站点,不同的物理机可以通过VPN建立不同的隧道,这就是钨Fabric的本质。区别在于控制平面。钨结构采用集中式控制器,通过XMPP协议控制vRouter的路由表。

简单看一下钨织物的功能架构。在云支持上,包括VMware、OpenStack容器和BMS在网络功能上,二层网络,三层网络,DHCP,DNS,QoS,防火墙,LB等。都是支持的。

在部署的时候,控制器主要分为两种节点,一种是Analytics集群分析节点,主要用来可视化流程。另一种控制器节点用于控制网络,分为配置节点和控制节点。前者提供API,与中子等云管理平台连接。API创建一个pod,在配置中记录数据库,并将其转换为相应的IF-MAP。控制器通过XMPP命令在vRouter上创建相应的接口,然后将接口信息发送给不同的VRouter或外部网关和硬件设备。控制器的核心协议是BGP协议。

控制器是整个钨结构中的一个路由器反射器,在这里存储所有的二层接口、MAC接口信息和三层路由信息,并分发到不同的路由器。XMPP用于云端推送vRouter,BGP用于云端推送Gateway。

其中,NETCONF协议不是用来推送路由信息的,主要是用来和网络硬件设备分发一些配置。比如在钨架构中增加一个BMS服务器,连接钨架构管理的虚拟网络,钨架构中的设备管理器会通过NETCONF将VLAN接口的配置和分配发送给TOR交换机,通过NETCONF建立接口。然后钨架构控制器通过OVSDB协议或EVPN-VXLAN协议配置相应的VLAN-VXLAN网桥网关。如果虚拟网络需要扩展到网关,NETCONF也会帮助创建相应的路由实例配置。路由级别的信息交换仍然通过BGP实现。

3月份的华人社区聚会将重点关注钨织物和K8s的整合。重量级嘉宾将分享钨织物和K8s的部署和实践,详细演示 *** 作流程,解答所有关于钨织物和K8s的问题。关注“TF华人社区”微信官方账号,在后台点击“会议活动-Meetup”即可领取。

钨织用的数据库是最近8年才有的,比如Cassandra,ZooKeeper,RabbitMQ,都是分布式数据库。它们在架构上具有高可用性和可扩展性。它们可以扩展多少取决于代码实现。另一方面,中子本质上是一个数据库,记录所有的信息,分发所有的流量表。

钨结构的数据平面主要通过vRouter转发。vRouter代理在用户命名空间的进程安排控制器获取一些基于XMPP连接的信息,然后发送到内核的转发平面。这里提供了两层隔离和三层隔离的功能。如果同一个网络的虚拟机连接在同一个vRouter下,双方的通信就在这里完成。不同租户的网络虚拟机,连接不同的VRF和路由实例,无法通信。

VRouter内置了很多网络功能,比如DNS。钨结构的DNS将根据主机的DNS配置进行解析。如果遇到问题,可以检查主机的DNS。DHCP响应也在这里,但是中子不一样。有一个DHCP代理正在节点上运行。如果OVS大规模接收超过1500个接口,基本都会出现丢包,经常会出现问题。

安全性在OVS中通过与linuxbridge关联的iptables实现,而在vRouter中通过内置的ACL函数实现。网络策略是一个分布式防火墙。浮动IP也在vRouter做了一个NAT。

让我们在这里多谈谈Link-Local。它的场景是怎样的?作为云服务提供商,需要向客户提供NTP服务、ATP、YUM源等公共服务。如何让虚拟机访问虚拟网络中的公共服务?一种方法是将这些网络的路由打通,因为需要一个VTEP出口将公共路由通过云网关引入,这就带来了一个问题。所有的ATP流量和下载流量都要经过云网关,流量也就跟着过去了。钨Fabric提供链路本地模式,即169.254地址,在网络标准中只有一跳。在OpenStack虚拟机或AWS虚拟机中,通过169.254提供元数据服务。如果没有此路由,如果您在网关上做一层NAT,本地NAT将访问配置的链路本地映射,然后访问内部服务。

在没有增强的前提下,对中子的OVSVXLAN的性能进行了测量(仅MTU优化),最高性能为两千兆比特。而vRouter不用任何优化就能达到七八千兆的性能。当然也可以使用DPDK和智能网卡进行优化,或者使用SR-IOV的透明传输功能。

我们来看看钨织物的包交互。无论在同一个网段,还是在不同的网段,虚拟机之间的交互都是在vRouter级别转发的,不需要经过一个集中的网关。因此,虚拟机之间的数据交互不存在单点。

另一个重要的场景是SNAT。在OpenStack中,如果虚拟机连接到vRouter,它可以通过vRouter的SNAT功能访问外部网段。钨结构本身不提供SNAT,但它也实现了SNAT功能,并通过NS路由器(运行在计算节点上的IP表)转发SNAT。如果虚拟机要访问自己网关以外的网络,先去网关,转发,然后通过vRouter连接外网。这里NS路由器的创建需要OpenStacknova的调度器配合。

对于每个网络,都会有一个路由器来做转发。如果量太大,瓶颈可能在NS路由器,但不会影响其他网络。

只要不在云端,就可以称之为外网。走出去有两种方式:第一种是浮动IP。在vRouter中制作NAT,将NAT后的IP通过MPLSoverGRE的隧道释放到云网关的VRF中,以便与外部网络进行通信。

在外部互联的第二种情况下,如果要提供云服务,可以为不同的运营商制定不同的浮动IP。如果提供L3VPN或者L2VPN的专线接入服务,可以通过云网关接入不同的MPLS网络,然后将虚拟网络路由到对应的VRF,整个网络就连接起来了。这也是钨织物的强大之处。MPLSVPN与传统网络天然互联。

跨集群互联,或者说多云互联,主要有两种模式。

第一种是基于控制器之间的互联,通过在控制器之间建立EBGP连接来传递VPN、网络和接口的信息。这个方案被称为联盟。

两边的vRouter只有三层才能到达。例如,一端的B1需要访问另一端的B3,两端有不同的控制器和VPN。MPLSVPN有一个路由目标,可以同时导出和导入。路由表看到对方的路由,交换路由信息,从而建立二层或三层连接。联合的方案在控制器级实现,更适合同一区域、同一数据中心、连接相对紧密的情况。

第二种模式,通过云网关之间的互联,设置网络的不同vrf,建立云网关之间的EBGP邻居,手动配置不同RT导入或导出,实现跨云连接。需要注意的是,双方是不同的集群,IP地址管理也不同。分配地址时,必须避免IP地址重叠。

最后,如果对抗中子OVS,钨织物可以说是完全的赢家。

在网络的基础上,可以扩展钨织物。中子OVS目前只能使用两层网络,无论是集中式还是分布式,浮动IP下沉到计算节点级。当前组件中没有成熟的BGP方案,可以向边界网关发布浮动IP。OVSDVR和边界网关只能通过两层连接。

相比架构,钨Fabric可扩展,3个节点性能不够,可以扩展到5个节点。虽然中子OVS是高可用架构,数据库通过MySQLcluster高可用,API通过K8s高可用,但是计算逻辑不是分布式的,严重依赖RabbitMQ。如果采用DVR模式,每个计算节点将部署4个agent,这将带来更多的话题,对RabbitMQ的性能将是一个极大的挑战。只要有一个RabbitMQ宕机或者网络抖动,就会立即实施集群恢复机制,导致RabbitMQ很快死亡。

另外,OpenvSwitch在转发平面上的性能不如vRoutergstenfabric的网络功能更丰富,而中子的奥克塔维亚等原生LBaaS组件需要成熟。云方面钨架构基于MPLSVPN在与网络设备的交互方面,Neutrononly有ironic的组网通用Switc驱动,钨Fabric支持BGP、NETCONF、EVPN-VXLAN等。基于标准协议,涵盖了瞻博网络、思科、华为、锐捷等厂商的设备。

今天就分享到这里吧。谢谢大家!

请在微信官方账号“TF华人社区”后台点击“会议活动-MeetingUp”领取本次演讲及TF华人社区“2020第一次MeetingUp”信息。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/751515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存