Re: [mpls-linux-general] Problems with MPLS 128, kernel crash
Status: Beta
Brought to you by:
jleu
From: <pim...@in...> - 2002-04-08 16:11:14
|
"James R. Leu" wrote: > > *sigh* > > I have seen this before. I must be doing something wrong with the way I > handle skbs. I haven't been able to figure out what, but I must be doing > something wrong. Probably not saying something new but: sending packets slow: works sending packets "fast" with debugging on: works sending fast without debugging on a rate limited queue: *bang* My guess would be that something goes wrong when dropping packets. Pim. > > Jim > > BTW ... impressive instructions :-) > > On Tue, Apr 02, 2002 at 04:09:06PM +0200, pim...@in... wrote: > > Hi James, > > > > I am able to crash the kernel (2.4.17+MPLS128+(ftos&dscp) patches from > > iptables-1.2.6a) if debugging is off. > > > > Attached is the script that sets up the DS tree. > > > > cat /proc/net/mpls* (only relevant bits) > > 0x00000003 0/0/0 2 SET_EXP(01) EXP2TC( EXP(0)->TC(ffff) EXP(1)->TC(00b8) > > EXP(2)->TC(0028) EXP(3)->TC(0030) EXP(4)->TC(0048) EXP(5)->TC(0050) > > EXP(6)->TC(0068) EXP(7)->TC(0070) ) PUSH(gen 21650) SET(eth2,10.0.4.1) > > T21650/1 0x00000003 > > > > traffic is mapped on T21650/1 via iptables (default gateway on table 2) > > > > ping -f 10.0.2.2 > > .... (couple packets are sent) > > *crash* > > > > [console] > > length:4 > > warning: kfree pased on skb still on list from 0xc01f9e18 > > kernel BUG: at skbuff.c:321 > > ... > > kernel panic: Aiee killing the interrupt handler... > > > > I want to stress the fact that I am only able to reproduce it when > > debugging is off. > > Let me know if you need additional information/want me to test > > something. > > > > Pim. > > > > -- > > Pim Van Heuven Ghent University - IMEC > > Department of Information Technology (INTEC) > > Sint-Pietersnieuwstraat, 41 B-9000, Gent, Belgium > > pim...@in... > > DiffServ/MPLS(RSVP-TE) for Linux: > > http://dsmpls.atlantis.rug.ac.be > > #!/bin/bash > > # This script will set-up an example DS tree > > > > IFACES="eth1 eth2 eth3" > > TC=/usr/local/bin/tc > > > > if test $# -gt 0 > > then > > case $1 in > > s|-s) > > if test $# -gt 1 > > then > > $TC -s qdisc ls dev $2 > > else > > for i in $IFACES; do echo "***"$i"***" > > $TC -s qdisc ls dev eth2; done > > fi;; > > d|-d) > > if test $# -gt 1 > > then > > $TC qdisc del root dev $2 > > $TC filter del root dev $2 > > $TC class del root dev $2 > > else > > for i in $IFACES; do > > $TC qdisc del root dev $i > > $TC filter del root dev $i > > $TC class del root dev $i > > done > > fi;; > > h|-h|--help|-help) > > echo $0 > > echo " -s show statistics" > > echo " -d delete filters and qdiscs" > > echo " install qdiscs and filers" > > esac > > exit > > else > > > > #iptables -A OUTPUT -t mangle -p rsvp -o eth0 -j DROP > > > > for i in $IFACES; do > > > > echo Configuring interface $i > > > > echo DSMARK on $i > > $TC qdisc add dev $i root handle 1:0 dsmark indices 64 default_index 0 #tcindex classid 2.2 #set_tc_index > > > > echo Main Filter on $i > > $TC filter add dev $i parent 1:0 protocol mpls tcindex mask 0xfc shift 2 > > echo prio > > > > ##### Set up of the proper qdisc on $i > > > > # First a DSMARK qdisc is introduced in order to retrieve TOS from IP header > > #$TC qdisc add dev $i handle 1:0 root dsmark indices 64 #set_tc_index > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 tcindex mask 0xfc shift 2 pass_on > > > > # Second a CBQ qdisc is used in order to support EF, AF and BE classes > > $TC qdisc add dev $i parent 1:0 handle 2:0 cbq bandwidth 100Mbit cell 8 avpkt 1000 mpu 64 > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 tcindex mask 0xf0 shift 4 pass_on > > > > ## Definition of the CBQ leaf classes to support AF, EF and BE > > echo AF1 > > ## AF Class 1 specific setup > > $TC class add dev $i parent 2:0 classid 2:1 cbq bandwidth 100Mbit rate 15Mbit \ > > avpkt 1000 prio 5 allot 1514 weight 1.5Mbit maxburst 21 defmap 0 borrow > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 1 tcindex classid 2:1 > > $TC qdisc add dev $i parent 2:1 gred setup DPs 3 default 2 grio > > # --- AF Class 1 DP 1--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x0a tcindex classid 1:111 > > $TC qdisc change dev $i parent 2:1 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 1 probability 0.02 prio 2 > > # --- AF Class 1 DP 2--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x0c tcindex classid 1:112 > > $TC qdisc change dev $i parent 2:1 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 2 probability 0.04 prio 3 > > > > ## AF Class 2 specific setup > > echo AF2 > > $TC class add dev $i parent 2:0 classid 2:2 cbq bandwidth 100Mbit rate 15Mbit \ > > avpkt 1000 prio 4 allot 1514 weight 1.5Mbit maxburst 21 defmap 0 borrow > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 2 tcindex classid 2:2 > > $TC qdisc add dev $i parent 2:2 gred setup DPs 3 default 2 grio > > # --- AF Class 2 DP 1--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x12 tcindex classid 1:121 > > $TC qdisc change dev $i parent 2:2 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 1 probability 0.02 prio 2 > > # --- AF Class 2 DP 2--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x14 tcindex classid 1:122 > > $TC qdisc change dev $i parent 2:2 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 2 probability 0.04 prio 3 > > > > ## AF Class 3 specific setup > > echo AF3 > > $TC class add dev $i parent 2:0 classid 2:3 cbq bandwidth 100Mbit rate 15Mbit \ > > avpkt 1000 prio 3 allot 1514 weight 1.5Mbit maxburst 21 defmap 0 borrow > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 3 tcindex classid 2:3 > > $TC qdisc add dev $i parent 2:3 gred setup DPs 3 default 2 grio > > # --- AF Class 3 DP 1--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x1a tcindex classid 1:131 > > $TC qdisc change dev $i parent 2:3 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 1 probability 0.02 prio 2 > > # --- AF Class 3 DP 2--- > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x1c tcindex classid 1:132 > > $TC qdisc change dev $i parent 2:3 gred limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit DP 2 probability 0.04 prio 3 > > > > ## EF class specific setup > > echo EF > > $TC class add dev $i parent 2:0 classid 2:5 cbq bandwidth 100Mbit rate 10Mbit \ > > avpkt 1000 prio 1 bounded allot 1514 weight 1Mbit maxburst 10 defmap 0 > > $TC qdisc add dev $i parent 2:5 pfifo limit 10 > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x2e tcindex classid 1:151 > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 5 tcindex classid 2:5 > > > > ## BE class specific setup > > echo BE > > $TC class add dev $i parent 2:0 classid 2:6 cbq bandwidth 100Mbit rate 30Mbit \ > > avpkt 1000 prio 7 allot 1514 weight 3Mbit maxburst 21 borrow > > $TC qdisc add dev $i parent 2:6 red limit 600KB min 150KB max 450KB burst 200 \ > > avpkt 1000 bandwidth 100Mbit probability 0.4 > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x0 tcindex classid 1:161 > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 6 tcindex classid 2:6 > > > > ## OSPF - RSVP Pipe class specific setup > > echo OSPF \& RSVP filter > > $TC class add dev $i parent 2:0 classid 2:7 cbq bandwidth 100Mbit rate 1Mbit \ > > avpkt 1000 prio 1 bounded allot 1514 weight 1Mbit maxburst 10 defmap 0 > > $TC qdisc add dev $i parent 2:5 pfifo limit 10 > > $TC filter add dev $i parent 1:0 protocol mpls prio 1 handle 0x30 tcindex classid 1:171 > > $TC filter add dev $i parent 2:0 protocol mpls prio 1 handle 7 tcindex classid 2:7 > > > > done > > > > fi > > > > > > > > > > > > -- > James R. Leu -- Pim Van Heuven Ghent University - IMEC Department of Information Technology (INTEC) Sint-Pietersnieuwstraat, 41 B-9000, Gent, Belgium pim...@in... DiffServ/MPLS(RSVP-TE) for Linux: http://dsmpls.atlantis.rug.ac.be |