本文将从SDN由来,架构和Openflow协议三方面进行阐述,阅读完之后,应该对SDN有基本认识。
一、SDN由来
SDN(software defined Networking),即软件定义网络。是当前SDX中的一种,其中X可代表安全,存储,数据中心等等。采用软件定义特别受互联网公司的欢迎,是因为这种模式更能发挥他们在编程方面的优势,就如SDN最初并不是由网络设备厂商(思科,IBM等)提出来的,而是googel,facebook,yahoo等互联网公司推动的,这些大型的互联网巨头因为数据量大,而且特定时间会出现巨大的并发流量(就如中国的双11),互联网公司的网络设备一般是购买网络厂商的,这些设备在出厂时就基本定型了,并没有将编程魔力给与互联网公司,后来互联网公司发现很多时候,他们所购买的设备并没有发挥出最大作用,使用负载均衡可能并没有达到均衡的效果,而是有些设备跑的累趴,有些设备却接近开空车;有时候想做一点网络的变更也相当麻烦,自己一身编程本事,无奈被网络设备束缚。终于有一天他们受够了,在2011年初他们联合起来成立了ONF(opennetworking foundation,开发网络基金会),并正式提出了软件定义网络的概念。后来网络设备厂商大佬们也感觉到了压力,觉得这个新东西威力不少,于是思科,博通和IBM等几位大佬成立了开源平台项目OpenDayLight,旨在促进SDN技术交流和产业化开源机构,其实说白了还不是想保住自己的利益。所以说,这场网络新技术,是由互联网公司发起的。
二、SDN架构
学过计算机网络的人都知道,OSI七层架构,这是现代互联网通信的基础。而SDN提出的是三层架构,及应用层(业务层),控制层,转发层。如图1所示。
图1 SDN基本架构
在这种架构上有两个突出的特点,一个是控制平面和数据平面分离,一个是可编程性。数控分离可以更大程度的使转发层设备发挥数据转发能力(和瘦AP一个道理);而可编程可以使网络设备成为变形金刚,一个设备可以是交换机,可以是路由器,也可以变成防火墙或者网关,设备功能由程序定义(这一点应该是互联网公司最喜欢的)。
上面提到的是SDN基本的三层架构,ONF提出的在此基础上提出了更加详细的架构,如图2所示
图2 ONF 定义的SDN架构
从该架构中可以明显的看出三层之间的关系,以SDN控制器为中心,向北提供北向API供用户调用,用户可以在应用层使用python,java,C等高级语言定义设备功能;向南提供南向接口, openflow协议就运行在数据平面和控制平面之间,该协议的提出与应用是SDN思想发展的主要推动力之一,目前是ONF主流的南向协议,在下面一节会说明openflow是如何工作。在这里顺便提一下东西接口,东西接口主要是为了控制器的集群。至此,应该形成以控制器为中心,南北东西的模型图。这里不经让我想起了华为部署的oceanconnet开发平台,也是这种南北架构。
三、Openflow协议
Openflow协议于2006年诞生于斯坦福大学的一个资助项目,2008年由Nick McKeown教授发表的论文《OpenFlow:Enableing Innovationin Campus Networks》正式提出。我们已经知道,SDN核心思想为数据与控制分离,硬件与软件解耦。openflow协议通过引入“流”的概念,控制器根据某次通信中“流”的第一个数据分组的特征,使用openflow协议提供的接口对数据平面设备部署策略,也就是在交换机上部署流表,这些通信的后续流量则按照相应流表在硬件上进行匹配,转发,从而实现网络设备在数据转发平面的灵活变动,网络设备的功能不再是一成不变。
上面已经讲到,openflow控制器通过部署流表来指导数据平面流量的,在每一个交换机中,都用一张流表,流表中存储了许多表项,每个表项都表征一个流和对应的处理方法(动作表)数据进入交换机后先与流表中的表项进行匹配,匹配成功了,则执行相应动作,匹配不成功,则上交给控制器。
在openflow协议 1.0版本中,流表项主要由三部分组成,如图3所示。
图3 openflow协议 1.0版 流表项结构
其中分组头域为数据分组匹配流表项时参考的依据,类似传统交换机做二层转发时匹配数据分组的MAC地址,或者路由器三层转发时的IP地址。分组头域里面包含OSI 1层至4层的12个网络控制信息,如源MAC,目的MAC,VLAN标签,VLAN优先级,源IP,TCP端口号等等,正是因为头域里面提供了丰富的标注,才使得控制器可以对流进行更加细粒度的控制。
计数器可以统计一些流的查找次数,生存时间等。
动作表为相应流对应的动作,如转发到本地网络栈,转给控制器,丢弃等。
了解了流表项的结构,就可以理解数据从进入交换机后执行的动作,如图4所示。
图4 流表匹配流程
其中数据分组就是通过分组头域的12个元组进行匹配的,之后根据匹配结果执行相应的动作。
当然随着openflow协议的发展,流表项的内容也越来越丰富,如openflow 1.4版本中的流表项就增加了优先级,指令集,Cookie等内容,这也是为什么基于openflow协议的交换机可以时信息流进行越来越精细的控制的原因。
以上就SDN的由来,架构和主流协议openflow做了简单介绍,至此应该知道SDN的主要特点是数控分离和可编程,其架构分为一个集中式的控制平面和分布式的数据平面,控制器位于上层应用和下层设备中间,通过将网络设备的各种功能进行抽象,建立具体的操作模型并为北向用户提供应用API,用户专注的业务将由控制器和转发设备完成。
《END》
参考文献:《学术中国·院士系列:软件定义网络核心原理与应用实践》