");
#----- start capturing
$min = 1;
$max = 4294967295 ;
vCapture($IF);
$seq = 0;
vCPP("-DSEQ=$seq");
if ($IPSEC::IPsecAddr{IPSEC_IPVERSION} == 4) {
} else {
## RA
vSend($IF, ra_to_nut);
vSleep(3);
}
for($step = $min; $step <= $max; $step++) {
vClear($IF);
$seq = $step;
vLogHTML("Sequence number = $seq");
vCPP("-DSEQ=$seq");
# ping TN(Host1) <-> NUT
($stat, %ret) = ipsecPing2NUT($IF, 'echo_request_from_host1', 'echo_reply_to_host1_esp_2');
if ($stat eq 'NO_REPLY') {
vLogHTML("TN received no echo reply from NUT to HOST1.
");
ipsecExitFail();
}
if ($stat eq 'GOT_REPLY') {
vLogHTML("TN received echo reply from NUT to HOST1.
");
vLogHTML('OK');
}
}
######################################################################
vClear($IF);
$seq = 1;
vCPP("-DSEQ=$seq");
vLogHTML("Sequence number = $seq");
# ping TN(Host1) <-> NUT
($stat, %ret) = ipsecPing2NUT($IF, 'echo_request_from_host1', 'echo_reply_to_host1_esp_2');
if ($stat eq 'GOT_REPLY') {
vLogHTML("TN received echo reply from NUT to HOST1.
");
vLogHTML("TUN resets sequence number on a SA.
");
vLogHTML("Sequence Number must never be allowed to cycle.
");
ipsecExitFail();
}
if ($stat eq 'NO_REPLY') {
vLogHTML("TN received no echo reply from NUT to HOST1.
");
vLogHTML("TUN ignored cylclic sequence number.
");
ipsecExitPass();
}
vLogHTML("TN received echo reply from NUT to HOST1.
");
ipsecExitFail();
######################################################################
__END__
=head1 NAME
HTR_E_Out_SeqCountOverFlow - Host Transport Mode ESP (NULL), Outbound Sequence Counter Overflow check
=head1 TARGET
Host
=head1 SYNOPSIS
=begin html
HTR_E_Out_SeqCountOverFlow.seq [-tooloption ...] -pkt HTR_E_SeqCountOverFlow.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 |
| 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) |
| |
| : |
| continue 2^32-1 times |
| : |
| |
|-------------------------->|
| ICMP Echo Request |
| |
| (<----------------------) |
| No ICMP Echo Reply |
| ( with ESP, SEQ=1 ) |
| |
v v
- Send ICMP Echo Request
- Receive Nothing for Last Request
ICMP Echo Request
| IP Header |
Source Address |
NUT_NET3 |
|
Destination Address |
HOST1_NET5 |
| ICMP |
Type |
129 (Echo Reply) |
|
Data Length |
14 |
ICMP Echo Reply with ESP
| IP Header |
Source Address |
HOST1_NET5 |
|
Destination Address |
NUT_NET3 |
| ESP |
SPI |
0x1000 |
|
Sequence Number |
1->4294967295->1 |
|
Algorithm |
NULL |
|
ESP authentication |
HMAC-MD5 |
|
ESP authentication key |
TAHITEST89ABCDEF |
|
Padding |
Zero |
|
Padding Length |
0 |
| ICMP |
Type |
128 (Echo Request) |
|
Data Length |
14 |
=end html
=head1 JUDGMENT
PASS: Nothing received
FAIL: ICMP Echo Reply with esp received
=head1 SEE ALSO
perldoc V6evalTool
=begin html
IPSEC.html IPsec Test Common Utility
=cut