雨中的雨 发表于 2005-11-23 21:04:18

linux,TC,支持diffserv路由,望指点!

1
#!/bin/sh
TC=/root/Desktop/iproute2/tc/tc
$TC qdisc add dev eth0 handle 1:0 root dsmark indices 64
$TC class change dev eth0 classid 1:1 dsmark mask 0x3 value 0xb8
$TC class change dev eth0 classid 1:2 dsmark mask 0x3 value 0x68
$TC class change dev eth0 classid 1:3 dsmark mask 0x3 value 0x48
$TC filter add dev eth0 parent 1:0 protocol ip prio 4 handle 1: u32 divisor 1
$TC filter add dev eth0 parent 1:0 protocol ip prio 5 handle 2: u32 divisor 1
$TC filter add dev eth0 parent 1:0 prio 4 u32 match ip dst 192.168.40.0/24 police rate 100Mbit burst 2K continue flowid 1:1
$TC filter add dev eth0 parent 1:0 prio 5 u32 match ip dst 192.168.40.0/24 flowid 1:2
$TC filter add dev eth0 parent 1:0 prio 4 u32 match ip src 192.168.10.0/24 dst 192.168.40.0/24 match ip protocol 6 0xff match ip dport 0x17 0xffff flowid 1:3



2
#!/bin/sh
TC=/root/Desktop/iproute2/tc/tc
$TC qdisc add dev eth1 handle 1:0 root dsmark indices 64 set_tc_index
$TC filter add dev eth1 parent 1:0 protocol ip prio 1 tcindex mask 0xfc shift 2
$TC qdisc add dev eth1 parent 1:0 handle 2:0 cbq bandwidth 100Mbit allot 1514 cell 8 avpkt 1000 mpu 64
$TC class add dev eth1 parent 2:0 classid 2:1 cbq bandwidth 100Mbit rate 90Mbit avpkt 1000 prio 1 bounded isolated allot 1514 weight 1 maxburst 10 defmap 1
$TC qdisc add dev eth1 parent 2:1 pfifo limit 5
$TC filter add dev eth1 parent 2:0 protocol ip prio 1 handle 0x2e tcindex classid 2:1 pass_on
$TC class add dev eth1 parent 2:0 classid 2:2 cbq bandwidth 100Mbit rate 5Mbit avpkt 1000 prio 7 allot 1514 weight 1 maxburst 21 borrow
$TC qdisc add dev eth1 parent 2:2 red limit 60KB min 15KB max 45KB burst 20 avpkt 1000 bandwidth 100Mbit probability 0.4
$TC filter add dev eth1 parent 2:0 protocol ip prio 2 handle 0 tcindex mask 0 classid 2:2 pass_on

上面这段代码是我抄一篇论文上的脚本,我现在正在用这段脚本架设支持diffserv的路由环境。其中1代码是用在入口处的网卡,2代码是用在内部路由网卡上的。其中根据网卡名称的不同ethX中的X以1或0代替。网络拓朴见附件,为五机串联,其中1 5两机为单网卡,2 3 4机为双网卡,模拟路由器。
但我执行./scriptname,1 5号机运行在widowns XP下,开一共享文件,互访,并且就像普通局域网那种在两机间复制粘贴文件,在2 3 4机linux环境下,调用图型界面的ethereal软件,对网络流量进行截包,发现IPV4中的diffserv字段上仍然为默认的0x00。
估计应该是脚本1出了问题,但实在是找不到问题出在哪里,望各位有了解的指点一下。、
十分感谢。

网络拓朴中2号机的eth0和4号机的eth1运行脚本1(脚本1最后match ip src/dst会根据2/4机的具体环境有所变化),2 3 4机中的其它网卡运行脚本2。

DreamCat 发表于 2005-11-24 19:04:49

帮你顶下~
diffserv 偶只是看了看~ 看来雨雨在努力学习~~~

雨中的雨 发表于 2005-11-28 09:56:26

其实我蛮不好意思的,给了这么一大段代码,也没有个说明和解释,先在这里和各位老大们说声对不起了。
我现在正在搞这个diffserv,感觉有点出来了,但还是有好多问题。
现在是在边界路由上面完成了diffserv字段的标记,正在做核心路由上的根据字段转发的工作。如果下次完成了,有机会我会和大家交流一下。
页: [1]
查看完整版本: linux,TC,支持diffserv路由,望指点!