- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 网桥fdb与物理接口状态变化
Linux网桥代码中并没有检测物理接口up/down变化的代码,所以在接口down掉后,并不能马上清除与此接口关联的MAC转发表项(可通过brctl showmacs命令查看)。内核中有两种方式处理这些表项。超时处理这些残留的表项会通过fdb的超时处理清除。默认超时时间为300秒,可通过命令brctl setageing修改。static inline int has_expired(const ...
2018-04-28 17:43:36 1450 1
原创 sock结构体中的出口路由缓存
基于节省路由查找时间的考虑,内核在sock结构体成员sk_dst_cache中缓存了出口路由表项。DATAGRAM出口路由在UDP发包函数中,如果路由缓存rt为空,并且此sock状态为TCP_ESTABLISHED,更新出口路由缓存(sk_dst_set)。TCP_ESTABLISHED为借用了TCP的状态,表明此UDP套接口使用了connect系统调用,建立了一个类似TCP的端到端连接,此时,缓...
2018-04-25 12:01:35 1129
原创 sock结构体中的入口路由缓存
在sock结构体成员sk_rx_dst中缓存入口路由,目的主要用于early_demux功能,执行一次查找即可找到数据包所属的sock和缓存的路由。入口路由缓存之TCPa)作为服务端,三次握手完成时,在函数tcp_v4_syn_recv_sock中创建子sock时赋值;b)作为客户端在函数tcp_finish_connect;c)在函数tcp_rcv_established中sock处于estab...
2018-04-24 16:44:32 769
原创 WEB PORTAL认证流程
认证涉及的4个实体1)client 上网用户2)接入控制器NAC 控制用户接入3)Web Portal服务器 用户上网门户4)Radius服务器 用户身份验证 比如无线情况下,client为一台手机,NAC为WLAN控制器(AC)。另外AP(Access Point)主要完成二层L2认证,诸如WPA,WPA2等,本文不涉及。Web Portal认证是在L2认证完成以后,用户已经获得IP地址后开始的...
2018-04-24 10:51:33 17368
原创 TCP的request_sock与sock
request_sockTCP服务端在接收到SYN报文时,调用conn_request回调处理,最终调用了tcp_conn_request函数,其分配一个request_sock(tcp_request_sock)结构体。request_sock之后用于TCP的三次握手,与正常的sock结构相比,request_sock仅包含一个相同的sock_common结构:struct request_so...
2018-04-13 18:32:44 2325
原创 数据包的提前分流early_demux
early_demux用于提前查找skb数据包的监听sock和输入路由dst,提前分流。由于其调用位于正常的路由和sock查找之前,称为early_demux,内核中两个回调函数分别为:tcp_v4_early_demux和udp_v4_early_demux:net/ipv4/ip_input.cstatic int ip_rcv_finish(struct net *net, struct ...
2018-04-12 16:33:22 2338
原创 网络设备的两个结构体net_device和in_device
网络设备初始化函数alloc_netdev_mqs分配一个网络设备结构体net_device,in_device结构体由inetdev_init分配和初始化。struct net_device *alloc_netdev_mqs(...){ struct net_device *p; p = kzalloc(alloc_size, GFP_KERNEL | __GFP_NOWARN |...
2018-04-11 16:26:24 3242
原创 绑定非本机地址与透明代理
内核代码内核中对绑定非本地地址的相关判断代码,位于net/ipv4/af_inet.c中:int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len){ chk_addr_ret = inet_addr_type(net, addr->sin_addr.s_addr); if (!net-&g...
2018-04-10 13:21:25 3034
原创 用户USER_HZ与内核HZ的值
定义内核文件include/asm-generic/param.h定义了两者的值:# undef HZ# define HZ CONFIG_HZ /* Internal kernel timer frequency */# define USER_HZ 100 /* some user interfaces are */# define CLOCKS_PER_SEC...
2018-04-09 13:50:18 3209
原创 svn-bugzilla-codestriker安装与配置
安装环境cm@cm:~$ cat /etc/issueUbuntu 15.10 \n \l本机地址:192.168.1.140svn dir: /home/svn/codessvnroot: svn://192.168.1.140/codes bugzilla版本: 4.4.12codestriker版本: 1.9.10SVN安装配置安装subversion,创建myrepo代码库:ap...
2018-04-04 16:53:08 1145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人