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