IE-LAB网络实验室:OpenFlow协议简介

OpenFlow,一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。。
OpenFlow协议背景:
转发和控制分离是SDN网络的本质特点之一 。在SDN网络架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中独立出来,由此,网络获得前所未有的可编程、可控制和自动化能力。这使用户可以很容易根据业务需求,建立高度可扩展的弹性网络。要实现SDN网络的转控分离架构,就需要在SDN控制器与数据转发层之间建立一个通信接口标准。
学过计算机网络的人都知道,OSI七层架构,这是现代互联网通信的基础。而SDN提出的是三层架构,及应用层(业务层),控制层,转发层。在这种架构上有两个突出的特点,一个是控制平面和数据平面分离,一个是可编程性。数控分离可以更大程度的使转发层设备发挥数据转发能力(和瘦AP一个道理);而可编程可以使网络设备成为变形金刚,一个设备可以是交换机,可以是路由器,也可以变成防火墙或者网关,设备功能由程序定义。
Openflow协议于2006年诞生于斯坦福大学的一个资助项目,2008年由Nick McKeown教授发表的论文《OpenFlow:Enableing Innovationin Campus Networks》正式提出。我们已经知道,SDN核心思想为数据与控制分离,硬件与软件解耦。openflow协议通过引入“流”的概念,控制器根据某次通信中“流”的第一个数据分组的特征,使用openflow协议提供的接口对数据平面设备部署策略,也就是在交换机上部署流表,这些通信的后续流量则按照相应流表在硬件上进行匹配,转发,从而实现网络设备在数据转发平面的灵活变动,网络设备的功能不再是一成不变。
OpenFlow控制器:
OpenFlow控制器位于SDN架构中的控制层,通过OpenFlow协议南向指导设备的转发。
1、NOX/pox
NOX是第一款真正的SDN OpenFlow控制器,由Nicira公司在08年开发,并且捐赠给了开源组织。NOX支持OpenFlow V1.0,采用异步的、基于时间的编程模型。
2、ONOS
ONOS(Open Network Operating System)控制器是由The Open Networking Lab使用Java及Apache实现发布的首款开源SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是实现可靠性强、性能好、灵活度高的SDN控制器。
3、OpenDaylight
OpenDaylight是一个Linux 基金合作项目,该项目以开源社区为主导,使用Java语言实现开源框架,旨在推动创新实施以及软件定义网络透明化。面对SDN型网络,OpenDaylight作为项目核心,拥有一套模块化、可插拔且极为灵活的控制器,还包含一套模块合集,能够执行需要快速完成的网络任务。
大多数开源的SDN控制器是完全基于OpenFlow协议开发的,这是因为其设计多数源自于Onix(一种分布式控制器框架)。相比之下,大部分商用控制器会将OpenFlow和其他协议进行联合使用,以完成更复杂的功能。
在openflow协议 1.0版本中,流表项主要由三部分组成:分组头域、计数器、动作表。
其中分组头域为数据分组匹配流表项时参考的依据,类似传统交换机做二层转发时匹配数据分组的MAC地址,或者路由器三层转发时的IP地址。分组头域里面包含OSI 1层至4层的12个网络控制信息,如源MAC,目的MAC,VLAN标签,VLAN优先级,源IP,TCP端口号等等,正是因为头域里面提供了丰富的标注,才使得控制器可以对流进行更加细粒度的控制。
计数器可以统计一些流的查找次数,生存时间等。
动作表为相应流对应的动作,如转发到本地网络栈,转给控制器,丢弃等。
OpenFlow表项:
OpenFlow的表项在V1.0阶段,只有普通的单播表项,也即我们通常所说的OpenFlow流表。随着OpenFlow协议的发展,更多的OpenFlow表项被添加进来,如组表(Group Table),计量表(Meter Table)等,以实现更多的转发特性以及QoS功能。
狭义的OpenFlow流表是指OpenFlow单播表项,广义的OpenFlow流表则包含了所有类型的OpenFlow表项。OpenFlow通过用户定义的流表来匹配和处理报文。所有流表项都被组织在不同的Flow Table中,在同一个Flow Table中按流表项的优先级进行先后匹配。一个OpenFlow的设备可以包含一个或者多个Flow Table。
一条OpenFlow的表项(Flow Entry)由匹配域(Match Fields)、优先级(Priority)、处理指令(Instructions)和统计数据(如Counters)等字段组成。
(1)Match Fields
流表项匹配规则,可以匹配入接口、物理入接口,流表间数据,二层报文头,三层报文头,四层端口号等报文字段等。
(2)Priority
流表项优先级,定义流表项之间的匹配顺序,优先级高的先匹配。
(3)Counters
流表项统计计数,统计有多少个报文和字节匹配到该流表项。
(4)Instructions & Actions
流表项动作指令(Instructions & Actions)集,定义匹配到该流表项的报文需要进行的处理。当报文匹配流表项时,每个流表项包含的指令集就会执行。这些指令会影响到报文、动作集以及管道流程。 交换机不需要支持所有的指令类型,并且控制器可以询问OpenFlow交换机所支持的指令类型。
(5)Timeouts
流表项的超时时间,包括了Idle Time和Hard Time。
Idle Time:在Idle Time时间超时后如果没有报文匹配到该流表项,则此流表项被删除。
Hard Time:在Hard Time时间超时后,无论是否有报文匹配到该流表项,此流表项都会被删除。
(6)Cookie
Controller下发的流表项的标识

助教:马季

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值