作者puph (真冷...)
看板LinuxDev
标题[问题] 网路卡输出伫列一问
时间Mon Mar 30 22:16:45 2009
大家好,最近小弟在做一个实验
遇到了一点瓶颈 想来这边求救一下
问题如下
目前我需要知道每一个介面卡 输出伫列的长度
仔细看了 Linux 网路部分的程式码
发现 ip 层处理完後 会将 skb 交由 dev_queue_xmit 函式处理
dev_queue_xmit 会从接收到的 skb 结构中的 dev 元素了解到输出装置
dev 中有一个 Qdisc 里面就是描写装置的Queue
我用了两块网卡 一张是有线(eth0) 一张是无线(ath0)
在核心打印出处理封包时 每一个外出装置伫列的长度
=====[程式码如下]=======================
struct net_device *dev_ = skb->dev;
struct Qdisc *qdisc;
struct sk_buff_head *list;
qdisc = rcu_dereference(dev_->qdisc);
list = qdisc_priv(qdisc);.........参考enququq程式码找到的片段
len = (unsigned)list->qlen
====================================
(用dev_->name 可以成功取得 输出装置名称)
发现在有线的部分 长度一直都是0
这个满合理的 因为我还没找到一个够快的封包产生器
只能用ping 下-f 还有下-l 8000
[虽然说 Linux 核心有一个pktgen可以使用
不过目前还没成功 挂上去後 一直无法用 显示pg档找不到 >"<]
另外在无线的部分 不管怎麽做
输出伫列总是有封包在排队 似乎不合理
不知道是什麽原因
还请大家多多指教 谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.110.178