#!/usr/bin/perl
#
# Copyright (C) 2003 Yokogawa Electric Corporation,
# INTAP(Interoperability Technology Association
# for Information Processing, 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/pd/RRRenew.seq,v 1.4 2003/06/11 09:31:14 ozoe Exp $
#
######################################################################
BEGIN { $V6evalTool::TestVersion = '$Name: REL_2_1_1 $ '; }
use V6evalTool;
use pd;
%pktdesc = (
echo_request => 'Send Echo Request (Link-Local Address)',
echo_reply => 'Recv Echo Reply (Link-Local Address)',
ns => 'Recv Neighbor Solicitation',
ns_unicast => 'Recv Neighbor Solicitation',
na => 'Send Neighbor Advertisement',
rs => 'Send Router Solicitation',
ra => 'Recv Router Advertisement',
ra1 => 'Recv Router Advertisement including mtu option',
ra2 => 'Recv Router Advertisement including multiple prefix information',
ra3 => 'Recv Router Advertisement including mtu option and multiple prefix information',
dhcp_sol => 'Recv DHCP Solicit message w/o Option Request option',
dhcp_sol_any => 'Recv DHCP Solicit message',
dhcp_adv => 'Send DHCP Advertise message',
dhcp_req => 'Recv DHCP Request message w/o Option Request option',
dhcp_req_any => 'Recv DHCP Request message',
dhcp_req_any1 => 'Recv DHCP Request message w/o Option Request and IA_PD Prefix option',
dhcp_req_any2 => 'Recv DHCP Request message w/o IA_PD Prefix option',
dhcp_renew => 'Recv DHCP Renew message w/o Option Request option',
dhcp_renew_any => 'Recv DHCP Renew message',
dhcp_rep => 'Send DHCP Reply message',
);
pdOptions(@ARGV);
# The following generate debugging messages.
$pd::debug=$pdOpt_v|$pdOpt_vv;
# You can specifies debug options to a remote control program.
# If you want to know more detail, please see the following:
# - V6evalTool.pm: perldoc V6evalTool
# - V6evalRemote.pm: perldoc V6evalRemote
$pd::remote_debug="-o1" if $pdOpt_vv;
#
#
$IF = Link0;
$IF1 = Link1;
$exit_rtn=$V6evalTool::exitPass;
$idx=0;
$wait_ras=$pd::MIN_DELAY_BETWEEN_RAS+1;
#
#
$delegateprefix="3ffe:501:fffb::";
$preferredlifetime="80";
$validlifetime="120";
#
$wait_time=16;
$maxcount = 4;
# time is Jan 1, 2000 (UTC), modulo 2^32
$t64 = time() - 946684800;
foreach($count = 0; $count < $maxcount; $count++){
$sid_duid_time[$count] = ($t64 & 0xffffffff);
$t64 = $t64 + 86400; #1 day after
}
@sid_link_addr = (
"00:00:00:00:a0:a0",
"00:00:00:00:a1:a1",
"00:00:00:00:a2:a2",
"00:00:00:00:a3:a3",
);
#
#
#
$type=$V6evalTool::NutDef{Type};
if($type eq host) {
vLogHTML("This test is for the router only
");
exit $V6evalTool::exitRouterOnly;
}
$type=$V6evalTool::NutDef{Type};
if($type ne router) {
vLogHTML(pdErrmsg("ERROR: $V6evalTool::NutDef{Type}: ".
"Unknown target type
"));
exit $V6evalTool::exitFail;
}
#
#
#
vLogHTML("Initialization
");
vLogHTML("Trying to setup NUT
");
pdStartDefaultRA() || exit $V6evalTool::exitFail;
pdStopDHCP6Client() || exit $V6evalTool::exitFail;
$vcpp = pdSetVCPP($pd::INITIAL, $delegateprefix, 0, 0,
$maxcount, @sid_duid_time, @sid_link_addr, %ret);
vCPP($vcpp);
#
pdStartDHCP6Client() || exit $V6evalTool::exitFail;
#
vCapture($IF);
#
#
%ret = vRecv($IF, $wait_time, 0, 0, dhcp_sol, dhcp_sol_any);
if($ret{status} != 0) {
vLogHTML('No response from NUT, Configuration Problem ?
');
vLogHTML('NG');
pdAsyncWait() || exit $V6evalTool::exitFatal;
exit $V6evalTool::exitFail;
}
if($ret{status} == 0) {
vLogHTML("Client sent DHCP Solicit message
");
vLogHTML("OK
");
$vcpp = pdSetVCPP($pd::SOLICIT, $delegateprefix, $preferredlifetime, $validlifetime,
$maxcount, @sid_duid_time, @sid_link_addr, %ret);
vCPP($vcpp);
vSend($IF, dhcp_adv);
%ret = vRecv($IF, $wait_time/2, 0, 0, ns, ns_unicast, dhcp_req, dhcp_req_any, dhcp_req_any1, dhcp_req_any2);
if ($ret{recvFrame} eq 'ns' || $ret{recvFrame} eq 'ns_unicast') {
vSend($IF, na);
%ret = vRecv($IF, $wait_time/2, 0, 0, dhcp_req, dhcp_req_any, dhcp_req_any1,, dhcp_req_any1);
}
if ($ret{status} == 0) {
vLogHTML("Client sent DHCP Request message
");
vLogHTML("OK
");
}
else{
vLogHTML("Cannot receive DHCP Request message
");
vLogHTML('NG');
pdAsyncWait() || exit $V6evalTool::exitFatal;
exit $V6evalTool::exitFail;
}
$vcpp = pdSetVCPP($pd::REQUEST, $delegateprefix, $preferredlifetime, $validlifetime,
$maxcount, @sid_duid_time, @sid_link_addr, %ret);
vCPP($vcpp);
%ret = vSend($IF, dhcp_rep);
%ret2 = vRecv($IF, $wait_time/2, 0, 0, ns, ns_unicast);
if($ret2{status} == 0) {
vSend($IF, na);
}
vLogHTML("Test
");
#Expire lifetime
$T1 = $preferredlifetime * 0.5;
$T2 = $preferredlifetime * 0.8;
vLogHTML("Contact time T1: $T1, T2: $T2
");
%ret = vRecv($IF, $T1, 0, 0, dhcp_renew, dhcp_renew_any);
$rt0 = time();
$irt = $pd::REN_TIMEOUT;
$mrt = $pd::REN_MAX_RT;
$rt = 0;
$msgtyp = $pd::RENEW;
$title{$idx}="
$pktdesc{'dhcp_renew'} | exp:sending DHCP Renew message | ";
if ($ret{status} == 0) {
$title{$idx}.="result:sent DHCP Renew message | ";
$result{$idx}=$V6evalTool::exitPass;
vLogHTML("OK
");
$idx++;
}
else{
vLogHTML('Cannot receive DHCP Renew message
');
vLogHTML('NG');
pdAsyncWait() || exit $V6evalTool::exitFatal;
exit $V6evalTool::exitFail;
}
$preferredlifetime="160";
$validlifetime="240";
$T1 = $preferredlifetime * 0.5;
$T2 = $preferredlifetime * 0.8;
$vcpp = pdSetVCPP($pd::RENEW, $delegateprefix, $preferredlifetime, $validlifetime,
$maxcount, @sid_duid_time, @sid_link_addr, %ret);
vCPP($vcpp);
vLogHTML("Sent DHCP Reply message
");
vLogHTML("The value of T1 and T2 was updated to $T1 and $T2, respectively.
");
vSend($IF, dhcp_rep);
%ret = vRecv($IF, $wait_time/2, 0, ns);
if($ret{status} == 0) {
vSend($IF, na);
}
}
else{
vLogHTML('Cannot receive DHCP Solicit message
');
vLogHTML('NG');
pdAsyncWait() || exit $V6evalTool::exitFatal;
exit $V6evalTool::exitFail;
}
pdAsyncWait() || exit $V6evalTool::exitFatal;
vSleep(2*$wait_time);
##################################
vCapture($IF1);
$wait_ra=2;
vSend($IF1, rs);
$title{$idx}="$pktdesc{'ra'} | exp:sending ra | ";
%ret = vRecv($IF1, $wait_ra, $ret{sentTime1}, 0, ra, ra1, ra2, ra3);
if ($pd::NOASYNC_RA == 0){
if ($ret{status} == 0) {
$title{$idx}.="result:sent RA, ";
$stat = pdCheckRA($delegateprefix, $validlifetime, %ret);
if ($stat == 0) {
$title{$idx}.="RA's Prefix, Validlifetime and PrefixLength are valid. | ";
$result{$idx}=$V6evalTool::exitPass;
vLogHTML("OK
");
}elsif ($stat == 1) {
$title{$idx}.="RA's Prefix ValidLifetime is invalid.";
$result{$idx}=$V6evalTool::exitFail;
$exit_rtn=$V6evalTool::exitFail;
vLogHTML("NG: RA's Prefix ValidLifetime is invalid.
");
}elsif ($stat == 2) {
$title{$idx}.="RA's PrefixLength is invalid.";
$result{$idx}=$V6evalTool::exitWarn;
$exit_rtn=$V6evalTool::exitWarn;
vLogHTML("Warn: RA's PrefixLength is invalid.
");
}elsif ($stat == 3) {
$title{$idx}.="RA's Prefix information is invalid.";
$result{$idx}=$V6evalTool::exitFail;
$exit_rtn=$V6evalTool::exitFail;
vLogHTML("NG: RA's Prefix information is invalid.
");
}else{
$title{$idx}.="Unknown RA.";
$result{$idx}=$V6evalTool::exitWarn;
$exit_rtn=$V6evalTool::exitWarn;
vLogHTML("Warn: Unknown RA.
");
}
} else {
$title{$idx}.="result:NOT sent RA | ";
$result{$idx}=$V6evalTool::exitFail;
$exit_rtn=$V6evalTool::exitFail;
vLogHTML('NG
');
}
}
else{
if ($ret{status} == 0) {
$title{$idx}.="result:sent RA | ";
$result{$idx}=$V6evalTool::exitPass;
vLogHTML("OK: sent RA.
");
} else {
$title{$idx}.="result:NOT sent RA | ";
$result{$idx}=$V6evalTool::exitFail;
$exit_rtn=$V6evalTool::exitFail;
vLogHTML("".pdErrmsg(NG)."
");
}
}
vSleep($wait_ras, "Wait for MIN_DELAY_BETWEEN_RAS (3 sec)");
#
#
#
@col=('PTN', 'EXP', 'RESULT');
pdPrintSummaryHTML("*** Test Summary: PE vs CPE ***", @col,
%title, %result, $idx);
#
#
#
exit $exit_rtn;
######################################################################
__END__
=head1 NAME
RRRenew.seq - Requesting Router performs Renew/Reply message exchange to update information about delegated prefix
=head1 TARGET
Router for DHCP client
=head1 SYNOPSIS
=begin html
RRRenew.seq [-tooloption ...] -pkt RRRenew.def -tooloption : v6eval tool option
=end html
=head1 TOPOLOGY
=begin html
TN
| ISP site
--+----+--------------- Link0
|
NUT Host
| | Customer site
-------+-------+------- Link1 3ffe:501:fffb:XXXX::/64
TN |
Link-local |
fe80::200:ff:fe00:a0a0 |
Ether |
00:00:00:00:a0:a0 |
Delegate Prefix |
3ffe:501:fffb:: |
Prefix Length |
48 |
Host |
Link-local |
fe80::200:ff:fe00:101 |
ether |
00:00:00:00:01:01 |
=end html
=head1 INITIALIZATION
=begin html
- NUT sets up Prefix Delegation.
- NUT sets up Router Advertisement to the interface by the side of downstream.
Tester as Server Target as Client Tester as Host
| | |
|<--------------------------| |
| DHCP Solicit message | |
| | |
|-------------------------->| |
| DHCP Advertise message | |
| | |
|<--------------------------| |
| DHCP Request message | |
| | |
|-------------------------->| |
| DHCP Reply message | |
| | |
1. Wait DHCP Solicit message
2. Send DHCP Advertise message
3. Wait DHCP Request message
4. Send DHCP Reply message
Addresses
Solicit, Request messages
Src |
NUT link-local address |
Dst |
All_DHCP_Relay_Agents_and_Servers |
All_DHCP_Relay_Agents_and_Servers FF02::1:2
Advertise, Reply message
Src |
fe80::200:ff:fe00:a0a0 |
Dst |
NUT link-local address |
UDP Ports
Clients listen for DHCP messages on UDP port 546
Server listen for DHCP messages on UDP port 547
DHCP Messages
DHCP Solicit message
msg-type |
SOLICIT(1) |
transaction-id |
The transaction ID for this message exchange |
options |
Client Identifier Option (MUST) |
IA_PD Option (MUST) |
|
Code |
33 (TBD) |
|
IAID |
The unique identifier which client specified |
|
T1 |
ANY |
|
T2 |
ANY |
Elapsed Time Option (MUST) |
|
elapsed-time |
ANY |
Option Request Option (Optional) |
DHCP Advertise message
msg-type |
ADVERTISE(2) |
transaction-id |
The same transaction ID previous message |
options |
Client Identifier Option |
Server Identifier Option |
|
DUID Contents type |
1 Link-layer address plus time |
|
hardware type |
1 Ether |
|
time |
Time which the server included |
|
link-layer address |
00:00:00:00:a0:a0 |
IA_PD Option |
|
Code |
33 (TBD) |
|
IAID |
Unique identifier which client specified |
|
T1 |
40 |
|
T2 |
64 |
|
IA_PD Prefix Option |
|
|
Code |
34 (TBD) |
|
|
preferred-lifetime |
80 |
|
|
valid-lifetime |
120 |
|
|
prefix-length |
48 |
|
|
IPv6 prefix |
3ffe:501:fffb:: |
DHCP Request message with IA_PD option
msg-type |
REQUEST(3) |
transaction-id |
The transaction ID for this message exchange |
options |
Client Identifier Option (MUST) |
Server Identifier Option (MUST) |
|
DUID Contents type |
1 Link-layer address plus time |
|
hardware type |
1 Ether |
|
time |
Time which the server included |
|
link-layer address |
00:00:00:00:a0:a0 |
IA_PD Option (MUST) |
|
Code |
33 (TBD) |
|
IAID |
Unique identifier which client specified |
|
T1 |
ANY |
|
T2 |
ANY |
|
IA_PD Prefix Option (Optional) |
|
|
Code |
34 (TBD) |
|
|
preferred-lifetime |
ANY |
|
|
valid-lifetime |
ANY |
|
|
prefix-length |
48 |
|
|
IPv6 prefix |
3ffe:501:fffb:: |
Elapsed Time Option (MUST) |
|
elapsed-time |
ANY |
Option Request Option (Optional) |
DHCP Reply message with IA_PD option including IA_Prefix option
msg-type |
REPLY(7) |
transaction-id |
The same transaction ID previous message |
options |
Client Identifier Option |
Server Identifier Option |
|
DUID Contents type |
1 Link-layer address plus time |
|
hardware type |
1 Ether |
|
time |
Time which the server included |
|
link-layer address |
00:00:00:00:a0:a0 |
IA_PD Option |
|
Code |
33 (TBD) |
|
IAID |
Unique identifier which client specified |
|
T1 |
40 |
|
T2 |
64 |
|
|
Code |
34 (TBD) |
|
|
preferred-lifetime |
80 |
|
|
valid-lifetime |
120 |
|
|
prefix-length |
48 |
|
|
IPv6 prefix |
3ffe:501:fffb:: |
=end html
=head1 TEST PROCEDURE
=begin html
Tester as PE Target as CPE Tester as client
| | |
| : | |
| Waiting until T1 passed | |
| : | |
| | |
|<--------------------------| |
| Judgment #1 | |
| DHCP Renew message | |
| | |
|-------------------------->| |
| DHCP Reply message | |
| including updated info | |
| | |
| |<--------------------------|
| | Router Solicitation |
| | |
| |-------------------------> |
| | Judgment #3 |
| | Router Advertisement |
| | |
| | |
v v
1. Wait DHCP Renew message
2. Send DHCP Reply message including updated information about the IA_PD
3. Send Router Solicitation
4. Wait Router Advertisement including updated prefix information.
Addresses
Renew message
Src |
NUT link-local address |
Dst |
All_DHCP_Relay_Agents_and_Servers |
All_DHCP_Relay_Agents_and_Servers FF02::1:2
Reply message
Src |
fe80::200:ff:fe00:a0a0 |
Dst |
NUT link-local address |
UDP Ports
Clients listen for DHCP messages on UDP port 546
Server listen for DHCP messages on UDP port 547
DHCP Messages
DHCP Renew message with IA_PD option including IA_PD Prefix option
msg-type |
RENEW(5) |
transaction-id |
The transaction ID for this message exchange |
options |
Client Identifier Option (MUST) |
Server Identifier Option (MUST) |
|
DUID Contents type |
1 Link-layer address plus time |
|
hardware type |
1 Ether |
|
time |
Time which the server included |
|
link-layer address |
00:00:00:00:a0:a0 |
IA_PD Option (MUST) |
|
Code |
33 (TBD) |
|
IAID |
Unique identifier which client specified |
|
T1 |
ANY |
|
T2 |
ANY |
|
IA_PD Prefix Option (MUST) |
|
|
Code |
34 (TBD) |
|
|
preferred-lifetime |
ANY |
|
|
valid-lifetime |
ANY |
|
|
prefix-length |
48 |
|
|
IPv6 prefix |
3ffe:501:fffb:: |
Elapsed Time Option (MUST) |
|
elapsed-time |
ANY |
Option Request Option (Optional) |
DHCP Reply message updated information about the IA_PD
msg-type |
REPLY(7) |
transaction-id |
The same transaction ID previous message |
options |
Client Identifier Option |
Server Identifier Option |
|
DUID Contents type |
1 Link-layer address plus time |
|
hardware type |
1 Ether |
|
time |
Time which the server included |
|
link-layer address |
00:00:00:00:a0:a0 |
IA_PD Option |
|
Code |
33 (TBD) |
|
IAID |
Unique identifier which client specified |
|
T1 |
80 |
|
T2 |
192 |
|
|
Code |
34 (TBD) |
|
|
preferred-lifetime |
160 |
|
|
valid-lifetime |
240 |
|
|
prefix-length |
48 |
|
|
IPv6 prefix |
3ffe:501:fffb:: |
=end html
=head1 JUDGEMENT
=begin html
1. DHCP Renew message is recieved
2. Router Advertisement is recieved updated information
=end html
=head1 TERMINATION
N/A
=head1 REFERENCE
=begin html
draft-ietf-dhc-dhcpv6-opt-prefix-delegation-01.txt
11. Requesting router initiated prefix delegation
A requesting router uses the same message exchanges as described in
section "DHCP Client-Initiated Configuration Exchange" of the DHCP
specification [6] to obtain or update prefix(es) from a delegating
router. The requesting router and the delegating router use the
IA_PD Prefix option to exchange information about prefix(es) in much
the same way IA Address options are used for assigned addresses.
11.1 Requesting router behaviour
The requesting router uses a Request message to populate IA_PDs with
prefixes. The requesting router includes one or more IA_PD options
in the Request message. The delegating router then returns the
prefixes for the IA_PDs to the requesting router in IA_PD options in
a Reply message.
The requesting router includes IA_PD options in any Renew, or Rebind
messages sent by the requesting router. The IA_PD option include all
of the prefixes the requesting router currently has associated with
that IA_PD.
In some circumstances the requesting router may need verification
that the delegating router still has a valid binding for the
requesting router. Examples of times when a requesting router may
ask for such verification include:
o The requesting router reboots.
o The requesting router's upstream link flaps.
o The requesting router is physically disconnected from a wired
connection.
If such verification is needed the requesting router MUST initiate a
Renew/Reply message exchange as described in the section "Creation
and Transmission of Renew Messages" of the DHCP specification [6].
The requesting router includes any IA_PDs, along with prefixes
associated with those IA_PDs in its Renew message.
Each prefix has valid and preferred lifetimes whose duration is
specified in the IA_PD Prefix option for that prefix. The requesting
router uses Renew and Rebind messages to request the extension of the
lifetimes of a delegated prefix.
The requesting router uses a Release message to return a delegated
prefix to a delegating router. The prefixes to be released MUST be
included in the IA_PDs.
draft-ietf-dhc-dhcpv6-28.txt
14. Reliability of Client Initiated Message Exchanges
see the retransmission mechanism
15. Message Validation
15.6. Renew Message
Clients MUST discard any received Renew messages.
Servers MUST discard any received Renew message that meets any of the
following conditions:
- the message MUST include a Server Identifier option
- the contents of the Server Identifier option MUST match the
server's identifier
- the message MUST include a Client Identifier option
18. DHCP Client-Initiated Configuration Exchange
A client initiates a message exchange with a server or servers
to acquire or update configuration information of interest. The
client may initiate the configuration exchange as part of the
operating system configuration process, when requested to do
so by the application layer, when required by Stateless Address
Autoconfiguration or as required to extend the lifetime of an address
(Renew and Rebind messages).
18.1. Client Behavior
A client uses Request, Renew, Rebind, Release and Decline messages
during the normal life cycle of addresses. It uses Confirm to
validate addresses when it may have moved to a new link. It uses
Information-Request messages when it needs configuration information
but no addresses.
If the client has a source address of sufficient scope that can be
used by the server as a return address and the client has received
a Server Unicast option (section 22.12) from the server, the client
SHOULD unicast any Request, Renew, Release and Decline messages to
the server.
DISCUSSION:
Use of unicast may avoid delays due to relaying of messages
by relay agents as well as avoid overhead and duplicate
responses by servers due to delivery of client messages to
multiple servers. Requiring the client to relay all DHCP
messages through a relay agent enables the inclusion of
relay agent options in all messages sent by the client. The
server should enable the use of unicast only when relay
agent options will not be used.
18.1.3. Creation and Transmission of Renew Messages
To extend the valid and preferred lifetimes for the addresses
associated with an IA, the client sends a Renew message to the server
from which the client obtained the addresses in the IA containing
an IA option for the IA. The client includes IA Address options in
the IA option for the addresses associated with the IA. The server
determines new lifetimes for the addresses in the IA according to the
administrative configuration of the server. The server may also add
new addresses to the IA. The server may remove addresses from the IA
by setting the preferred and valid lifetimes of those addresses to
zero.
The server controls the time at which the client contacts the server
to extend the lifetimes on assigned addresses through the T1 and T2
parameters assigned to an IA.
At time T1 for an IA, the client initiates a Renew/Reply message
exchange to extend the lifetimes on any addresses in the IA. The
client includes an IA option with all addresses currently assigned to
the IA in its Renew message.
If T1 or T2 is set to 0 by the server (for an IA_NA) or there are no
T1 or T2 times (for an IA_TA), the client may send a Renew or Rebind
message, respectively, at the client's discretion.
The client sets the "msg-type" field to RENEW. The client generates a
transaction ID and inserts this value in the "transaction-id" field.
The client places the identifier of the destination server in a
Server Identifier option.
The client MUST include a Client Identifier option to identify
itself to the server. The client adds any appropriate options,
including one or more IA options. The client MUST include the list
of addresses the client currently has associated with the IAs in the
Renew message.
The client MUST include an Option Request option (see section 22.7)
to indicate the options the client is interested in receiving. The
client MAY include options with data values as hints to the server
about parameter values the client would like to have returned.
The client transmits the message according to section 14, using the
following parameters:
IRT REN_TIMEOUT
MRT REN_MAX_RT
MRC 0
MRD Remaining time until T2
The message exchange is terminated when time T2 is reached (see
section 18.1.4), at which time the client begins a Rebind message
exchange.
5.5. Transmission and Retransmission Parameters
This section presents a table of values used to describe the message
transmission behavior of clients and servers.
Parameter Default Description
-------------------------------------
REN_TIMEOUT 10 secs Initial Renew timeout
REN_MAX_RT 600 secs Max Renew timeout value
24.2. DHCP Message Types
IANA is requested to record the following message types (defined
in section 5.3). IANA is requested to maintain a registry of DHCP
RENEW 5
A. Appearance of Options in Message Types
The following table indicates with a "*" the options are allowed in
each DHCP message type:
Client Server IA_NA Option Pref Time Relay Auth. Server
ID ID IA_TA Request Msg. Unica.
Renew * * * * * *
Status Rap. User Vendor Vendor Inter. Recon. Recon.
Code Comm. Class Class Spec. ID Msg. Accept
Renew * * * *
=end html
=head1 SEE ALSO
perldoc V6evalTool
=cut