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()
#*************************************************#
网友评论