5. Doing some tests

5.1. Pre-test

Do every configuration as shown above; it's especially important to have a different ESSID on the home net and visited network.

When you start mobile-IPv6 on MN, you will see multicasting router solicitations messages:


      # tcpdump -i eth0 -vv ip6 or proto ipv6

      ...
      13:32:54.681763 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
      (src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)

      13:32:55.681763 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
      (src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)

      13:32:57.681765 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
      (src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)
      ...

      

5.2. Movement detection

Generic movement detection uses Neighbor Unreachability Detection to detect when the default router is no longer bi-directionally reachable, in which case the mobile node must discover a new default router (usually on a new link).

To easily see whats going on, you should have one xterm window for each of these commands:


      # watch ifconfig eth0
      # watch route -A inet6
      # tcpdump -i eth0 -vv ip6 or proto ipv6
      

To travel to another net, you can issue the command on MN:


      # iwconfig eth1 essid visitnet
      

The MN is the on the other wireless network, and since it is sending out "router solicitation" (multicast), our AR will respond with it's prefix. MN will then configure itself with at new IPv6 address with the received prefix and it's own MAC address. If you type ifconfig eth0 you will see the new IPv6 address:


      # ifconfig eth0
      eth0  Link encap:Ethernet  HWaddr 00:02:A5:6F:A0:8A
            inet addr:192.168.100.134  Bcast:255.255.255.255  Mask:255.255.255.255
            inet6 addr: fe80::202:a5ff:fe6f:a08a/10 Scope:Link            (1)
            inet6 addr: fec0:106:1100:0:202:a5ff:fe6f:a08a/64 Scope:Site  (2)
            inet6 addr: fec0:106:2700::4/64 Scope:Site                    (3)
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:65 errors:44 dropped:0 overruns:0 frame:44
            TX packets:134 errors:5 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:100
            RX bytes:5528 (5.3 Kb)  TX bytes:21272 (20.7 Kb)
            Interrupt:3 Base address:0x100
      
(1)
The link-local address generated at boot
(2)
The new "foriegn" address, generated by combining AR's prefix and MAC-address
(3)
The "old" (home) address

Almost at the same time, the MN will perform a binding update to HA. In your tcpdump window, you will see several packets destined to HA. To verify that the binding update has been sent and acknowledged from MN:


      # mipdiag -s
      Mobile IPv6 Statistics
      NEncapsulations           : 0
      NDecapsulations           : 0
      NBindUpdatesRcvd          : 0
      NBindAcksRcvd             : 1    (1)
      NBindNAcksRcvd            : 0
      NBindRqsRcvd              : 0
      NBindUpdatesSent          : 1    (2)
      NBindAcksSent             : 0
      NBindNAcksSent            : 0
      NBindRqsSent              : 0
      NBindUpdatesDropAuth      : 0
      NBindUpdatesDropInvalid   : 0
      NBindUpdatesDropMisc      : 0
      NBindAcksDropAuth         : 0
      NBindAcksDropInvalid      : 0
      NBindAcksDropMisc         : 0
      NBindRqsDropAuth          : 0
      NBindRqsDropInvalid       : 0
      NBindRqsDropMisc          : 0
     
(1)
One binding ACK received.
(2)
One binding UPDATE sent.

You can also verify the binding with the following command (on MN):


     # mipdiag -l
     Mobile IPv6 Binding update list
     Recipient CN: fec0:106:2700::2
     BINDING home address: fec0:106:2700::4 care-of address: fec0:106:1100:0:202:a5ff:fe6f:a08a
             expires: 115 sequence: 0 state: 1
             delay: 3 max delay 256 callback time: 68
     

You can also verify it on HA with the statistics option (-s) and with the:


     # mipdiag -c
     Mobile IPv6 Binding cache
     Home Address      Care-of Address                     Lifetime  Type 
     fec0:106:2700::4  fec0:106:1100:0:202:a5ff:fe6f:a08a  104       2 
     

5.3. ping6

From the MN, you can try to ping AR's eth1 (fec0:106:1100::1):


     # ping6 fec0:106:1100::1
     PING fec0:106:1100::1(fec0:106:1100::1) from fec0:106:2700::4 : 56 data bytes
     64 bytes from fec0:106:1100::1: icmp_seq=1 ttl=62 time=8.01 ms
     64 bytes from fec0:106:1100::1: icmp_seq=2 ttl=62 time=8.02 ms
     ...
     

By using tcpdump, you can see how the packets travel:


     12:13:51.789688 fec0:106:1100:0:202:a5ff:fe6f:a08a > fec0:106:2700::2: \  (1)
     fec0:106:2700::4 > fec0:106:1100::1: icmp6: echo request \ (2)
     (len 64, hlim 64) (len 104, hlim 255)

     12:13:51.797675 fec0:106:2700::2 > fec0:106:1100:0:202:a5ff:fe6f:a08a: \ (3)
     fec0:106:1100::1 > fec0:106:2700::4: icmp6: echo reply \
     (len 64, hlim 62) (len 104, hlim 253)
     
(1)
The packet first goes from MN to the HA using MN new IPv6 address.
(2)
Then from HA to AR.
(3)
The AR then responds to HA and tunnels the packets to MN.

You can now see the statistics have been updated:


     # mipdiag -s
     Mobile IPv6 Statistics
     NEncapsulations           : 56
     NDecapsulations           : 25
     ...
    

5.4. Kernel IP routing table

One interesting thing MIPv6 does is change the default route to a tunnel. The new default route becomes:


    # route -A inet6
    Kernel IPv6 routing table
    Destination      Next Hop       Flags Metric Ref    Use Iface
    ::/0             ::             UD    64     0        0 ip6tnl1
    ....
    

5.5. Travelling through several foregin LAN's

To be completed.

5.6. Returning home

To be completed.

5.7. Real life testing - smooth handover

To really get the feel on how mobile IP works, fire up GnomeMeeting (See the figure GnomeMeeting and start a netmeeting. Note! You must use the latest GnomeMeeting to get support for IPv6! Then do a "travel" and you can see an almost smooth handover.

Using GnomeMeeting with IPv6 to test roaming between two wireless networks