- 博客(6)
- 资源 (2)
- 收藏
- 关注
原创 skb_shinfo(skb)->dataref 含义
dataref表示对共享数据区的引用数目。通常克隆报文的时候,所有报文共享一个数据区。如下图所示,dataref = 2,表示有两个引用指向该区域。
2018-12-28 09:07:28 1938
原创 Linux SKB结构体中各个长度字段的含义(len, data_len, headlen, pagelen)
结构体sk_buff是Linux内核网络子系统的一个基本结构体,关于它的长度有很多定义和操作,非常容易弄混,这里给出一个简单的说明。下面这幅图是《深入理解Linux网络技术内幕》里面的图,一个skb用于存储一个报文,如果一个报文特别大的话,线性存储区放不下就需要多个skb来存储,这就是下面frag_list的作用,保存连续的skb,但是如果内核支持分散聚集技术的话,并且报文长度刚好又不大于mt...
2018-12-24 19:58:07 6821 3
原创 ubuntu tacacs 服务器安装启动
最近在开发tacacs+客户端功能,需要安装tacacs服务器进行测试。tacacs服务器搭建两种方式,第一种直接执行安装命令:apt-get install tacacs+第二种:1. 下载文件,最新的版本可以在这里看到(ftp://ftp.shrubbery.net/pub/tac_plus)百度网盘https://pan.baidu.com/s/1z8pEHDrJW...
2018-12-24 19:28:26 4077 4
原创 ip6tables 无法基于端口过滤IPv6 分片报文问题解决
问题现象:使用ip6tables 添加端口过滤规则,只允许指定端口IPv6报文进来,测试结果显示如果是分片报文,只有第一个分片报文能够收到,后续分片会被丢弃。内核版本:3.4.39问题原因: 因为同样的规则如果是IPv4分片报文则能够生效,通过分析内核源码,发现问题出在netfilter IPv6连接跟踪模块。netfilter IPv4 连接跟踪模块会对分片报文进行重组处理使得系统网...
2018-12-24 19:21:17 1580
原创 Unable to handle kernel paging request at virtual address 问题定位
调试模块的时候出现这个问题,看panic 系统调用堆栈,cpu执行到连接跟踪模块那里,难道是内核模块有问题?不可能,想起之前内核奔溃的教训,问题肯定是出在自己的模块上。又重新详细看日志,看到最后一行有个last unloaded ddos,这是我修改的模块,问题应该还是自己模块问题,反复定位,结果发现是卸载模块的时候没有释放定时器,导致定时器超时引起内核奔溃,以前也遇到过类似调试问题,在模块中启动...
2018-12-11 19:16:22 6599
原创 consume_skb 和 kfree_skb的区别
consume_skb 表示 skb是正常释放。kfree_skb 表示因为某种错误报文被丢弃。这只会带来某些网络统计数据上的区别,例如使用drop_watch查看有多少异常丢包的时候。通过源码上也可以看到,两者实现基本一致,除了调用不同的统计分析函数:trace_consume_skb, trace_kfree_skb/** * consume_skb - free an...
2018-12-08 14:55:48 4702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人