[Bug 48] conntrack breaks udp path mtu discovery

bugzilla-daemon@netfilter.org bugzilla-daemon@netfilter.org
Wed, 25 Feb 2004 16:44:14 +0100


https://bugzilla.netfilter.org/cgi-bin/bugzilla/show_bug.cgi?id=48





------- Additional Comments From tatonet@tiscali.it  2004-02-25 16:44 -------
Hi Harald, 
First of all I must say that I'm still studying conntrack, so it's likely that 
I'm wrong. 
When conntrack calls ip_defrag() (in ip_ct_gather_frags()), it passes a skb 
containing a fragment and, eventually, receives a skb containing the complete 
datagram.  
I think we could use the identification field in the fragment that causes 
ip_defrag to return a skb. 
We have to maintain a table with (identification, skb_address, max_frags_len) 
records.  
Each time ip_ct_gather_frags() calls ip_defrag() we update the max_frags_len 
field in the record with the right identification field (or we create a new 
record). When ip_defrag returns a skb, we fill skb_address field. 
On POST_ROUTING we have to check each skb against that table and, if an entry 
is found then we fragment the packet using max_frags_len and we can set the DF 
flag in each fragment. 
However, because we don't know if the kernel discards the fragments, we should 
have a timeout on each entry in the table. 
Can it work? I know, this approach sounds inefficient. Is it worth it? 
 



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.