SDN OpenFlow1.0and1.3协议基础

OpenFlow交换机的流表包含包头域、计数器和行动,用于匹配和处理数据包。1.0版本的流表匹配字段包括2-4层网络信息,而1.3版本扩展了匹配域,增加了优先级、超时时间、指令集等。计数器用于流量管理,动作则允许对数据包进行各种操作,如修改包头、转发和丢弃。1.3版本引入的指令集使得处理流程更为灵活,匹配后不再直接执行动作,而是添加到指令集,待全部匹配完成后统一执行。
摘要由CSDN通过智能技术生成

在这里插入图片描述

OpenFlow1.0交换机流表

OpenFlow交换机中的转发表称为流表(Flow Table),列表中的每个条目称为表项,每个表项包括三个域,包头域(header field),计数器(counters),行动(actions)。

包头域Head Fields:

数据包匹配特征:

  • 一层:交换机入端口(Ingress Port)
  • 二层:源MAC地址(Ether source)、目的MAC地址(Ether dst)、以太网类型(Ether Type)、VLAN标签(VLAN id)、VLAN优先级(VLAN priority)
  • 三层:源IP(IP src)、目的IP(IP dst)、IP协议字段(IP proto)、IP服务类型(IPToS bits)
  • 四层:TCP/UDP源端口号(TCP/UDP src port)、TCP/UDP目的端口号(TCP/UDP dst port)
    包头域/匹配字段

在这里插入图片描述
简单来说,除了进接口,传统2层到4层的寻址信息都出现在包头域中(MAC、IP、PORT)。也就是说,OpenFlow交换机相比传统网络中的交换机,是一个比较模糊的概念,不在区分交换机、路由器等。OpenFlow交换机可以广义理解为OpenFlow转发设备(交换机。路由器、防火墙)。

计数器Counters:

主要对每张表,每个端口。每个流等进行技术,方便流量管理。(例如某张表查了多少次?匹配这个流的数据包有多少了?)

动作Actions:

即对匹配到的流进行处理,传统网络中要么转发要么丢弃,没有第三种选择,OpenFlow1.0提供多种行动,前两个必备:

丢弃(Drop)

没有明确指明处理行动的表项,所匹配的所有网包默认丢弃。

转发(Forward)

  • ALL转发到所有出口(不包括入口)
  • CONTROLLER封装并转发给控制器
  • LOCAL转发给本地网络栈
  • TABLE对要发出的包执行流表中的行动
  • IN PORT从入口发出

可选行动-转发

NORMAL按照传统交换机的二层或三层进行转发处理。
FLOOD通过最小生成树从出口泛洪发出,注意不包括入口。

可选行动-入队(Enqueue)

将转发包绑定到某个端口的队列中。

可选行动-修改包头(Modify field)

  • SET_VLAN_VID 修改VLAN标签
  • SET_VLAN_PCP 修改VLAN优先级
  • STRIP_VLAN 弹出VLAN标签
  • SET_DL_SRC 修改源MAC地址
  • SET_DL_DST 修改目的MAC地址
  • SET_NW_SRC 修改源IP地址
  • SET_NW_DST 修改目的IP地址
  • SET_NW_TOS 修改IP服务类型字段
  • SET_TP_SRC 修改源端口号
  • SET_TP_DST 修改目的端口号

注意:这是跟传统网络最大的区别,OpenFlow可以对数据包头进行修改!

流表匹配(1.1版本引入):

在这里插入图片描述
流表匹配(table 0------->table n):

  • 匹配到:直接执行相应动作(Actions)

  • 未匹配到:通过安全通道交付给控制器处理

OpenFlow1.3

openflow使用多级流表,每张流表有独立的序号,从序号最小的流表开始匹配,每张流表由独立的处理和动作。

在这里插入图片描述

  • 匹配域Match Fields

它是之前1.0的拓展,匹配的内容除了2到4层的寻址信息(MAC,IP,PORT),多了MPLS(城域网),IPV6,PBB,Tunnel ID等支持。1.0能匹配12个信息,1.3能匹配39个信息

  • 优先级Priority

用于标志流表匹配的优先顺序,优先顺序越高越早匹配,默认优先级为0

  • 计数器Counters

主要对每张表,每个端口,每个流等进行计数,方便流量监管,在原有1.0的基础上,加入了对每一个组,每一个动作集(队列)的计数

  • 超时时间Timeout

用于标志该流表项老化的时间,超过了时间限制就删除,节省了内存资源

  • 附属信息Cookie

由控制器选择的不透明数据值。控制器用来过滤流统计数据,流改变和流删除,但处理数据包时不能使用

  • 指令Instructions:(与1.0版本的最重要区别就是引入了指令)

Require Instructions:

Write-Actions action(s):将制定的行动添加到正在运行的行动集中

Goto-Table next-table-id:指定流水线处理进程中的下一张表中的ID(流水线pipeline定义:多级流表的匹配)

Apply-Actions action(s):立即执行指定的行动,而不改变指令集(。这个指令经常用来修改数据包,在两个表之间或者执行同类型的多个行动的时候)

Optional Instructions:

Merter merter id:直接将计流量包丢弃

Clear-Actions:在行动集中立刻清楚所有的动作

Write-Meterdata meterdata/mask:在元数据区域纪录元数据

动作Action
Require Action:

Outport:报文输出到指定端口

Drop:丢弃

Group:用组表处理报文

Optional Action:

Set-Queue:设置报文的队列ID,为了QoS的需要

Push-Tag/Pop-Tag

Set-Field:设置报文包头的类型和和修改包头的值

Change-TTL:修改TTL的值

  • 动作执行的顺序(动作集Action Set):
  1. copy TTL inwards: apply copy TTL inward actions to the packet

  2. pop: apply all tag pop actions to the packet

  3. push-MPLS: apply MPLS tag push action to the packet

  4. push-PBB: apply PBB tag push action to the packet

  5. push-VLAN: apply VLAN tag push action to the packet

  6. copy TTL outwards: apply copy TTL outwards action to the packet

  7. decrement TTL: apply decrement TTL action to the packet

  8. set: apply all set-field actions to the packet

  9. qos: apply all QoS actions, such as set queue to the packet

  10. group: 如果指定了组行动,那么按照这个序列中的顺序执行组行动存储段里的行动。

  11. output: 如果没有指定组行动,报文就会按照 output 行动中指定的端口转发。

Output 行动最后执行。如果组行动和输出行动均存在,那么组行动优先级高。如果两者均 不存在,那么报文被丢弃。

流表匹配:

在这里插入图片描述
理解:1.3版本引入指令集后,当匹配到相应流表项时,不再直接执行Actions而是将Actions添加到指令的Action set中,并继续匹配,直至全部匹配完后,再统一执行指令的Action set。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值