美文网首页
关于 VPP API 的 Python binding

关于 VPP API 的 Python binding

作者: Traphix | 来源:发表于2017-03-28 19:59 被阅读954次

    VPP是Cisco开源的一个非常棒的数据平面处理工具(或者叫做程序),关于VPP的介绍在下面的三个博客中有提及,不再展开介绍了。

    VPP开源很好,但是VPP的wiki更新的非常慢,与master代码相差甚远,所以本文针对VPP官方的Python Language Binding一文做一点点小小的补充。

    以下是VPP通过python获取一些统计信息的方法,有些地方需要修正。

    #!/usr/bin/env python
    
    import struct
    import time
    
    import vpp_papi
    
    def papi_event_handler(result):
        # 其实这个函数也已经不能用了,因为want消息返回两个参数,这个函数只有一个参数
        # 并且result的值也不一样了
        if result.vl_msg_id == vpp_papi.VL_API_VNET_INTERFACE_COUNTERS:
            format = '>' + str(int(len(result.data) / 8)) + 'Q'
            counters = struct.unpack(format, result.data)
            print('Counters:', counters)
            return
    
        print('Unknown message id:', result.vl_msg_id)
    
    #**********************看这里**********************#
    # 原始的vpp例化连接、注册消息处理函数方法如下
    # r = vpp_papi.connect("test_papi")
    # vpp_papi.register_event_callback(papi_event_handler)
    
    # 新的方法
    r = vpp_papi.VPP()
    r.register_event_callback(papi_event_handler)
    
    # 原始的api调用如下
    # r = vpp_papi.want_stats(True, 123)
    
    # 稍作修改的api调用如下,下同
    r.want_stats(enable_disable=True)
    
    #
    # Wait for some stats
    #
    time.sleep(60)
    r.want_stats(enable_disable=False)
    r.disconnect()
    #*************************************************#
    

    相关文章

      网友评论

          本文标题:关于 VPP API 的 Python binding

          本文链接:https://www.haomeiwen.com/subject/ryksottx.html