摘要: 一.环境与编译 pdump库是在16.07版本引入的,提供了一个抓包调试功能。在 目录下就有一个 的工具。配置这个这个工具可以用于抓取指定接口、队列的数据包。 1.1 库及依赖 Pdump依赖于libpcap库及 等相关库,要预先安装。 1.2 编译选项 Pdump依赖于基于libpcap的PMD驱 阅读全文
posted @ 2017-07-01 15:42 AISEED 阅读(9915) 评论(2) 推荐(0) 编辑
摘要: 前言:TCP是传输层协议,实现了一种可靠的通信。它从不同角度提供了多种可靠性保障措施来为网络传输提供确定性。连接性就是其中之一,不像UDP的无连接状态,TCP在数据传输之前会进行连接,只有双方都协调完成后,才会进行数据传输;同样的,在结束时,又会断开连接,通告传输的完成;在数据传输过程中,又会对每个 阅读全文
posted @ 2017-07-01 15:24 AISEED 阅读(2997) 评论(0) 推荐(0) 编辑
摘要: 前言:在前面的文章中介绍了协议无关层和系统调用接口层。当用户态程序调用 和`recvfrom()`来发送和接收数据时,其中的过程是怎么样的呢?又是经过了几次数据拷贝呢?这篇重点说明这两个接口,接着上篇来说明数据传输的过程。 1. 在上一篇中,我们知道,当在应用中调用 发送函数时,就会调用到系统调用 阅读全文
posted @ 2017-06-19 22:32 AISEED 阅读(1700) 评论(0) 推荐(0) 编辑
摘要: 前言:DPDK的内存管理工作主要分布在几个大的部分:大页初始化与管理,内存管理。使用大页可以减少页表开销,是为了尽量减少TBL miss导致的性能损失。基于大页,DPDK又进一步细化管理这部分内存,使得分配,回收更加方便。 一.内存管理的对象说明 1.1. 从大页(hugepage)说起 linux 阅读全文
posted @ 2017-06-12 22:08 AISEED 阅读(10060) 评论(4) 推荐(0) 编辑
摘要: 一. 从socket api看协议无关层 前面的系列已经说了系统调用接口层,在应用层使用socket api,填充对应的参数,就能创建出想要使用的socket类型。这个过程就是协议无关层完成的。简单的说过程就是:根据参数,匹配注册的协议族,使用对应的协议。接下来重点分析几个socket api的BS 阅读全文
posted @ 2017-06-04 21:07 AISEED 阅读(1807) 评论(0) 推荐(0) 编辑
摘要: 一. socket操作系统调用 我们在上一节中说到过,在应用层和协议无关层之间,是一个系统调用接口层。系统调用接口如下: socketcall socket系统调用 socket 建立socket bind 绑定socket到端口 connect 连接远程主机 accept 响应socket连接请求 阅读全文
posted @ 2017-06-03 18:11 AISEED 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: 一. linux网络层次结构 linux网络栈的层次结构非常清晰,并没有按照OSI七层模型来实现,而是压缩并扩展了一些层。如下图中的所示: 从上而下,依次为应用层,系统调用接口层,协议无关接口层,网络栈层,设备无关接口层,设备驱动层。因为linux的网路栈中的socket是继承自BSD的,socke 阅读全文
posted @ 2017-05-31 22:40 AISEED 阅读(1403) 评论(0) 推荐(0) 编辑
摘要: 前言:在调试DPDK时,在发送完一定数量的包后,通过内存统计rte_mempool_count()计算出的值,也就是mempool中剩余的mbuf的数量并没有回升,那么就有一个问题,从mempool中分配的mbuf什么时候才被还回给mempool?没还的部分都在哪? I. 先回答第二个问题,对于多核 阅读全文
posted @ 2017-05-26 23:00 AISEED 阅读(4369) 评论(0) 推荐(0) 编辑
摘要: 前言:网桥设备作为一个虚拟设备,用于连接多个端口,可以构建一个局域网。与之相似的是vlan设备,在linux中,vlan设备是为了处理802.1q的添加和去除TAG的问题,这和传统交换机中vlan的功能—划分局域网,不太一样,在这里仅仅是处理了消息头,只是实现了隔离功能,并未实现交换功能,如果需要v 阅读全文
posted @ 2017-05-26 22:57 AISEED 阅读(4590) 评论(1) 推荐(0) 编辑
摘要: DPDK KNI接口的说明 前言:在DPDK报文处理中,有些报文需要发送到内核协议栈进行处理,如GTP C控制报文,如果报文数量较少,可以使用内核提供的TAP/TUN设备,但是鉴于这种设备使用的系统调用的方式,还涉及到 和`copy_from_user()`的开销,因此,提供了KNI接口用于改善用户 阅读全文
posted @ 2017-05-26 22:47 AISEED 阅读(8945) 评论(0) 推荐(0) 编辑