P4

P4中SAI、API的作用是什么?给谁提供的编程接口?


SAI主要用于屏蔽底层硬件管理的差异,比如端口管理,不同厂商提供的管理接口不一样,为了让上层用户看到统一的接口,就引入SAI,可以这样理解吗?.

API不是编译时自动生成的吗?为啥github代码里面还要提供?
已邀请:

Capilano - 花若盛开,清风自来

赞同来自: Wasdns


1.SAI是一层抽象,屏蔽底层差异,向上提供统一的接口,你所说的API是跟p4程序相关的,编译生成的,每次更换p4程序则需要重新编译,控制面可以直接调此类API,这种方式称为PD(程序相关),而SAI可以基于此类API,对于NOS而言就只看到SAI,有点类似linux网卡管理,不同厂家的网卡为什么都能用?
2.另外一种是PI(程序无关)方式,主要是用于与控制器交互,P4程序编译后可以生成两个文件,一个是逻辑相关,一个是运行时配置信息,该配置文件包含id 与name映射关系,下表时需要用到,运行时控制器需要将这两个文件序列化成protobuf消息下给p4设备,这种就是@Glow 说的方式,好处是不需要重新编译

要回复问题请先登录注册