OpenFlow1.3.3 学习记录(持续更新)
OpenFlow1.3.3 学习记录(持续更新)
正在学习OpenFlow1.3,该篇笔记将日常更新,主要内容大致为官方文档的总结与翻译。
交换机组件
按照优先级顺序进行包匹配,如果匹配到流表项,则执行流表项中绑定的Instructions;如果没有匹配到流表项,将根据table-miss的配置进行操作,转发到controller,drop,next flow table。Instruction包括:actions或者修改流水线配置。
OpenFlow Ports
- Standard Ports
- Physical Ports
- Reserved Ports
- ALL
- 除了输入端口和设置OFPPC_NO_FWD端口
- 只能作为out_port
- CONTROLLER
- out_port时:被封装packet-in
- TABLE
- 仅在作为packet_out中的output action中有效
- IN_PORT
- only: out_port
- ANY
- 没有指定端口时代表特殊含义;
- 不能作为in_port, out_port
- NORMAL
- FLOOD
- ALL
端口改变
Packet转发到不存在的端口,将执行drop操作;对于组表同样,但组表的表现可能会受liveness checking影响。
当端口状态改变时,最好删除相关的流表项。
OpenFlow流表
Pipeline Processing
交换机分两类:
- OpenFlow-only
- OpenFlow-hybrid 支持传统交换机和OpenFlow交换机操作
流表至少有一个,从0开始,流水线从第一个流表开始处理。当匹配到流表项,则开始执行instruction设置的操作。流表项可以将一个包指向到另外一个流表项(GotoTable),但只能向前不能回退。最后一个流表项,不能被指向到其他流表项。
如果没有匹配到流表项,根据table-miss流表项进行操作。如果没有table-miss设置,默认drop。
Flow Table
Match Fields | Piority | Counters | Instructions | Timeouts | Cookie | Flags |
---|
- couters: 当匹配到包进行更新
未完,待续