OpenFlow1.1

1.表

在OpenFlow1.1版本中,添加了组的概念,用于将多个端口作为组进行处理。相应的在OpenFlow交换机中,存在一个组表和多个流表。

1.1组表

组ID 组类型 计数器 动作桶

OpenFlow1.1中增加的组表概念,在后续版本中一直沿用,组是OpenFlow为数据包指定在多个流中执行相同操作集的高效方法,组标的结构如图:

组ID 组类型 计数器 动作桶
类型 实现 内容
all required 执行组的所有行动桶
select optional 执行组内的一个行动桶动作,可用于多路径
indirect required 执行组内的一个确定的行动桶
fast failover optional 执行一个激活的行动桶

每一条OpenFlow组表记录称为组表项,每个组表项都包括:组ID,组类型,计数器和动作桶。通过组表,每个数据流可以被划分到相应的组中,动作指令的执行可以针对属于同一个组ID的所有数据包,适用于实现广播和多播,或者执行某些特定的操作集,且组定义了四种组类型,即:

类型 实现 内容
all required 执行组的所有行动桶
select optional 执行组内的一个行动桶动作,可用于多路径
indirect required 执行组内的一个确定的行动桶
fast failover optional 执行一个激活的行动桶

1.2流表

在openflow1.0中,每个数据包只能匹配一个流表项,有时也只能实现在openflow交换机中设置一个流表。但从OpenFlow1.1开始,OpenFlow交换机可以设置多个流表并为一个数据包匹配多个流表项。对于多个流表,OpenFlow1.1将多流表处理为流水线,各个流表依次对每个数据包进行匹配。

1.2.1流表项

头字段域 计数器 行动

在OpenFlow1.0中流表项的构成要素为:

头字段域 计数器 行动
匹配字段 计数器 指令

在OpenFlow1.1中流表项的构成要素为:

匹配字段 计数器 指令

即将头字段域更名为匹配字段,用指令代替行动,但行动仍存在与协议中。

  • 匹配字段
内容 说明
Ingress port 输入端口
Metadata 元数据(新加字段)
Ethernet source address 以太网帧的发送源以太网地址
Ethernet destination address 以太网帧的发送目的以太网地址
Ethernet type 以太网的类型字段
VLAN ID VLAN的ID
VLAN priority IEEE802.1Q的PCP
MPLS label MPLS的标签(新加字段)
MPLS traffic class MPLS的流量类别(新加字段)
IP source address IPV4的发送源地址
IP destination address IPV4的发送目的地址
IP protocol/ARP opcode IPV4头的协议字段或ARP头的操作字段
Tos IPV4头的Tos字段
TCP/UDP/SCTP source port/ICMP type TCP、UDP、SCTP的发送源端口号,ICMP的头类型
TCP/UDP/SCTP destination port/ICMP type TCP、UDP、SCTP的发送目的端口号,ICMP的头代码

相比较OpenFlow1.0,1.1版本中的匹配字段中新添加了MPLS标签、MPLS流量、元数据3个字段。并且从OpenFlow1.1中,添加了SCTP(流控制传输协议)。SCTP使用了移动通信技术3GPP和LTE。

  • 计数器

    相对于OpenFlow1.0,计数器并未发生太大变化,主要还是进行对每个表查找的次数,经过端口的流量,流表项匹配的数据包的数量进行计数,方便流量的监控。

  • 指令

    指令 内容
    Apply-Actions 不变更行动集,仅执行指定的行动列表
    Clear-Actions 清除行动集中的所有行动
    Write-Actions 将制定的多个行动合并到当前的行动集中已存在的进行覆盖,不存在的进行添加。
    Write-Metadata 写入元数据中
    Goto-Table Goto语句,移动到流水线后方连接的流表中

    指令是对与流表项匹配的数据包所执行的命令,提供了执行行动、在之后批量执行的行动集中添加及删除行动、写入元数据等功能。是实现流水线处理的基础。

    指令 内容
    Apply-Actions 不变更行动集,仅执行指定的行动列表
    Clear-Actions 清除行动集中的所有行动
    Write-Actions 将制定的多个行动合并到当前的行动集中已存在的进行覆盖,不存在的进行添加。
    Write-Metadata 写入元数据中
    Goto-Table Goto语句,移动到流水线后方连接的流表中
  • 动作 内容
    Output 向指定端口转发
    Drop 丢弃数据包
    Set-Field
    Set-Queue 将数据包发送至队列
    Push-Tag/Pop-Tag
    Group 处理与指定的组相关的数据包
    Experimenter 实验人员使用的行动

    行动

    动作 内容
    Output 向指定端口转发
    Drop 丢弃数据包
    Set-Field
    Set-Queue 将数据包发送至队列
    Push-Tag/Pop-Tag
    Group 处理与指定的组相关的数据包
    Experimenter 实验人员使用的行动

1.3流水线处理

数据包到达OpenFlow交换机后,在流表0中进行匹配

  1. 检索优先级最高的流表项
  2. 据此更新字段,行动集,元数据
  3. 将匹配字段和行动集发送给下一流表

之后根据需要在多个流表中进行匹配,并在各个流表中执行1-3步骤。

你可能感兴趣的:(OpenFlow1.1)