openflow协议相关

OpenFlow交换机是一个由远程控制器通过OpenFlow协议控制的交换机,其组件如下:


OpenFlow Pipeline处理决定了报文在各个Flow Table中如何相互作用,报文的pipeline处理流程如下:


报文进入一个Flow Table后:

1. 找到优先级最高的flow entry

2. 施行指示:

     i. 修改报文&更新匹配域(施行动作指示)

     ii. 更新action set(清空动作或者将动作写入action set)

     iii. 更新metadata

3. 将匹配域以及action set送入下一个flow table

Flow entry组件如下:


march fields:包括ingress port,pacekt headers,metadata

instructions:主要与actions与pipeline处理相关,actions包括包转发,包修改以及将包送入group table处理

报文进入pipeline流程首先进入flow table[0],然后根据指示进行处理,但是报文不能进如比自己所在flow table数小的flow table,即报文在flow table中传递是单向的,报文在每个flow table中匹配且仅匹配一次优先级最高的flow entry,若在该flow table中任意一条flow entry都无法匹配报文,那么将进入table miss流程,table miss流程主要包括:将报文送至控制器,丢包,或者将报文送入后面的flow table。 


flow entry的删除方式有两种:请求控制器主动删除,或者通过流超时机制idle_timeout&hard_timeout

前面讲到Group Table与Flow Table联系是通过flow entry中instructions字段中的actions,group可处理flooding,mutlipath,fast reroute,link aggregation

Group entry组件如下:


Group Type包括:

all:执行组中所有的“桶”(buckets)。使用这个组用来多播或者广播转发。

select:执行组中的一个“桶”。基于一个“switch-computed selection”算法(例如,对用户注册的一些“元祖(tuple)”进行hash或者是简单的“轮询”),数据包被“组”中唯一的一个桶处理。

indirect:执行组中定义的“桶”。允许多个“流表项”或“组”指向一个共同的组标识符,支持快速高效的收敛。(例如,IP下一跳转发)。

fast failover:执行第一个存活的(live)“桶”。

action buckets:是一个有序的action buckets,每一个bucket内的actions执行顺序由action set指定,每一个action bucket是一个action set及其参数的组合

Action Set是与每个数据包相关联的,初始时是一个空集合;一个Flow Entry可以通过Write-Actions或者Clear-Actions指令来修改Action Set,这个Action Set会在不同的Flow Table之间进行传递,当一个Flow Entry的Instructions里不包含Goto-Table指令时,那么整个Pipeline Processing就会在此Flow Entry停止,然后开始执行与该数据包关联的Action Set里所有的action(s)。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值