I have ran into a bug with tunnel soft state not being handled properly
across gre / xfrm tunnels.
My setup follows:
A <---> H
U <---> D <---> C
B <---> B
1) 'A' sends data for 'C' to 'B' (because of a special route setup)
Current packet: ICMP ping request A->C
2) 'B' performs GRE encapsulation
Current packet: GRE B->C
3) 'B' performs an ipsec wrapping
Current packet: ESP B->C
4) 'B' performs another ipsec tunneling
Current packet: ESP B->D
5) 'D' receives and decrypts the packet
Current packet: ESP B->C
6) 'D' performs an ipsec tunneling and sends
Current packet: ESP D->C
7) 'C' Receives the packet and de-tunnels as follows
Packet: ESP D->C
ESP B->C
GRE B->C
ICMP A->C
'C' then responds in a similar manner and everyone is happy. The problem
occurs when the packet size grows. Ex: try this setup and do `ping -s 1400
C` on host 'A' It obviously won't work and shouldn't but the problem is
that host 'B' will perform the GRE encapsulation then send an ICMP
fragmentation needed message to itself:
B -> B ICMP Fragmentation needed
As opposed to sending a 'Fragmentation Needed' message to 'A' which it
should do.
This results in host 'A's packets being black holed.
Information:
Kernel: 2.6.11.2
IPsec-Tools: 0.5rc2
No firewalls
Standard Ethernet connections
Is anyone working on a fix? If anyone needs more information be sure to
'CC' me as I am not getting linux-net list right now.
Thomas DuBuisson
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html