openflow简介

1 openflow组件

        openflow组建包括openflow交换机,控制器,用于连接设备控制器的安全通道(secure channel)以及openflow流表构成。

1.1 openflow交换机

        openflow交换机由硬件平面上的OpenFlow表项和软件平面上的安全通道构成,OpenFlow表项为OpenFlow的关键组成部分,由Controller下发来实现控制平面对转发平面的控制。
        一个OpenFlow交换机可以有若干个OpenFlow实例,每个OpenFlow实例可以单独连接控制器,相当于一台独立的交换机,根据控制器下发的流表项指导流量转发。OpenFlow实例使得一个OpenFlow交换机同时被多组控制器控制成为可能。

1.2 openflow表项

        openflow表项由匹配域,优先级,处理指令,计数器构成。openflow表项根据匹配域匹配数据包,进行相应的操作,通常包括IP地址,MAC地址,入端口,4层端口等匹配内容;优先级定义表项之间的匹配顺序,优先级越高越优先匹配;计数器统计匹配到本表项的数据包数目和字节数;处理指令是指匹配到该表项后进行动作,通常包括丢弃,转发到指定口,限速,修改TTL,修改DSCP等内容。

1.2 安全通道

        控制器和openflow交换机之间通过安全通道向openflow 进行表项下发,状态查询,更新等操作。通常采用TLS加密。

2 openflow运行机制

2.1 openflow消息类型

2.1.1 control to switch

  • Features 用于控制器了解交换机支持的功能
  • modify-state:用于管理交换机的状态,如流表项和端口状态,主要用于增,删,改openflow交换机内的流表项和交换机端口属性
  • Packet-out:用于通过交换机特定端口发送报文 ,这些报文是通过Packet-in消息接收到的。通常Packet-out消息包含整个之前接收到的Packet-in消息所携带的报文或者buffer ID(用于指示存储在交换机内的特定报文)。这个消息需要包含一个动作列表,当OpenFlow交换机收到该动作列表后会对Packet-out消息所携带的报文执行该动作列表。如果动作列表为空,Packet-out消息所携带的报文将被OpenFlow交换机丢弃。
  • Asynchronous-Configuration:控制器使用该报文设定异步消息过滤器来接收其只希望接收到的异步消息报文,或者向OpenFlow交换机查询该过滤器。该消息通常用于OpenFlow交换机和多个控制器相连的情况。

2.1.2 异步(Asynchronous)消息

        由Switch发送给Controller,用来通知Switch上发生的某些异步事件的消息,主要包括Packet-in、Flow-Removed、Port-Status和Error等。例如,当某一条规则因为超时而被删除时,Switch将自动发送一条Flow-Removed消息通知Controller,以方便Controller作出相应的操作,如重新设置相关规则等。

  • Packet-in:转移报文的控制权到控制器。对于所有通过匹配流表项或者Table Miss后转发到Controller端口的报文均要通过Packet-in消息送到Controller。也有部分其他流程(如TTL检查等)也需要通过该消息和Controller交互。Packet-in既可以携带整个需要转移控制权的报文,也可以通过在交换机内部设置报文的Buffer来仅携带报文头以及其Buffer ID传输给Controller。Controller在接收到Packet-in消息后会对其接收到的报文或者报文头和Buffer ID进行处理,并发回Packet-out消息通知OpenFlow交换机如何处理该报文。
  • Flow-Removed:通知控制器将某个流表项从流表的移除。通常该消息在控制器发送删除流表项的消息或者流表项的定时器其超时后产生。
  • Port-Status:通知控制器端口状态或设置的改变。

2.1.3 同步消息:

        主要用来建立连接、检测对方是否在线等,是控制器和OpenFlow交换机都会在无请求情况下发送的消息,包括Hello、Echo和Experimenter三种消息,这里我们介绍应用最常见的前两种:

  • Hello:当连接启动时交换机和控制器会发送Hello交互。
    -Echo:用于验证控制器与交换机之间连接的存活,控制器和OpenFlow交换机都会发送Echo Request/Reply消息。对于接收到的Echo Request消息必须能返回Echo Reply消息。Echo消息也可用于测量控制器与交换机之间链路的延迟和带宽。

流表下发

        流表下发分为主动模式和被动两种机制,主动模式下,control将本身流表下发给交换机,交换机根据流表转发;被动模式下,如果数据包在交换机上没有匹配到相应的动作,将会通过packet-in 消息,将数据包转发给控制器,控制器通过packet-out消息指导交换机转发,生成表项

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值