OpenFlow:简述对OpenFlow协议1.0的认识

OpenFlow:简述对OpenFlow协议1.0的认识


  1. OpenFlow:简述对OpenFlow协议的认识
  2. OpenFlow:简述OpenFlow协议的演进
  3. OpenFlow:简述对OpenFlow协议1.0的认识
  4. OpenFlow:简述对OpenFlow协议1.3的认识

     一个支持OpenFlow 1.0的交换机有一张流表(FlowTable)和一个安全通道(Secure Channel)。 流表(FlowTable)向交换机提供执行数据包的查找和转发工作的依据;安全通道(Secure Channel)向交换机提供到外部控制器的安全连接,如下图所示。控制器使用OpenFlow 1.0这一南向协议对交换机进行控制。
在这里插入图片描述

一、流表(FlowTable)

     一个流表包含一个流表项的集合、一个活动计数器、一个待作用至匹配数据包的操作集(可能包含0个或多个操作)。所有交换机处理的数据都要经过流表的比对。若发现一个匹配的流表项,则这个表项中所有的操作都将在这个数据表上执行。若没有匹配任何流表项,则数据包将通过安全通道转发给控制器。控制器负责在没有有效流表项的情况下决定如何处理数据包,并向交换机的流表添加或删除流表项。

     一个流表项由 Header Fields(包头域)、 Counters(计数器) 、Actions(操作集)组成。如下图所示:
在这里插入图片描述

1.1 Header Fields(包头域)

     交换机根据 Header Fields(包头域)对接收的数据包进行匹配, Open Flow1.0的 Header Fields(包头域)由12元组组成。SDN交换机解析数据包后逐一对这12元组进行匹配,每一元组的匹配分为固定值匹配和掩码匹配。12元组详情如下:

元组英文适用环境位(比特)
入口Ingress Port所有数据包依赖具体实现
以太网源地址Ethernet source address可用端口的所有数据包48
以太网目的地址Ethernet destination address可用端口的所有数据包48
以太网类型Ethernet Type可用端口的所有数据包16
VLAN的IDVLAN ID以太网类型为0x8100的所有数据包12
VLAN的优先级VLAN Priority以太网类型为0x8100的所有数据包3
IP源地址IP source address所有IP和ARP的数据包32
IP目的地址IP dst所有IP和ARP的数据包32
IP协议IP Protocal所有IP数据包,以太网上的IP,ARP数据包8
IP ToS位IP ToS Bits所有IP数据包6
TCP/UDP源地址TCP/UDP src port所有的TCP,UDP,ICMP数据包16
TCP/UDP目标地址TCP/UDP dst port所有的TCP,UDP,ICMP数据包16

1.2 Counters(计数器)

     交换机使用 Counters(计数器)来对匹配的数据包进行更新,Come(计数器)可根据每流表、每个流、每个端口、每个队列进行维护。统计信息所需的计数器分为如下四种:

计数器1【每一流表】位(比特)
Active Entries32
Packet Lookups64
Packet Matches64
计数器2【每一流表项flow】位(比特)
Received Packets64
Received Bytes64
Duration(Seconds)32
Duration(NanoSeconds)32
计数器3【每一端口】位(比特)
Collisions64
Received Packets64
Received Bytes64
Received Drops64
Received Errors64
Transmit Packets64
Transmit Bytes64
Transmit Drops64
Transmit Errors64
Receive CRC Errors64
Receive Overrun Errors64
Receive Frame Alignment Errors64
计数器4【每一队列】位(比特)
Transmit Packets64
Transmit Bytes64
Transmit Overrun Errors64

1.3 Actions(操作集)

     交换机对匹配成功的数据包执行相应的 Actions(操作集),每个操作集可能包含0个或多个操作。若发现一个匹配的流表项,则这个表项中所有的操作将在这个数据表上执行。若没有匹配任何流表项,也没有包含任何转发操作,交换机将丢弃数据包,用户必须按指定的顺序(如根据优先级编号)来执行待操作列表,但不保证一个端口中数据包的输出顺序。

     若一个流表项不能按指定的顺序来对数据包执行列表中的操作,则交换机可能将这个流表项驳回,并立即返回一个不支持流的错误值。不同供应商提供的交换机端口中的顺序可能不同。

     操作分为两种,一种为 Required Actions必需操作、另一种为 Optional Action可选操作。注意交换机不需要支持所有的操作类型,只需要支持 Required Actions必需操作即可。交换机连接到控制器时将告知哪些是可选操作。

