#!/usr/bin/perl # # Copyright (C) 2002, 2003, 2004, 2005 Yokogawa Electric Corporation, # INTAP(Interoperability Technology Association for Information # Processing, Japan), IPA (Information-technology Promotion Agency, Japan). # 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. # # $TAHI: ct/ipsec/HTR_E_Out_LifetimeSAByte.seq,v 1.2 2003/06/05 13:42:47 ozoe Exp $ # ###################################################################### BEGIN { unshift(@INC, '../ipsec/'); $V6evalTool::TestVersion = '$Name: REL_2_1_2 $ '; } use V6evalTool; use IPSEC; %pktdesc = ( ### TBD ); $IF = Link0; #----- check NUT type ipsecCheckNUT(host); #----- set SAD,SPD vLogHTML("*** Target initialization phase ***
"); ipsecClearAll(); ## HOST1 vs NUT $sbyte=1; #1024byte $hbyte=1; #1024byte ipsecSetSAD( "src=$IPSEC::IPsecAddr{IPSEC_NUT_NET3_ADDR}" , "dst=$IPSEC::IPsecAddr{IPSEC_HOST1_NET5_ADDR}" , "spi=0x1000" , "mode=transport" , "protocol=esp" , "sbyte=$sbyte", "hbyte=$hbyte", "ealgo=null" , "eauth=hmac-md5" , "eauthkey=TAHITEST89ABCDEF" ); ipsecSetSPD( "src=$IPSEC::IPsecAddr{IPSEC_NUT_NET3_ADDR}" , "dst=$IPSEC::IPsecAddr{IPSEC_HOST1_NET5_ADDR}" , "upperspec=any" , "direction=out" , "protocol=esp-auth" , "mode=transport" , ); #====================================================================== vLogHTML("*** Target testing phase ***
"); #----- start capturing vCapture($IF); if ($IPSEC::IPsecAddr{IPSEC_IPVERSION} == 4) { } else { ## RA vSend($IF, ra_to_nut); vSleep(3); } # ping TN(Host1) <-> NUT $max = 13; $size = 84; # IPv6 packet size for(my $step = 1; $step < $max; $step ++) { ($stat, %ret) = ipsecPing2NUT($IF, 'echo_request_from_host1', 'echo_reply_to_host1_esp'); $count = $size * $step; if ($stat eq 'GOT_REPLY') { vLogHTML("TN received echo reply with ESP from NUT to HOST1.
"); vLogHTML("Byte count: $count byte
"); vLogHTML('OK
'); }else{ vLogHTML("TN received no echo reply with ESP from NUT to HOST1.
"); vLogHTML("Byte count: $count byte
"); vLogHTML('Fail'); ipsecExitFail(); } } ($stat, %ret) = ipsecPing2NUT($IF, 'echo_request_from_host1', 'echo_reply_to_host1_esp'); $count = $size * $max ; if ($stat ne 'GOT_REPLY') { vLogHTML("TN received no echo reply from NUT to HOST1.
"); vLogHTML("Expire lifetime of SA, Byte count: $count byte
"); vLogHTML('Pass'); ipsecExitPass(); } vLogHTML('TN received ICMP Echo Reply with ESP from NUT to HOST1.
'); vLogHTML("Over lifetime of SA!!, Byte count: $count byte
"); vLogHTML('Fail
'); ipsecExitFail(); ###################################################################### __END__ =head1 NAME HTR_E_Out_LifetimeSAByte - Lifetime of SA using byte, Host Transport Mode Outboud ESP (NULL), ESP Authentication HMAC-MD5 =head1 TARGET Host =head1 SYNOPSIS =begin html
  HTR_E_Out_LifetimeSAByte.seq [-tooloption ...] -pkt HTR_E_LifetimeSA.def
    -tooloption : v6eval tool option
  See also HTR_E_common.def and HTR_common.def
=end html =head1 INITIALIZATION =begin html

For details of Network Topology, see 00README

Set NUT's SAD and SPD as following:

              NET5      NET3
    HOST1_NET5 -- Router -- NUT
         -----transport----->

Security Association Database (SAD)

source address NUT_NET3
destination address HOST1_NET5
SPI 0x1000
mode transport
lifetime hard = 1 kbyte
soft = 1 kbyte
protocol ESP
ESP algorithm NULL
ESP authentication HMAC-MD5
ESP authentication key TAHITEST89ABCDEF

Security Policy Database (SPD)

source address NUT_NET3
destination address HOST1_NET5
upper spec any
direction out
protocol ESP
mode transport
=end html =head1 TEST PROCEDURE =begin html
 Tester                      Target
   |                           |
   |-------------------------->|
   |      ICMP Echo Request    |
   |                           |
   |<--------------------------|
   |      ICMP Echo Reply      |
   |        (with ESP)         |
   |                           |
   |           :               |
   |   Expire Lifetime of SA   |
   |           :               |
   |                           |
   |-------------------------->|
   |      ICMP Echo Request    |
   |                           |
   |<--------------------------|
   |     No ICMP Echo Reply    |
   |        (with ESP)         |
   |                           |
   v                           v
  1. Send ICMP Echo Request
  2. Receive ICMP Echo Reply with ESP
  3. Continue until expire lifetime of SA
  4. Send ICMP Echo Request
  5. No Receive ICMP Echo Reply with ESP

ICMP Echo Request with ESP

IP Header Source Address HOST1_NET5
Destination Address NUT_NET3
ESP SPI 0x1000
Algorithm DES-CBC
Key TAHITEST
ICMP Type 128 (Echo Request)

ICMP Echo Reply

IP Header Source Address NUT_NET3
Destination Address HOST1_NET5
ICMP Type 129 (Echo Reply)
=end html =head1 JUDGMENT PASS: When lifetime of SA was expired, TN didn't receive ICMP Echo Reply from NUT. FAIL: When lifetime of SA was expired, TN received ICMP Echo Reply from NUT. =head1 SEE ALSO perldoc V6evalTool =begin html
  IPSEC.html IPsec Test Common Utility
=cut