P4

P4如何和控制器对接?


在P4的官方Github中,有一个repo名为p4ofagent,是将P4和控制器联系起来的一种方式,不知道是否有人尝试过?
现有和控制器对接的方式,除了走SDN南向也就是OpenFlow,另外一种方式是通过RPC frame(如Thrift、gRPC)做对接,现有控制器对于该方法的支持如何,是否已经有相关工作支持控制器配置P4交换机?
已邀请:

Cool - SDN&P4程序猿

赞同来自:


Hi, Wasdns

GitHub 上有个ONOS P4的项目,不知道你有没有尝试研究下ONOS P4 Developer Tools,我看描述是支持配置的

特点一览
通过使用ONOS 1.6,您将能够通过逻辑集中的SDN平台对BMv2设备的网络进行编程和控制。目前支持以下功能:
设备发现:连接/断开事件
JSON配置交换
Packet-ins and packet-outs
匹配动作表格(通过流程规则,流程目标或意图)
端口报文统计
流量统计

Cool - SDN&P4程序猿

赞同来自: Wasdns


@Wasdns ,非常抱歉,最近出新版本,没来得及回复,我的理解,仅供参考哈

ONOS与bmv2的通信方式

北向接口,ONOS提供了Java API,叫“BMv2 Device Context Service”,应用程序可以用它来指定运行时BMv2设备的JSON配置。也可以使用现有的北向API(例如flow rule, flow objective or intents)填充匹配动作表,或者通过ONOS扩展处理非标准P4的匹配和动作。

南向接口,ONOS与BMv2交互使用Thrift RPC

之前的一张架构图可以参考

onos-p4.png

Wasdns

赞同来自:


@Cool

非常感谢冷老师的回复!

我有关注到ONOS这个方面的工作,一直还没有对其进行研究,接下来会对它进行尝试。不过不大清楚的是,ONOS和P4之间是应该通过OpenFlow协议进行通信的吧?那么按照我一个不成熟的理解,有两种方法:

(1)ONOS在其配置面上下发的是P4流表的规则,中间需要转换为OpenFlow的消息,底层P4交换机也需要对OpenFlow消息进行转换,然后配置;如果是这样的话,那么就是集成了p4ofagent?

(2)使用RPC frame的形式,在ONOS上直接转换为P4的控制规则配置底层。但是这种方法就可以不走OpenFlow做通信。

不知道我的理解是否出现了偏差。。还望您纠正一下:),谢谢您。

Wasdns

赞同来自:


@Cool 非常感谢冷老师,学习了!

要回复问题请先登录注册