OpenFlow交换机规范解读:流表与行动指令

需积分: 50 73 下载量 32 浏览量 更新于2024-08-10 收藏 516KB PDF 举报
"本文档主要介绍了OpenFlow 1.3中的核心概念,包括行动列表、OpenFlow通道以及交换机的基本架构和工作原理。" 在OpenFlow 1.3中,行动列表(Action List)是实现流量控制和数据包处理的关键部分。Apply-Actions指令和Packet-out消息都包含了这一列表,使得一系列的行动能够被依次执行。行动的效果是累积的,意味着如果列表中有两个或更多的相同行动,如Push VLAN,那么数据包会依次受到这些操作的影响,即被加上多个VLAN标签。常见的行动包括: 1. Required Action: Output - 将数据包发送到指定的端口,这是执行转发动作的基本方式。 2. Required Action: Drop - 丢弃数据包,用于过滤和阻止不需要的流量。 3. Required Action: Group - 使用组表进一步处理数据包,实现负载均衡、多路径转发等复杂策略。 4. Optional Action: Push-Tag/Pop-Tag - 添加或移除VLAN标签,用于VLAN标记和管理。 5. Optional Action: Set-Field - 修改数据包头部的字段,如源MAC、目的MAC或IP地址等。 6. Optional Action: Change-TTL - 更改Time To Live值,影响数据包在网络中的生存时间。 OpenFlow通道是控制器与交换机间通信的桥梁,它们通过安全传输层协议(TLS)或不加密的TCP连接进行交互。OpenFlow协议定义了三种消息类型: 1. Controller-to-Switch - 由控制器发起,用于管理交换机配置和获取状态信息。 2. Asynchronous - 异步消息,由交换机发送,报告网络事件和状态变化。 3. Symmetric - 对称消息,可由控制器或交换机双向发送,用于执行控制命令和数据包转发。 OpenFlow交换机的核心结构包括流表和控制器通信通道。流表由一系列流表项组成,每个流表项包含匹配条件、计数器和指令集。匹配过程从第一个流表开始,按优先级顺序检查,当找到匹配项时,执行相应的指令。如果没有匹配项,则依据漏桶表项的配置决定数据包的命运,如发送到控制器、丢弃或继续到下一个流表。指令可以涉及数据包转发、修改或组表处理。当指令集不再指向下一个表时,数据包会被修改并转发到指定端口。 交换机的端口不仅包括物理端口,还可能包括逻辑端口,如预留端口用于通用行为(如发送到控制器、泛洪)和交换机自定义的逻辑端口(如链路聚合、隧道)。组表(Group)是实现多跳转发和复杂策略的工具,它是一组操作的集合,可以是泛洪、多路径转发或链路聚合等。 OpenFlow 1.3通过精细的流表管理和灵活的行动列表,为SDN(Software-Defined Networking)提供了强大的流量控制能力,而OpenFlow通道则确保了控制器对网络设备的远程、高效管理。这种分离控制平面和数据平面的设计,使得网络可以更加动态、灵活地适应不断变化的需求。