1)网络可编程性是SDN的另一个重要属
网络可编程性最初是指网络管理人员可以通过命令行对设备进行配置,后来有了可编程路由器、NetFPGA等设备,这些设备的可编程性主要是对设备本身硬件电路级的可编程,即开发人员是通过编译代码直接控制这些硬件来实现自己的协议或者功能。这种可编程的能力是对某台设备而言的,是一种处于最底层的编程能力,相当于计算机中汇编等级的低级编程语言,不够灵活便捷。
SDN的网络可编程性是从另外一个角度来看的,传统网络设备需要通过命令行或者直接基于硬件的编译写入来对网络设备进行编程管理。
主动应用(AA)是一个协议的程序代码,它通过主动分组加载到主动节点中,并在主动节点中对分组进行转发和计算来完成某种通信功能。执行环境(EE)是在Node
OS上的一个用户级操作系统,它可以同时支持多个AA的执行,并负责AA之间的互相隔离。EE为AA提供了一个可调用的编程接口,一个主动网络节点可以具有多个执行环境,
每一种执行环境完成一种特定的功能。节点操作系统类似于一般操作系统的内核,它位于主动网络节点最底层的功能层次,管理和控制对主动网络节点硬件资源的使用。因此,EE在Node OS中运行,一个NodeOS可以并发地支持多个EE,协调EE对节点中可利用资源(内存区域、CPU周期、链路带宽等)的使用。一般来说,主动网络包含以下两种主要的数据模型
1)封装模型::节点的可执行代码被封装在数据分组内,为in-band方式。这种模型利用数据分组携带代码从而在网络中添加新的功能,同时使用缓存来改善代码分发的效率,而可编程路由器根据数据分组的分组头由管理员定义一系列的操作行为。
2)
可编程路由器/交换机模型(Programmable Router/Switch Model):
节点的可执行代码与数据分组分离,为out-of-band方式,信包在主动网络节点和传统网络中传输的情况。用户可以在协议栈中添加自己的操作,网络中可以同时有传统的节点和主动网络节点。当数据通过传统的设备时,报文只是被简单地转发不做任何修改;而当数据报文通过主动网络节点时,节点能够根据用户定义的行为对数据报文进行计算与操作。
2)SDN可编程:
它通过为开发者们提供强大的编程接口,从而使网络有了很好的编程能力。对上层应用的开发者来说,SDN的编程接口主要体现在北向接口上,北向接口提供了一系列丰富的API,开发者可以在此基础上设计自己的应用而不必关心底层的硬件细节,就像目前在x86体系的计算机上编程一样,不用关心底层寄存器、驱动等具体的细节。SDN南向接口用于控制器和转发设备建立双向会话,通过不同的南向接口协议, SDN控制器就可以兼容不同的硬件设备,同时可以在设备中实现上层应用的逻辑。SDN的东西向接口主要用于控制器集群内部控制器之间的通信,用于增强整个控制平面的可靠性和可拓展性.
南向接口已有 OpenFlow等诸多标准,但是北向接口方面还缺少一个业界公认的标准,不同的控制器厂商都有各自的北向接口.
SDN南向接口协议是集中式的控制平面和分布式的转发设备之间交互的接口协议,用于实现控制器对底层转发设备的管控。SDN交换机需要与控制平面进行协同后才能工作,而与之相关的消息都是通过南向接口协议传达的。当前,SDN中最为成熟的南向接口协议是ONF组织倡导的OpenFlow协议。OpenFlow使控制平面可以完全控制数据平面的转发行为,同时ONF还提出了OF-CONFIG协议,用于对SDN交换机进行远程配置和管理,其目标都是为了更好地对分散部署的SDN交换机实现集中化管控。OpenFlow协议作为SDN发展的代表性协议,已经获得了业界的广泛支持.
SDN的控制平面可以是分布式的,在这种情况下,就需要一种接口协议来负责控制器之间的通信。SDN东西向接口主要解决了控制器之间物理资源共享、身份认证、授权数据库间协作以及保持控制逻辑一致性等问题,实现多域间控制信息交互,从而实现底层基础设施透明化的多控制器组网策略。
SDN相比于主动网络的优势:
(1)SDN应用多集中在对控制平面的编程上,上层应用通过北向接口与控制器交互,
然后控制器再通过南向接口与底层硬件交互,这样降低了程序与硬件的耦合程度,只需要实现不同的南向协议就可以在不同的硬件环境上执行相同的功能。而主动网络的许多早期应用思路集中在中间件(Middlebox)、防火墙、代理上,这些应用都需要分开部署,每个都有各自的编程模型。主动网络主要是在数据平面上增加可编程性,试图直接控制数据平面来实现这些功能,程序代码与数据平面耦合性较高,同样的应用功能对不同的硬件设备要有不同的实现,缺乏了灵活性,这无疑会影响到主动网络技术的普及.
(2) SDN有一些明确的应用场景,如在数据中心和网络试验床中,这很大程度上体现了SDN的商用能力,使得业界对于SDN的落地持有非常乐观的态度。而主动网络的应用主要在中间件和对数据平面的控制上,总体来说其应用场景相对狭窄.
(3)主动网路的费用昂贵代价较高,而SDN网络性价比较高.
(4) SDN的发展方向更为明确,SDN将目标放在为网络管理者和应用开发者提供强大的编程能力上,真正做到了为开发者提供一整套编程接口,让网络有强大的可编程能力,从而使开发者能在网络中加入自己新的服务,专注于编程与服务。
狭义的SDN是完全的将控制层面和转发层面分离,白盒交换机,只需要支持北向的配置即可,通过openflow协议进行“流”匹配转发。
广义的SDN是在保留原有交换设备的控制功能的同时,通过net config下发配置,支持北向的配置进行远端的控制。只做overlay的工作。
强控指的是:通过openflow直接给硬件设备下发转发表。
(overlay)SDN架构:
1)SNMP-V3的作用:
简介 :
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
get-request操作:从代理进程处提取一个或多个参数值。
get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。
set-request操作:设置代理进程的一个或多个参数值。
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
在SDN中SNMP-V3主要是用来发现设备:每个设备首先要将SNMP打通并且开启LLDP协议,LLDP协议会将设备与设备之间的关系(邻居/端口号)写入MIB库里,然后SNMP再把得到的信息传到SDN控制器,就会生成对应拓扑。
2)NETCONF协议(单独开发出来的下方配置):
防火墙中是通过API接口进行NETCONF协议下发配置的
3)OPENFLOW协议:
packet报文是携带数据信息与控制器进行交互,首包首先发送给控制器获取数据信息,在首包packetout没下来之前会先发送flow mode。(TCAM表决定了流变的大小,于是就生成了多张流表流水线式的匹配)