开放流规则中的元数据

时间:2018-12-18 16:42:43

标签: openflow openvswitch

此问题是以下内容的扩展

OpenFlow Rule Metadata

关于我的元数据问题,我想澄清一下 让我们说,我有一个开放流规则,如下所示:

Cookie=0x8000001, duration=228925.445s, table=17, n_packets=350, n_bytes=32424, priority=10,metadata=0xc000f30000000000/0xffffff0000000000 actions=goto_table:19

我想了解以下内容

我们是否有一定的规则/算法,可以从数据包中确定这些元数据。

因为OVS中的数据包实际上是根据匹配元数据进行切换的,这是正确的吗? (至少按照上述流程规则)

  • 并且数据包本身不携带元数据,那么究竟 数据包命中与元数据匹配的流。

    因此,如果我正确理解了流表之间遍历的数据包,这些数据包在OVS应用程序本身或Handled @OVS应用程序级别内,直到确定出口端口 因此,在那种情况下,在@ OVS-Application级别处理元数据,直到通过出口端口发送数据包为止。

这是正确的吗?

最后,ODL中的哪个模块负责确定元数据,我想从代码中了解它是如何完成的。

2 个答案:

答案 0 :(得分:0)

每个数据包的OpenFlow元数据字段starts with a value of zero。然后,表可以写入该字段,您可以在后续表中对其进行匹配。如OpenFlow规范所述,它仅用于将信息从一个表携带到另一个表:

  

元数据:可屏蔽的寄存器,用于将信息从一个表传送到另一个表。

答案 1 :(得分:0)

首先你可以试试 Ryu,它的代码更易于阅读和理解。 然后,我认为metadata/instructions/actions....这些东西属于OVS转发的处理,但是这些东西需要附加到某个东西上,那就是OVS收到的数据包。关于问题“我们是否有一定的规则/算法,从数据包中确定这些元数据。”我认为元数据的值是由控制器决定的,这意味着它取决于“你如何设计自己的网络实例使用一些(例如 RYU)控制器应用程序'。