vpp接口数据结构

dpdk_device_t 字段描述

lockp 发送队列锁,当发送队列个数少于线程个数时往port发包需要加锁,lockp是一个数组,每个元素对应一个发送队列,即每个发送队列一把锁

device_index 为port分配的index,每个port一个

vlib_hw_if_index 该port对应的hw结构的索引

vlib_sw_if_index 该port对应的sw结构的索引

per_interface_next_index 通过插件设置的下一个节点的index,如果没有设置该字段,默认下一个节点为handoff

tx_vectors 发包缓存(数组),每个线程一个,每个数组大小为4096

rx_vectors 收包缓存(数组),每个接收队列一个,每个数组大小为256

d_trace_buffers trace用于存放mbuf数组

frames 用于分发包用的数组,每个线程一个,目前暂未使用

dev_type 设备类型:ETH、KNI、VHOST_USER

pmd 驱动类型:THUNDERX、E1000EM、IGB、IGBVF、IXGBE、IXGBEVF、I40E、I40EVF、VIRTIO、VICE

cpu_socket 该port所在的numa

admin_up port的管理状态

promisc 混杂模式

tx_q_used port发送队列个数

rx_q_used port接收队列个数

nb_rx_desc port接收队列大小(描述符个数)

nb_tx_desc Port发送队列大小(描述符个数)

cpu_socket_id_by_queue 收每个接收队列的核对应的socket

port_conf port的配置

tx_conf 发送队列配置

kni Kni口

kni_port_id Kni口id

vu_if_id

vhost-user相关字段

vu_vhost_dev

vu_is_running

vu_intf

af_packet_port_id AF_PACKET口id

link port状态

time_last_link_update 最近一次更新port状态的时间

stats port的统计计数

last_stats 上一次获取的port的统计技术

last_cleared_stats 上次清除的port的统计计数

xstats port扩展统计

last_cleared_xstats 上次清除的port的扩展统计计数

time_last_stats_update 最近一次更新port统计计数的时间

port_type Port的类型:1G、10G、40G、BOND、SWITCH、NETMAP、AF_PACKET

efd_agent efd功能相关

need_txlock 发包是否需要加锁

ethernet_interface_t 字段描述

flag_change Port的管理状态、混在模式等flag修改函数

driver_instance 暂未使用

address[6] Port的mac地址

vnet_hw_interface_t 字段描述

name hw接口名字

flags Hw接口状态:

VNET_HW_INTERFACE_FLAG_LINK_UP

hw_address hw接口mac地址

output_node_index Output节点的index

tx_node_index Tx节点的index

dev_class_index 设备类型索引:dpdk_device_class.index

dev_instance 设备实例索引:dpdk_device_t结构的索引

hw_class_index hw接口类型索引:

ethernet_hw_interface_class.index

hw_instance hw接口类型实例索引:ethernet_interface_t结构的索引

hw_if_index hw结构的索引

sw_if_index Sw结构的索引

max_rate_bits_per_sec 每秒传输速率,暂未使用

min_supported_packet_bytes 接口支持的最小包长,默认:64

max_supported_packet_bytes 接口支持的最大包长,默认:9216

min_packet_bytes 接口支持的最小包长,默认:64

max_packet_bytes 接口支持的最大包长,默认:9216

per_packet_overhead_bytes 额外的节点长度:20,目前没看到有用

max_l3_packet_bytes[] 三层的MRU/MTU值,默认:9000

sub_interface_sw_if_index_by_id 子接口索引哈希表,key为标签值,value为子接口索引

l2_if_count 如果为1,所有的包都走ethernet-input?

bond_info bond口用

vnet_sw_interface_t 字段描述

type sw接口类型: HARDWARE、

SUB

flags 标志位:ADMIN_UP、PUNT、PROXY_ARP、UNNUMBERED、BOND_SLAVE

sw_if_index sw接口索引

sup_sw_if_index 父接口索引

unnumbered_sw_if_index 无编号接口索引:

http://www.china-ccie.com/doc/

ip-unnumbered/ip-unnumbered_chs.html

link_speed 链路速率,暂未使用

output_feature_bitmap Output feature,暂时只有ipsec-output

hw_if_index/ sub 联合体,父接口时hw_if_index指向hw的索引,子接口时sub用来保存子接口相关信息

