* [LARTC] ifb and ppp
@ 2007-09-19 12:17 Frithjof Hammer
2007-09-19 13:04 ` Patrick McHardy
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Frithjof Hammer @ 2007-09-19 12:17 UTC (permalink / raw)
To: lartc
Hello!
My goal is to setup an ingress traffic shaping on my PPPOE DSL line with ifb.
My old imq stuff used iptables marks (like 'iptables -t mangle -A
PREROUTING -p tcp --sport 22 -m length --length :500 -j MARK --set-mark 31')
to classify the traffic and since i am lazy, i tried to to reuse them with
ifb. But no luck: iptables marks the packets well, but tc doesn't see the
marks on ifb0.
May be my problem is somewhere between ppp0 and ifb0, so for a basic test, I
tried this:
tc qdisc add dev ppp0 ingress
modprobe ifb
ip link set up dev ifb0
tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 \
match u32 0 0 flowid 1:1 \
action mirred egress redirect dev ifb0
and run:
root@router:/# tcpdump -i ifb0 -n
tcpdump: WARNING: ifb0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ifb0, link-type EN10MB (Ethernet), capture size 96 bytes
12:38:29.584451 PPPoE [ses 0x7dc] IP 217.10.79.2.10000 > 84.189.95.184.1024:
UDP, length 84
12:38:29.585924 PPPoE [ses 0x7dc] IP 84.189.5.17 > 84.189.95.184: GREv1, call
24388, seq 1868, ack 3210, length 205: compressed PPP data
12:38:29.600506 PPPoE [ses 0x7dc] IP truncated-ip - 256 bytes missing!
24.163.113.160.34247 > 84.189.95.184.9025: UDP, length 359
[...]
Looks like the packetes are still pppoe en-capsuled. Is this the correct
behavior? This only occurs on ppp0, on other devices (like eth0) my iptables
marks are matched by tc. What can I do to get my iptables marks working on
ppp0 again?
my system is a debian etch with kernel from backports, newer iptables and
newer iproute2:
root@router:~# uname -a
Linux router 2.6.21-2-k7 #1 SMP Fri Jul 13 16:18:53 UTC 2007 i686 GNU/Linux
root@router:~# iptables -V
iptables v1.3.8
root@router:~# tc -V
tc utility, iproute2-ss070710
Thanks in advance.
Frithjof
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [LARTC] ifb and ppp
2007-09-19 12:17 [LARTC] ifb and ppp Frithjof Hammer
@ 2007-09-19 13:04 ` Patrick McHardy
2007-09-19 17:51 ` Frithjof Hammer
2007-09-19 21:42 ` Frithjof Hammer
2 siblings, 0 replies; 7+ messages in thread
From: Patrick McHardy @ 2007-09-19 13:04 UTC (permalink / raw)
To: Frithjof Hammer; +Cc: lartc, Linux Netdev List
[-- Attachment #1: Type: text/plain, Size: 1656 bytes --]
Frithjof Hammer wrote:
> My goal is to setup an ingress traffic shaping on my PPPOE DSL line with ifb.
>
> My old imq stuff used iptables marks (like 'iptables -t mangle -A
> PREROUTING -p tcp --sport 22 -m length --length :500 -j MARK --set-mark 31')
> to classify the traffic and since i am lazy, i tried to to reuse them with
> ifb. But no luck: iptables marks the packets well, but tc doesn't see the
> marks on ifb0.
>
> May be my problem is somewhere between ppp0 and ifb0, so for a basic test, I
> tried this:
>
> tc qdisc add dev ppp0 ingress
> modprobe ifb
> ip link set up dev ifb0
> tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 \
> match u32 0 0 flowid 1:1 \
> action mirred egress redirect dev ifb0
>
> and run:
>
> root@router:/# tcpdump -i ifb0 -n
> tcpdump: WARNING: ifb0: no IPv4 address assigned
> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
> listening on ifb0, link-type EN10MB (Ethernet), capture size 96 bytes
> 12:38:29.584451 PPPoE [ses 0x7dc] IP 217.10.79.2.10000 > 84.189.95.184.1024:
> UDP, length 84
> 12:38:29.585924 PPPoE [ses 0x7dc] IP 84.189.5.17 > 84.189.95.184: GREv1, call
> 24388, seq 1868, ack 3210, length 205: compressed PPP data
> 12:38:29.600506 PPPoE [ses 0x7dc] IP truncated-ip - 256 bytes missing!
> 24.163.113.160.34247 > 84.189.95.184.9025: UDP, length 359
> [...]
>
> Looks like the packetes are still pppoe en-capsuled. Is this the correct
> behavior? This only occurs on ppp0, on other devices (like eth0) my iptables
> marks are matched by tc. What can I do to get my iptables marks working on
> ppp0 again?
Does this patch help?
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 365 bytes --]
diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c
index 5795789..7c80f16 100644
--- a/net/sched/act_mirred.c
+++ b/net/sched/act_mirred.c
@@ -83,6 +83,7 @@ static int tcf_mirred_init(struct rtattr *rta, struct rtattr *est,
case ARPHRD_IPGRE:
case ARPHRD_VOID:
case ARPHRD_NONE:
+ case ARPHRD_PPP:
ok_push = 0;
break;
default:
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [LARTC] ifb and ppp
2007-09-19 12:17 [LARTC] ifb and ppp Frithjof Hammer
2007-09-19 13:04 ` Patrick McHardy
@ 2007-09-19 17:51 ` Frithjof Hammer
2007-09-19 21:42 ` Frithjof Hammer
2 siblings, 0 replies; 7+ messages in thread
From: Frithjof Hammer @ 2007-09-19 17:51 UTC (permalink / raw)
To: lartc
> Does this patch help?
No, it doesn't. :-(
I've put in some printk statements to check, if ok_push ist set to zero. But
it isn't: dmesg prints out: "set ok_push to one."
Any Ideas?
Frithjof
static int tcf_mirred_init(struct rtattr *rta, struct rtattr *est,
struct tc_action *a, int ovr, int bind)
{
struct rtattr *tb[TCA_MIRRED_MAX];
struct tc_mirred *parm;
struct tcf_mirred *m;
struct tcf_common *pc;
struct net_device *dev = NULL;
int ret = 0;
int ok_push = 0;
if (rta = NULL || rtattr_parse_nested(tb, TCA_MIRRED_MAX, rta) < 0)
return -EINVAL;
if (tb[TCA_MIRRED_PARMS-1] = NULL ||
RTA_PAYLOAD(tb[TCA_MIRRED_PARMS-1]) < sizeof(*parm))
return -EINVAL;
parm = RTA_DATA(tb[TCA_MIRRED_PARMS-1]);
if (parm->ifindex) {
dev = __dev_get_by_index(parm->ifindex);
if (dev = NULL)
return -ENODEV;
switch (dev->type) {
case ARPHRD_TUNNEL:
case ARPHRD_TUNNEL6:
case ARPHRD_SIT:
case ARPHRD_IPGRE:
case ARPHRD_VOID:
case ARPHRD_NONE:
case ARPHRD_PPP:
ok_push = 0;
printk ("set ok_push to zero.\n");
break;
default:
ok_push = 1;
printk ("set ok_push to one.\n");
break;
}
}
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [LARTC] ifb and ppp
2007-09-19 12:17 [LARTC] ifb and ppp Frithjof Hammer
2007-09-19 13:04 ` Patrick McHardy
2007-09-19 17:51 ` Frithjof Hammer
@ 2007-09-19 21:42 ` Frithjof Hammer
2007-09-20 11:55 ` Patrick McHardy
2 siblings, 1 reply; 7+ messages in thread
From: Frithjof Hammer @ 2007-09-19 21:42 UTC (permalink / raw)
To: lartc
> Does this patch help?
A further examiniation:
[...]
printk ("fri: mein type %x\n",dev->type);
switch (dev->type) {
[...]
shows this:
root@router:/usr/src/linux-source-2.6.21# dmesg | grep fri
fri: mein type 1
that is defined as ARPHRD_ETHER in include/linux/if_arp.h.
As far as i understand this means, that my ppp0 device is recognized as
Ethernetinterface.
Any further help/ideas?
Frithjof
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [LARTC] ifb and ppp
2007-09-19 21:42 ` Frithjof Hammer
@ 2007-09-20 11:55 ` Patrick McHardy
[not found] ` <1190294388.4734.6.camel@localhost>
0 siblings, 1 reply; 7+ messages in thread
From: Patrick McHardy @ 2007-09-20 11:55 UTC (permalink / raw)
To: Frithjof Hammer; +Cc: lartc, Linux Netdev List, jamal
Please keep netdev and myself CCed.
Frithjof Hammer wrote:
>>Does this patch help?
>
>
> A further examiniation:
> [...]
> printk ("fri: mein type %x\n",dev->type);
> switch (dev->type) {
>
> [...]
> shows this:
>
> root@router:/usr/src/linux-source-2.6.21# dmesg | grep fri
> fri: mein type 1
>
> that is defined as ARPHRD_ETHER in include/linux/if_arp.h.
>
> As far as i understand this means, that my ppp0 device is recognized as
> Ethernetinterface.
>
> Any further help/ideas?
I misread the code, the device it looks at in tcf_mirred_init is
the target device (ifb). So what it does is check whether the
target device wants a link layer header and if it does restores
the one from the source device. So currently it seems impossible
to get rid of the PPP(oE) header.
Jamal, is that how its supposed to work?
_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-09-20 15:26 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-19 12:17 [LARTC] ifb and ppp Frithjof Hammer
2007-09-19 13:04 ` Patrick McHardy
2007-09-19 17:51 ` Frithjof Hammer
2007-09-19 21:42 ` Frithjof Hammer
2007-09-20 11:55 ` Patrick McHardy
[not found] ` <1190294388.4734.6.camel@localhost>
2007-09-20 14:00 ` Frithjof Hammer
2007-09-20 15:26 ` Patrick McHardy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.