VPP-API概念

API 方法分类

         VPP 二进制API是消息传递API,支持如下API方法类型:

Request/Reply

        客户端发送一个请求消息,服务端回复一个单一的回复消息,通常回复消息以method_name+ reply的形式命名。

Dump/Detail

        客户端发送一个“bulk”(大部分)类型的请求消息到服务端,服务端回复一系列详细消息的集合,这些消息可能属于不同的消息类型,dump/detail调用必须被包括在一个控制的ping block内(a control ping block,个人理解有点像socket通信),否则客户端不知道基本消息什么时候传输结束;方法名必须以method+“_dump”的形式结束,回复消息应该以method + "_details"命名;这里的例外是返回多种消息类型的方法(比如sw_interface_dump);dump/detail方法被典型的用于获取集体(bulk)信息,比如完整的FIB table消息。

Events

        客户端可以注册一个事件以获取来自服务器的异步事件通告,当用于获取接口状态改变、周期性统计等信息时很有用,请求通告的方法名通常以“want_”为前缀,例如“want_interface_events”,API定义中没有定义何种通告类型需要事件注册;来自客户端的消息必须包含“client_index”,一个不透明的cookie用于识别发送者,一个“context”(上下文/内容)字段让客户端匹配请求与回复。

命名规则总结

        Reply/Request方法: Request:name Reply:name+_reply

        Dump/Detail方法: Request:name+_dump Reply: name+_details 

        Event registration:Request: want_+name Reply: want_+name+_reply

类型支持

        VPP API支持任意的C类型,包括复合数据类型。

遗留问题

类型问题

        1)二进制数组和字符串都被表示为u8[],一个单独的类型for string已经被添加

        2)从历史上看,因为没有使用显示类型,语言包装器的类型检查一直很困难

        3)变长数组不包含u8 char[0],并且计数字段是特定于消息的,因此很难为这些消息类型自动生成代码。

        4)指向共享内存指针的使用

方法问题

        Dump/Details:没有明确定义可以返回哪些消息类型

        Event methods:没有明确定义可以返回哪些消息类型

        Dump/Details :无法将失败返回给客户端

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值