4.OpenFlow端口 OpenFlow1.5核心概念翻译与理解-OpenFlow1.5中文版

4 OpenFlow端口

这部分讲述OpenFlow端口的抽象方法与OpenFlow支持的多种类型的端口

4.1 OpenFlow端口

OpenFlow端口是OpenFlow处理单元与网路其他部分传递封包的网路接口。交换机在逻辑上与其他交换机都是通过OpenFlow端口相连,一个封包在两个交换机之间的传输只能从交换机1的出口端口到交换机2的入口端口。
OpenFlow交换机给OpenFlow处理提供了一定数目的OpenFlow端口,这些端口与交换机硬件提供的网路接口并不一定完全一致。有些接口不支持OpenFlow,OpenFlow交换机也有可能会添加额外的端口。
封包都是在入口端口处接收由流水线处理(见5.1),处理完后会转发至出口端口。入口端口会成为封包的一种属性,在流水线处理封包的过程中代表着封包进入交换机的端口,可以作为一种匹配属性(见5.3)。流水线可以通过输出动作将封包从出口端口输出(见5.8),这一动作决定了封包如何从交换机回到网路中。
一个OpenFlow交换机必须支持三种类型的端口:物理端口,逻辑端口和预定端口。

4.2 标准端口

OpenFlow标准端口定义为物理端口,逻辑端口以及本地预定的端口。
标准端口可以当做入口端口,出口端口来使用。它们可以在组中使用(见5.10),有端口计数器(见5.9),此外它们还具有状态与配置(见7.2.1)。

4.3 物理端口

OpenFlow的物理端口是与交换机硬件接口对应的由交换机定义的端口。举个例子,以太网交换机上,物理端口与以太网接口一一映射对应。
在有些布放的情形下,OpenFlow交换机是在硬件上虚拟化的。此时,物理端口可能代表着对应交换机硬件接口资源的一个分片。

4.4 逻辑端口

逻辑端口指的是由交换机定义但不与硬件接口直接相关的端口。逻辑端口可能是由交换机使用非OpenFlow 方法定义的高阶抽象(如链路聚合组,隧道,回环接口)。
逻辑接口包含了封包封装且可能映射到各种物理端口。逻辑端口完成的封包处理必须依赖于应用,且处理过程对OpenFlow处理是透明的。这些端口必须采用与物理端口相同的方式来完成与OpenFlow处理的交互。
逻辑端口与物理端口唯一的区别在于与逻辑端口相关的封包必须有一个额外的流水线属性,隧道编号(见7.2.3.9)。当逻辑端口收到的封包被转发到控制器时,相关的物理端口与逻辑端口都会向制器发送报告(见7.4.1)。

4.5预定端口

OpenFlow预定端口是有这篇文档所定义的。它指明了一般性的转发规则,例如发送给控制器,泛洪或者是使用非OpenFlow的方式转发(如普通的以太网交换机处理)。
一个交换机不一定要支持全部的预定段端口,但必须支持表明必备的端口。
·(必备)ALL:代表了交换机可以用于转发一个特定封包的所有端口。只能用作输出端口。在这种情况下,封包将被复制到各个端口执行出操作,当然封包的入端口与配置为OFPPC_NO_FWD的端口除外。
·(必备)控制器:代表与控制器相连的控制信道,可以作为入口端口或出口端口使用。作为入口端口使用时,将封包封装在Package-in消息中,并将其转发到控制器见(7.4.1)。作为出口端口使用时,它能识别封包来自于控制器。
·(必备)表:代表OpenFlow流水线的开始(见5.1)。这个端口只有在Package-out消息动作集中的输出动作里才有意义(见7.3.6)。执行输出操作是,将封包转发至第一个流表,由此开始一个OpenFlow流水线处理封包的过程。
·(必备)入端口:代表封包的入口端口。只能作为输出端口使用,通过它的入口端口送出封包。
·(必备)任意:在OpenFlow请求没有指定端口时使用的特殊值(也就是端口匹配值为通配符时)。一些OpenFlow指令可能指明只对特定的端口应用,这一属性取决于流表项的端口号码属性,当这一属性被设为ANY时,请求会引用到各个端口上。既不能做入口端口也不能做出口端口。
·(必备)未设置:用于指明输出端口在动作集中为设置的特殊值。只能在用匹配属性OXM_OF_ACTSET_OUTPUT来匹配动作集中的输出端口时使用(见7.2.3.7)。 既不能做入口端口也不能做出口端口。
·(可选)本地:代表交换机的本地网络堆与它的管理堆。 既能做入口端口也能做出口端口。本地端口使得远端实体可以与交换机及网路服务通过OpenFlow网路相连。在有着合适的默认流表项的情况下,本地端口可以用来做控制器的同频带信号传输的连接。
·(可选)普通:代表使用交换机的传统的非OpenFlow流水线转发方法(见5.1)。只能作为输出端口使用,使用普通的流水线处理封包。通常情况下会给封包架起网桥或是给封包指明路由路径,而实际上结果总是依赖于实现。如果交换机不能够从OpenFlow流水线转发封包到普通流水线,它必须不支持这个动作。
·(可选)泛洪:代表使用 交换机的传统的非OpenFlow流水线泛洪(见5.1)。 只能作为输出端口使用, 实际结果依赖于实现。通常会在所有的标准端口送出封包,封包的入口端口与处于OFPPS_BLOCKED状态的端口除外。交换机也可能通过封包的VLAN ID或其他标准来选择实现泛洪的端口。
只支持OpenFlow的交换不支持普通端口泛洪端口(见5.1)。使用泛洪端口来实现泛洪依赖于交换机的实现方法与配置,与此对比的是使用ALL类型的组来转发的方式实现泛洪更灵活。

