VPP/软件架构

一、源码目录(Directory layout)

二、源码分类(Implemetation taxonomy)

vpp数据平面分为四个不同的层:

  • 基础架构层:包括vppinfra,vlib,svm和二进制api库。源码:/src/{vppinfra, vlib, svm, vlibapi, vlibmemory}

  • 通用网络协议栈层:vnet。源码:/src/vnet

  • 应用程序shell:vpp。源码:/src/vpp

  • 日益丰富的数据平面插件。源码:/src/plugins

Vppinfra:

Vppinfra是一个基本的c-library服务集合,可以构建直接在裸机上运行的独立程序。它提供高性能动态数组,hash表,位图,高精度实时时钟支持,精细的日志记录和数据结构序列化。

Vectors

Vppinfra向量是无处不在的动态调整大小的数组,具有用户定义的“头”。许多vpppinfra数据结构(例如hash,堆,池)是具有各种不同头的向量

内存布局如下所示:
                   User header (optional, uword aligned)
                   Alignment padding (if needed)
                   Vector length in elements
 User's pointer -> Vector element 0
                   Vector element 1
                   ...
                   Vector element N-1

如上所示,向量API处理指向向量第0个元素的指针。 如果指为空针则说明向量的有效长度为0。

为了避免内存分配器的分配失败,通常在保留内存分配的同时将向量的长度重置为零。通过vec_reset_length(v)宏将向量长度字段设置为零。

通常情况下不存在用户标头。用户头允许在vppinfra向量上构建其他数据结构。用户可以通过vec * _aligned宏指定数据元素的对齐方式。

向量元素可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值