免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 独孤九贱
打印 上一主题 下一主题

[网络管理] hashlimit模块实现分析 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-06-29 00:52 |只看该作者
谢谢好文。

论坛徽章:
0
12 [报告]
发表于 2008-06-29 10:15 |只看该作者
Red Hat LINUX认证工程师(RHCE)
北京中软计算机培训中心    联系人:王老师    13811003632
欢迎致电咨询
毋庸置疑,红帽认证是 Linux或许是整个 IT 领域最好的认证。红帽认证课程全部由经验丰富的红帽专家授课,主要考察学员在真正系统中的实际能力,目前备受用人单位及 IT 专业人士的青睐。红帽公司的客户、媒体以及业内分析家们对红帽培训和认证项目一直给予最高的评价:

-  被评为2006年最热门认证(CertCities.com)-  整体质量最高的项目、培训和考试(《认证》杂志/Fairfield Research)-  红帽认证工程师是“Linux认证的桂冠”(CertCities.com)

-  红帽培训和认证项目在Linux领域“享有无与伦比的盛名”。(Unix Review)

要想选择适合自己的 Linux认证课程,关键在于您的背景和目标。根据学员不同的 Linux 或 UNIX水平,甚至针对根本没有任何 Linux或Unix经验,红帽认证培训有比较全面的认证培训课程。红帽的基础认证项目是红帽Linux认证技师(RHCT),中端认证项目是红帽Linux认证工程师(RHCE),高端认证项目是红帽Linux认证的安全专家(RHCSS)和红帽Linux认证的架构师(RHCA)。红帽认证工程师(RHCE)认证开始于 1999 年,目前已有25000多名 Linux 专家获得了这一认证。在独立调查中,有着“Linux认证的桂冠”之美誉的红帽Linux认证工程师认证在整个 IT 行业中荣登榜首。

论坛徽章:
0
13 [报告]
发表于 2008-06-29 11:23 |只看该作者
谢谢好文。

论坛徽章:
0
14 [报告]
发表于 2011-03-22 21:02 |只看该作者
好贴子。顶一下。{:3_198:}

论坛徽章:
0
15 [报告]
发表于 2011-03-24 20:28 |只看该作者
九贱兄,我没怎么看明白赋初值的时侯那个突发流量这儿,如下:
if (!dh)
{
                dh = __dsthash_alloc_init(hinfo, &dst);  //未命中,分配新的接点,并增加至hash 表
           if (!dh)
                {
                        /* enomem... don't match == DROP */
                        if (net_ratelimit())
                                printk(KERN_ERR "%s: ENOMEM\n", __FUNCTION__);
                        spin_unlock_bh(&hinfo->lock);
                        return 0;
                }           
                //构建结点成员
           dh->expires = jiffies + msecs_to_jiffies(hinfo->cfg.expire);        //定时器
           dh->rateinfo.prev = jiffies;                                                         //最后修改时间定为当前时间
           dh->rateinfo.credit = user2credits(hinfo->cfg.avg *  hinfo->cfg.burst);      //初始化令牌                                                        
           dh->rateinfo.credit_cap = user2credits(hinfo->cfg.avg * hinfo->cfg.burst);//初始化令牌桶大小,在令牌没有被消耗前,两者是相同的
                dh->rateinfo.cost = user2credits(hinfo->cfg.avg); //初始化当前包的开销,每过一个包递减
           spin_unlock_bh(&hinfo->lock);
                return 1;
}
这一段描述的是当在哈希表里找不到匹配项时需要重新申请空间来生成一个哈希记录项,我没有看明后面赋初值的时侯为什么要用乘法啊,我个人觉的应当是用加法吧,
一个是当前令牌桶的初始值,一个是最大值,突发流量应当是加在hinfo->cfg.avg上才是正常流量和突发流量所需要的令牌数啊,这儿为什么要用乘法呢?我觉的应当
是下面的写法才对吧?
dh->rateinfo.credit = user2credits(hinfo->cfg.avg + hinfo->cfg.burst);      //初始化令牌                                                        
dh->rateinfo.credit_cap = user2credits(hinfo->cfg.avg + hinfo->cfg.burst);//初始化令牌桶大小,在令牌没有被消耗前,两者是相同的

论坛徽章:
0
16 [报告]
发表于 2011-03-25 11:53 |只看该作者
我理解的突发流量应当是除了我们允许的流量外,再允许多通过这么多的数据包,所以总的令牌数应当是两者之和才对,而不是允许突发流量倍的数据包通过,所以不应当是两者之积的关系,但是我看了看新的代码这儿确实都是用乘来赋初值的,没有想明白为什么?{:3_196:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP