#!/usr/bin/perl # # Copyright (C) 2003 Yokogawa Electric Corporation , # INTAP(Interoperability Technology Association for Information # Processing, Japan) , IPA (Information-technology Promotion Agency,Japan) # Copyright (C) IBM Corporation 2003. # All rights reserved. # # Redistribution and use of this software in source and binary forms, with # or without modification, are permitted provided that the following # conditions and disclaimer are agreed and accepted by the user: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the names of the copyrighters, the name of the project which # is related to this software (hereinafter referred to as "project") nor # the names of the contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # 4. No merchantable use may be permitted without prior written # notification to the copyrighters. However, using this software for the # purpose of testing or evaluating any products including merchantable # products may be permitted without any notification to the copyrighters. # # # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING # BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF # THE POSSIBILITY OF SUCH DAMAGE. # # Author: Kazuo Hiekata # @title = (); %result = (); BEGIN { $V6evalTool::TestVersion = '$Name: REL_2_1_2 $'; } use V6evalTool; use mip6MN_common; #--------------------------------------------------------------# # check if NUT is host or router #--------------------------------------------------------------# if($V6evalTool::NutDef{Type} ne 'host') { vLogHTML("This test is for the host only"); exit $V6evalTool::exitHostOnly; } $IF0_NUT = $V6evalTool::NutDef{Link0_device}; $IF0 = Link0; vCapture($IF0); #--------------------------------------------------------------# # Initialization #--------------------------------------------------------------# init_mn(); # Assuming MN is at Link0 vSend($IF0, ra_ha0_to_multi); vSend($IF0, na_ha0lla_to_nut0); vSleep(3); # Clear Packets vClear($IF0); #--------------------------------------------------------------# # MN detects movement from foreign to foreign #--------------------------------------------------------------# vLogHTML('==== MN detects movement from foreign to foreign ====
'); for (my $i=0; $i<2; $i++) { # move to LinkX --------- vLogHTML('MN moved to LinkX
'); vSend($IF0, ra_r1_to_multi); vSend($IF0, na_r1lla_to_nut1); if (0 != wait_frame_at_linkx($IF0, bindingupdate_nut1_to_ha0)) { exit $V6evalTool::exitFail; } vSleep(5); vClear($IF0); # move to LinkY --------- vLogHTML('MN moved to LinkY
'); vSend($IF0, ra_r2_to_multi); vSend($IF0, na_r2lla_to_nut2); if (0 != wait_frame_at_linky($IF0, bindingupdate_nut2_to_ha0)) { vLogHTML('NG'); exit $V6evalTool::exitFail; } vSleep(5); vClear($IF0); } vLogHTML('OK
'); exit $V6evalTool::exitPass; ################################################################ __END__ =head1 NAME MoveFromForeignToForeign - MN detects movement from foreign to foreign =head1 TARGET =begin html
Host
=end html =head1 SYNOPSIS =begin html
MoveFromForeignToForeign.seq [-tooloption ...] -pkt MN_Common.def
-tooloption: v6eval tool option
=end html =head1 TOPOLOGY =begin html
                                      |
                                      R       TN
                                      |       |
                              --------+-------+--------------- LinkZ



                                      |
                                      R2             NUT2
                                      |               |
                              --------+---------------+------- LinkY



                                      |       |
                                      HA2     R1     NUT1
                                      |       |       |
                              --------+-------+-------+------- LinkX



                          |           |
             NUT0        HA1          HA0
              |           |           |
Link0 --------+-----------+-----------+-----------------------
Link0 3ffe:501:ffff:100::/64 home link
LinkX 3ffe:501:ffff:102::/64  
LinkY 3ffe:501:ffff:103::/64  
LinkZ 3ffe:501:ffff:104::/64  
HA0(Link0) 3ffe:501:ffff:100:200:ff:fe00:a1a1/64  
HA1(Link0) 3ffe:501:ffff:100:200:ff:fe00:a2a2/64  
HA2(LinkX) 3ffe:501:ffff:102:200:ff:fe00:a3a3  
R1(LinkX) 3ffe:501:ffff:102:200:ff:fe00:a4a4  
R2(LinkY) 3ffe:501:ffff:103:200:ff:fe00:a5a5  
TN(LinkZ) 3ffe:501:ffff:104:200:ff:fe00:a6a6  
=end html =head1 TEST PROCEDURE =begin html

MN detects movement from foreign to foreign

        HA0    NUT0     R1      R2
        |       |       |       |
        | ----> |       |       | RA
        |      NUT1     |       |
        |       | <---- |       | RA
        | <---- |       |       | Binding Update (*1)
        | ----> |       |       | Binding Acknowledgement
        |      NUT2     |       |
        |       | <------------ | RA
        | <---- |       |       | Binding Update (*2)
        | ----> |       |       | Binding Acknowledgement
        |      NUT1     |       |
        |       | <---- |       | RA
        | <---- |       |       | Binding Update (*3)
        | ----> |       |       | Binding Acknowledgement
        |      NUT2     |       |
        |       | <------------ | RA
        | <---- |       |       | Binding Update (*4)
        | ----> |       |       | Binding Acknowledgement
=end html =head1 JUDGEMENT =begin html
(*1) PASS: HA0 receives Binding Update
(*2) PASS: HA0 receives Binding Update
(*3) PASS: HA0 receives Binding Update
(*4) PASS: HA0 receives Binding Update
=end html =head1 REFERENCE =begin html
draft-ietf-mobileip-ipv6-20.txt
11.5 Movement

11.5.1 Movement Detection

   The primary movement detection mechanism for Mobile IPv6 defined in
   this section uses the facilities of IPv6 Neighbor Discovery,
   including Router Discovery and Neighbor Unreachability Detection.
   The mobile node SHOULD supplement this mechanism with other
   information whenever it is available to the mobile node (e.g., from
   lower protocol layers).  The description here is based on the
   conceptual model of the organization and data structures defined by
   Neighbor Discovery [12].

   Mobile nodes SHOULD use Router Discovery to discover new routers and
   on-link subnet prefixes; a mobile node MAY send Router Solicitations,
   or MAY wait for unsolicited (periodic) multicast Router
   Advertisements, as specified for Router Discovery [12].  Based on
   received Router Advertisements, a mobile node maintains an entry in
   its Default Router List for each router, and an entry in its Prefix
   List for each subnet prefix that it currently considers to be
   on-link.  Each entry in these lists has an associated invalidation
   timer value.  While away from home, a mobile node typically selects
   one default router and one subnet prefix to use as the subnet prefix
   in its primary care-of address.  A mobile node MAY also have
   associated additional care-of addresses, using other subnet prefixes
   from its Prefix List.  The method by which a mobile node selects and
   forms a care-of address from the available subnet prefixes is
   described in Section 11.5.2.  The mobile node registers its primary
   care-of address with its home agent, as described in Section 11.7.1.
=end html