DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开
DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开

Tungsten Fabric:连接CMP的金钥匙

“我们找了差不多10个SDN技术,从商用的到开源的,再到国产小范围应用的。”

“对比所有的Portal去看,不管是OpenStack还是原生的K8s,基本都是以运维视角出发的,不是一个对外提供业务的case。”

“K8s不是一个PaaS平台,只是解决了一个docker管理的问题。”

“在云网络环境里,可能一个租户下面无数虚拟机,里面跑了无数不同的应用方式,所有流的走向又是乱七八糟的。”

“OpenShift虽然是有OVS,能不能和OpenStack互通是存疑的,最后验证下来也是不能通的,完全是两个体系。”

“进入CMP的时代,如果一个应用场景在15分钟内开不起来的话,那它就失败了,更不要说借助第三方外力。”

本文整理自上海数讯CIO钱誉在TF中文社区“2020第一次Meetup”上的演讲,分享早期云网络实际应用和二次开发过程中的经验教训。XXX作为合作方,经主办方和演讲者审阅授权发布。

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

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

上海数讯CIO钱誉

上海数讯是一家以传统数据中心业务为主的公司,为什么会转到云计算呢?在2011年以后,整个数据中心行业越来越像房地产了,数据中心这种业务可复制性比较强,竞争激烈。到2013年的时候,有一些新的技术出来,包括OpenStack的爆发式增长,于是2014年开始决定去做云计算这个事情。

当初的定义是多平台,从实际应用场景来看的话,不是说虚拟机和容器哪个好,它们两个应用在不同的场景,没有谁替代谁的问题,要做两个平台的时候,又碰到一个很尴尬的问题,虚拟机的网络和容器的网络,完全是两回事。

中间我们找了差不多10个SDN技术,从商用的到开源的,再到国产小范围应用的,那个时候Tungsten Fabric还叫OpenContrail,当时的版本还只支持OpenStack。

CMP是这几年提出来的,但刚开始做的时候,已经有CMP的理念了。

对比所有的Portal去看,不管是OpenStack还是原生的K8s,基本都是以运维视角出发的,不是一个对外提供业务的一个case。所以从使用者来看的话,是一件非常痛苦的事情,当时我们就决定把两个平台统一,在Web上做一个完整的、基于用户自己界面的平台。

在那个时候,确定了数讯云平台和SDN的方向,当时主要是OpenStack和K8s。我们发现一个问题,K8s不是一个PaaS平台,只是解决了一个docker管理的问题。如果是小环境的话,用不用都无所谓,不一定非要搞SDN,包括OpenStack也一样,如果业务环境不是过于复杂的话,其实跑传统的VLAN,只要控制量,没有广播风暴,没有任何问题。

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

但如果你的业务场景非常复杂,以前收纳在虚拟机,现在收纳在容器里,这种业务的出现,会对网络造成非常大的困境,不可能对每个线的业务去做策略。一旦出现业务迁移或trouble shooting的时候,后端运维人员是崩溃的,没法调。以前写个PBR,写个静态路由,最多是挂几个交换机路由。在云网络环境里完全不是这样,可能一个租户下面无数虚拟机,里面跑了无数不同的应用方式,所有流的走向又是乱七八糟的,这种情况下,如果用传统的方式,基本就不用做了,因为看不到头。所以要采用SDN的方式。

Tungsten Fabric的确非常优秀,但也有一些问题存在,完全支持OVSDB的交换机,对Tungsten Fabric的兼容会更好一点。也不是说Openflow不行,用流表的方式也能做,但那就比较折腾了。

数讯的底层Port,就是底层通过Tungsten Fabric的SDN技术支持线。当时2015年OpenContrail时代的时候,K8s刚开放,我们提出要采用基于容器的方式,因为虚拟机的方式对运维、扩容、迁移有弊端的话,后面业务是很难有保证的。那个时候OpenStack也比较早期,基本上都是自己统一部署,和Juniper networks联合开发的时候,把OpenContrail放在一起部署。

另外,数讯作为数据中心运营商,提供的是传统的hosting,大家都在考虑上云的问题。在云计算中我们已经使用了SDN技术,非传统VLAN的方式,那么用户上云的时候怎么接呢,不可能再开个VLAN做个什么映射,比较困难。

还有,怎么把用户实际在机房里的一堆业务场景,跟云计算的overlay网络去连接,而不是以某个独立的服务去试。

这里就解决了VLAN映射的问题,不可能为用户提供专线,还要改变他的VLAN网络,这是不现实的,所以在这上面做了大量的二次开发。包括OpenStack和OpenShift,开源社区的版本都是单节点,到真正地应用到场景的话,最起码要保证多节点,社区版的东西要落到生产环境,包括和Tungsten Fabric对接,还是有很多二次开发要做。

这是在开发和调研中碰到的实际用例的问题,有些是我们自己的,有些是用户应用场景中的。

Neutron稳定性比较差,我们曾经实测过,开到2500个虚拟机会出现莫名其妙的抖动,导致全部崩溃,对于原生的Neutron,我们还是比较谨慎的。

如果K8s只是实现单一业务,基本原生的Flannel或Calico都能解决,Calico对于多数据中心多任务的方式是不提供支持的,Calico是目前K8s开源环境使用最多的。

OpenShift虽然是有OVS,能不能和OpenStack互通是存疑的,最后验证下来也是不能通的,完全是两个体系。

另外VNF和CNF是否能够共存,也是未知。为什么虚拟机要去访问容器?在我们看来极其不合理,但在金融行业或电商行业,某些业务可以跑虚拟机,某些已经买了商业软件,或者有些用户自己有开发能力,已经把一部分东西放到容器里了。

