UMIP-DSMIP: a DSMIPv6 implementation for UMIP. Nautilus6 Working Group - WIDE Project http://www.nautilus6.org ---------------------------------------------- Authors: - Jean LORCHAT (IIJ, Japan) - Romain KUNTZ (LSIIT - ULP, France) - Sebastien DECUGIS (NICT, Japan) - Martin ANDRE (NICT, Japan) Release Notes: - 20080530: First release (0.1) for UMIP 0.4 and 2.6.24 kernel Released under the GPLv2 license. See the COPYING file included with this release. 1. About DSMIPv6 ---------------- DSMIPv6 stands for "Dual Stack Mobile IPv6" and aims at extending the Mobile IPv6 and NEMO Basic Support protocols to support movements in IPv4 networks. It is based on the following proposal: http://tools.ietf.org/html/draft-ietf-mext-nemo-v4traversal The basic features are: - the possibility to configure an IPv4 CoA on the mobile node, - the possibility to connect the mobile node behind a NAT device, - the possibility to connect the home agent behind a NAT device, - the possibility to use an IPv4 Home Address on the mobile node, - the possibility to use an IPv4 MNP in the mobile network. 2. About UMIP-DSMIP -------------------- a. Disclaimer ------------- This first release has been realized due to numerous demands on the availability of the code. However, The proposed DSMIPv6 implementation is still in an early stage. As such, many features are not implemented yet, and you will most certainly encounter bugs, crashes and performance issues while operating it. Some parts of the code also need to be re-written. This first release is thus mainly intended to developers that whish to improve it and implement missing functionalities. We will be happy to get feedback and include contributions from other people in the next releases. Due to the lack of support that can be offered by the current UMIP-DSMIP developers, it is strongly advised to have a good knowledge in kernel development (especially the networking part) and a strong experience with the UMIP stack (see also section 3.a). Except from this short documentation, the only place so far to find interesting information is the code itself: take some time to read and understand what the UMIP-DSMIP patches do. That being said, a Mailing List is available for developpers wishing to share their questions, problems, patches, etc. Subscriptions can be done here: http://ml.nautilus6.org/mailman/listinfo/dsmip b. Features ----------- The current state of UMIP-DSMIP implements: - the possibility to configure an IPv4 CoA on the mobile node when moving/booting in an IPv4 network, and to perform handovers from IPv6/IPv4 networks to IPv6/IPv4 networks, - detect NAT devices on the path between the MN and the HA (i.e. UDP encapsulation of the MIPv6 signaling and NAT detection at the HA). UMIP-DSMIP does NOT implement (yet): - UDP encapsulation of the data when a NAT is detected, - the possibility to connect the HA behind a NAT device, - the possibility to use an IPv4 Home Address on the mobile node. It is worth noting that this DSMIPv6 implementation has been implemented above the NEPL patch (which enables NEMO Basic Support to UMIP), and thus works for mobile hosts as well as for mobile routers. c. Known Bugs ------------- We are aware of the following problems: - The IPv4 CoA is not correctly removed when exiting UMIP-DSMIP - Some XFRM policies are not correctly deleted in some cases, which might affect the operation of DSMIPv6 after a few handovers, - Performance issues when realizing vertical handovers from one interface to another, - And certainly many others not listed here... 3. How to setup UMIP-DSMIP -------------------------- a. Pre-requisites ----------------- Before trying to setup an UMIP-DSMIP testbed, we strongly advise the developers to understand the main design of UMIP, especially what is XFRM and how UMIP uses it to perform packet transformation. Especially, the following commands will be of a precious help to the developers for debugging purposes: # ip -6 xfrm policy # ip -6 xfrm state The release also comes with a patch for Wireshark 0.99.7 (in extras/wireshark) which allows to display in Wireshark the headers, options and flags defined by the DSMIPv6 specification. b. Overview of the release -------------------------- umip-dsmip-20080530 | +-- extra | | | + wireshark: a patch to apply to Wireshark 0.99.7 sources | in order to display DSMIPv6-related fields. | +-- kernel-dsmip-20080530: a set of patches to apply to a 2.6.24 | kernel. | +-- userland-dsmip-20080530: a set of patches to apply to UMIP 0.4 c. Sample testbed ----------------- The following topology can be a good starting point to test the UMIP-DSMIP implementation: ------------- Home Link (IPv6 and IPv4) | | HA | | FN3 (IPv6 and IPv4) | | AR1 ------------ AR2 -----| | | | | | | | | ------------- ------------- FN1 (IPv4-only) FN2 (IPv6-only) Note: - The HA must have both an IPv6 and IPv4 addresses configured on its interface connected to the Home Link, - FL stands for Foreign Network, AR1 for Access Router, - Each Access Router must be correctly configured to advertise the IPv6 and/or IPv4 prefixes it owns. Before trying UMIP-DSMIP, test that your IPv6 and IPv4 prefixes are correctly routed in your testbed and that a DHCP server is available in the networks that are supposed to provide IPv4. This DHCP server can be for example co-located on the AR of the network. d. Kernel setup for the MR and the HA ------------------------------------- Download a 2.6.24 kernel: http://www.eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 Uncompress it, and apply the set of patches available in kernel-dsmip-20080530, from 0001 (first) to 0007 (last). Note: we are aware of the hunk produced by some of those patchs. They should however apply correctly. Configure the kernel options as usual. Also, enable all the options specific to Mobile IPv6 as explained in the NEPL Howto [1]. Finally, enable the options specific to DSMIPv6 that are located in: Networking ---> Networking options ---> IP: UDP Encapsulation transformation IP: UDP Encapsulation transformation - NAT Traversal support IPv6: IPv6-in-IPv4 tunnel (SIT driver) Compile and install your new kernel, reboot on that new kernel. e. Userland setup for the MR and the HA --------------------------------------- Download UMIP 0.4: ftp://ftp.linux-ipv6.org/pub/usagi/patch/mipv6/umip-0.4/daemon/tarball/mipv6-daemon-umip-0.4.tar.gz Uncompress it, and apply the set of patches available in userland-dsmip-20080530, from 0001 (first) to 0013 (last). Compile the UMIP daemon as explained in the NEPL Howto [1]. Note that the special option "--enable-tlv" can be given at the "configure" time to enable the processing of TLV UDP encapsulation (Note: TLV UDP encapsulation is not completely supported yet). In addition to the usual UMIP required fields, the configuration file must set the following ones: - For the Home Agent: HaAcceptDsmip6 enabled; HomeAgentV4Address ; - For the MR: MnUseDsmip6 enabled; MnHomeLink { [...] # The IPv4 address of the HA or the HA name can be given. # If both are given, the HomeAgentName field is ignored. HomeAgentV4Address ; # HomeAgentName ; [...] } Interface { [...] # Specify if this interface should use DHCP to get an IPv4 CoA UseDhcp enabled; [...] } 4. Operating UMIP-DSMIP ----------------------- If the MR moves in IPv6-only networks, the usual NEMO Basic Support protocol is operated. If both IPv6 and IPv4 are operated in the network, IPv6 is always preferred. When moving to IPv4 only networks, an IPv4 CoA is configured on the interface of the MR using DHCP. A BU encapsulated in UDP is sent to the HA for registration, replied with a BA encapsulated in UDP. An IPv6-in-IPv4 SIT tunnel is then built between the MR and the HA. All the IPv6 traffic from the MR or the nodes in the Mobile Network is sent through this tunnel up to the HA. Handovers between different interfaces located in different networks are not supported in all cases. You may experience performance issues with such scenario. 5. Where to get support ----------------------- The NEPL Howto [1] provides a complete explanation on how to setup an UMIP testbed and might help to configure all the parts not related to DSMIPv6. The DSMIP support mailing list [2] is the right place for discussions, questions and support related to UMIP-DSMIP. 6. References ---------- [1] http://www.nautilus6.org/doc/nepl-howto/ [2] http://ml.nautilus6.org/mailman/listinfo/dsmip -- Nautilus6 Working Group - WIDE Project http://www.nautilus6.org