📄 rfc1622.txt
字号:
Network Working Group P. Francis
Request for Comments: 1622 NTT
Category: Informational May 1994
Pip Header Processing
Status of this Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
Preamble
During 1992 and 1993, the Pip internet protocol, developed at
Bellcore, was one of the candidate replacments for IP. In mid 1993,
Pip was merged with another candidate, the Simple Internet Protocol
(SIP), creating SIPP (SIP Plus). While the major aspects of Pip--
particularly its distinction of identifier from address, and its use
of the source route mechanism to achieve rich routing capabilities--
were preserved, many of the ideas in Pip were not. The purpose of
this RFC and the companion RFC "Pip Near-term Architecture" are to
record the ideas (good and bad) of Pip.
The remainder of this document is taken verbatem from the Pip draft
memo of the same title that existed when the Pip project ended. As
such, any text that indicates that Pip is an intended replacement for
IP should be ignored.
Abstract
Pip is an internet protocol intended as the replacement for IP
version 4. Pip is a general purpose internet protocol, designed to
handle all forseeable internet protocol requirements. This
specification defines the Pip header processing for Routers and
Hosts.
Acknowledgements
I want to individually acknowledge Rob Coltun, Steve Deering, Ramesh
Govindan, Joel Halpern, John Ioannidis, Chris Petrilli, Bob Smart,
and Zheng Wang. I want also to acknowledge the many people from the
Pip working group who have participated in developing Pip. Finally,
I want to acknowledge the SIP protocol (or, more accurately, the
people behind the SIP protocol) for providing certain good ideas.
Francis [Page 1]
RFC 1622 Pip Header Processing May 1994
Conventions
All functions in this specification are mandatory.
1. Introduction
Pip is an internet protocol intended as the replacement for IP
version 4. Pip is a general purpose internet protocol, designed to
handle all forseeable internet protocol requirements. This
specification defines the Pip header processing for Routers and
Hosts.
The design of Pip is fundamentally different from that of previous
internetwork protocols. Pip is designed to be as general as
possible, but without significantly compromising performance.
Because of Pip's generality, it can handle forseeable routing and
addressing requirements. It is hoped that it will be able to handle
most if not all future routing and addressing requirements.
There are many detailed aspects of Pip that provide this generality
that are not discussed here. It is useful, however, to mention one
general aspect. That is, Pip strives to remove as much "functional
semantics" from the base specification as possible. Pip defines a
packet header and forwarding rules that can include many different
functional semantics (that is, routing, addressing, and flow
paradigms). Therefore, the reader may often find him or herself
asking "But how do you do foo with Pip?" The answer to this sort of
question belongs in companion documents to the basic Pip spec.
Pip can be thought of as a mechanism for triggering actions in hosts
and routers, just as a machine language can be thought of as a
mechanism for triggering actions in CPUs. The machine language has
no functional semantics outside of the specific actions it triggers
(move this register, write that memory location, etc.). But, the
machine language is a very powerful tool upon which functional
semantics are built. Likewise, Pip is a powerful tool upon which
routing, addressing, and flow functions can be built.
Francis [Page 2]
RFC 1622 Pip Header Processing May 1994
2. Pip Specification
The Pip header is partitioned into three parts, the Initial Part, the
Transit Part, and the Options Part.
+===========================+
| Initial Part |
+===========================+
| Transit Part |
+===========================+
| Options Part |
+===========================+
| |
| Payload |
| |
Each part falls on a 32-bit boundary (as indicated by the double
lines shown), and the Transit Part falls on a 64 bit boundary.
The concept of tunneling in an integral part of Pip. Pip achieves
tunneling by encapsulating the Transit Part of the Pip header in
another Transit Part. Therefore, when tunneling, there is one
Transit Part for each (nested) tunnel:
+===========================+
| Initial Part |
+===========================+
| Transit Part |
+===========================+
| Transit Part |
+===========================+
.
.
.
+===========================+
| Transit Part |
+===========================+
| Options Part |
+===========================+
Because each Transit Part has only what is necessary for router
forwarding and handling, this method of tunneling is reasonably
efficient in terms of packet size.
Francis [Page 3]
RFC 1622 Pip Header Processing May 1994
2.1 Initial Part
The Initial Part is formatted as shown in Figure 1.
length, in bits
+===========================+
| Version Number = 8 | 4
+---------------------------+
| Sub-Version | 4
+---------------------------+
| Options Offset | 8
+---------------------------+
| Options Contents | 8
+---------------------------+
| Options Present | 8
+===========================+
| Packet SubID | 16
+---------------------------+
| Protocol | 16
+===========================+
| Dest ID | 64
+===========================+
| Source ID | 64
+===========================+
| Payload Length | 32
+===========================+
| Host Version | 8
+---------------------------+
| Payload Offset | 8
+---------------------------+
| Hop Count | 16
+===========================+
Figure 1: Initial Part
An explanation of each field follows.
2.1.1 Version Numbers
The first octet is divided into two 4-bit fields, the Version and the
Sub-Version. The Version field is set to be 8, and is meant to be
version 8 of IP. (As of this writing, this is an experimental number
assigned for development of Pip.) Thus, all encapsulation schemes
defined for IP can work for Pip as well.
As long as the Version field is 8, the Initial Part and Options Part
of the Pip Header is as specified in this standard. (In other words,
the Sub-Version field refers only to the Transit Part.)
Francis [Page 4]
RFC 1622 Pip Header Processing May 1994
By doing this, we allow the Transit Part of the Pip Header to change
completely without necessarily requiring a host to understand the new
Transit Part. If a host receives a Pip header with a Version number
of 8 and an unknown Sub-version number, the host does not try to
parse the Transit Part at all, rather it processes only the Initial
Part and the Options Part. (By using the Pip Header Protocol to
format Pip Headers, a host can be made to formulate the right Transit
Part, even though the host doesn't understand the semantics of the
Transit Part. This allows radical migration of the Transit Part
while potentially not requiring changes to hosts.)
If a host or a router receives a packet with an unknown Version
number, the packet is silently discarded.
The Sub-Version field is set to the value 0 for the version of Pip
defined in this specification. As long as the Sub-Version number is
0, the Transit Part is as specified in this standard. Any packet
received by a router with a Version number of 8 and an unknown Sub-
Version number is silently discarded.
2.1.2 Options Offset
The Options Offset indicates the position of the Options Part. The
unit of measure of the Options Offset is 32-bit words, counting the
first word of the Pip Header as word 0.
2.1.3 Options Contents
This field indicates how the Options Present field should be
interpreted. Each bit of the Options field indicates if each of up
to eight options is present in the Options Part. The Options
Contents field indirectly indicates which option each bit of the
Options Present field refers to. We say indirectly because the
mapping referred to by the Options Contents field is stored locally.
In other words, without additional information (the mapping), it is
not possible to examine the Options Contents field and know what
option each bit of the Options Present field refers to.
Any of 256 possible Options Contents values can be active at a given
time. (Note that the means by which the meaning of the Options
Contents values are assigned and conveyed to routers and hosts is
outside the scope of this specification.)
Francis [Page 5]
RFC 1622 Pip Header Processing May 1994
2.1.4 Options Present
This field indicates which of the Options indicated by the Options
Contents field are actually present in the Options Part. Each bit of
this field refers to a single option type. The mapping of each bit
to its' option type is determined by the Options Contents field.
For instance, assume that the Options Contents field indicates that
bit 0 of the Options Present field refers to the PDN Address option,
that bit 1 of the Options Present field refers to the foo option, and
that bit 2 of the Options Present field refers to the Fragmentation
option. (As of this writing, there is only one option. Until there
are more than eight options, there is no need to define more than one
Options Contents values.)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -