Hello,
I do not know about packet queuing and will reply only about connection
tracking and packet reassembly.
Daneel a écrit :
>
> I'm using libipq to pass certain packets to my userspace application
> on Fedora 6 / Kernel 2.6.21.1 and ipTables 1.3.5.
>
> I do:
> modprobe iptable_filter
> modprobe ip_queue
> modprobe ip_conntrack
> iptables -A INPUT -p tcp -j QUEUE
>
> Works fine. However, since ip_conntrack is loaded I would expect that
> the packets are defragmented before they are passed to my userspace
> appliation
Yes, but actually you do not need connection tracking for that.
Reassembly occurs between the input routing decision and the INPUT
chains even without the connection tracking. So the INPUT chains always
see complete datagrams.
> (as indicated here for example:
> http://lists.netfilter.org/pipermail...y/034006.html).
Err.. your URL is incomplete.
> This does not seem the case, i.e., the maximum size of the packets
> which I get (through ->data_len) is 1500 bits.
Did you send fragmented datagrams with a size > 1500 bytes ?
> ps: I also tried to use "OUTPUT" in my rule since I read somewhere
> that connection tracking only works in OUTPUT and PREROUTING: Same
> result - maximum packet size is 1500, i.e., no defragmentation :-(
Same question, did you send datagrams with a size > 1500 bytes ?
Notes :
1) Connection tracking does not *work* in OUTPUT and PREROUTING ; it
*takes places* there. Actually it is the packet classification, which is
one part of the connection tracking process, which occurs before the
PREROUTING and OUTPUT chains of the 'mangle' table (but after the
PREROUTING and OUTPUT chains of the 'raw' table). Fragment reassembly is
required for proper connection tracking operation, so it is performed
just before packet classification.
2) In recent 2.6 kernels at least, including 2.6.21, fragmentation of
locally generated packets occurs - if needed - only after the OUTPUT
chains, so these chains do not see fragmentation even without the
connection tracking.