LINUX TC:HTB相关源码

 (所有的这一切,写的不好,权当自己写着玩玩,聊以自慰-----csalp&cssalp

2、             Qdisc

 

linux中,向某个设备添加以qidsc的命令如下:

tc qdisc add dev DEV [parent qdisc_id root] [handle qdisc_id] qdisc [qdisc parameters]

例如:

tc qdisc add dev eth0 root handle 1: htb

这里向eth0添加了一个htb,为root 并且id=1

注意这里的id和系统的id是不一样的, 系统的idchar 数组,htb对应的是”htb”,而这里的id对应的是Qdisc中的handle

再如:

tc qdisc add dev eth0 parent 1:10 handle 20pfifo limit 2

这里也创建了一个qdisc 它的被graftparent id=1:10的点上,这个点可能是个qdisc,也可能是一个class

tc的具体介绍可以参见tc-how-to

 

那么接下来看看系统是如何创建一个Qdisc的。

上面是关于Qdisc相关的操作,下面看看正主Qdisc的一些信息。

首先看看它的结构:

struct Qdisc {

/*

*enqueue&dequeue函数,enqueue成功是return 0

*dequeue成功时,返回要send的数据

*/

       int                      (*enqueue)(struct sk_buff *skb, struct Qdisc *dev);

       struct sk_buff *       (*dequeue)(struct Qdisc *dev);

       unsigned            flags;

#define TCQ_F_BUILTIN         1

#define TCQ_F_THROTTLED         2

#define TCQ_F_INGRESS         4

#define TCQ_F_CAN_BYPASS       8

#define TCQ_F_MQROOT        16

#define TCQ_F_WARN_NONWC   (1 << 16)

       int                padded;

/*

*所以的qdisc的不同在它的Qdisc_ops不同,

* Qdisc_ops *ops= htb_qdisc_ops

*这时我们定义了一个HTB Qdics

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值