以前我们在虚拟机开一堆负载均衡,但在容器里直接一个Node无数port就解决了,包括很多注册机机制不能portal,总不能把网络做分段再做代理转接,他们觉得非常难,看有没有可能解决这个问题。我们最后试错下来,在最近解决了VNF和CNF在OpenStack虚拟机层面的互通问题,要用到管理网去做互通。

虚拟机网络与容器网络二层互访,在Tungsten Fabric 4.0版本的时候是基于标签的方式,能用,但是用起来不方便。到现在5.1版本的时候,整个Portal也没有把这个拉出来作为一个选项,每次都要去翻虚拟机和容器去做对应,这个操作比较麻烦,我们也试过做二次开发,比较累。如果有可能的话,把这两个东西放在一起,管理起来就会非常方便。

软件定义的FW、LB如何在跨场景中业务落地?大部分用户场景里,都是用商业软件,各种品牌都有,自己本身提供image,放到虚拟机都有自己的feature,怎么和Tungsten Fabric互通,肯定是要做二次开发的,但目前看来也就Tungsten Fabric有可能去做,其它的比较困难。

VPC的问题,在我们的理解里,Tungsten Fabric的VPC可以理解为现在国内SDN web更合理,两段VPN建立隧道。至于你要管到公有云的虚拟机,好像不太可能。即使是给到你,可能最后也会放弃,光是版本迭代问题就没法解决。没人做这样的事情。好处是有Portal,能够看到整个业务的实际情况。

吐槽一下,Tungsten Fabric确实解决了OpenStack网络拓展和稳定性问题,但对网卡有点挑,在一些特殊的应用场景里,比如跑VDI的IDP协议,我们发现Intel和Broadcom的网卡不那么友善。

相比OpenStack,目前为止Tungsten Fabric和OpenShift的对接难度更大一点。OpenShift开源的OKD本身就有一些问题,另外只是把Tungsten Fabric和OpenShift或K8s装在一起,简单应用看不出问题,但如果跑几个业务链,比如标签、应用、路由网关、业务编排等,整个流程走下去会有问题。

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

的确我们看下来,Tungsten Fabric就像文档上面所说的,对OpenShift的支持,还是比其它开源软件或商业软件要好很多,至少还能看到用Tungsten Fabric做二次开发的曙光。

关于服务链,如果能够和端口去做匹配,可能更好一点,不要干预整条网络的属性,在某些特定场景里面会比较复杂。

多云环境我们目前适配下来,只有AWS和Azure是可以的,不过还是根据实际的应用场景出发,也没必要把所有的公有云平台对接一遍,业务也没有那么复杂。

支持DPDK及smartNIC我们实测过,在OpenStack默认的kernel环境下,达到安全厂商他们的软件标准,基本达不到,只有使用DPDK的方式才能达到标称值,但DPDK又是Intel的专属,在实际场景中碰到了一些问题,有的应用能跑起来,有的就不行。所以,要使用DPDK方式的话,还是要根据自己的使用场景去看一下。

Tungsten Fabric提供类似REST的API,所以即使自己要做CMP的话,去调用后端的参数,相对还是比较容易的,但针对API的文档有点乱。

到现在,我们做云计算是非常认真的,从2014年到现在一直在不断打磨自己的平台,所有的视角都是以用户实例去呈现,包括把Tungsten Fabric后端的API腾挪到前端,针对某个租户他就能根据自己的策略去调。进入CMP的时代,如果一个应用场景在15分钟内开不起来的话,那它就失败了,更不要说借助第三方外力。把很多权限都开放给用户。

我们的PaaS后端是OpenShift,基于PaaS平台的所有业务都在前端重做,包括Tungsten Fabric针对OpenShift的功能,都放在前端,包括Tungsten Fabric内部都可以监控,不用非常原始的SNMP的方式做采集,完全不需要。

目前为止,数讯的平台做到了这个程度。选择Tungsten Fabric是因为协议相对标准,BGP VPN就能解决,我比较抵触私有协议,某些友商总想搞个大一统,最后也不太可能,还是开放式大家比较能接受。

谈到VXLAN的问题,实际用下来,如果用kernel方式,如果量很大损耗还是很大,特别针对VXLAN没有做特别优化的交换机或网卡,直接性能损失大概在30%左右。

从整个Tungsten Fabric去看的话,基本上把不同的平台、不同的网络特性都统一管理起来了,只是容器和虚拟机还是有一定手动的工作量,如果Tungsten Fabric把这个问题解决掉会更好。另外,Tungsten Fabric在OpenStack和OpenShift认证机制上不太一致。

这几年比较痛苦的是支持比较少,不管开源社区还是官方,主要侧重于安装,有一部分trouble shooting,但针对于实际的应用场景部署相对比较缺失。做云计算不是开虚拟机,用不用OpenStack无所谓,KVM就解决了。所以说云计算不是虚拟化,它有一定的业务逻辑在里面,意味着平台要能对实际落地用户的业务提供很多支持。

我们应用Tungsten Fabric比较早,从3.2版本就开始搞,4.0版本正式对接。我相信如果有自己的业务逻辑,有一定的开发能力,基于Tungsten Fabric能打造出属于自己的好的产品,Tungsten Fabric可编程型比较强,通用性也比较强。满分100的话,我打80分,剩下的20分是支持方面。

以上,我从实际的应用场景,到开发当中遇到的各种情况,抛出了一些问题。

非常感谢大家!


本文作者:钱誉

未经允许不得转载:DOIT » Tungsten Fabric:连接CMP的金钥匙