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

Reply via email to