INTERNET-DRAFT H. Kitamura NEC Corporation Expires in six months 21 June 1999 Connection/Link Status Investigation (CSI) IPv6 Hop-by-Hop option and ICMPv6 messages Extension Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document proposes a new mechanism whereby status information is collected for nodes along both the outgoing and incoming paths. This mechanism is called "Connection/Link Status Investigation (CSI)". In order to realize the CSI mechanism, one new IPv6 Hop-by-Hop option and three new ICMPv6 messages are proposed as extensions. The CSI mechanism is as simple as the "ping" mechanism and is also efficient because the status information of the nodes can be collected with a pair of "request/reply" ICMPv6 messages. By using the CSI mechanism, more efficient and reliable "traceroute" type functions can be achieved. Since the mechanism provides a generic framework for node data collection, it has good potential for application to other advanced usages easily. This document clarifies requirements for the mechanism and describes its specifications. H. Kitamura [Page 1] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 1. Introduction The need exists for a node-by-node based status investigation mechanism as a means of diagnosing networks and efficiently locating bottlenecks in communication paths. The current IPv6 [IPv6] and ICMPv6 [ICMPv6] specifications, however, do not sufficiently support node-by-node based status investigation mechanisms, and do not have features that are designed to do so except the End-to-End ICMPv6 Echo Request/Reply messages mechanism. This document proposes a new type of simple mechanism, called "CSI (Connection/Link Status Investigation)" to provide a node-by-node based efficient investigation mechanism. One new IPv6 Hop-by-Hop option (CSI option) and three new ICMPv6 messages (Status Request, Status Reply, and Status Report) are proposed to realize the CSI mechanism. There are two types of paths between a source (initiator) node and a destination node. One is the outgoing path from the source to the destination. The other is the incoming path from the destination to the source. The nodes in the paths and the order in which data packets pass through them are not always the same. Most current investigation mechanisms (e.g., "traceroute", etc.) can only obtain the status information of the outgoing path. In order to solve the problem, the CSI mechanism is designed to collect status information of all nodes along both incoming and outgoing paths by a simple procedure. The current investigation mechanisms (e.g., "traceroute", "pathchar", etc.) are not efficient. They issue many probe and reply packets to investigate. These methods may cause traffic congestion, and the information obtained by them may not be reliable because the issued packets do not always go through the same path. The CSI mechanism is designed to improve these points. It is efficient and can provide more reliable information with less traffic. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. H. Kitamura [Page 2] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 2. Requirements An efficient node-by-node based investigation mechanism is needed to satisfy the following requirements: 1. Cause minimum traffic The number of probe and reply packets must be minimized to avoid traffic congestion. Thus the "traceroute" type approach (multiple probes and multiple replies) is not recommended. 2. Avoid the varying path problem The paths of the probe packets to the same node are not always the same because of the dynamic routing mechanism. The varying of path makes it difficult to provide reliable information on all paths. Thus it is necessary to avoid the varying path problem to obtain reliable information. 3. Investigate both outgoing and incoming paths The outgoing and incoming paths are not always the same. The "traceroute" type approach can collect information only on outgoing path. However, the overwhelming majority of users need information on the incoming path. Thus it is necessary to investigate both outgoing and incoming paths. 4. Be simple enough It must be as simple as the "ping" or "traceroute" mechanism, with no need for cumbersome management and authentication mechanisms like SNMP. 5. Support passing through CSI feature disabled nodes Inevitably, there will be nodes that do not implement the CSI feature, and some nodes that disable the CSI feature on purpose. The CSI mechanism must be designed so that no problems occur when CSI messages pass through such nodes. 6. Support lost CSI messages CSI messages may be lost, because they are based on ICMPv6. The CSI mechanism must be designed so that no problems occur when the CSI messages are lost. H. Kitamura [Page 3] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 7. Be scalable and easily expandable In order to make the CSI mechanism a generic framework for node data collection, the mechanism must be scalable and easily expandable. The header field assignment of the CSI option and messages must be designed without causing constraints. 3. Design of the basic CSI mechanism 3.1 IPv6 Hop-by-Hop CSI Option First, one new IPv6 Hop-by-Hop option, called CSI option, is introduced to investigate and collect status information of nodes. Option Type of the CSI option must be started as 00 to avoid discarding the packet at the CSI feature disabled node, and the third bit must be set to 1 to record the collected data. [see section 4.2 of RFC2460]. A packet in which the CSI option is set investigates and collects status information when it passes through the nodes along the path. This mechanism contributes to minimize the traffic and to avoid the varying path problem. 3.2 ICMPv6 Status Request and Status Reply messages Second, a round trip probing loop messages are prepared by introducing new ICMPv6 messages (Status Request and Status Reply). The behaviors of these messages are similar to those of Echo Request and Echo Reply messages [ICMPv6]. Outgoing path -------> Status Request message +------------+ +------------+ /----->| node 1 |---->| node 2 |----->\ / +------------+ +------------+ \ / \ +------------+ +------------+ | source | |destination | | (node 0,6) | | (node 3) | +------------+ +------------+ \ / \ +------------+ +------------+ / \<-----| node 5 |<----| node 4 |<-----/ +------------+ +------------+ Status Reply message Incoming path <------- Fig. 1 Basic CSI mechanism H. Kitamura [Page 4] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 The Fig. 1 shows the basic CSI mechanism. The pair of messages makes a round trip loop which is similar to an action of a boomerang. The Status Request message is transferred from the source (initiator) node to the destination node along the outgoing path, and the Status Reply message is transferred back from the destination node to the source node along the incoming path. The IPv6 Hop-by-Hop CSI option must be set in both the Status Request and the Status Reply messages. These ICMPv6 messages have two roles. One is to trigger the start of status information collection of each node along the path. The other is to carry the collected data by the CSI option operation routines. 3.3 Status Report message The data carrying capacity (as measured by the number of records) of one pair of Status Request and Status Reply messages is limited. If the number of nodes along the path is large and the size of collected data exceeds the data carrying capacity, it is impossible to carry all the collected data with one pair of messages alone. In order to solve this problem, another new ICMPv6 message (Status Report) is introduced. When the data space of the pair of the Status Request and the Status Reply probing messages is fully filled with the collected data, all of the collected and filled data is carried by the Status Report message that is transmitted from the investigated nodes (that satisfy the conditions given in section 5), to the source node that initiates the Status Request message. Outgoing path -------> Status Request message +------------+ +------------+ /----->| node 1 |---->| node 2 |----->\ / +------------+ +------------+ \ / / \ +------------+ Status Report message / +------------+ | source |<------------------------- |destination | | (node 0,6) |<------------------------- | (node 3) | +------------+ Status Report message \ +------------+ \ \ / \ +------------+ +------------+ / \<-----| node 5 |<----| node 4 |<-----/ +------------+ +------------+ Status Reply message Incoming path <------- Fig. 2 Status Report message example H. Kitamura [Page 5] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 The Fig. 2 shows an example that explains how the Status Report messages are issued. The node 2 and node 4 satisfy the conditions given in section 5. With this mechanism, the data space of the probing messages is reset (emptied) and they can continue the data collection further. The number of the nodes along the path is not limited. If the number of nodes along the path is small and the size of collected data does not exceed the data carrying capacity of the probing messages, the source node can investigate the connection/link status effectively with the pair of Status Request and Reply messages alone. 3.4 Destination address type It is theoretically possible to adopt all of legal IPv6 address types to the destination, but this document does not consider multicast address case here in order to simplify the discussion. This document considers only the case that unicast or anycast address is adopted to the destination. 4. Procedure of the basic CSI mechanism The procedure of the basic CSI mechanism comprises the following steps: 1. The source node prepares the Status Request message in which the IPv6 Hop-by-Hop CSI option is set, and transmits it to the destination. Since the Status Request message is accompanied by the CSI option, it investigates and collects the status data of nodes along the "outgoing" path. If it is needed to transmit the Status Report message on the "outgoing" path, the return (destination) address of it is taken from the "source" address of the IPv6 header of the Status Request message. (as Return address flag field shows) 2. The destination node receives the Status Request message from the source and transmits the Status Reply message back to the destination node. At this time, all of the CSI option fields are copied from the Status Request message to the Status Reply message, and the Return H. Kitamura [Page 6] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 address flag field is turned over. Also, the Hop Limit field of the IPv6 header is copied and set as a continuous sequence. Since the Status Reply message is accompanied by the CSI option, it investigates and collects the status data of nodes along the "incoming" path. If it is needed to transmit the Status Report message on the "incoming" path, the return (destination) address of it is taken from the "destination" address of the IPv6 header of the Status Reply message. (as Return address flag field shows) 3. The source node receives the Status Reply message from the destination node. If the number of nodes that record the data is large and the size of collected date exceeds the data carrying capacity of the probing messages, the Status Report messages are transmitted to the source node from the investigated nodes that satisfy the conditions given in section 5. 5. Status Report message transmission conditions and check algorithm 5.1 Transmission conditions When the following conditions are satisfied, the Status Report message is transmitted to flush the collected data. 1. Data is full [Record Count] exceeds [Maximum Record Count] Data Space is fully filled. 2. Bitmap for node position record is full and Page must be updated In order to avoid losing the recorded Bitmap information, the Status Report message must be issued. There is an exception. If all bits of the Bitmap field are filled with zeroes, it is not necessary to issue the message because the Bitmap field does not provide any effective information. Detail of this issue is explained in section 7. 3. Hop Limit expires (becomes zero) (Time Exceeded) If the Hop Limit expires, the message is discarded and the collected data is lost at that point. In order to avoid losing the data, the Status Report message must be issued. H. Kitamura [Page 7] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 5.2 Check Algorithm The following algorithm shows the check operation procedures. hbh_CSI_management_routine() { if (Data is full || Bitmap is full || Hop Limit expires) { flush and issue the Status Report message; reset Data Space and Data Count fields; } Data collection and record operations; } Though it is possible to check the condition at the end of the routine (after the Data collection and record operations), the check operation is done at the first part of the routine only. Because this algorithm is designed to realize the policy to minimize the number of times to issue the Status Report messages. Only when it is really needed to issue the Status Report messages, they are issued. 6. Feature-disabled nodes or lost messages No problems occur when the Status Request/Reply messages pass through nodes in which the CSI feature have not been implemented or have been disabled, because Option Type of the CSI option is started from 00 and messages are merely skipped [see section 4.2 of RFC2460]. Neither do any problems occur if CSI messages are lost. For the source node, losing a Status Report message is almost the same as passing through the feature-disabled nodes. The source node can notice the difference between them and can detect the message lost by verifying the Node Count field information. H. Kitamura [Page 8] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 7. IPv6 Hop-by-Hop CSI Option Format +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Investigation Type |Record Unit|F|R| Hop Limit Base| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier |X| Record Count| Node Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Page | Bitmap (for Node Position Record) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Data Space + | | Option Type: 8-bit. Identifier of the type of option Value is 001xxxxx. 0x20+TBA (Tentatively 0x22) Opt Data Len: 8-bit unsigned integer. Length of the [Option Data] field of this option Max: 255 Depends on [Record Unit] (Investigation Type) Maximum Data Record Count is calculated by the following formula. [Max Record Count]={[Opt Data Len]-12}/[Record Unit] Investigation Type: 16-bit. Investigation type to acquire status information data. Currently several types are defined. [see section 11] Record Unit: 6-bit unsigned integer. Unit length of each information data in 4-octet. One investigated node records and occupies one data Record Unit length in Data Space field Min: 0 (no subordinate bits are set) F: 1-bit. (Reserved flag) Reserved flag for future use. R: 1-bit. (Return address flag) Flag to indicate return destination address for Status Report ICMP messages. H. Kitamura [Page 9] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 =0 Source Address of IPv6 header of the message. (Status Request ICMP message case) =1 Destination Address of IPv6 header of the message. (Status Reply ICMP message case) Hop Limit Base: 8-bit unsigned integer. Copy of initial value of Hop Limit of the IPv6 header. The value is never changed (decreased). Node location number [Hop Number] can be calculated with the following formula. [Hop Number] = [Hop Limit Base] - [Hop Limit] In case of the source node, [Hop Number] is 0. Identifier: 16-bit. Identifier to distinguish one messages from another. X: 1-bit. (don't care bit) A bit that is ignored by the user utilities (e.g., tracestatus). This field can be used in the Hop-by-Hop operation routines in the kernel to remember the internal operation status. [see Section 12.2] Record Count: 7-bit unsigned integer. Counter that shows how many data records were recorded in the Data Space field. Incremented by 1 by each node that records data. After the Status Report ICMP message is issued, The Record Count and Data Space fields are reset Next data recording position in the Data Space field is calculated by [Record Unit] * [Record Count]. Min: 0 Max: {[Opt Data Len]-12}/[Record Unit] Node Count: 8-bit unsigned integer. Counter that shows how many nodes recorded the status data by the probing loop messages. Incremented by 1 by each node that records data. The value is never reset. This value is used to check packet loss of the Status Report ICMP messages. Min: 0 Max: 255 Page: 4-bit. Page number of the Bitmap field. Min: 0 Max: 15 (10 practically) H. Kitamura [Page 10] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Bitmap (Node Position Record): 28-bit Bitmap is a set of flags and shows the positions along the path of nodes where data was recorded. Flag: =0 only packet forward node (Feature-disabled node) =1 status data record node (Feature-enabled node) Flag is set by the following logic. [Bitmap] |= 2^{[Hop Number] of the data record node} As a result, the Bitmap shows which nodes on the path recorded the status data. The combination of 4-bit Page and 28-bit Bitmap can show enough bitmap space 448 (=(2^4) * 28). Data Space: [Opt Data Len]-12 octets Buffer space to record the status information data. In this format, Version field is not prepared. Investigation Type field can be used to control the minor version. If major modification is necessary, it will be realized by introducing a new Option Type. 7.1 Bitmap (Node Position Record) The Fig. 3 shows an example that explains how Bitmap works. +------------+ +------------+ /----->| node 1 |---->|** node 2 **|----->\ / +------------+ +------------+ \ / [disabled] \ +------------+ +------------+ | source | |destination | | (node 0,6) | | (node 3) | +------------+ +------------+ \ / \ +------------+ +------------+ / \<-----|** node 5 **|<----| node 4 |<-----/ +------------+ +------------+ [disabled] .... 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+ Bitmap ..... |1|0|1|1|0|1|1| +-+-+-+-+-+-+-+-+-+-+ * @ * Fig. 3 Bitmap Result Example H. Kitamura [Page 11] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 In the example, the node 2 and node 5 are CSI feature-disabled nodes (The CSI has not been not implemented or disabled intentionally). On these nodes, the Hop-by-Hop CSI option is passed through. Any data are not recorded into the CSI option fields. Hop Limit, however, is decreased on all nodes (include such CSI feature-disabled nodes). By setting the bit of the [Hop Number] ( = [Hop Limit Base] - [Hop Limit]) on the Bitmap field in the CSI option operation routine, the positions of the CSI feature-disabled nodes on the path are located. Only with Bitmap information, it is not easy to know the location [Hop Number] of the destination node. It is notified by the Code field of the Status Reply message [see section 9]. 8. ICMPv6 Status Request Message Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+- IPv6 Fields: Hop Limit Hop Limit must be larger than the number of nodes on the round trip path. Destination Address Any legal IPv6 address except multicast address. [see section 3.4] ICMPv6 Fields: Type TBA (tentatively 142) Code 0 Identifier An identifier to aid in matching Status Replies and Status Reports to this Status Request. May be zero. H. Kitamura [Page 12] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Sequence Number A sequence number to aid in matching Status Replies and Status Reports to this Status Request. May be zero. Data Zero or more octets of arbitrary data. 9. ICMPv6 Status Reply Message Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data ... +-+-+-+-+- IPv6 Fields: Hop Limit Copied from the Hop Limit field of the invoking Status Request packet and set as a continuous sequence. Destination Address Copied from the Source Address field of the invoking Status Request packet. ICMPv6 Fields: Type TBA (tentatively 143) Code Shows [Hop Number] that is calculated by the following formula. [Hop Limit Base] - [Hop Limit] This type of Code field usage is unusual. In order to design Status Request/Reply message formats as extended Echo Request/Reply message formats, Code field is applied to show [Hop Number] value. Since Status Request/Reply messages are very similar to Echo Request/Reply messages, there are future possibilities for realizing Status Request/Reply messages by extending Echo Request/Reply messages. H. Kitamura [Page 13] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Value of Code field never conflicts between Echo and Status Reply messages. In case of Echo Reply message, Code field is always filled with 0. In case of Status Reply message, Code field never becomes 0, because Code [Hop Number] = 0 means the source node and the source node never issues the Status Reply message. Identifier The identifier from the invoking Status Request message. Sequence The sequence number from the invoking Status Request Number message. Data The data from the invoking Status Request message. 10. ICMPv6 Status Report Message Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Investigation Type |Record Unit|F|R| Hop Limit Base| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identifier |X| Record Count| Node Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Page | Bitmap (for Node Position Record) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Data Space + | | IPv6 Fields: Destination Address In case that the invoking message's R flag is 0 (Case of the Status Request message invoked), the "Source" address of the IPv6 header of the invoking message is copied. In case that the invoking message's R flag is 1 (Case of the Status Reply message invoked), the "Destination" address of the IPv6 header of the invoking message is copied. H. Kitamura [Page 14] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 ICMPv6 Fields: Type TBA (tentatively 144) Code Shows [Hop Number] that is calculated by the following formula. [Hop Limit Base] - [Hop Limit] This type of Code field usage is unusual. Others Copied from the CSI option of the invoking message except Option Type and Opt Data Len. 11. Predefined Investigation Types In this section, several examples of Investigation Type are described. Bit field flags of the Investigation Type are assigned as follows. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |m|s|o|i|t|l|u|O|I| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 11.1 Major (Interface) Bits "I" and "O" (upper letter) bits are major bits which is used to specify interface(s) that is/are investigated. I: Incoming Interface O: Outgoing Interface At least, either "I" or "O" bit must be set. |O|I| = |0|0| case: This never happens. |O|I| = |0|1| case: Only Incoming interface is investigated |O|I| = |1|0| case: Only Outgoing interface is investigated |O|I| = |1|1| case: Both Incoming and Outgoing interfaces are investigated 11.2 Subordinate Bits "u", "l", "t", "i", "o", "s", and "m" (lower letter) bits are subordinates of "I" and "O" bits. These bits stand for the properties of the interface. By setting the subordinate bits, corespondent property information of the specified interface(s) is recorded. H. Kitamura [Page 15] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Subordinate bits are commonly used by "I" and "O" bits to indicate which property information of the interface(s) must be recorded. If some of the subordinate bits are set, correspondent property information is record. (It is possible to set none of subordinate bits.) Since IP address information is important, "u" and "l" bits are usually set. If some property information can not be gotten by some reasons (e.g., filtering), null data is filled into the correspondent field instead of the right value. Every property information field (except "u" and "l" IP address) occupies 4 octets in the record. If the number of set bits is odd, it is necessary to add 4-octet padding at the end of each interface record in order to maintain 8-octet alignment. u: Upper part of IP address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Upper part of IP Address + | | +---------------------------------------------------------------+ l: Lower part of IP address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Lower part of IP Address + | | +---------------------------------------------------------------+ IP address of the interface. One IP address information is separated into two fields ("u" and "l") to compress it. It is described in the section 12.4 These fields are different from other subordinate bits. Since one physical interface usually has more than two IP addresses, some rule or algorithm is necessary to choose one IP address from them to record. It is described in the section 12.3 t: timestamp +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ timestamp format that is generally used in [Clock] and [NTP] The data collected time at each node is recorded. H. Kitamura [Page 16] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 It is not strongly requested that the timestamp is accurately synchronized with UTC, because its information is generally utilized by comparing with data of the same node that is recorded by other probes at other timings. i: ifInOctets +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ incoming direction octet counts ([MIB-II] defined) o: ifOutOctets +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ outgoing direction octet counts ([MIB-II] defined) s: ifSpeed +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifSpeed | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ physical maximum bandwidth of the interface ([MIB-II] defined) m: ifMtu +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifMtu | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ MTU of the interface ([MIB-II] defined) 11.3 Order in the Data Record Format 1. If "I" bit and some subordinate bits are set, corespondent property information of the Incoming interface is recorded. The order of property information fields is the same as that of the bit fields ("u", "l", "t", "i", "o", "s", and "m"). 2. If the number of set subordinate bits (except "u" and "l") is odd, 4-octet padding is added. 3. If "O" bit and some subordinate bits are set, correspondent property information of the Outgoing interface is recorded. The order of additional information fields is the same as that of the bit fields ("u", "l", "t", "i", "o", "s", and "m"). 4. If the number of set subordinate bits (except "u" and "l") is odd, 4-octet padding is added. H. Kitamura [Page 17] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 In the following subsections, some examples are showed: 11.4 Record Incoming Interface Address Investigation Type = 13 (0b 0000 0000 0000 1101) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 16-octet Maximum Record Count: 15 This operation can work as a "Record Route" operation. 11.5 Record Incoming/Outgoing Interface Addresses Investigation Type = 15 (0b 0000 0000 0000 1111) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Outgoing Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Outgoing Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 32-octet Maximum Record Count: 7 H. Kitamura [Page 18] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.6 Record Incoming Interface Address and Timestamp Investigation Type = 29 (0b 0000 0000 0001 1101) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 24-octet Maximum Record Count: 10 11.7 Record Incoming Interface Address, Timestamp and Incoming direction Octet Counts Investigation Type = 61 (0b 0000 0000 0011 1101) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 24-octet Maximum Record Count: 10 H. Kitamura [Page 19] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.8 Record Incoming Interface Address, Timestamp and Incoming/Outgoing direction Octet Counts Investigation Type = 125 (0b 0000 0000 0111 1101) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 32-octet Maximum Record Count: 7 11.9 Record Incoming Interface Address, Timestamp, Incoming/Outgoing direction Octet Counts, and Maximum Bandwidth Investigation Type = 253 (0b 0000 0000 1111 1101) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifSpeed | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 32-octet Maximum Record Count: 7 H. Kitamura [Page 20] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.10 Record Incoming/Outgoing Interface Addresses and Timestamps Investigation Type = 15 (0b 0000 0000 0000 1111) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Incoming Interface Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Outgoing Interface Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 48-octet Maximum Record Count: 5 H. Kitamura [Page 21] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.11 Record Incoming/Outgoing Interface Addresses, Timestamps and Incoming direction Octet Counts Investigation Type = 63 (0b 0000 0000 0011 1111) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Outgoing Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Outgoing Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 48-octet Maximum Record Count: 5 H. Kitamura [Page 22] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.12 Record Incoming/Outgoing Interface Addresses, Timestamps and Incoming/Outgoing direction Octet Counts Investigation Type = 127 (0b 0000 0000 0111 1111) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Outgoing Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Outgoing Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 64-octet Maximum Record Count: 3 H. Kitamura [Page 23] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 11.13 Record Incoming/Outgoing Interface Addresses, Timestamps Incoming/Outgoing direction Octet Counts and Maximum Bandwidth Investigation Type = 255 (0b 0000 0000 1111 1111) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Incoming Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Incoming Interface Address (lower part) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifSpeed | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Outgoing Interface Address (upper part) + | | +---------------------------------------------------------------+ | | + Outgoing Interface Address (lower part) + | | +-+-+-+-+p-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifInOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifOutOctets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ifSpeed | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Record Unit: 64-octet Maximum Record Count: 3 H. Kitamura [Page 24] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 12. Miscellaneous Considerations 12.1 Coexistence with Route Option (source route) In this section, the relationship between the CSI mechanism (CSI option) and the source routing mechanism (Route option) is described. Basically, the CSI mechanism can coexist with the source routing mechanism, but following issues must be considered. It is easy to specify the source route path for the "outgoing" path, because such a packet is issued from the source node. On the other hand, it is almost impossible to specify the source route path for the "incoming" path, because such a packet is issued from the destination node. There is no convenient way to transfer the source path specification information for the "incoming" path from the source node (user applications) to the destination node. Even if such information transfer were possible by some method, another problem would occur. The CSI option operation routines, which manage the "incoming" CSI message (Status Reply) in which the Route option is set, can not issue proper Status Report messages. Because the return (destination) address for the Status Report message can not easily be taken from the invoked Status Reply message. The return (destination) address for the Status Report message must be the address of the initiator node. In case of an "incoming" path, the return address is taken from the "destination" address of the invoked Status Reply message [see section 4]. Since the Route option modifies the "destination" address of the message, it does not indicate the address of the initiator node and a problem occurs. By introducing a special usage of the source routing, these problems are solved comprehensively. It is possible to make a source route path to a loop path (the source node and the final destination node are the same) by specifying all the nodes on the CSI probing loop path. With this method, nodes on the loop path can be investigated by means of the Status Request message alone. Since the loop path is comprised of an "outgoing" path only and the "incoming" path has been eliminated, all problems vanish. Since the CSI option can coexist with the Route option, the CSI mechanism can easily avoid the varying path problem of the dynamic routing mechanism and can provide reliable information in case of repeated multiple probing procedures. In addition, this also means that the CSI mechanism can be applied to mechanisms that are based on the source routing mechanism (e.g., mobile IP for IPv6). H. Kitamura [Page 25] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 12.2 Hop-by-Hop CSI Option Operation Routines (Input/Output) Basically, Hop-by-Hop CSI option operation routines are executed twice in the kernel of the nodes, once as an input side operation to collect and record property information regarding the incoming interface, and also as an output (forwarding) side operation to collect and record property information regarding the incoming interface. The input and output operations share the CSI option header region. In the normal procedure, the input operation manages general operations (e.g., update Counters and Bitmap, etc.) and input specific operations. After that, the output operation manages output specific operations. The output operation depends on the results of the input operations. With respect to a source node or to a node that disables the input operation on purpose, the input operation is not executed. In order to meet this case, flag type information must be transferred from the input operation to the output operation. An X flag field is prepared to accomplish this information transfer in the kernel. 12.3 Recording IP address Choosing Operation In order to choose one appropriate IP address which is to be recorded to the CSI option field from IP addresses of the interface, the following rule and algorithm is applied. 1. In case of an input operation, the destination address of the IP header is compared with the IP addresses of the interface. If a matching address is found, it is chosen. (With this algorithm, probing messages in which both CSI and Route options are set bring appropriate results. The recorded incoming addresses are the same as those specified in the source route path) 2. The scope (global, site-local, link-local, or node-local) of the destination address is determined, and compared with the scope of the IP addresses of the interface. If an IP address that has the same scope of the destination address is found, it is chosen. If multiple same scope addresses are found, the first found one is chosen. Else, IP addresses of the interface are ordered with the following order: global, site-local, link-local, or node-local, and H. Kitamura [Page 26] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 the one with the highest priority is chosen. This procedure is basically the same as that for choosing address to be filled into the source address field of general IP packets. 12.4 Simple IP address Compression With current specification, 1 octet is assigned for the Opt Data Len field. The total length of the CSI option fields is limited. It is 256 octets, which is not long enough to record much data. In order to maximize the number of data to be recorded, efficient (compressed) data format is necessary. IP address information occupies 16 octets, which is four times as large as the size of other property information, and it is fixed information. It can be compressed. The following simple IP address compression technique is introduced to accomplish that. An IP address information is separated into two parts (upper and lower), which are recorded as independent fields. When the upper part information is not necessary, only lower part information is recorded, and vice versa. By using this simple method, IP address information is compressed. Basically, the upper part contains network proper information (prefix), and the lower part contains node (interface) proper information. This characteristic contributes to accomplish the effective IP address compression. When the CSI mechanism is applied in a large scale network environment, there will be some cases in which only network information is necessary and the lower part information is not necessary. When the CSI mechanism is applied in a private network environment, there will be some cases in which the upper part information for all IP addresses is the same, as such, unnecessary. In case of repeated probing to the same path, after the first probe records the full IP addresses of the nodes on the path, it is no longer necessary to record upper parts to identify the nodes (interfaces) for later probes. H. Kitamura [Page 27] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 12.5 Characteristics and Implementation on Nodes (Routers) As described before, the specification of the CSI mechanism is simple enough to implement on any nodes. If nodes implement ICMP (timestamp) and MIB II features properly, all of the property information of the interfaces is ready to implement the CSI mechanism. It is easy to implement the CSI mechanism on such nodes. Since the CSI mechanism is comprised of investigation or diagnostic type operations, it does not request quick operations. So the reliability of the collected information does not depend on the processing speed on the node. It means that the CSI mechanism has nothing to do with performance issues. So, the CSI mechanism can be implemented on most of routers with ease. 13. IANA Considerations The CSI mechanism has introduced one IPv6 Hop-by-Hop option and three ICMPv6 messages. In order to implement the CSI mechanism, types of these option and messages are tentatively assigned from unassigned spaces as follows. IPv6 Hop-by-Hop CSI Option Type: 0x22 (Tentatively) Status Request ICMPv6 Message Type: 142 (Tentatively) Status Reply ICMPv6 Message Type: 143 (Tentatively) Status Report ICMPv6 Message Type: 144 (Tentatively) These numbers must be assigned by IANA officially. 14. Security Considerations Since the CSI mechanism is based on ICMPv6 messages, the security feature of the CSI mechanism follows that of ICMPv6. It is described in the Security Considerations section of the Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification [ICMPv6]. H. Kitamura [Page 28] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Appendix A. CSI Header Structure and Macros The following structure and macros is useful to implement the CSI mechanism. Operations for bit aligned fields are done via the macros. #define IP6_CSI_OPT_TYPE 0x22 /* tentative */ #define IP6_CSI_OPT_MINLEN 12 #define IP6_CSI_OPT_LEN(unit,n) (IP6_CSI_OPT_MINLEN + (unit) * (n)) #define IP6_CSI_OPT_MULTX 8 /* alignment is 8n+2 */ #define IP6_CSI_OPT_OFFSETY 2 struct ip6_csi_opt { uint8_t ip6_csi_opt_pad[IP6_CSI_OPT_OFFSETY]; uint8_t ip6_csi_opt_type; /* option type */ uint8_t ip6_csi_opt_len; /* option length */ uint16_t ip6_csi_opt_it; /* investigation type */ uint8_t ip6_csi_opt_ufr; /* record unit size, reserved flag and return address direction flag */ uint8_t ip6_csi_opt_hlb; /* hop limit base */ uint16_t ip6_csi_opt_id; /* identifier */ /* following fields are modified by nodes en route to the dest. */ uint8_t ip6_csi_opt_xrc; /* record counter, MSB is a "don't care" bit */ uint8_t ip6_csi_opt_nc; /* node counter */ uint32_t ip6_csi_opt_bm; /* node bitmap and page number */ /* uint64_t ip6_csi_opt_recbuf[N]; record buffer follows.. */ }; #define IP6_CSI_OPT_BMWIDTH 28 #define IP6_CSI_OPT_BMMASK 0xfffffff #define IP6_CSI_OPT_RECUNIT(p) ((p)->ip6_csi_opt_ufr & ~3) #define IP6_CSI_OPT_RFLAG(p) ((p)->ip6_csi_opt_ufr & 1) #define IP6_CSI_OPT_RECCNT(p) ((p)->ip6_csi_opt_xrc & 0x7f) #define IP6_CSI_OPT_BMPAGE(p) (ntohl((p)->ip6_csi_opt_bm)>>IP6_CSI_OPT_BMWIDTH) #define IP6_CSI_OPT_BITMAP(p) (ntohl((p)->ip6_csi_opt_bm) & IP6_CSI_OPT_BMMASK) H. Kitamura [Page 29] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 Appendix B. Utility Application for the CSI mechanism. "tracestatus" is a utility application that is designed to utilize the basic CSI mechanism. The relationship between "tracestatus" and Status Request/Reply is similar to that between "ping" and Echo Request/Reply. Users can specify the following items at least as command line arguments of "tracestatus". o Destination Node o Investigation Type o Initial value of Hop Limit for Status Request message Hop Limit for the round trip path (not one way) must be specified. o Maximum Record Count Since there is limitation of the Hop-by-Hop option length, the real Maximum Record Count is equal to or smaller than this value. o Number of repeat probings o Interval time of repeat probings o (Source route path) Since the CSI mechanism can coexist with the Route Option, it is possible to specify the source route path. H. Kitamura [Page 30] INTERNET-DRAFT Connection/Link Status Investigation (CSI) June 1999 References [IPv6] S. Deering, R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification," RFC2460, December 1998. [ICMPv6] A. Conta, S. Deering, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification," RFC2463, December 1998. [ND] T. Narten, et al., "Neighbor Discovery for IP Version 6 (IPv6)," RFC2461, December 1998. [Clock] J. Postel, "Internet Control Message Protocol," RFC792, September 1981. [NTP] David L. Mills, "Network Time Protocol (Version 3) Specification," RFC1305, March 1992 [MIB-II] K. McCloghrie, et al., "Management Information Base for Network Management of TCP/IP-based internets: MIB-II," RFC1213, March 1991. [RFC2119] S. Bradner, "Key words for use in RFCs to Indicate Requirement Levels," RFC2119 Author's Address Hiroshi Kitamura NEC Corporation C&C Media Research Laboratories 1-1, Miyazaki, 4-Chome, Miyamae-ku, Kawasaki, Kanagawa, 216-8555, JAPAN Phone: +81 (44) 856-2123 Fax: +81 (44) 856-2230 EMail: kitamura@ccm.cl.nec.co.jp H. Kitamura [Page 31]