自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redwingz的博客

Linux内核网络、虚拟化

  • 博客(16)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 TCP套接口快速接收路径

TCP套接口的快速路径开启的先决条件可由函数tcp_fast_path_check一窥究竟,分别如下:乱序out_of_order_queue队列为空、通告的接收窗口非空(rcv_wnd)、接收缓存sk_rmem_alloc小于套接口的限定值、没有urgent紧急数据在传输。static inline void tcp_fast_path_check(struct sock *sk){ ...

2019-03-29 23:37:40 327

原创 TCP套接口的sk_backlog接收队列

在接收到数据包之后,如果判断此套接口当前正被用户进程所使用,数据包将被保存到套接口结构的sk_backlog成员的head所定义的skb缓存列表中,tail指向链表的末尾,len变量记录了当前链表中所有skb的总长度。struct sock { struct { atomic_t rmem_alloc; int len; ...

2019-03-28 08:46:17 877 5

原创 TCP乱序队列(Out-Of-Order)

乱序的数据包被保存在TCP套接口的out_of_order_queue队列中,以红黑树组织,套接口成员ooo_last_skb缓存了此红黑树的最后一个成员,方便内核后续添加新的成员。struct tcp_sock { /* OOO segments go in this rbtree. Socket lock must be held. */ struct rb_root ...

2019-03-26 20:12:44 15458 2

原创 预分配缓存额度sk_forward_alloc(TCP接收)

基础介绍请参见 https://blog.csdn.net/sinat_20184565/article/details/88747124sk_forward_alloc预分配额度接收路径中使用函数sk_rmem_schedule分配缓存额度,使用宏SK_MEM_RECV表示此次是为接收而分配。如果请求的缓存大小在预分配额度之内,可马上进行正常分配,否则,由__sk_mem_schedul...

2019-03-25 19:28:16 449

原创 预分配缓存额度sk_forward_alloc(TCP发送)

预分配缓存额度sk_forward_alloc与发送缓存队列统计sk_wmem_queued一同用于计算当前套接口所占用的内存量。sk_forward_alloc属于为套接口预分配,所以缓存并没有实际分配出去。sk_forward_alloc初始化对于面向连接的套接口类型如TCP,在创建子套接口时,将其sk_forward_alloc初始化为0。struct sock *sk...

2019-03-22 18:02:53 448

原创 TCP传输队列长度sk_wmem_alloc统计

与sk_wmem_queued统计值不同,sk_wmem_alloc表示提交发送的队里所占用空间。sk_wmem_alloc初始化在应用层创建套接口时,内核将新分配的套接口结构的成员变量sk_wmem_alloc初始化为1。struct sock *sk_alloc(struct net *net, int family, gfp_t priority, struct proto ...

2019-03-21 19:31:57 892

原创 UDP传输队列长度sk_wmem_alloc统计

UDP协议使用sk_wmem_alloc统计当前UDP相关套接口发送缓存的占用。统计初始化在应用层创建套接口时,内核将新分配的套接口结构的成员变量sk_wmem_alloc初始化为1。struct sock *sk_alloc(struct net *net, int family, gfp_t priority, struct proto *prot, int kern){ ...

2019-03-20 20:13:37 691

原创 套接口发送缓存队列统计与控制

套接口发送缓存长度统计sk_wmem_queued,记录了当前套接口的发送队列与重传队列所占用空间的大小值。套接口创建时,发送与重传缓存都为空,将其值初始化为0。struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority){ newsk = sk_prot_alloc(sk->sk_prot, ...

2019-03-19 23:19:22 496

原创 连接跟踪与netfilter挂载点

内核连接跟踪模块conntrack在netfilter的基础上实现,主要与netfilter的NF_INET_PRE_ROUTING、NF_INET_LOCAL_OUT、NF_INET_LOCAL_IN和NF_INET_POST_ROUTING四个hook点相关。conntrack与NF_INET_FORWARD转发hook点没有交互。根据数据包的流向,conntrack实现了两类四个函数,分...

2019-03-18 22:01:31 471

原创 TCP套接口热迁移REPAIR模式

要实现TCP套接口的热迁移,必须能够实现在迁移之前保存套接口的当前状态,迁移之后还原套接口的状态。Linux内核中为支持TCP套接口热迁移实现了REPAIR模式以及相关的操作。迁移流程如下,首先启用REPAIR模式后,应用层开始保存当前状态;迁移后进行状态还原,最后关闭REPAIR模式,开始正常工作。另外,明确一点,处于LISTEN状态的套接口不能做热迁移。static inline ...

2019-03-17 23:00:59 745

原创 TCP套接口的FIN_WAIT_2状态超时

PROC文件tcp_fin_timeout默认为60秒,内核中相应的变量为init_net.ipv4.sysctl_tcp_fin_timeout,不过其以jiffies表示,默认值为TCP_FIN_TIMEOUT,即(60 * HZ)。此值表示一个不再被应用层使用(执行了close调用)的TCP连接处于FIN_WAIT_2状态的时长,如果在此时间内未能接收到对端的FIN结束报文,内核将复位此连接...

2019-03-14 22:22:03 1974

原创 TCP协议内存空间管理

PROC文件tcp_mem包括3个TCP协议内存空间的控制值,单位为页面数,如下,分别为最小空间值34524页面,承压值46032和最大值69048个页面,此三个值与系统的内存大小相关,示例为一个3G内存的Ubuntu系统。内核中对应的变量为sysctl_tcp_mem。$ cat /proc/sys/net/ipv4/tcp_mem34524 46032 69048$ sta...

2019-03-13 00:28:20 1161

原创 套接口通用发送缓存区限定

内核通用的套接口(不包括TCP套接口)发送缓冲区大小可由PROC文件wmem_default获得,其最大值可由wmem_max文件得到。默认情况下,两者值相同,如下所示。$ cat /proc/sys/net/core/wmem_max212992$$ cat /proc/sys/net/core/wmem_default 212992两者的值在net_core_table结构中...

2019-03-11 18:21:12 172

原创 TCP的CHRONO统计计时

内核定义如下,目前由三种类型,分别是TCP_CHRONO_BUSY、TCP_CHRONO_RWND_LIMITED和TCP_CHRONO_SNDBUF_LIMITED。enum tcp_chrono { TCP_CHRONO_UNSPEC, TCP_CHRONO_BUSY, /* Actively sending data (non-empty write queue) */...

2019-03-08 00:34:44 426

原创 TCP监听套接口链表

全局结构体变量tcp_hashinfo,成员listening_hash为保存处于监听状态(TCP_LISTEN)的TCP套接口哈希链表。由于监听套接口需要被频繁的读写,内核将其对其到一行高速缓存的长度,以便快速访问。struct inet_hashinfo tcp_hashinfo;#define INET_LHTABLE_SIZE 32struct inet_hashinfo...

2019-03-05 22:48:08 292

原创 ETHTOOL设置网卡接收哈希(RSS)

ethtool命令设置接收端哈希功能,按照哈希结果将数据流分发到网卡的不同接收队列中。例如以下命令,指定ipv4的tcp数据流中参与哈希的字段(sdfn):/ # ethtool --config-ntuple eth0 rx-flow-hash tcp4 sdfn同样,使用ethtool命令查看设置结果如下:/ # ethtool --show-ntuple eth0 rx-flo...

2019-03-04 18:07:29 5269

WEB Portal 认证完整的交互报文

web认证交互报文,包括WLAN controller与portal server的认证与注销,AC与radius 服务器的认证报文。

2018-04-24

botan-ed25519.pcap

IKEv2协议交互报文,认证方式选用Ed25519算法的证书方式。

2019-10-28

IKEv2-rw-cert2.pcap

strongswan使用linux内核的af_alg加密接口配置,IKEv2协议交互报文。

2019-10-28

IKEv2-camellia.pcap

IKEv2协议使用camellia加密算法的协商报文,交互流程。

2019-10-28

libssh2-1.8.0 and ssh2_batch example

ssh2_batch可执行程序,用于非交互式的ssh命令执行。源代码和libssh2

2018-06-13

redwingz的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除