RH_RoutingTypeNonZero - check Routing Type is not Zero
Router
RH_RoutingTypeNonZero.seq [-tooloption ...] -pkt RH_RoutingTypeNonZero.def
-tooloption : v6eval tool option
See also RH.def
None
Tester Target Tester
(Link0) (Link1)
| | |
|-------------------------->| |
| Packet to Link0 | |
| | (no forwarding) |
| | |
|<--------------------------| |
| Neighbor Solicitation | |
| | |
|-------------------------->| |
| Neighbor Advertisement | |
| | |
|<--------------------------| |
| ICMP Error from Link0 | |
| | |
v v v
1. Send Packet to Link0 2. Wait ICMP Error from Link0 or NS from Link0 3. If NS received then send NA to Link0, and wait ICMP Error form Link0 again 4. Receive ICMP Error from Link0
Network topology
(Link0) (Link1)
Tester Target Tester
Host1 ------ Router1 ------ Router2 ------ Router3 ------ Host2
Global 0 Global 1 Global 3 Global 5
Packet to Link0 is:
IPv6 Header
Version = 6
Traffic Class = 0
FlowLabel = 0
PayloadLength = 56
NextHeader = 43 (Routing Header)
SourceAddress = Global 0 Address (Host1)
DestinationAddress = Global 0 Address (Router1)
Routing Header
NextHeader = 59 (No Next Header)
HeaderExtLength = 6
RoutingType = 1
SegmentsLeft = 3
Address[1] = Global 1 Address (Router2)
Address[2] = Global 3 Address (Router3)
Address[3] = Global 5 Address (Host2)
PASS: ICMP Error Received from Link0
IPv6 Header
Version = 6
Traffic Class = 0
FlowLabel = 0
PayloadLength = 104
NextHeader = 58 (ICMP)
SourceAddress = Global 0 Address (Router1)
DestinationAddress = Global 0 Address (Host1)
ICMP Error
Type = 4 (Parameter Problem)
Code = 0 (erroneous header field encountered)
Checksum = (auto)
Pointer = 42 (Offset to Routing Type)
PayloadData = (Sent Packet)
RFC2460 4.4 Routing Header
The Routing header is used by an IPv6 source to list one or more intermediate nodes to be "visited" on the way to a packet's destination. This function is very similar to IPv4's Loose Source and Record Route option. The Routing header is identified by a Next Header value of 43 in the immediately preceding header, and has the following format:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. type-specific data .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the type of header
immediately following the Routing header. Uses
the same values as the IPv4 Protocol field
[RFC-1700 et seq.].
Hdr Ext Len 8-bit unsigned integer. Length of the Routing
header in 8-octet units, not including the first
8 octets.
Routing Type 8-bit identifier of a particular Routing header
variant.
Segments Left 8-bit unsigned integer. Number of route
segments remaining, i.e., number of explicitly
listed intermediate nodes still to be visited
before reaching the final destination.
type-specific data Variable-length field, of format determined by
the Routing Type, and of length such that the
complete Routing header is an integer multiple
of 8 octets long.
If, while processing a received packet, a node encounters a Routing header with an unrecognized Routing Type value, the required behavior of the node depends on the value of the Segments Left field, as follows:
If Segments Left is zero, the node must ignore the Routing header and proceed to process the next header in the packet, whose type is identified by the Next Header field in the Routing header.
If Segments Left is non-zero, the node must discard the packet and send an ICMP Parameter Problem, Code 0, message to the packet's Source Address, pointing to the unrecognized Routing Type.
perldoc V6evalTool