vnet_sub_interface_t 字段描述

id 标签id

eth .outer_vlan_id 外面标签id

eth .inner_vlan_id 内存标签id

eth .raw_flags/eth .flags

标志位:

no_tags:没有tag

one_tag:有一个tag

two_tags:有两个tag

dot1ad:0 = dot1q, 1=dot1ad

exact_match:

default_sub:默认子接口?

outer_vlan_id_any:匹配任意外层标签,未实现

inner_vlan_id_any:匹配任意内层标签,未实现

时间: 2024-12-24 05:54:25

vpp接口数据结构的相关文章

C网络编程-TCP套接口编程

只有几个基本的示例如下 建立服务端的绑定监听等过程的函数 1 #include<sys/types.h> 2 #include<sys/socket.h> 3 4 #include<netinet/in.h> 5 #include<arpa/inet.h> 6 #include<unistd.h> 7 8 #include<stdio.h> 9 #include<stdlib.h> 10 11 #include<st

com组件接口

int main( int argc, char *argv[] ) {    cout << "Initializing COM" << endl;    if ( FAILED( CoInitialize( NULL )))    {       cout << "Unable to initialize COM" << endl;       return -1;    }    ISampleMath* pSa

linux原始套接字(1)-arp请求与接收

一.概述                                                   以太网的arp数据包结构: arp结构op操作参数:1为请求,2为应答. 常用的数据结构如下: 1.物理地址结构位于netpacket/packet.h 1 struct sockaddr_ll 2 { 3 unsigned short int sll_family; 4 unsigned short int sll_protocol; 5 int sll_ifindex; 6 unsi

2015前端生态发展回顾

原文:https://github.com/kuitos/kuitos.github.io/issues/32全部文章:https://github.com/kuitos/kuitos.github.io/issues 引用苏宁前端架构师的一个总结作为开篇 编程技术及生态发展的三个阶段 最初的时候人们忙着补全各种API,代表着他们拥有的东西还很匮乏,需要在语言跟基础设施上继续完善 然后就开始各种模式,标志他们做的东西逐渐变大变复杂,需要更好的组织了 然后就是各类分层MVC,MVP,MVVM之类,

Linux网络编程

第二章 Linux网络编程 2.1客户——服务器模型 目前大多数网络应用程序在编写时都采用客户—服务器模型,假设一端是客户,另一端是服务器,让服务器提供给客户一定的服务内容.它要求有一方(服务器方)在启动执行程序后(无限期地)等待其他客户端程序与之通信.这里可以再分为两种具体类型:并发型交互与重复型交互. (1)并发型交互.在并发型交互模式下,程序的主要运作步骤如下: ·等待一个客户请求的到来: ·生成一个新的进程或者任务来处理这个客户请求,同时这里还可以接收其他客户的请求,处理结束后,终止这个

软考中级软件设计师考试大纲

软件设计师考试大纲 一.考 试 说 明 1.考试目标 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写.调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件:具有工程师的实际工作能力和业务水平. 2.考试要求 (1)掌握计算机内的数据表示.算术和逻辑运算方法: (2)掌握相关的应用数学及离散数学基础知识: (3)掌握计算机体系结构以及各主要部件的性能和基本工作原理:

[转] 前后端分离开发模式的 mock 平台预研

引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都各自有自己的开发流程,构建工具,测试集合 关注点分离,前后端变得相对独立并松耦合 开发流程 后台编写和维护接口文档,在 API 变化时更新接口文档 后台根据接口文档进行接口开发 前端根据接口文档进行开发 开发完成后联调和提交测试 面临问题 没有统一的文档编写规范,导致文档越来越乱,无法维护和阅读 开

Linux USB 驱动开发(三)—— 编写USB 驱动程序

前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件.当然,这些制造商和设备标识需要我们编写进USB 驱动程序中. USB 驱动程序依然遵循设备模型 -- 总线.设备.驱动.和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核心代码描

微信Android模块化架构重构实践

微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显.由于代码.内存.apk大小都在增长,对系统资源的占用越来越多,导致微信进程容易被系统回收.因此微信开始转向多进程架构,独立的通信进程保持长连接的稳定性,独立的webview进程也阻隔了内存泄露导致的问题. 时