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

  • 来源: 上海热线   2020-02-24/19:09 访问量:
  • 作者:杨雨

    “MTU的值设置多少合适呢?现在最佳实践是设置到9000。”

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

    “大规模云平台对SDN的要求,第一是网络基础架构要可扩展,第二是控制器可扩展,第三是数据平面无集中式单点,第四是跨集群的扩展网络。”

    “在基础架构上,如果用Tungsten Fabric,只要是用于生产环境的话,选择IP CLOS架构就行,没必要再去折腾Fabric等二层架构。”

    “Tungsten Fabric的本质是基于MPLS VPN的SDN。”

    “跨集群的互联,或者叫多云互联,主要有两种模式:基于控制器之间的互联,基于Cloud Gateway之间的互联。”

    本文整理自TF中文社区技术代表杨雨在TF中文社区“2020第一次Meetup”上的演讲,分享Tungsten Fabric对大规模云平台的支持。本文已经主办方和演讲者审阅授权发布。

    在TF中文社区1月7日的“2020第一次Meetup”活动上,来自Tungsten Fabric技术研发和一线使用者、关注多云互联的从业者、开源SDN的爱好者们互相切磋、支招,现场气氛热烈,精彩内容不断。Tungsten Fabric在中国的广泛应用正在越来越真切地走来。

    本次演讲及TF中文社区“2020第一次Meetup”活动资料,请在“TF中文社区”公众号后台点击“会议活动-Meetup”领取。

    今天的分享偏技术一些,首先我们来看SDN的本质,然后从Tungsten Fabric架构上解析为什么比OVS更好,为什么能支撑更大的场景。

    先来看云对网络的要求。首先是租户隔离,IaaS就是多租户,对于地址重用的要求,以VLAN的传统方式也是可以实现的。另外,传统VXLAN的协议或OVS的协议,只提供二层隔离的能力,没有三层隔离的能力,只要你的机器绑到外网IP,或者绑到公共的路由层面上,三层是可以互通的,所以说在租户隔离的层面,也有三层隔离的需求。

    其次,云需要网络支持虚拟机跨机柜的迁移。VXLAN的话还要跨数据中心大二层,不是说不可以实现,但除了网络要求,还有存储的要求,比较难。虚拟机跨机柜的迁移,最难的是什么?传统网络架构,就是接入-汇聚-核心,路由器以下都是二层架构,机器可以在不同机架上迁移,但一个数据中心,云足够大的时候,二层基础网络是支撑不了整个云的,不同机架在不同三层里面,这时虚拟机做迁移就要要求IP地址不能变。

    另外,还有网络功能和服务的要求。在云上面都是共享的资源池,如果以负载均衡为例,将一个性能强大的硬件负载均衡虚拟化给多个租户使用,还是切换成小的负载均衡虚拟机实例给不同租户使用?这里就提出网络虚拟化和网络功能虚拟化的需求,来支撑IaaS的运行。

    网络虚拟化,主要应用的是Overlay的技术,是SDN用到的其中一个技术,用的比较多、比较标准的技术,包括VXLAN、GRE、STT、GENEVE,以及Tungsten Fabric用到的MPLSoverUDP和MPLSoverGRE,主要的方式,是把二层的帧在vTEP上进行三层封装,通过VXLAN隧道传输到对端。

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

    TF中文社区3月Meetup活动,将聚焦Tungsten Fabric与K8s的集成,由重量级嘉宾分享Tungsten Fabric与K8s的部署和实践,详细演示操作过程,并解答关于Tungsten Fabric和K8s的一切问题。关注“TF中文社区”公众号,后台点击“会议活动-Meetup”领取。

    有两个VM,在两个不同的主机上,就是通过Overlay来解决二层通信问题的。比如ESX1要和ESX2通信,ping的时候首先发ARP请求,那对应的MAC地址是多少?对于VXLAN来说就要有一张转发表,MAC2需要通过VTEP2的IP,去做一个封包,再传输到VTEP2,解封装后,再传输到相应的机器里去。怎么建立这个转发表?就是SDN需要去做的事情。

    一种是自学习,只要VM1发了一个ARP请求,到达vTEP网关,它就会去洪泛请求,广播到和它建立隧道的vTEP节点上去,看谁反馈ARP reply,就知道对端的IP地址,可以建立一个转发表。但这样会有很多消耗,ARP地址也有老化的过程,一旦老化,就需要重新去学,直观体验是ping包时间会很长。如果是大规模的网络,频繁洪泛,会对网络可靠性带来很大的挑战。

    SDN大部分情况下是和云管平台做结合,知道在这个虚拟化服务器上,有哪些虚拟机,提前把MAC地址表或转发表下发到vTEP设备上,这就是SDN控制平面要做的事情。

    在Open vSwitch这个方案里面,就是通过数据库和RabbitMQ,去下发一个OVSDB的命令,建立相应的流表,让虚拟机知道要往哪儿走。Tungsten Fabric也有相应的机制,后面会介绍。

    数据平面的作用,就是根据转发表,对二层的帧进行转发,另外进行封包和解包。这里提一下MTU,这是这个二层的值,帧的transfer unit,为什么要设置很大?首先VXLAN协议会增加一些Hdr,UTP的Hdr,VXLAN的Hdr,封包的时候如果不做处理的话会超过1500,网卡会不发这个帧。早期做OpenStack经常会遇到trouble shooting的MTU问题,后来解决方案是通过DHCP的Agenter,设置了一个参数,如果网卡MTU是1500,就默认为14XX,自动降低,这样虚拟机的数据帧才能通过二层网卡。那么MTU的值设置多少合适呢?现在最佳实践是设置到9000。在vTEP这一块就是封包和转发,根据实际测试,如果增加MTU值,对吞吐量有很大的提高。

    刚才说了SDN做的事情,控制下发转发表和传输,接下来说一下SDN的分类。按流派来区分,SDN可分为软件和硬件,区别就是vTEP是在vRouter上,还是在交换机的硬件转发上,看解封包在哪里。硬件一般都是私有协议,像Cisco用的就是OPFlex。软件也有很多不同的项目,其中Tungsten Fabric是最产品化的一个。

    按照控制器分类,有集中式和分布式。集中式的控制器有OpenFlow、OVSDB,以及Tungsten Fabric使用XMPP(一个聊天的协议)。我们可以把Neutron的Open vSwitch理解为OVSDB协议,Neutron是通过RabbitMQ把信令下发到具体的计算节点,计算节点的OVS Agent通过OVSDB的命令,把相应的流表增加到OVSDB交换机。

    分布式的控制器,比如EVPN-VXLAN,就是使用了MP-BGP。

    大家觉得哪种形式的控制器会更好一点呢?目前用OpenDaylight的项目有哪些?华为,华三等都在用,其控制器的SDN架构就是参照OpenFlow来做的。有些厂商自己有研发能力,基于自身的硬件设备,可以开发一个比较完善的产品。但在开源社区,很少看到一个成功的OpenDaylight项目,只是提供了一个框架和一些组件,不能很快基于开源项目run起来。其实OpenFlow只是一个概念,从这几年SDN的发展来看,它并没有成为一个事实的标准。

    反而是OVSDB起来了,应用在Neutron软件的控制,还有交换机的控制上。比如Tungsten Fabric早期的BMS实现,虚拟机要和裸机通信,裸机通过VLAN TAG,上到TOR交换机,再通过VLAN到VXLAN的转换,到达虚拟网络。其中VLAN到VXLAN的转换,就是通过OVSDB协议下发的。你的交换机,理论上只要支持OVSDB协议,就可以做BMS场景。

    我自己更倾向于这种分布式的控制器。因为集中式的永远会有瓶颈,无论是软件瓶颈,还是性能瓶颈。而EVPN-VXLAN的核心协议是MP-BGP,BGP的扩展性有多大?看看现在Internet骨干网,跑的就是BGP协议。

    MP-BGP的协议,通过控制器下发流表信息,再通过BGP协议去交互,使用的时候只要针对你的相应架构,去做相应BGP协议的扩展性设计就可以。

    针对Tungsten Fabric来说,其实是集中式和分布式两种流派的融合,既用到集中式的架构,在对外的连接上,又采用了分布式控制器的技术。

    总结大规模云平台对SDN的要求,第一是网络基础架构要可扩展。如果采用二层架构,瓶颈就是在基础架构上,受限于交换机的端口数,二层交换机采用生成树协议,对于大规模网络平台,如果运维水平较差,接出一个环路出来,就很危险。

    第二,控制器是可扩展的。无论集中式还是分布式,在架构上一定是可扩展的,至于能支持多大的量,就是代码实现的问题了。

    第三,数据平面无集中式单点。谈到SDN的实际应用,运维是一个比较大的挑战,无论是做开发还是做运维出身的人,最重要的是理解虚拟机之间,虚拟机到外网之间,数据流量是怎样的?应该通过什么命令去看这些流量,去trouble shooting,就像以前传统网络运维怎么去抓包一样。对于扩展性来说,要实现传统网络的SNAT、floating IP等,每个项目都有不同的实现方式,实现过程中没有单点的话,在架构上就是可以扩展的。

    第四,跨集群的扩展网络。架构上无论怎样扩展,总是有极限的,对于一个单集群来说,总会到达一个瓶颈。如果要建一个更大的集群,可以横向扩展多个集群出来,形成一个大的资源池。那么面临的问题是,网络是否需要互通。如果部署一个高可用业务,跨集群的情况如何做互通,主流的一些高可用组件,需要跨两个集群二层互通,都需要SDN去支持这样的需求。

    在基础架构上,如果用Tungsten Fabric,只要是用于生产环境的话,选择IP CLOS架构就行,没必要再去折腾Fabric等二层架构。IP CLOS可以带来足够的扩展性和高性能,包括没有供应商锁定,建完以后基本不需要再动。

    上一页 1 2下一页

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多