Forwarding (1)

好久没有更新文章了,因为公司在憋大招。上周Big Cloud Fabric 3.0终于登场,笔者这才得空。先在这里做三个广告:

1. Big Cloud Fabric 3.0在历时两年的开发之后,终于问世。笔者有幸参与了整个产品的设计,开发和测试。产品非常扎实,与openstack和vmware无缝结合。欢迎大家上手一试

2. 伴随产品的发布,我们还发布了新的定价方式 elastic SDN pricing, 这种定价方式开了两个先例:首先,网络设备的软件和硬件价格全面公开,这还是行业内的第一次。第二,弹性收费终于开始进入到了数据中心的日常运营。

3. 笔者今年十月份会回国一个月,主要在上海北京两地转悠,希望有机会和同行交流,欢迎大家私信。

广告做完,开始正文。如何在SDN网络中转发数据包是一个太大的话题,笔者想借两到三篇文章聊一聊在一个多租户数据中心里一个数据包是如何转发的,笔者见识有限,纯粹盲人摸象,欢迎大家查漏补缺。

笔者首先要科普一下现在被绝大多数数据中心解决方案所采用的多租户模型。(1) 一个租户(tenant)可以创建一个或者多个logical router,(2) 这个租户还可以创建多个subnet,一个subnet可以接入到某个logical router上,(3) 一个subnet内的通信往往在2层,而同一个logical router上两个subnet之间的通信则需要logical router作为default gateway进行转发。(4) 如果两个subnet接入到不同的logical router,它们之间的通信有两种方式:a.将两个logical router以某种方式相连,并在每个logical router上配置相应的路由。b. 借助NAT或者floating IP,让logical router进行IP地址转换。

目前绝大多数多租户数据中心解决方案都在向以上的用户模型靠拢,原因也很显然:这几乎是最简单的网络模型了,简单到任何一个数据中心的租户都不应该对该模型产生丝毫的理解困难。但是这种简洁的用户模型,往往意味着复杂的实现,最大的困难缘于在这个模型中逻辑网络和物理网络是完全无关的,也就是说我们要找到一个方法将逻辑网络中的各个要素映射到物理网络上,理解了这个映射也就为理解数据包转发奠定了基础。

就笔者有限的知识储备,目前工业界从逻辑网络到物理网络的映射方案分两大类:overlay和fabric。笔者这里先梳理一下那些构成逻辑网络的最基本要素,以及这些要素在两类方案中是如何映射到物理网络上的。

Port

一个port是指一个bare metal server或者VM的网卡与网络相连接的地方,从逻辑上讲它只有四个最关键的属性:tenant, network, IP和mac。租户其实并不在乎这个port究竟在物理网络的什么位置。但所有SDN网络解决方案却需要清楚的知道如何把这个逻辑上的port映射到物理物理网络上:这个port究竟在哪个OVS上,或者在哪台物理交换机上?是否有vlan tag?有时候人们还会在port的基础之上采用一些冗余备份的技术(比如bond), 这样在逻辑port向物理port映射时,就需要追加更多的信息。如果大家在玩儿openstack,会发现neutron数据库里的port table是最复杂的一张表,原因就在于它将关于一个port逻辑上和物理上的所有信息都放在了一起。

Subnet

在传统的数据中心里,subnet和物理网络是严格耦合的:处于同一个rack的port会被划分到同一个subnet里。但在多租户的数据中心里,subnet与物理网络完全解耦合:属于同一个subnet的两个port无论出现在物理网络的任何位置,它们都应该能够直接在2层通信。这是多租户数据中心最特别的地方,也是overlay和fabric两类解决方案的根本区别所在。overlay方案采用隧道技术(比如vxlan, GRE),fabric则将整个网络当作一台distributed switch(比如Big Cloud Fabric)。两类方案的技术细节笔者会在下篇文章中详细分析。

Router

多个subnet的互联互通是需要router作为default gateway的。对于overlay方案而言,逻辑上的router和物理上的router是简单的一对一映射,这个router往往需要多个功能:隧道的封装/解封装,路由,NAT以及floating IP。这也就是为什么绝大多数的overlay方案往往都需要采购一些功能齐全并且带宽足够的router做为解决方案的一部分。而fabric方案,是把整个网络当作一个distributed router,网络当中的各个switch都可以完成路由,NAT以及floating IP的功能。两类方案的技术细节同样会在之后的文章中详细分析。

以上只是初步涉及了port,subnet和router三个最关键的网络要素在overlay和fabric两种解决方案中是如何从逻辑概念映射到物理概念的。对于那些更复杂的要素,笔者目前只有些零散的观察和想法,等有系统的观点之后会陆续分享,这里先把它们写下来以防忘掉:L2 service insertion, L3 service insertion, L4-L7 service insertion, multicast, dynamic routing protocol。

在开始后续文章之前,笔者想先提一句:笔者坚定的认为fabric方案是技术上更优秀的选择,因为它在三个方面完胜overlay:第一,价格,请参见笔者的第四篇文章。第二,性能。分布式的硬件转发和路由最大程度的避免了overlay方案中由于软件封装,解封装以及路由带来的性能瓶颈。笔者知道有很多兄弟会在这点上持反对意见,于是列出几个事实先:cisco和vmware都推出了在TOR交换机上进行隧道封装和解封装的方案,opencontrail全弃用了OVS而开发了自己的virtual switch来提高性能,这其中的原因不言自明。第三,在overlay方案中,troubleshooting简直是一场灾难。首先,overlay网络和物理网络是分别管理的,任何一个网络故障都需要两方面的工程狮联合调试。其次,即便联合调试,一旦一个数据包被封装好进入物理网络,我们便再也无法识别这个数据包了,除非在物理网络上花大价钱进行Deep Packet Inspection。

本文系BigSwitch工程师吴鑫授权发布,如需转载请注明出处和链接


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/17392.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于15-08-24
0