免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3804 | 回复: 7
打印 上一主题 下一主题

[网络管理] 请教:关于TC带宽控制“子类的rate之和 > 父类rate”??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-29 08:51 |只看该作者 |倒序浏览
请教:看了不少关于使用TC后的带宽控制测试结论,说“子类的rate之和 > 父类rate”这种设计是无效的,
      为什么我用TC后,测试时,“子类的rate之和 > 父类rate” 这种情况有效???

请帮忙分析:

网络环境:

   host1  host2
             |
             |    eth2 (192.168.1.11)
    ------------------               
    |       FW        |
    ------------------
            |    eth3  (172.16.1.1)
            |

         FTP server

TC规则如下:

$TC qdisc add  dev eth2   root    handle 3: htb default 21
$TC class add  dev eth2   parent 3:    classid 3:1   htb  rate 100Mbit ceil 100Mbit
$TC class add  dev eth2   parent 3:1   classid 3:21  htb  rate 3Mbit   ceil 3Mbit   prio 1
$TC class add  dev eth2   parent 3:21  classid 3:22  htb  rate 2Mbit   ceil 2Mbit   prio 2
$TC qdisc add  dev eth2   parent 3:22  handle  22:   sfq
$TC class add  dev eth2   parent 3:21  classid 3:23  htb  rate 3Mbit   ceil 3Mbit   prio 3
$TC qdisc add  dev eth2   parent 3:23  handle  23:   sfq

做dnat后,host1,host2访问FTP,当我同时在host1 和 host2 上从FTP下载文件时,他们都能达到自己的rate,
上述测试存是否正确呢?

论坛徽章:
0
2 [报告]
发表于 2008-10-29 09:04 |只看该作者

回复 #1 netwushen 的帖子

理论上是符合的,测试只有ftp的数据请求,没有其他的请求,当然都给ftp的用了。
多多交流呀
加QQ

论坛徽章:
0
3 [报告]
发表于 2008-10-29 09:14 |只看该作者
???那为什么我把两个子类的rate都设置为5M, 父类rate仍为3M,为什么子类也可以达到各自的rate?

论坛徽章:
0
4 [报告]
发表于 2008-10-29 13:58 |只看该作者
我看了htb实现的原理,当子类的令牌能得到保证时就可以直接出队,
跟父类没有关系,只有当大于rate小ceil的时候,需要向父类借用带宽时,
才会跟父类有关系,看父类是否有令牌可以给子类。

所以并不是像表面上认为的,父类的令牌分给子类的令牌。其实每个类都有自己的
令牌桶,没有谁分给谁之说,只是子类的令牌不够时,把队列挂到父类的队列中。
这时就用父类的令牌桶提供令牌了。

所以子类,父类的rate和ceil并没有什么之和相等或者不可超过的关系。

如果我没说清楚,咱们再讨论。

论坛徽章:
0
5 [报告]
发表于 2008-10-29 14:09 |只看该作者
谢谢各位的回复,继续琢磨测试中~~~~

论坛徽章:
0
6 [报告]
发表于 2010-03-19 21:31 |只看该作者
本帖最后由 lin_wang 于 2010-03-19 21:32 编辑

回复 4# emmoblin


那请教下, 用 tc change 频繁更改(2秒一次) htb 的子类时 dmesg 里报 htb: too many events! 是怎么回事呢? 有什么影响?

我看了htb的源码, 那段不是很明白
  1. /**
  2. * htb_do_events - make mode changes to classes at the level
  3. *
  4. * Scans event queue for pending events and applies them. Returns time of
  5. * next pending event (0 for no event in pq, q->now for too many events).
  6. * Note: Applied are events whose have cl->pq_key <= q->now.
  7. */
  8. static psched_time_t htb_do_events(struct htb_sched *q, int level,
  9.                                    unsigned long start)
  10. {
  11.         /* don't run for longer than 2 jiffies; 2 is used instead of
  12.            1 to simplify things when jiffy is going to be incremented
  13.            too soon */
  14.         unsigned long stop_at = start + 2;
  15.         while (time_before(jiffies, stop_at)) {
  16.                 struct htb_class *cl;
  17.                 long diff;
  18.                 struct rb_node *p = rb_first(&q->wait_pq[level]);

  19.                 if (!p)
  20.                         return 0;

  21.                 cl = rb_entry(p, struct htb_class, pq_node);
  22.                 if (cl->pq_key > q->now)
  23.                         return cl->pq_key;

  24.                 htb_safe_rb_erase(p, q->wait_pq + level);
  25.                 diff = psched_tdiff_bounded(q->now, cl->t_c, cl->mbuffer);
  26.                 htb_change_class_mode(q, cl, &diff);
  27.                 if (cl->cmode != HTB_CAN_SEND)
  28.                         htb_add_to_wait_tree(q, cl, diff);
  29.         }

  30.         /* too much load - let's continue after a break for scheduling */
  31.         if (!(q->warned & HTB_WARN_TOOMANYEVENTS)) {
  32.                 printk(KERN_WARNING "htb: too many events!\n");
  33.                 q->warned |= HTB_WARN_TOOMANYEVENTS;
  34.         }

  35.         return q->now;
  36. }
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-03-21 14:19 |只看该作者
回复 6# lin_wang


    多次频繁的change是没有问题的。

这个too many event的提示的意思的是,进入do_event的次数太多了,可能会有点控制的不准确,但影响不大

论坛徽章:
0
8 [报告]
发表于 2010-03-22 08:51 |只看该作者


哦, 酱紫, 多谢指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP