OpenFlow 1.0

1.OpenFlow 1.0

1.1流表

在OpenFlow 1.0中,OpenFlow交换机包含了一个以上的流表,每个流表包含了多个流表项。即

流表项(多个)-->流表(一个以上)-->OpenFlow交换机

用图表表示为

头字段 计数器 行动
头字段内容 计数器内容 行动名称
...... ..... .....

以上三项在之后会详细介绍,且流表项的三个要素在之后的版本更迭中会出现变化。

1.2流表项

流表项主要由3部分构成,即

  • 头字段
  • 计数器
  • 行动

1.2.1 头字段

头字段主要用于与数据包进行匹配,且在openflow1.0中,头字段中包含了L1至L4层之间各层的内容。其中头字段中主要要素如下表所示:

| ingress port | Ethernet source address | Ethernet destiation address|Ethernet type | VLAN id | VLAN Priority | IP source address | IP destination address | IP protocol | ToS | Transport source port/ICMP |type Transport destination prot/ICMP code |

主要内容及其含义如下:

内容 说明
ingress port 输入端口
Ethernet source address 源以太网地址
Ethernet destination addresss 目标以太网地址
Ethernet type 以太网帧类型字段
VLAN ID VLAN标签的ID
VLAN Priority 802.1Q的PCP
IP source address IPv4头中的发送源地址
IP destination address IPv4头中目的地址
IP protocol IPv4头中的协议字段
ToS IPv4中的TOS字段
Transport source port/ICMP TCP或UDP时为TCP/UDP的发送源端口号,ICMP时为ICMP类型
type Transport destination prot/ICMP code TCP或UDP时为TCP/UDP的发送目的端口号,ICMP时为ICMP代码
  1. 流表的匹配

    OpenFlow中可以存在多个流表,但匹配时必须从流表0开始匹配,当流表0中不存在与头字段相匹配的流表项时,并且其他流表存在时,则去下一个流表中进行匹配。(openflow中并未对下一流表进行说明)

    注意:在openflow1.0中,只能与单一流表项匹配,即使可能与多个流表项匹配,最终匹配的流表项也只有一个,但在之后的版本更迭后,导入了可与多个流表项匹配的流水线处理

  2. 头字段解析

    在openflow1.0中,头字段解析具有优先顺序,但在之后的版本中废除了该规范,此处不再赘述。

1.2.2 计数器

主要对每个表查找的次数,经过端口的流量,流表项匹配的数据包的数量进行计数,方便流量的监控。主要包括4中计数器:

  • 流表的PerTable计数器
  • 端口的Per Port计数器
  • 流表项的Per Flow计数器
  • 队列的Per Queue计数器

1.2.3 行动

  1. 必备行动
  • Forward

    动作名称 说明
    - Forward的基本功能,向指定端口发送数据包
    ALL 向除接收端口之外的所有物理端口发送数据包
    CONTROLLER 将OpenFlow的数据包封装,发送至控制器
    LOCAL 将数据包发送至交换机本地的网络栈
    TABLE 执行流表中的行动(仅在Pack-out消息中使用)
    IN_PORT 从数据包输入端口发出数据

    Forward行动中必备动作

    动作名称 说明
    - Forward的基本功能,向指定端口发送数据包
    ALL 向除接收端口之外的所有物理端口发送数据包
    CONTROLLER 将OpenFlow的数据包封装,发送至控制器
    LOCAL 将数据包发送至交换机本地的网络栈
    TABLE 执行流表中的行动(仅在Pack-out消息中使用)
    IN_PORT 从数据包输入端口发出数据

    Forward行动中的可选动作

    动作名称 说明
    NORMAL 根据传统的L2或L3的动作完成交换机动作
    FLOOD 沿最小生成树发送数据包,不包括接收数据包的物理端口
  • Drop

    Drop行动能丢弃与未指定Forward行动的流表项相匹配的数据包。

  1. 可选行动
  • Enqueue行动

    将数据包发送至队列

    注意:在openflow1.1中,Enqueue行动改名为Set—Queue行动

  • Modify-Field行动

    Modify-Field行动主要包括

行动名称 内容
Set VLAN ID 存在VLAN ID时,使用指定的VLAN ID 进行覆盖。不存在时按照优先级0进行添加
Set VLAN priority 存在VLAN ID时,使用指定的数值 进行覆盖。不存在时按照指定优先级进行添加
Strip VLAN header 存在VLAN头时将其删除
Modify Ethernet source MACaddress 使用新的数值覆盖以太网并发送以太网源地址
Modify Ethernet destination MACaddress 使用新的数值覆盖以太网并发送以太网目的地址
Modify IPV4 source address 使用新的IP覆盖源IP
Modify IPV4 destination address 使用新的IP覆盖目的IP
Modify IPV4 ToS bits 使用新数值覆盖TOS
Modify transport source port 覆盖TCP/UDP源端口
Modify transport destination port 覆盖TCP/UDP目的端口

注意:在openflow1.1中,Modify-Field更名为Set-Field

你可能感兴趣的:(OpenFlow 1.0)