1.3.1 Required Actions必需操作

     每台交换机都必须支持这些操作,包括转发操作中的必需操作和丢弃,其中转发操作中的必需操作包括以下几项。

  1. ALL:将数据转发至不包括进入接口的所有接口。
  2. CONTROLLER:将数据包封装并传输至控制器。
  3. LOCAL:将数据包发送至本地交换机网络栈。
  4. TABLE:仅向 packet-out消息执行流表中的操作。
  5. IN PORT:将数据包从其进入的接口发出。
  6. 丢弃:若数据包不匹配所有的流表项,则交换机将丢弃此数据包。

1.3.2 Optional Action可选操作

     可选操作包括转发操作中的可选操作,入队,修改域。

     转发操作中的可选操作包括以下几项:

  1. NORMAL:执行传统交换机支持的转发路径。
  2. FLOOD:使用最小生成树的原理将数据包泛洪至除入口之外的所有接口。

     入队:入队操作是将数据包转发至一个端口所对应的队列中。

     修改域的操作是SDN最强大的功能之一。允许修改数据包的包头内容包括以下几项:

  1. 修改VLAN标签。
  2. 修改VLAN优先级。
  3. 弹出VLAN标签。
  4. 修改源MAC地址。
  5. 修改目的MAC地址。
  6. 修改源IP地址。
  7. 修改目的IP地址。
  8. 修改IP服务类型字段。
  9. 修改源端口号。
  10. 修改目的端口号。

1.4 匹配流表

     交换机接收到一个数据包后,执行匹配流程。其中对于数据包的包头进行解析,以用于交换机基于数据包的类型来查找流表。根据数据包是否属于VLAN(以太网类型0x8100)、是否为ARP数据包(以太网类型0x0806)、是否为IP数据包(以太网类型0x0800)、是否为TCP或UDP包(IP协议为6或7)、是否为ICMP(IP协议为1)来提取关键信息进行比对。

     数据包基于优先级(优先级越高,其数字也越高)来对众多流表项进行匹配。若一个流表项指定了精确的匹配(即没有通用符),则它是最高优先级的,其他带有通用符的流表项有其相应的优先级。先匹配优先级高的流表项,如果两个流表项优先级相同,那么由具体的交换机自行决定。

     当数据包匹配到一条流表项时,流表项对应的计数器更新。若没有匹配到任何流表项,则交换机将这个数据包通过安全通道发送给控制器。另外注意,若某个域的值为ANNY,则它匹配包头对应这条域中所有可能值的数据包。

二、安全通道(Secure Channel)

     安全通道是连接交换机和控制器的接口,所有的安全通道消息都必须遵守OpenFow协议。OpenFlow协议支持3种消息类型: controller-to-switch(交换机到控制器)、 asynchronous(异步)和 symmetric(对称),每一类消息又有多个子消息类型。

  1. controller-to-switch:消息由控制器发起,用于直接管理或监视交换机的状态,包括 Features(获取交换机特性)、 Configuration(配置 OpenFlow交换机)、 Modify-State(修改交换机状态,即修改流表)、 Read-State(读取交换机状态)、Send- Packet(发送数据包)、Barrier(阻塞消息)。
  2. synchronous(异步)消息:由交换机发起,用以提醒控制器更新网络事件和交换机状态变化的状态,包括 Packet-In(告知控制器交换机接收到数据包,注意此数据包为交换机无法处理的数据包)、 Flow-Removed(告知控制器交换机流表被删除)、 Port-Status(告知控制器交换机端口状态更新)、Error(告知控制器交换机发生错误,如控制器给交换机下发了一些无法执行的命令)。
  3. symmetric(对称)消息:可以由交换机或控制器发起而无须邀请,包括Hello(建立Open Flow连接),Echo(确认交换机与控制器之间的连接状态,互相探测对方是否存在)、 Vendor(由厂商自定义消息)。
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页