摘要:
简述: MPTCP依然按照正常的TCP进行三次握手,只是在握手过程中增加了MPTCP特有的信息。建立过程 三次握手过程如下图所示: 左边客户端发送的第一个SYN包携带有客户端自身的KEY,右边发送SYN/ACK的时候携带了自身的KEY,而最后左边的客户端发送最后一个ACK的时候携带着双方的KE... 阅读全文
摘要:
背景 随着技术的发展许多设备具有了多个网络接口,而TCP依然是一个单线路的协议,在TCP的通信过程中发端和收端都不能随意变换地址。我们可以利用多个网络接口的这一特性来改善性能和有效冗余。例如:你的手机同时连接WIFI信号和3G信号的时候,如果WIFI关掉,使用WIFI进行的TCP连接就会断开,而不... 阅读全文
摘要:
1.背景网卡接收一个数据包的情况下,会经过三个阶段:- 网卡产生硬件中断通知CPU有包到达- 通过软中断处理此数据包- 在用户态程序处理此数据包在SMP体系下,这三个阶段有可能在3个不同的CPU上处理,如下图所示:而RFS的目标就是增加CPU缓存的命中率从而提高网络延迟。当使用RFS后,其效果如下:... 阅读全文
摘要:
背景: 内核接收分组的方式有两种:第一种:传统方式,使用中断的方式;第二种:NAPI,使用中断和轮询结合的方式。中断方式: 下图为一个分组到达NIC之后,该分组穿过内核到达网络层函数的路径。此图的下半部分为中断处理,上半部分为软中断。在中断处理中,函数net_interupt是设备驱动程序的... 阅读全文
摘要:
使用gcc的警告信息间接知道变量的类型#include #include #include #include intmain(){ int a[2][10]; printf("%d\n", a[0]); printf("%d\n", a); p... 阅读全文
摘要:
1 service irqbalance stop 2 3 #@irqnum:网卡eth2的中断数 4 #@cpunum:CPU数目 5 irqnum=`cat /proc/interrupts | grep eth2.*- | awk -F : '{print $1}' | awk '{pri... 阅读全文
摘要:
此命令用于调整C源码的格式。在LKD中的例子:indent -kr -i8 -ts8 -sob -l80 -ss -bs -psl filename参数解释如下:-i :设置缩进的格数-ts :设置tab的长度-sob: 删除多余的空白行-l: 设置缩排的格数-ss: 若for或while部分(含条... 阅读全文
摘要:
在编写应用层代码中使用位图,发现内核中已经有现成的实现便使用之。对位图的使用主要是几个关键API。第一:bitmap_zero函数用于初始化位图源码如下:/* *@dst: 位图的起始地址 *@nbits: 位图的个数 */static inline void bitmap_zero(unsig... 阅读全文