【仪器仪表商情网 解决方案】众所周知,SDN软件定义网络,核心思想就是所谓的“转发、控制分离”,正所谓一谈SDN必谈“转发、控制”,一传十十传百,口口相传。当我们这些产品经理到客户现场交流SDN时,或许客户也能娓娓道来“转发、控制、分离”。
SDN,也许你能想到这些:
归结起来是这样几大特征:
Controller控制器集中控制:集中式/分布式控制器无非是把原本网络设备从孤立的单点做了横向的扩张,将所有SDN化的网络设备统一被控制。
标准协议接口化:控制器与SDN设备之间的南向协议的标准化以及控制器北向API接口的标准化都是强调了SDN毕竟还是处理“网络”的工作,应用的事SDN“甭管”。
通用硬件:这里和NFV(Network Function Virtualization,网络功能虚拟化)没有关系。这里的SDN通用硬件指的是带有SDN处理芯片的网络设备或者是能实现SDN功能的网络设备。
把SDN抽象出来看,其实包括了这样五个部分:
SDN网络设备:网络设备(硬件网络设备或x86里面的软件网络设备)+SDN能力(可以是SDN芯片或开启SDN功能)
SDN控制器:能处理SDN功能的控制器,可以是软件方式或软件嵌入硬件的方式。
SDN APP:这更像是我们熟悉的网络上层功能,
南向控制协议:这里场景的控制协议是Openflow,但绝非仅仅Openflow。可以实现控制功能的协议其实很多。
北向API:此API的主要作用在于提供SDN控制器及其以下部分(南向控制协议、网络设备)能够作为网络驱动供上层应用调用。
SDN抽象的模型
通常情况下,启用SDN的交换机可以分成两种模式:纯SDN交换机和混杂模式交换机。
Openflow标准定义了控制器与交换机之间的交互协议,以及一组交换机操作。这个控制器—交换机协议运行在安全传输层协议(TLS)或无保护TCP连接之上。Openflow使用TCP端口6633或6653。
每个流表中每个流条目包括三个部分:
(1) 匹配match—使用ingress port,packet header以及前一个flow table传递过来的metadata;
(2) 计数counter---对匹配成功的包进行计数;
(3) 操作instruction—修改action set或者流水线处理
交换机针对SDN有一个比较重要的消息类型:Packet-In,主要针对未知数据流无法命中流表的时候,作上送控制器的操作。
同样,SDN控制器也有一个比较重要的消息类型:Packet-Out,主要针对下游SDN被管理设备,用于控制器指定从交换机的特定端口发送数据包,或者用于转发通过Packet-in消息接收到的数据包。Packet-Out报文中包含明确的Action动作。