From mboxrd@z Thu Jan 1 00:00:00 1970 From: Devanshu Mehta Date: Wed, 21 Dec 2005 18:58:29 +0000 Subject: Re: [LARTC] IPv6 priority in tc filter Message-Id: <43A9A5D5.1090705@ll.mit.edu> List-Id: References: <43A87716.4090801@ll.mit.edu> In-Reply-To: <43A87716.4090801@ll.mit.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: lartc@vger.kernel.org As a follow-up to my previous email- it seems the current implementation of ipv6 tc filters in iproute2 is based on the obsolete RFC 1883 in which bits 4-7 of the IPv6 header were the 'priority'. If this is the case, I would recommend the change suggested below or a new filter for trafficclass that took the bits 4-11 into account for matching against traffic class of the packet. Devanshu > > ------------------------------------------------------------------------ > > Subject: > [LARTC] IPv6 priority in tc filter > From: > Devanshu Mehta > Date: > Tue, 20 Dec 2005 16:26:46 -0500 > To: > lartc@mailman.ds9a.nl > > To: > lartc@mailman.ds9a.nl > > > Hi, > I have recently started to use 'tc' on ipv6 traffic and have come > across an issue with tc filter. As per tc_filter.c in iproute2-050816, > to match 'priority' of an ipv6 packet, the u32 filter matches against > the first 8 bits of the packet. > > From f_u32.c: > > if (strcmp(*argv, "priority") = 0) { > NEXT_ARG(); > res = parse_u8(&argc, &argv, sel, 0, 0); > goto done; > } > > According to RFC2460 for IPv6 (http://www.ietf.org/rfc/rfc2460.txt), > the first 4 bits of the packet are the version number and the > subsequent 8 bits are the traffic class. Shouldn't the u32 filter be > matching against the 8 bits of the traffic class, not the 4bit > version+first 4bits of traffic class? > > The reason this is relevant is because I am trying to match EF traffic > with a tc filter command: > tc filter add dev eth2.1070 parent 10: protocol ipv6 prio 1 u32 match > ip6 priority 0xb8 0xff flowid 10:1 > > i.e. 0xb8 for EF. This, however, does not match my EF packets. If I > send the following command: > tc filter add dev eth2.1070 parent 10: protocol ipv6 prio 1 u32 match > ip6 priority 0x6b 0xff flowid 10:1 > > then it actually does match EF packets. That is, it matches the 4 bits > of the version (IP v6) and the first 4 bits of the traffic class. I > believe, the code above should actually read: > > if (strcmp(*argv, "priority") = 0) { > NEXT_ARG(); > res = parse_u8(&argc, &argv, sel, 4, 0); > goto done; > } > > though I may be mistaken as to the actual syntax of parse_u8(). > >------------------------------------------------------------------------ > _______________________________________________ LARTC mailing list LARTC@mailman.ds9a.nl http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc