OpenFlow1.1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenFlow1.1相关的知识,希望对你有一定的参考价值。

参考技术A 在OpenFlow1.1版本中,添加了组的概念,用于将多个端口作为组进行处理。相应的在OpenFlow交换机中,存在一个组表和多个流表。

OpenFlow1.1中增加的组表概念,在后续版本中一直沿用,组是OpenFlow为数据包指定在多个流中执行相同操作集的高效方法,组标的结构如图:

每一条OpenFlow组表记录称为组表项,每个组表项都包括:组ID,组类型,计数器和动作桶。通过组表,每个数据流可以被划分到相应的组中,动作指令的执行可以针对属于同一个组ID的所有数据包,适用于实现广播和多播,或者执行某些特定的操作集,且组定义了四种组类型,即:

在openflow1.0中,每个数据包只能匹配一个流表项,有时也只能实现在openflow交换机中设置一个流表。但从OpenFlow1.1开始,OpenFlow交换机可以设置多个流表并为一个数据包匹配多个流表项。对于多个流表,OpenFlow1.1将多流表处理为流水线,各个流表依次对每个数据包进行匹配。

在OpenFlow1.0中流表项的构成要素为:

在OpenFlow1.1中流表项的构成要素为:

即将头字段域更名为匹配字段,用指令代替行动,但行动仍存在与协议中。

相比较OpenFlow1.0,1.1版本中的匹配字段中新添加了MPLS标签、MPLS流量、元数据3个字段。并且从OpenFlow1.1中,添加了SCTP(流控制传输协议)。SCTP使用了移动通信技术3GPP和LTE。

数据包到达OpenFlow交换机后,在流表0中进行匹配

之后根据需要在多个流表中进行匹配,并在各个流表中执行1-3步骤。

SDN openflow 学习小得

一、openflow 大概的工作原理

  SDN 的一个大概简陋图,

  技术分享图片

  同网段通讯

  1.我们传统网络 pc1 10.1.1.1 要找同一子网的 pc2 10.1.1.2  通过广播洪泛。找到pc2,然后转发。

  2.在openflow 中是怎么工作的呢?

    openflow 在转发层设备上只负责数据的一个转发,相对传统的交换机,没有MAC表,但是有一个流表,根据流表来转发。

    但是,转发层设备不会自己计算、学习、维护流表,流表来自sdn控制器。

        这里简单描述一下PC1 如何发送数据包到PC2,

  先声明几个名称

  openflow packet in  相对于控制器,到控制器的包

  openflow packet out  相对于控制器,从控制器发出的包

  openflow modify  下发流表的包

  流表 类似 路由表,包含 IP,  源mac 目的ip 目的MAC,出接口,时间 

  在初始状态下,转发器1 还不知道还没有流表,所以只有直连的 PC1 

  1.pc1 发起一个数据包要到达 pc2.

  2.转发器本着有事找领导的原则(SDN 里转发器不学习计算)发送 ARP request  给 SDN控制,openflow packet in

  3.SDN控制收到 arp request后会给 所有的转发器下发  packet out 包 (arp reply) 在除了设备互联口上转发,查找 10.1.1.2 。

    同时下发流表给所有设备,因为控制器已经知道了一条转发信息 控制器1连接PC1的信息。这个信息是包含在 转发器给控制的 ARP request 中

  4.pc2收到查询的包后会 回应转发器2 ,转发器收到包,再回复控制器 packet in 

  5.控制器收到包之后,再次下发新流表给转发器。

  6.转发器收到流表之后,知道10.1.1.2 从g 0/0/1口转发。

整个过程相对传统的MAC 洪泛麻烦。效率低。

  跨网段的怎么通讯呢?

  跟传统的通讯方式有点类似,先找网关。假设PC1 有一个数据包要发到PC3,转发器上还没有任何条目的刘表

  1。转发器收到请求后,发送 arp request  给 sdn 控制器。

  2。控制器回复它就是网关,答复一条 网关的 mac ,及下发流表(pc1)给设备

  3。转发器一收到之后,再次发送 arp request (pc3) 给控制器,

  4。控制器再次 packet out 给所有设备,查询 PC3 的所在,同时宣告自己是 20.1.1.0 的网关。

  5.PC3收到包,回复给转发器2,转发器 pcaket in  给控制器,控制器再次下发流表。

  6.转发器1 收到流表,知道PC3 从gi 0/0/1口,发送。

  7.转发器2 收到数据包,从 e0/0/2口 转发数据包。

 

以上是关于OpenFlow1.1的主要内容,如果未能解决你的问题,请参考以下文章