#!/usr/bin/perl # # $Copyright$ # # $TAHI: ct/mip6/CN_PingAfterDeleteBinding.seq,v 1.5.4.4 2002/01/07 08:19:03 akisada Exp $ # BEGIN { $V6evalTool::TestVersion = '$Name: $'; } use V6evalTool; $IF0 = Link0; %pktdesc = ( echorequest => ' Send Echo Request from MN to NUT (no Home Address Option)', echorequest_ex => ' Send Echo Request from MN to NUT (Home Address Option)', echoreply => ' Recv Echo Reply from NUT to MN (no Routing Header)', echoreply_no_bce => ' Recv Echo Reply from NUT to MN (no Binding Cache entry)', ra_r1 => ' Send RA from R1', ns_r1_global => ' Recv NS from NUT to R1', na_r1_global => ' Send NA from R1 to NUT', na_r1_linklocal => ' Send NA from R1 to NUT', bindingupdate => ' Send Binding Update (A bit is not set)', delete_binding => ' Send Binding Update (Lifetime is zero)', param_problem => ' Recv Parameter Problem', ); vLogHTML("#### ping test ###############################################
"); vCapture($IF0); if($V6evalTool::NutDef{Type} eq 'host') { %ret = vSend($IF0, ra_r1); vSleep(3); } %ret = vSend($IF0, echorequest); if($V6evalTool::NutDef{Type} eq 'host') { vLogHTML("Wait Echo Reply
"); %ret = vRecv($IF0, 5, 0, 0, echoreply); if($ret{status} != 0) { vLogHTML('No response from NUT
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } } else { vLogHTML("Wait Neighbor Solicitation or Echo Reply
"); %ret = vRecv($IF0, 5, 0, 0, ns_r1_global, echoreply); if($ret{status} != 0) { vLogHTML('No response from NUT
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } if($ret{recvFrame} eq 'ns_r1_global') { %ret = vSend($IF0, na_r1_global); vLogHTML("Wait Echo Reply
"); %ret = vRecv($IF0, 5, 0, 0, echoreply); if($ret{status} != 0) { vLogHTML('No response from NUT
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } } } if($ret{recvFrame} ne 'echoreply') { vLogHTML('Can not receive Echo Reply
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } vLogHTML("#### ping test (Home Address Option) #########################
"); if($V6evalTool::NutDef{Type} eq 'host') { %ret = vSend($IF0, na_r1_linklocal); } else { %ret = vSend($IF0, na_r1_global); } vSleep(3); vClear($IF0); %ret = vSend($IF0, bindingupdate); %ret = vRecv($IF0, 5, 0, 0, param_problem); if($ret{recvFrame} eq 'param_problem') { vLogHTML('NUT does not support this function.
'); exit $V6evalTool::exitNS; } %ret = vSend($IF0, delete_binding); vSleep(3); vClear($IF0); %ret = vSend($IF0, echorequest_ex); vLogHTML("Wait Echo Reply
"); %ret = vRecv($IF0, 5, 0, 0, echoreply_no_bce); if($ret{status} != 0) { vLogHTML('No response from NUT
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } if($ret{recvFrame} ne 'echoreply_no_bce') { vLogHTML('Can not receive Echo Reply
'); vLogHTML('NG
'); exit $V6evalTool::exitFail; } vLogHTML(OK); exit $V6evalTool::exitPass; ################################################################ __END__ =head1 NAME CN_PingAfterDeleteBinding - Ping from MN to NUT (After Delete Binding) =head1 TARGET =begin html
Host and Router
=end html =head1 SYNOPSIS =begin html
CN_PingAfterDeleteBinding.seq [-tooloption ...] -pkt CN_PingAfterDeleteBinding.def
-tooloption: v6eval tool option
=end html =head1 TOPOLOGY =begin html
                                                      MN'
                                                      |
                                      --------+-------+------- LinkY
                                              |
                                              R2      MN
                                              |       |
Link1 --------+-------        --------+-------+-------+------- LinkX
              |                       |
             NUT                      R1
              |                       |
Link0 --------+-----------------------+-----------------------
Link0 3ffe:501:ffff:100::/64  
Link1 3ffe:501:ffff:101::/64  
LinkX 3ffe:501:ffff:102::/64 home link
LinkY 3ffe:501:ffff:103::/64 foreign link
R1(Link0) 3ffe:501:ffff:100:200:ff:fe00:a0a0  
MN 3ffe:501:ffff:102:200:ff:fe00:0005 home address
MN' 3ffe:501:ffff:103:200:ff:fe00:0005 care-of address
=end html =head1 TEST PROCEDURE =begin html
       NUT      R1      MN      MN'
        |       |       |       |
        | <---- |       |       | RA
        |       |       |       |
        | <-------------------- | Echo Request
        | ----> |       |       | NS
        | <---- |       |       | NA
        | --------------------> | Echo Reply (*1)
        |       |       |       |
        | <---- |       |       | NA
        |       |       |       |
        | <-------------------- | Binding Update
        |       |       |       |
        | <-------------------- | Binding Update (Lifetime is zero)
        |       |       |       |
        | <-------------------- | Echo Request
        | ------------> |       | Echo Reply (*2)
        |       |       |       |

1. check routing table - LinkY
        1.1. Host
                1.1.1. R1 sends RA
                1.1.2. MN' sends Echo Request
                1.2.3. Wait Echo Reply
                1.1.4. Receive Echo Reply
        1.2. Router
                1.2.1. MN' sends Echo Request
                1.2.2. Wait Echo Reply or NS
                1.2.3. If NS received then send NA, and wait Echo Reply again
                1.2.4. Receive Echo Reply
2. overwrite NCE on NUT
        2.1. R1 sends NA
3. check Binding Cache entry operation
        3.1. MN' sends Binding Update to Cache a Binding
        3.2. MN' sends Binding Update to Delete a Binding
        3.3. MN' sends Echo Request
        3.4. Wait Echo Reply
        3.5. Receive Echo Reply
=end html =head1 JUDGEMENT =begin html
 (*1) PASS: MN' receives Echo Reply
(*2) PASS: MN receives Echo Reply
=end html =head1 REFERENCE =begin html
<draft-ietf-mobileip-ipv6-15.txt>
8.2. Receiving Binding Updates
   If the Binding Update is valid according to the tests above, then the
   Binding Update is processed further as follows:
    -  If the Lifetime specified in the Binding Update is nonzero and
       the specified Care-of Address is not equal to the home address
       for the binding, then this is a request to cache a binding for
       the mobile node.  If the Home Registration (H) bit is set in the
       Binding Update, the Binding Update is processed according to the
       procedure specified in Section 9.1; otherwise, it is processed
       according to the procedure specified in Section 8.3.
    -  If the Lifetime specified in the Binding Update is zero or the
       specified Care-of Address matches the home address for the
       binding, then this is a request to delete the mobile node's
       cached binding.  If the Home Registration (H) bit is set in the
       Binding Update, the Binding Update is processed according to the
       procedure specified in Section 9.2; otherwise, it is processed
       according to the procedure specified in Section 8.4.
8.4. Requests to Delete a Binding
   When a node receives a Binding Update, it MUST validate it and
   determine the type of Binding Update according to the steps described
   in Section 8.2.  This section describes the processing of a valid
   Binding Update that requests a node to delete a mobile node's binding
   from its Binding Cache, for which the Home Registration (H) bit is
   not set in the Binding Update.  In this case, the receiving node MUST
   delete any existing entry in its Binding Cache for this mobile node.
=end html =head1 SEE ALSO =begin html
CN_Common.def
=end html =cut