Re: Ingress qdisc via fwmark

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Remy,

Thanks for the suggestion. I think I've implemented it as per your
recommendation:

# iptables -L PREROUTING -t mangle -v
Chain PREROUTING (policy ACCEPT 455K packets, 33M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 227K   21M MARK       all  --  any    any     lns                  anywhere             l2tp tid 54356 sid 62245 type data MARK set 0x1
 227K   21M CONNMARK   all  --  any    any     lns                  anywhere             mark match 0x1 CONNMARK save

But nothing's hitting the tc filter:

# tc -s filter show dev eth1 parent ffff:
filter protocol ip pref 1 fw 
filter protocol ip pref 1 fw handle 0x1 classid :1  police 0x7 rate 32768bit burst 10Kb mtu 2Kb action drop overhead 0b 
ref 1 bind 1

 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

# tc -s qdisc show dev eth1
<snip>
qdisc ingress ffff: parent ffff:fff1 ---------------- 
 Sent 21410620 bytes 236564 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0 

Anything jump out at you as obviously incorrect?

Thanks,

Chris.

On Tue, 2013-11-12 at 16:37 +0100, Remy Mudingay wrote:
> Opps I forgot to iclude the link.
> 
> 
> https://hydra.geht.net/tino/howto/linux/net/netfilter/
> 
> 
> 
> On 12 November 2013 16:35, Remy Mudingay <remy.mudingay@xxxxxxxxx>
> wrote:
>         Hi Chris,
>         
>         
>         
>         
>         What you are trying to achieve can only work on the PREROUTING
>         table. Take a look at the following diagram to get a clearer
>         picture of how a packet flows through Linux (Netfilter/Qos).
>         
>         
>         The PREROUTING table is the only netfilter table which is
>         processed before the ingress qdisc.
>         You also need to apply the connmark target as in " -j CONNMARK
>         --save-mark" following you iptables command as follows ;
>         
>         
>         Example:
>         
>         
>          iptables -A PREROUTING -t mangle -s 192.168.101.20 -m l2tp
>         --tid=52380 --sid=34787 --type=data -j MARK --set-mark 1
>         
>          iptables -A PREROUTING -t mangle -s 192.168.101.20  -m mark
>         --mark 1 -j CONNMARK --save-mark
>         
>         
>         
>         I hope that helps.
>         
>         
>         Remy
>         
>         
>         
>         
>         
>         
>         On 12 November 2013 15:29, Chris Elston <celston@xxxxxxxxxxx>
>         wrote:
>                 Hello,
>                 
>                 I'm having a little trouble getting ingress policing
>                 working, filtering
>                 based on an iptables fwmark. The iptables fwmark is
>                 being set with a new
>                 L2TP packet classifier:
>                 
>                 # iptables -A INPUT -t mangle -s 192.168.101.20 -m
>                 l2tp --tid=52380 --sid=34787 --type=data -j MARK
>                 --set-mark 1
>                 
>                 (Note that I have also tried adding to the PREROUTING
>                 mangle table
>                 too...)
>                 
>                 I have confirmed that the classifier is marking
>                 packets:
>                 
>                 # iptables -L INPUT -t mangle -v
>                 Chain INPUT (policy ACCEPT 59641 packets, 44M bytes)
>                  pkts bytes target     prot opt in     out     source
>                 destination
>                   172  7912 MARK       all  --  any    any     lns
>                                anywhere             l2tp tid 52380 sid
>                 34787 type data MARK set 0x1
>                 
>                 I have set up an ingress qdisc with:
>                 
>                 # tc qdisc add dev eth1 handle ffff: ingress
>                 
>                 And a filter to police the marked packets:
>                 
>                 # tc filter add dev eth1 protocol ip parent ffff: prio
>                 1 handle 1 fw police rate 32768 burst 10k drop
>                 flowid :1
>                 
>                 But none are getting dropped:
>                 
>                 # tc -s qdisc show dev eth1
>                 <snip>
>                 qdisc ingress ffff: parent ffff:fff1 ----------------
>                  Sent 15712712 bytes 186225 pkt (dropped 0, overlimits
>                 0 requeues 0)
>                  backlog 0b 0p requeues 0
>                 
>                 I believe from the HOWTO:
>                 (http://www.linuxdocs.org/HOWTOs/Adv-Routing-HOWTO-14.html section 14.2)
>                 that this should be possible, but I've also found
>                 mention
>                 (http://www.spinics.net/lists/lartc/msg18021.html)
>                 that the new-style
>                 policer happens before PREROUTING.
>                 
>                 Also, this diagram suggests that queueing to the
>                 ingress qdisc happens
>                 before classification takes place:
>                 http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
>                 
>                 I'm using kernel 3.2.x, with CONFIG_NET_ACT_POLICE=m.
>                 
>                 A previous scheme I had DID manage to drop ingress
>                 L2TP packets matching
>                 the specification using the tc u32 filter - but the tc
>                 commands were
>                 becoming very complicated and would be difficult to
>                 manage dynamically,
>                 hence the switch to an iptables classifier.
>                 
>                 I'm hoping that someone on the list can let me know
>                 whether this is
>                 actually possible with contemporary kernels, and if
>                 so, where I'm going
>                 wrong.
>                 
>                 Thanks,
>                 
>                 Chris.
>                 
>                 --
>                 To unsubscribe from this list: send the line
>                 "unsubscribe lartc" in
>                 the body of a message to majordomo@xxxxxxxxxxxxxxx
>                 More majordomo info at
>                  http://vger.kernel.org/majordomo-info.html
>         
>         
> 
> 


--
To unsubscribe from this list: send the line "unsubscribe lartc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux