SDN及云计算平台中的网络性能优化
你知道吗?当你部署IaaS云计算平台时,就已经在应用SDN了。你知道吗?云计算平台可以在vSwitch和physical Switch之间无缝切换。你知道吗?当前的云计算平台的网络部分有很大的优化空间。本文就带你了解这一切。
一、没有SDN,就没有云计算网络
SDN起源于校园网络,发扬光大于数据中心。但现在看来很多人对后一句话并没有真正理解,如果你不服气,你能回答我这个问题吗:为什么说SDN很适合数据中心?我相信很多人对此都不甚了解。我这么说有一个依据,因为工作的关系,我跟国内不少做云平台的技术和管理人员聊过,包括提供公有云、私有云服务的公司以及企业内部私有云网络的研发和运维部门 的员工,有很多人跟我说过这样一句话:我们目前还没有开始使用SDN,但正在研究,也许以后会考虑吧。这句话暴露了当前很多从事云计算网络研发和运维的技术人员,对SDN在云计算网络中的应用并不清楚。
实际上,当你的数据中心在部署云计算平台(如OpenStack)时,就已在应用SDN了。先来看看OpenStack的网络组件Neutron的整体架构(如图1所示)。
这个架构,逻辑上可以分为三个部分。最上面的一部分是OpenStack的控制平台,它通过用户操作直接或者间接向网络组件Neutron发送标准的命令。 第二层是Neutron组件,它通常是位于一个独立的控制节点上(一台服务器),它有一套标准的API对应上层应用发给它的每个命令,这些API包括 create_network、create_port、create_subnet等创建多租户网络以及创建Firewall、Load Balancer等各种业务的API。这套API从SDN的架构来看属于北向接口。在Neutron组件内部有很多个不同的插件(plugin),这些插 件大多数都是vSwitch插件,例如OVS、Linux Bridge和OpenFlow Controller等,也有部分硬件交换机插件,目前已经存在的包括Cisco、Arista和Mellanox,相信后面还会有公司会提交。用户可以 选择自己的网络使用哪种方式,然后选择相应的插件,这些插件会处理Neutron API调用,将它们转换为每种插件对应的switch所提供的API调用,然后通过各自定义的方式,发消息去调用虚拟交换机或者物理交换机提供的API, 这套API从SDN的架构来看属于南向接口。
我们再回过头来看看SDN的定义。SDN有很多属性,每个人理解都不同,正是因为如此,所以很 多人对于某一项技术是否是SDN看法不同。实际上,有很多属性是伪属性,它们并不影响对某项技术是否是SDN的判断,比如是否用了OpenFlow,是否 有标准化的编程接口,是否使用了物理交换机,都跟是否是SDN无关。在我看来,SDN有三个核心属性可以用来判断一个技术是否是SDN,这三个属性包括控 制与转发分离、开放的编程接口、集中化的网络控制(关于这点会有歧义,这里集中化网络控制,并不意味着Controller必须是集中式架构,也可以是分 布式的,只是说,所有参与控制的Controller,在被控制的交换机看来,逻辑上只有一个)。
然后我们再来看一下 OpenStack(别的云平台也一样)是否符合这三个要求。
第一,OpenStack架构中,控制面都是在OpenStack逻辑中(图1中的第一层和 第二层),而转发面则在虚拟交换机或者物理交换机中,绝对的控制与转发分离。
第二,无论是南向还是北向,都有开放的编程接口。
第三,集中化的 OpenStack控制平台控制着网络中多台服务器和交换机。所以无论从哪个方面看,OpenStack都是标准的SDN架构,OpenStack就是一 个超级Controller。
可以说如果没有SDN的理念,就没有OpenStack,你能想象交换机(物理或者虚拟)如果不提供编程接口 出来,OpenStack怎样灵活控制网络吗?特别是网络虚拟化的引入更是离不开SDN的协助(但网络虚拟化不等于SDN,不要搞混了)。而SDN确实为 包括OpenStack在内的云平台提供了无可替代的便利,让云平台的自动化操作成为可能。所以现在可以回答最开始的问题了:为什么说SDN非常适合用在 数据中心?其实更准确地说,是适合部署了云计算网络的数据中心,因为云计算网络要协调的资源非常多,引入一个业务要执行的操作非常复杂,靠手工去操作,一 方面容易出错,另一方面耗时太长,所以需要借助工具进行自动化部署,而使用了SDN的云管理平台使得这一切成为了可能。以后如果再有人问你SDN到底有什 么用,有什么是SDN能做而传统网络设备做不了的,给他讲讲这个例子。
但为什么还是有很多做云计算平台的人不认为自己使用了SDN呢?我归 纳了一下,大致有三种原因。
第一种,这些人不了解OpenStack Neutron的架构和工作原理,自然就不清楚。就像我在没有深入研究Neutron之前,也不清楚这一点。
第二种,很多人潜意识里面觉得没有用到 OpenFlow,就不能算用了SDN。前面提到,用不用OpenFlow并非是否是SDN的判断依据,因为OpenFlow只是SDN的其中一种实现方 式。
第三种,有人潜意识里面觉得我都用的是OVS,没有涉及到物理交换机,就觉得不能算是SDN,或者是觉得没有全网都用SDN,只是在网络边缘用到了, 不能算是部署SDN了。这一切都是误解,归根结底还是属于对SDN的本质或者OpenStack架构看得不透彻。
对于云计算网络的用户来 说,他们看不到SDN,但这并不代表他们没有享受到SDN带给他们的好处。现在大多数公有云平台的用户都是自助服务的,他们自己创建虚机,自己创建虚拟网 络,自己创建虚拟路由器,自己创建防火墙等,谁在底层支撑着这些动作的顺利执行呢?是SDN架构!没有SDN,就没有这一切!SDN的最高境界就是用户在 享受着SDN带来的便利却并没有意识到自己使用了SDN。
下一篇:8位crc校验分析及程序