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_bufferstrace用于存放mbuf数组

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

dev_type设备类型:ETH、KNI、VHOST_USER

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

cpu_socket该port所在的numa

admin_upport的管理状态

promisc混杂模式

tx_q_usedport发送队列个数

rx_q_usedport接收队列个数

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

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

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

port_confport的配置

tx_conf发送队列配置

kniKni口

kni_port_idKni口id

vu_if_id

vhost-user相关字段

vu_vhost_dev

vu_is_running

vu_intf

af_packet_port_idAF_PACKET口id

linkport状态

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

statsport的统计计数

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

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

xstatsport扩展统计

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

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

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

efd_agentefd功能相关

need_txlock发包是否需要加锁


ethernet_interface_t 字段描述

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

driver_instance暂未使用

address[6]Port的mac地址


vnet_hw_interface_t字段描述

namehw接口名字

flagsHw接口状态:

VNET_HW_INTERFACE_FLAG_LINK_UP

hw_addresshw接口mac地址

output_node_indexOutput节点的index

tx_node_indexTx节点的index

dev_class_index设备类型索引:dpdk_device_class.index

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

hw_class_indexhw接口类型索引:

ethernet_hw_interface_class.index

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

hw_if_indexhw结构的索引

sw_if_indexSw结构的索引

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_infobond口用


vnet_sw_interface_t字段描述

typesw接口类型: HARDWARE、

SUB

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

sw_if_indexsw接口索引

sup_sw_if_index父接口索引

unnumbered_sw_if_index无编号接口索引:

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

ip-unnumbered/ip-unnumbered_chs.html

link_speed链路速率,暂未使用

output_feature_bitmapOutput 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:匹配任意内层标签,未实现



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章