openflow1.3中文翻译版笔记

来源:互联网 发布:java mmap 编辑:程序博客网 时间:2024/05/20 17:59

Openflow1.3协议读书笔记

不打算全部介绍,只记录下自己认为是需要理解的要点。如果不对,请提出批评建议。

Openflow的三种端口类型:物理端口,逻辑端口,保留端口。

保留端口的可实现的转发的类型:

     ALL,除了设置不转发及入端口外的所有端口

     CONTROLLER,即和控制器通信的口

     TABLE,仅在packet-out消息中有用(控制器要求发送报文,可先走管道匹配)

     IN_PORT,入端口

     ANY,只是一个端口通配符

     LOCAL,本地的网络协议栈,可以用于实现和in-band controller的通信。(需要特殊设置)

     NORMAL,即MAC-LEARNING对应的口,自动转发

     FLOOD,泛洪,发给非BLOCK的口,可以指定VLAN

上面的转发类型由必选动作output来指定执行。

Meter table某一个meterentry 由instructions来指定。

Group table 中的group entry 由 action set 中的action来指定。

每一个group entry中的action buckets 由 一个列表(list)组成,每个列表的元素就是一个动作集(action set)。

Actions中可以对报文头的各个field进行修改(pop/push或set等),设置队列,指定group entry等。

Action set 中每个field类型的set-field动作是不重复的(这跟python中集合的概念一致),如果要执行多个相同类型的动作,那么应该要用instruction中的apply-actions指令生成action list。当然控制器下发的packet-out也包含了一个动作列表。在action list上的所有动作都是按顺序执行的,并且会马上应用到对应的packet上。

     Actionlist的效果是“递增”的,意思就是如果用户尝试PUSH了两次VLAN,那么报文确确实实会得到两个VLAN头。

     如果在Action list上有output动作,那么应该有一个报文拷贝通过对应的端口发送出去。

     如果在Action list上有group动作,那么应该有一个报文拷贝给group并执行对应的group buckets。

在Apply-Actions指令中的Action list执行完后,pipeline直接在被执行的报文上继续做处理。但报文对应的action set是不变的。如果没有Goto-Table指令,那么Action set在当前Instructions处理完后就会马上执行。

感谢:sdnap提供的openflow协议1.3.0版本的中文概要,让我对1.3版本的协议有了大致的了解。如果有时间希望能再读读openflow协议相关版本的原文规范。如有不对之处,请批评指正。

0 0
原创粉丝点击