随笔分类 - 网络编程
摘要:简述了几种解决dpdk无法分配出连续大页面的解决方法。
阅读全文
摘要:本文介绍在应用层如何设置TCP keepalive中的一些自定义参数。
阅读全文
摘要:1,getsockopt连续调用问题通常情况下,在一个socket fd上出现错误时,我们会通过int status;socklen_t slen;getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *) &status, &slen); 这种方法来获取具体的错误...
阅读全文
摘要:一个简单点的阻塞式tcp服务器如下所示:#include #include #include #include ...
阅读全文
摘要:一般情况下,我们像下面代码中所示的这样使用非阻塞connect:#include #include #include #include #include #include #include #include #include #include #define EPOLL_MAXEVENTS 64in...
阅读全文
摘要:本文解释高性能网络编程中的几个基本概念。阻塞(blocking)和非阻塞(non-blocking):阻塞和非阻塞是指用户进程在做read(), write()等系统调用的时候,根据系统调用当前所处的状态而采取的不同的处理策略。拿read()函数来说,阻塞情况下,如果没有数据到达,则用户进程一直等待(睡眠),直到数据到达,这个过程中用户进程处于睡眠状态,干不了其他事情;非阻塞情况下,如果数据没有到达,则立即返回给用户进程一个状态信息(EAGAIN,EWOULDBLOCK等),用户进程根据这个状态信息选择继续调用read()还是去干其他事情。同步(synchronous)和异步(asynchro
阅读全文
摘要:NAPI的核心是:在一个繁忙的网络中,每次数据包到达后不用中断,换作用轮询(polling)去处理。NAPI 技术在 Linux 网络驱动上的应用和完善:http://www.ibm.com/developerworks/cn/linux/l-napi/维基百科:http://en.wikipedia.org/wiki/New_APINAPI的网络性能优化:TSO:GRO:http://www.pagefault.info/?p=159 http://lwn.net/Articles/358910/
阅读全文
摘要:Preface Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。 Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护。内核网络结构 在Linux内核中,对网络部分按照网络协议层、网络设备层、设备驱动功能层和网络媒介层的分层体系设计。 网络驱动功能层主要通过网络驱动程序实现。 在Linux内核,所有的网络设备都被抽象为一个接口处理,该接口提供了所有的网络操作。 net_device结构表示网络设备在内核中的情况,也就是网络设备接口。网络设备接口既包括软件虚拟的网络设备接口,如环路设备,也包括了网络硬
阅读全文
摘要:简要介绍了tun/tap驱动程序的设计原理。
阅读全文