分类[考试]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级分类器链遍历函数

LayerStack$10.04/月(可选中国香港、日本、新加坡和洛杉矶)高性能AMD EPYC (霄龙)云服务器,

LayerStack(成立于2017年),当前正在9折促销旗下的云服务器,LayerStack的云服务器采用第 3 代 AMD EPYC™ (霄龙) 处理器,DDR4内存和企业级 PCIe Gen 4 NVMe SSD。数据中心可选中国香港、日本、新加坡和洛杉矶!其中中国香港、日本和新加坡分为国际线路和CN2线路,如果选择CN2线路,价格每月要+3.2美元,付款支持paypal,支付宝,信用卡等!...

95IDC香港特价物理机服务器月付299元起,5个ip/BGP+CN2线路;美国CERA服务器仅499元/月起

95idc是一家香港公司,主要产品香港GIA线路沙田CN2线路独服,美国CERA高防服务器,日本CN2直连服务器,即日起,购买香港/日本云主机,在今年3月份,95IDC推出来一款香港物理机/香港多ip站群服务器,BGP+CN2线路终身7折,月付350元起。不过今天,推荐一个价格更美的香港物理机,5个ip,BGP+CN2线路,月付299元起,有需要的,可以关注一下。95idc优惠码:优惠码:596J...

台湾CN2云服务器 2核2G 5M 5IP 台湾物理服务器 E5x2 64G 20M 5IP

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

altools u32为你推荐
免费送q币活动那些免费送Q币的活动是不是假的啊???天气预报哪个好用哪个最准确天气预报的软件哪个比较准朱祁钰和朱祁镇哪个好历史上真实的明英宗是怎么样的?性格之类的。朱祁钰和朱祁镇的相关的最好可以详细点的网页传奇哪个好玩有什么好玩的传奇类网页游戏?电动牙刷哪个好电动牙刷哪个牌子好?准备就买个几百块钱的?群空间登录手机如何登录腾讯qq群空间q空间登录腾讯qq空间登陆考生个人空间登录第一次登陆湖南省高等教育自学考试 考生个人空间就密码不对为什么辽宁联通网上营业厅网辽宁省联通发短信查gprs流量方法辽宁联通营业厅辽宁移动网上营业厅进入办法
org域名 域名解析文件 inmotionhosting sub-process NetSpeeder 标准机柜尺寸 国内加速器 web服务器架设软件 坐公交投2700元 新家坡 双11秒杀 360云服务 外贸空间 wordpress中文主题 cc加速器 tracert 9929 瓦工工具 次世代主机 远程主机强迫关闭了一个现有的连接 更多