rte_mbuf的数据结构定义中包括几个与数据有关的变量,如buf_addr(虚拟地址)、data_off(数据偏移量)、pkt_len(总包长度)、data_len(数据长度)、buf_len(整个buf的大小)等。 rte_mbuf整个用来存数据的buf包括headroom、data和tailroom三个区域。Headroom区域默认128字节,可以通过宏RTE_PKTMBUF_HEADROOM调整。Data区域...
uint16_t rte_pktmbuf_tailroom(const struct rte_mbuf *m) 假设m->pkt.data指向报文的二层首地址,我们可以通过以下一系列操作剥去报文的二层头部: m->pkt.data += 14; m->pkt.data_len -= 14; m->pkt.pkt_len -= 14; 这些操作已经由rte_pktmbuf_adj()实现,函数原型如下: char *rte_pktmbuf_a...
m->buf_len =(uint16_t)buf_len;/*keep some headroom between start of buffer and data*/m->pkt.data = (char*) m->buf_addr + RTE_MIN(RTE_PKTMBUF_HEADROOM, m->buf_len);/*init some constant fields*/m->type =RTE_MBUF_PKT; m->pool =mp; m->pkt.nb_segs =1; m->pkt.in_por...
每个rte_mbuf内存中,最前面同样存储的是struct rte_mbuf数据结果,后面是RTE_PKTMBUF_HEADROOM,最后面就是实际网卡接收到的数据,如下: struct rte_mbuf *m = _m; uint32_t buf_len = mp->elt_size - sizeof(struct rte_mbuf); RTE_MBUF_ASSERT(mp->elt_size >= sizeof(struct rte_mbuf)); memset(m...
m->pkt.pkt_len -= 14; 这些操作已经由rte_pktmbuf_adj()实现,函数原型如下: char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len) 我们可以通过以下一系列操作为IP报文封装二层头部: m->pkt.data -= 14; m->pkt.data_len += 14; ...
data_len,当前的数据长度。如果没有分片,pkt_len与data_len数值应该是相同的。也就是pkt_len >= data_len. /** VLAN TCI (CPU order), valid if PKT_RX_VLAN_STRIPPED is set. */ uint16_t vlan_tci; 只有开启了PKT_RX_VLAN_STRIPPED标记,此字段才是有效的。vlan时使用,学习vlan时,需要关注此字段。
m->pkt.pkt_len -= 14; 这些操作已经由rte_pktmbuf_adj()实现,函数原型如下: char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len) 我们可以通过以下一系列操作为IP报文封装二层头部: m->pkt.data -= 14; m->pkt.data_len += 14; ...
本⽂假定报⽂的长度不超过rte_mbuf->buf_len的长度。内存结构 分配操作 Mbuf由缓冲池rte_mempool管理,rte_mempool在初始化时⼀次申请多个mbuf,申请的mbuf个数和长度都由⽤户指定。宏MBUF_SIZE是例⼦程序中使⽤的mbuf长度:#define MBUF_SIZE (2048 + sizeof(struct rte_mbuf) + RTE_PKTMBUF_...
static void send_paxos_message(paxos_message *pm) { uint8_t port_id = 0; struct rte_mbuf *created_pkt = rte_pktmbuf_alloc(mbuf_pool); created_pkt->l2_len = sizeof(struct ether_hdr); created_pkt->l3_len = sizeof(struct ipv4_hdr); created_pkt->l4_len = sizeof(struct udp_hdr...
推动世界向前发展,改善民生。 « 上一篇 dpdk应用场景系列00--常用的数据结构 下一篇 » dpdk应用场景系列02--rte_pktmbuf_mtod 使用(数据填充) 引用和评论 注册登录 获取验证码 新手机号将自动注册 登录 微信登录免密码登录密码登录 继续即代表同意《服务协议》和《隐私政策》...