Hurricane Electric's IPv6 Tunnel Broker Forums

General IPv6 Topics => IPv6 on Linux & BSD & Mac => Topic started by: rsquirrel on June 26, 2012, 02:44:16 PM

Title: Certain Kind of IPv6 Packets Loss
Post by: rsquirrel on June 26, 2012, 02:44:16 PM
Hi

I am doing Mobile IPv6 Experiments using HE tunnels, and I found that one certain kind of IPv6 packets would always be dropped by HE routers. My experiments were greatly disturbed by such issue, and I really want to why it would happen.

We have two computers using HE tunnels to get access to the Internet. The IPv6 address of these two computers are:
Computer HA (Home Agent) - 2001:470:1f07:20c::1/64
Computer MN (Mobile Node) - 2001:470:1f07:1e1:221:86ff:fe52:7b27/64
Normally, the tunnels work perfectly fine. A and B can send most kinds of IPv6 packets to each other. I've tested using the tool sendip, which can create arbitrary IPv6 packet and set all the fields in IPv6 headers. However, there is one particular packet that can not be transmitted, which is essential for Mobile IPv6 - the Binding Acknowledgement.

The packet has an IPv6 extension header (code 0x2b, IPv6 Routing), which is used to hold the Home Address. It is sent from HA to MN. We could see in wireshark that the packet is actually sent into the Internet, but Computer MN didn't receive anything. The detailed of the packet is obtained from Wireshark.

IPv6 Header:
Version: 6
Traffic Class: 0
Flowlabel: 0
Payload length: 40
Next header: IPv6 routing (0x2b)
Hop limit: 64
Source: 2001:470:1f07:20c::1
Destination: 2001:470:1f07:1e1:221:86ff:fe52:7b27

Routing Header:
Next Header: Mobile IPv6 (0x87)
Length: 2 (24 bytes)
Type: Mobile IP (2)
Left Segments: 1
Home Address: 2001:470:1f07:20c:21f:3cff:fe7e:c9d2

Mobile IPv6 Header:
Payload protocol: IPv6 no next header (0x3b)
... (irrelevant)

The problem exists in the Routing Header. I've tried other type of IPv6 extension headers, and they all worked. Only packets with IPv6 Routing Headers (0x2b) would be dropped.
I've also tried to change the red field into 0x3b (no next header), and as a result, the last two headers will be treated as payload, and the packet can successfully go from HA to MN. When I changed it back to 0x2b, it would not work again.

Could anyone please tell me what I am missing at this issue? I don't know how the the packet is lost. And I sincerely hope someone could fix this issue, because it is essential for Mobile IPv6 Protocol and we only have tunneled IPv6 environments.

Thank you very much!