分类[考试]liux2.6.35内核u32分类器逻辑架构分析

altools u32  时间:2021-01-22  阅读:()

本文档的C opyleft归wwwlkk所有使用GPL发布可以自由拷贝、转载转载时请保持文档的完整性严禁用于任何商业用途。

E-mail:wwwlkk@126.com

来源: http://passport.baidu.com/?business&aid=6&un=wwwlkk#7li ux 2.6.35内核u32分类器逻辑架构分析

前言 1.在使用u32分类器的时候会发现 内核的行为会与用户规则的行为不一致。 2.想找到具备高性能的u32分类器规则需要对u32分类器的内核实现架构有深入的理解。基于以上2个原因分析了linux2.6.35内核的u32分类器源码重点是给出u 32分类器的逻辑架构。

一在理解u32分类器的逻辑架构前需要先理解几个概念

1. 队列分类器链每个可分类整形队列都有一个分类器链这条链上的所有分类器都有相

同的数据结构如下

2. 第1级分类器 tc f_p ro to分类器看不到分类器的具体实现不同的分类器内部实现是完

全不同可以把这样的分类器称为1级分类器。

3. u32分类器进行u32功能匹配的分类器可以认为是第2级分类器。结构如下

4. u32哈希表所有的u32分类器必须附属在一个u32哈希表上 u32哈希表最多可以有256个表项每个表项都可以附属一个u32分类器链。结构如下

5. 队列的u32哈希表链 为了便于管理和查找u32哈希表 内核将创建的u32哈希表加入队列的u32哈希表链。

二下面用关系图具体说明各种逻辑关系

1 1级分类器和u32哈希表的逻辑关系图

图1涉及到1级分类器链头指针filter_list是放在队列的私有数据中不同种类的队列放置的位置是不同的但是必须存在当队列对数据包进行分类的时候将会遍历这个分类器链。

2 u32哈希表和u32分类器的逻辑关系图

图2里面才真正出现了u32分类器 u32哈希表只是u32分类器的一个容器只有在u32哈希中添加了u32分类器才能进行u32功能过滤。

3队列和u32哈希表的逻辑关系图

所有的u32哈希表都会被加入这个哈希链中但是并不是所有的u32哈希表都关联到1级分类器中如图1所示如果u32哈希表被关联到了1级分类器我们将这样的u32哈希称为第1级u32哈希表那么在队列遍历分类器时遍历流程就可以到达这个u32哈希表也就是可以到达这个u32哈希表内的u32分类器链。 我们可以将遍历1级分类器链称为第1级遍历遍历第1级u32哈希表内的u32分类器链称为第2级遍历

其它的u32哈希表是用户创建的在1级遍历的时候不会被遍历到。

可以看到1级u32哈希表是具有特殊地位的它只能由内核来创建它的哈希句柄也是由

内核来分配。

为了保证逻辑和遍历过程的一致性 内核要求不能有相同优先级的1级分类器 由于1级u32哈希表和1级分类器是一一关联的那么 1级u32哈希表的优先级也是不能相同。

如果要添加一个u32分类器 由于u32分类器必须附属在u32哈希表上所以必须要有一

个u32哈希表。这个u32哈希表可以是内核自动创建的也可以是用户要求创建的。

有2种情况内核会自动创建1级u32哈希表

1用户要求添加优先级是a的u32分类器那么内核会自动创建一个优先级是a的1级分类

器和一个1级u32哈希表如果已经创建过了就不会再创建然后将这个u32分类器加

入这个u32哈希表的唯一的一个分类器链中。

2用户要求添加一个优先级是a的u32哈希表那么内核会自动创建一个优先级是a的1级

分类器和一个1级u32哈希表如果已经创建过了就不会再创建然后再创建u32哈希

表加入队列的u32哈希链中。

三以上就是u32分类器的逻辑架构应该大体上是讲清楚了下面是一些补充内容。

1.为什么1级分类器的优先级不能相同我想是为了保证逻辑上的优先级和实际的流程上的优先级一致性如果逻辑上两个分类器的优先级相同那么实际匹配中到底是哪个分类器先进行分类呢从实际的匹配流程看分类器的优先级是不可能相同的。

2.有了以上的逻辑架构就可以很好的理解为什么u32分类器的完整句柄是由3个数组成H

B I其中H就是所在的u32哈希表的句柄 B就是哈希表项的偏移位置 I就是u32分类器的标识。 H是12bit的无符号整数 B是8bit的无符号整数 I是12bit的无符号整数一共32bit

3.u32分类器可以使用link功能将匹配流程转向其它的分类器链如果在子分类器链中匹配成功那么整个匹配流程结束如果未匹配成功返回原始的分类器链继续想下匹配。

4.内核添加分类器的函数是

5.不同种类的队列提供统一获取1级分类器链指针接口

6.第1级分类器链遍历函数

TmhHost暑假活动:高端线路VPS季付8折优惠,可选洛杉矶CN2 GIA/日本软银/香港三网CN2 GIA/韩国双向CN2等

tmhhost怎么样?tmhhost正在搞暑假大促销活动,全部是高端线路VPS,现在直接季付8折优惠,活动截止时间是8月31日。可选机房及线路有美国洛杉矶cn2 gia+200G高防、洛杉矶三网CN2 GIA、洛杉矶CERA机房CN2 GIA,日本软银(100M带宽)、香港BGP直连200M带宽、香港三网CN2 GIA、韩国双向CN2。点击进入:tmhhost官方网站地址tmhhost优惠码:Tm...

日本CN2独立物理服务器 E3 1230 16G 20M 500元/月 提速啦

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

创梦云 香港沙田、长沙联通2核1G仅需29元一个月 挂机宝7元一个月

商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...

altools u32为你推荐
软银赛富李念为什么离婚?316不锈钢和304哪个好保温杯买304不锈钢的好,还是316不锈钢的好?租车平台哪个好租车哪个平台好点,都要什么费用?麒麟990和骁龙865哪个好海思麒麟990和骁龙710哪个好?杀毒软件哪个好什么杀毒软件最好?手动挡和自动挡哪个好手动档与自动档哪个好?电陶炉和电磁炉哪个好电陶炉和电磁炉哪个好手机炒股软件哪个好手机炒股软件哪个好啊?百度空间登录怎么登录百度空间群空间登录怎样进入群空间
美国和欧洲vps 花生壳免费域名申请 万网域名解析 服务器配置技术网 flashfxp怎么用 全球付 godaddy域名优惠码 免费网站监控 新世界电讯 iis安装教程 美国php空间 卡巴斯基永久免费版 e蜗牛 创梦 天互数据 免空 静态空间 1g内存 可外链相册 空间技术网 更多