直接理解
SDN是在2009年左右出现的一种新型网络结构,它将数据层面与控制层面分离,使用中央控制器完成网络的操作和管理,并通常采用OpenFlow协议作为其核心通信协议,拥有着集中式控制、可编程、部署灵活性和数据层面与控制层面相互分离等多种优势。并且作为一种新型的网络结构,其通信协议、三层体系结构和仿真实验都非常有意思。
SDN体系结构
典型的SDN架构定义如下图所示。
SDN体系结构由下到上分别为转发层(又称为基础设施层)、控制层和业务层(又称为应用层)。其中转发层表示网络底层的物理转发设备,维护着流表结构,数据流中的分组则按照流表中的规则进行转发;中间的控制层集中维护和控制网络的各种状态,并负责流表的生成、配置和维护,同时需要为业务层提供易用的北向接口;最上面的业务层根据不同的应用需求来实现不同功能的应用程序。控制层通过南向接口(例如OpenFlow协议)与转发层进行通信,并获取转发层的网络设备的信息;控制层与业务层之间由可扩展的北向接口完成交互,北向接口由各个控制器的Rest API提供,并允许开发者根据实际网络需求开发。
在SDN体系结构中,开发者能够获取转发层中网路设备的实时状态信息,通过调用控制层的北向Rest API接口,编程实现不同功能的应用程序;最后通过控制器和南向接口(OpenFlow)以流表的形式下发到网络设备中,从而完成网络的配置。
OpenFlow协议介绍
OpenFlow协议是SDN架构中第一个定义在控制层和转发层之间的标准通信接口,基于OpenFlow的SDN技术可以使开发者动态管理网络拓扑结构。
最常见的OpenFlow流表主要由三个部分组成:匹配域(Match Fields)、计数器域(Counters)和指令域(Instructions),如下图所示。
(1)匹配域,如下图所示:一共包含12个域,每个域内包含一个值,分别对应TCP/IP体系结构中:
- 一层物理层中入端口(Ingress Port);
- 二层数据链路层中源MAC地址(Ether source)、目的MAC地址(Ether dst)、以太网类型(EtherType)、VLAN标签(VLAN id)、VLAN优先级(VLAN priority);
- 三层网络层中源IP(IP src)、目的IP(IP dst)、IP协议字段(IP proto)、IP服务类型IP ToS bits);
- 四层传输层中TCP/UDP源端口号(TCP/UDP src port)、 TCP/UDP目的端口号(TCP/UDP dst port)。
(2)计数器域,可以用来统计每个端口、每条流、每张表和每个队列上的流量信息。
(3)指令域,为每条流表项对应的行动,表示对匹配该流表项处理方法,其中可以有0或者多个行动。若一条流表项的指令域为空,则默认操作是丢弃数据包。若一个流表项的指令域内有多个行动,则按照行动的优先级顺序执行。行动分为必选行动和可选行动,必选行动中包括转发或者丢弃,可选行动中则包括按照传统交换机处理、泛洪(除去入端口)、入队和修改匹配域等。
如上图所示数据包匹配流程:当数据包到达后,从流表中的第一个流表项开始匹配,若有匹配域相符合的流表项,接着更新该条流表项对应的统计数据,然后根据流表项对应指令域内的指令进行相应操作;若没有流表项被成功匹配,则转发给控制器请求进一步处理。
基于OpenFlow的SDN工作流程
上图为基于OpenFlow的SDN工作流程:
1 终端PC机向网络中发送一系列数据包;
2 数据包到达OpenFlow交换机,若交换机中无匹配的流表,则通过第2步向控制器发送Packet-In消息,请求控制器下发处理流表,若交换机中有匹配的流表,则直接执行第4步;
3 控制器下发流表(或Packet-Out消息)到交换机中;
4 交换机根据流表的信息将数据包转发到下一个交换机中;
5 交换机若有匹配流表,执行第7步,若无匹配流表,执行类似第2步;
6 类似第3步;
7 交换机转发数据包到另一个终端PC机。
对比理解
https://www.zhihu.com/question/20279620
参考链接:
http://archive.openflow.org/documents/openflow-spec-v1.1.0.pdf
http://www.opendaylight.org/
https://www.opennetworking.org/sdn-resources/sdn-definition/
本文部分转自http://blog.nsfocus.net/software-defined-network-sdn/
如果您需要了解更多内容,可以加入QQ群:570982169;直接询问:010-68438880