4.6端口改变

交换机的配置,例如使用OpenFlow配置协议,可能会随时增加或删除交换机上的端口。交换机会根据端口下层的情况来改变端口的状态,例如链路停止运行(见7.2.1)。控制器或交换机的配置也有可能改变端口的配置(见7.2.1)。所有的这些改变都会告知控制器(见7.4.3)。
端口的增添,修改或者移除不会改变流表中的内容,即使是流表项的内容里涉及到了有变更的端口。转发给不存在的端口的封包将被丢弃(见5.6)。类似地, 端口的增添,修改或者移除不会改变组表中的内容。组的行为可能会由于实时检查而改变(见6.7)。
端口被删去后,另一个物理或逻辑端口会使用它的端口号。仍然导向这个该端口号的流表或组表会将封包转发到不同的端口,导致不良的结果。因此,删除端口后应告知控制器来删除导向这个该端口号的流表或组表。

4.7 端口再流通

逻辑端口可以用来插入网路服务或者是OpenFlow交换机的复杂处理。大多数情况下,送至逻辑端口的封包不会再回到相同的交换机,它们要么被逻辑端口处理要么通过物理端口送出至网路。在其他情况下,送到逻辑端口的封包会在处理后再流通到交换机。
通过逻辑端口实现封包再流通只是一种可行的方式,OpenFlow还支持另外更多类型的再流通方式。最简单的再流通方法就是通过同一逻辑端口再将封包返回交换机,这种方法可以用在回环或是无方向的封包处理上。再流通也可以发生在一对逻辑端口上,也就是封包从一个逻辑端口甲送出从另外一个逻辑端口乙送回交换机。这种方法可以用来代表隧道终端或是双向的封包处理。端口存在描述端口之间再流通的属性(见7.2.1.2)。
一个交换机应当避免它在使用再流通时陷入无尽的循环中,这种方法针对不同应用而不同且不再本篇说明文档范围内。举个例子,交换机可以给每个封包附加一个再流通计数器,每次封包再流通后计数器加一,当计数器值大于预定门限时,交换机就会将该封包丢弃。我们极力推荐在配置控制器时,一定要避免因为流表项的组合而导致再流通循环回圈的产生。
由于封包具有很大范围的处理可能与方式,因此我们可以假定很少很少的封包会再流通回交换机。再流通的封包回到流水线的第一个流表(见5.1)并且新的输入端口可以识别出再流通的封包。封包的报头可能会改变,因此匹配属性并不保证与之前一致。逻辑端口可能会做封包分割或是封包组合,因此封包不会一一对应且有不同的大小。
隧道ID以及一些其他与封包相关的流水线属性可能在再流通的过程有一部分不变,作为返回交换机后的匹配值。选择保留的流水线属性通过端口匹配属性申明(见7.2.1.2)。如果流水线属性在OFPPDPT_PIPELINE_OUTPUT与OFPPDPT_PIPELINE_INPUT中都有出现,那么这一属性就会在再流通的过程中保留(亦即必须保持不变)。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值