Internet DRAFT - draft-ietf-sip-routing-addr
draft-ietf-sip-routing-addr
INTERNET DRAFT
draft-ietf-sip-routing-addr-01.txt
S. Deering (Xerox PARC)
P. Francis (NTT)
R. Govindan (Bellcore)
February 1994
Simple Internet Protocol Plus (SIPP):
Routing and Addressing
Status of this Memo
This document is an Internet Draft. 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. Internet Drafts may be updated, replaced, or obsoleted by
other documents at any time. It is not appropriate to use Internet
Drafts as reference material or to cite them other than as a "working
draft" or "work in progress."
Please check the I-D abstract listing contained in each Internet
Draft directory to learn the current status of this or any other
Internet Draft.
Changes From Last Version
Actually, this was intended to be the first version of the ROAD spec,
but the previous version was sent to the Internet Drafts secretariat
before it was completely reviewed, and in the confusion was mistak-
enly posted in the Internet Drafts repository. The previous version
is dated January 1994.
This version contains numerous minor changes not mentioned here. The
major changes in this version are:
1. Routers are no longer required to recognize prefixes they ini-
tiate in routing algorithms as identifying themselves.
SIPP WG, Expires Sept. 1, 1994 [Page 1]
draft-ietf-sip-routing-addr-01.txt February 1994
2. The Flow ID/Source Identifying Address pair no longer needs to
be unique for a given route header. The Flow ID is not set
unless an explicit flow has been established.
3. The X and S bits in the Local-Use address have been repositioned
to reflect where they actually lay according to canonical for-
mat.
1. INTRODUCTION
This specification defines the routing and addressing architecture of
SIPP. It describes the address formats for SIPP, and the rules for
handling address sequences for both hosts and routers.
The authors would like to acknowledge the contributions of Jim Bound
(DEC), Bob Gilligan (Sun), Bob Hinden (Sun), Christian Huitema
(INRIA), and Erik Nordmark (Sun), and Sue Thomson (Bellcore).
1.1. Terminology
The terminology defined in the SIPP Specification [4] applies to this
document. New terms are defined as follows:
address: A 64-bit SIPP layer identifier for a node or set of nodes.
An address can be used for both routing and identification
purposes. (This definition is an augmentation of that given
in the SIPP Specification.)
uniqueness scope: The topologically defined region over which an
address may be assigned to no more than one node or set
of nodes.
routing scope: The topologically defined region over which hosts
and routers have sufficient routing information to forward
a packet toward the node(s) identified by that address.
route sequence: The sequence of addresses consisting of the source
address, the destination address, and the addresses encoded
in the optional Routing Header of the SIPP packet.
address sequence: A sequence of addresses that forms part of the
route sequence. The address sequence is used for the
purpose of routing to a node in the case where a single
(64-bit) address has insufficient routing scope.
SIPP WG, Expires Sept. 1, 1994 [Page 2]
draft-ietf-sip-routing-addr-01.txt February 1994
identifying address: The low-order address in an address sequence.
Of the addresses in an address sequence, only the
identifying address is used to identify the source and
destination of a packet (for instance, by the transport
protocol).
extended address: The use of an address sequence to extend the SIPP
address space beyond 64 bits.
2. SIPP ADDRESSING
SIPP addresses are 64-bit identifiers for nodes and sets of nodes.
There are two types of addresses:
Unicast: Causes a packet to be sent to a single node.
Multicast: Identifies a set of nodes, and causes the packet to be
sent to all of those nodes.
There are no broadcast addresses in SIPP, their function being super-
seded by multicast addresses.
Nodes may have multiple unicast addresses and multiple multicast
addresses. Each of a node's addresses is said to be "bound" to zero
or more of that node's interfaces. Whether or not an address may be
bound to an interface depends on the routing environment in which the
node is situated. As one example, consider a host (i.e., a non-
router) with three interfaces, connected to two links (e.g., two Eth-
ernets) as illustrated here:
================================== Link X
| |
i1| |i2
+----------+
| Host |
+----------+
i3|
|
================================== Link Y
Assume the host has been allocated a unicast address with subnet pre-
fix S. That address may be bound to EITHER or BOTH interfaces i1 and
i2 only if at least one router attached to link X is advertising
SIPP WG, Expires Sept. 1, 1994 [Page 3]
draft-ietf-sip-routing-addr-01.txt February 1994
prefix S on that link (using ICMP Router Advertisement messages, as
specified in [6]). The same address may be bound to interface i3 only
if at least one router on link Y is advertising prefix S. If the
prefix S is being advertised on both link X and link Y, the same
address may be bound to any or all of the three interfaces.
Even though an address MAY be bound to an interface, it is not
REQUIRED to be bound to that interface. If it is desired that a dif-
ferent address be bound to each each interface, as with IP, a node
may be so configured. However, SIPP's relaxation of IP's strict
one-address-per-interface model provides greater flexibility in con-
figuring and managing addresses and subnets, allows conservation of
addresses (as is sometimes accomplished in IP routers, through the
use of "unnumbered" or "not separately numbered" interfaces), and
supports some new capabilities such as singly-addressed, multiply-
attached servers and dynamic changing of address bindings to dif-
ferent links by mobile hosts.
From the addressing example above, it can also be noted that SIPP
supports the use of the same subnet prefix across more than one link.
Although subnets in IP were originally designed to map one-to-one
with links, de facto usage of IP has frequently violated that model,
allowing one subnet to span multiple links (e.g., using proxy ARP)
and more than one subnet to be assigned to the same link. SIPP
adopts the less stringent model: subnets in SIPP are a logical con-
struct -- the lowest-level (i.e., finest-grain) aggregation of
addresses under a common address prefix -- independent of the physi-
cal topology of links. A network administrator is free to assign one
subnet per link if desired, but that is not a requirement of the pro-
tocol.
One further relaxation of the IP addressing model is that two SIPP
nodes attached to the same link need not belong to the same subnet in
order to communicate directly, i.e., they are not forced to communi-
cate via an intermediate router on the common link.
A SIPP address serves two purposes. One is to uniquely identify the
node (or set of nodes) to which the address belongs. The other is to
specify the location of the addressed node(s) in the internet topol-
ogy, to facilitate routing.
A SIPP address is said to have a certain "routing scope", which is
the topological region over which nodes have sufficient routing
information to deliver a packet to the node(s) identified by that
address. Most SIPP addresses have global routing scope, meaning they
are routable from anywhere in the internet. However, some addresses
have less than global routing scope. For example, during bootstrap-
ping a SIPP node may use an address derived from its link-level
SIPP WG, Expires Sept. 1, 1994 [Page 4]
draft-ietf-sip-routing-addr-01.txt February 1994
address (e.g., an Ethernet address) that is only locally routable.
Every SIPP packet contains two Identifying Addresses, identifying the
source and destination nodes of the packet. The transport-layer
pseudo-header checksum for the packet is calculated using the two
Identifying Addresses.
The two Identifying Addresses may or may not contain sufficient loca-
tion information to route the packet to its destination(s) (or to
route an error message back to its source). When they are insuffi-
cient, an optional SIPP Routing Header is included in the packet to
carry the additional addressing information required for routing.
These additional addresses may be viewed as high-order extensions of
the Identifying Addresses. The additional addresses and the Identi-
fying Address, taken together, are called an address sequence.
For instance, an address sequence can be used for a mobile node that
is attached to a place in the internet other than the location speci-
fied by its Identifying Address. Or, an address sequence can be used
if the routing scope of the Identifying Address is not sufficient (as
may happen if the internet grows too large to assign globally-
routable addresses to all nodes). This way, the address sequence can
be used to achieve the effect of a variable length address. Even
when the address sequence is used to extend the address length beyond
64 bits, however, the identification function uses only the "low
order" 64 bits (the Identifying Address).
2.1. Text Representation of Addresses
There are two conventional forms for representing SIPP addresses as
text strings:
1. the preferred form is x:x:x:x, where the 'x's are the hexade-
cimal values of the four 16-bit pieces of the address. Exam-
ples:
FEDC:BA98:7654:3210
40D7:0:D01:4403
2. an alternative form that is sometimes more convenient when deal-
ing with a mixed environment of IP and SIPP nodes is
x:x:d.d.d.d, where the 'x's are the hexadecimal values of the
two high-order 16-bit pieces of the address, and the 'd's are
the decimal values of the four low-order 8-bit pieces of the
address (standard IP representation). Examples:
SIPP WG, Expires Sept. 1, 1994 [Page 5]
draft-ietf-sip-routing-addr-01.txt February 1994
FEDC:BA98:118.84.50.16
40D7:0:13.1.68.3
If a multi-part address sequence is used, the multiple addresses are
separated by double colons. Examples:
0123:4567:89AB:CDEF::FEDC:BA98:7654:3210
0123:4567:89AB:CDEF::FEDC:BA98:118.84.50.16
2.2. Unicast Addresses
Unicast addresses are distinguished from multicast addresses by the
value of the high-order octet of the addresses: a value of 7F
(01111111) or FF (11111111) identifies an address as a multicast
address; any other value identifies an address as a unicast address.
The SIPP unicast address is contiguous bit-wise maskable, similar to
IP addresses under CIDR [1]. The SIPP address sequence is also con-
tiguous bit-wise maskable, with the exception that a "field" (for
instance, one level of a hierarchical address) within the extended
address cannot straddle individual SIPP addresses.
There are several forms of unicast address assignment in SIPP,
including the global hierarchical unicast address, the cluster
address, the local-use address, and the IP-only host address.
2.2.1. Global Hierarchical Unicast Addresses
The global unicast address is initially assigned as follows [5]:
|1| n bits | m bits | p bits | 63-n-m-p|
+-+-------------------+---------------------+-----------+---------+
|C| provider ID | subscriber ID | subnet ID | node ID |
+-+-------------------+---------------------+-----------+---------+
The first bit is the IP compatibility bit, or C-bit [3]. It indi-
cates if the node represented by the address is IP-only or SIPP [4].
SIPP addresses are provider-oriented [5]. That is, the high-order
part of the address is assigned to providers, which then assign por-
tions of the address space to subscribers, etc. The term "provider
prefix" refers to the high-order part of the address up to and
including the provider ID. This is similar to assignment of IP
addresses under the CIDR scheme [1].
SIPP WG, Expires Sept. 1, 1994 [Page 6]
draft-ietf-sip-routing-addr-01.txt February 1994
The subscriber ID distinguishes among multiple subscribers attached
to the provider identified by the provider ID. The term "subscriber
prefix" refers to the high-order part of the address up to and
including the subscriber ID.
The subnet ID identifies a topologically connected group of nodes
within the subscriber network identified by the subscriber prefix.
The group of nodes identified by the subnet ID may all be attached to
the same link, or may be spread among multiple links. The term "sub-
net prefix" refers to the high-order part of the address up to and
including the subnet ID. The term "link prefix" can be used in place
of the term subnet prefix in the case where the group of nodes iden-
tified by the subnet ID are attached to the same link.
The node ID identifies a single node among the group of nodes identi-
fied by the subnet prefix.
Different SIPP nodes have greater or lesser knowledge of the internal
structure of the SIPP address, depending on the role the node plays
(for instance, host versus router). At a minimum, a node may con-
sider that unicast addresses (including its own) have no internal
structure:
| 64 bits |
+-----------------------------------------------------------------+
| node address |
+-----------------------------------------------------------------+
A slightly sophisticated host (but still rather simple) may addition-
ally be aware of link or subnet prefix(es) for the link(s) it is
attached to, where different addresses may have different values for
n:
| n bits | 64-n bits |
+---------------------------------------------------+-------------+
| link or subnet prefix | node ID |
+---------------------------------------------------+-------------+
The link prefix allows the host to deduce that another host with the
same link prefix is on the same link. (Note that there can be multi-
ple link prefixes per link.) The host acquires this information
through manual configuration or the operation of routing or confi-
guration protocols.
Still more sophisticated hosts may be aware of other hierarchical
boundaries in the unicast address, primarily in the form of cluster
SIPP WG, Expires Sept. 1, 1994 [Page 7]
draft-ietf-sip-routing-addr-01.txt February 1994
addresses. These include but are not limited to mobility-scope clus-
ter addresses, subscriber cluster addresses, and provider cluster
addresses, and are discussed later.
Though a very simple router may have no knowledge of the internal
structure of SIPP unicast addresses, routers will more generally have
knowledge of one or more of the hierarchical boundaries for the
operation of routing protocols. The known boundaries will differ
from router to router, depending on what positions the router holds
in the hierarchy.
2.2.2. Local-use SIPP Unicast Address
A local-use address is a unicast address that has only local routa-
bility scope (within the subnet or within a subscriber network), and
may have local or global uniqueness scope. Local-use addresses with
local uniqueness scope can be reused in other domains.
Local-use address have the following format:
| 4 |
|bits| 12 bits | 48 bits |
+----+---------------+--------------------------------------------+
|0110| subnet ID | node ID |
+----+---------------+--------+-+-+-------------------------------+
| 6 bits |S|X| 40 bits |
The seventh and eighth bits of the 48-bit node ID are the S and X
flag respectively. The S flag is 0 if the node ID has global unique-
ness scope, and is 1 if it has only local uniqueness scope. If the S
flag is 0, then the node ID is a "universally administered" IEEE-802
address, of length 48 bits. (This bit of the IEEE-802 address is
always 0 for "universally administered" IEEE-802 addresses.) If the S
flag is 1, then the node ID can be any value, including a "locally
administered" IEEE-802 address.
With one exception, the X flag must always be 0. (This bit of the
IEEE-802 address indicates whether the address is group or indivi-
dual. A group address as the node-ID in the local-use unicast
address is illegal.) That exception is the node ID value of 01-00-
00-00-00-00. This value is reserved to mean "unassigned". It can be
used to indicate that the system in question has not been assigned
(or assigned itself) a local-use address. It must not be used in the
Destination Address field or in the Routing Header.
The local-use address does not have global routing scope because the
address does not indicate which subscriber network the node is in.
SIPP WG, Expires Sept. 1, 1994 [Page 8]
draft-ietf-sip-routing-addr-01.txt February 1994
The 12 bit subnet ID can be used to indicate which subnet, within the
local subscriber network, the node is in.
When an IEEE-802 address is used as the node ID, it can come from an
actual IEEE-802 interface, or from some other IEEE-802 address, for
instance one given to the CPU card of the node. In any event, it
must not be assumed that the IEEE-802 address in the node ID field
matches the IEEE-802 address of the node's IEEE-802 interface, should
the node have one at all. In general, it is preferable that the
IEEE-802 address used to form the local-use unicast address be as
permanent as possible. Thus, the use of an IEEE-802 address from the
CPU card is preferable to one used from an IEEE-802 interface.
Local-use addresses have two primary benefits. First, for sites or
organizations that are not (yet) connected to the global Internet,
there is no need to request or "steal" an address prefix from the
global Internet address space -- local-use addresses can be used
instead. If the organization connects to the global Internet, it
must then form addresses with global routability scope. If the
local-use address has only local uniqueness scope, then it must
assign new addresses that have global uniqueness scope. If the
local-use address has global uniqueness scope, then it either assign
new addresses, or extend the existing local-use address using an
address sequence. The resulting address sequence has global routing
scope and can be used for global communications.
The second benefit of local-use addresses is that they can hold much
larger node IDs, which makes possible a very simple form of auto-
configuration of addresses. In particular, a node may discover a
subnet ID by listening to Router Advertisement messages on its
attached link(s), and then fabricating a SIPP address for itself by
using its link-level address as the node ID on that subnet (if the
link-level address can fit in the node ID field).
An auto-configured local-use address may be used by a node as its own
identification for communication within the local domain, possibly
including communication with a local address server to obtain a glo-
bal SIPP address. The details of host auto-configuration are
described elsewhere [7].
2.2.3. Cluster Addresses
Cluster addresses are unicast addresses that may be used to reach the
"nearest" one (according to unicast routing's notion of nearest) of
the set of boundary routers of a cluster of nodes identified by a
common prefix in the SIPP unicast routing hierarchy. A boundary
router of cluster C has at least one address with prefix C and at
SIPP WG, Expires Sept. 1, 1994 [Page 9]
draft-ietf-sip-routing-addr-01.txt February 1994
least one link to a node with a prefix other than C.
Cluster addresses have the general form:
| n bits | 64-n bits |
+---------------------------------+-------------------------------+
| cluster prefix |0000000000000000000000000000000|
+---------------------------------+-------------------------------+
For example, to reach the nearest boundary router for the routing
domain identified by subscriber prefix S, a packet may be sent to the
following cluster address:
| m bits | 64-m bits |
+---------------------------------------+-------------------------+
| subscriber prefix = S |0000000000000000000000000|
+---------------------------------------+-------------------------+
and to reach the nearest boundary router for subnet T of subscriber
S, a packet may be sent to the following cluster address:
| m bits | p bits |64-m-p bits|
+---------------------------------------+-------------+-----------+
| subscriber prefix = S |subnet ID = T|00000000000|
+---------------------------------------+-------------+-----------+
Cluster boundary routers are required to know that they are boundary
routers and to accept packets addressed to the corresponding cluster
address as being addressed to themselves.
Cluster addresses are most commonly used as intermediate addresses in
a SIPP Routing Header, to cause a packet to be routed to one or more
specific clusters on the way to its final destination.
The value zero is reserved at each level of the unicast address
hierarchy for use in formulating cluster addresses.
Cluster addresses may not be used as source addresses in SIPP pack-
ets.
Note that when an extended address is used, the cluster prefix may
completely fill a single (64-bit) address. (Subsequent addresses in
the cluster address sequence are, conceptually, all zeros. Such
all-zero addresses, however, would not actually appear in a packet
header.)
SIPP WG, Expires Sept. 1, 1994 [Page 10]
draft-ietf-sip-routing-addr-01.txt February 1994
2.2.4. The Loopback Address
The unicast address 0:0:0:1 is called the loopback address. It may be
used by a node to send a SIPP packet to itself. It may never be
bound to any interface.
The loopback address may not be used as the source address in SIPP
packets that are sent outside of a single node.
2.2.5. The Unspecified Address
The address 0:0:0:0 is called the unspecified address. It shall
never be assigned to any node. It may be used anywhere an address
appears, to indicate the absence of an address. One example of its
use is in the Source Address field of any SIPP packets sent by an
initializing host before it has learned its own address.
The unspecified address may not be used as the destination address of
SIPP packets or in SIPP Routing Headers.
2.2.6. SIPP Addresses for IP-Only Nodes
SIPP unicast addresses are assigned to IP-only hosts as part of the
IPAE [IPAE] scheme for transition from IP to SIPP. Such addresses
have the following form:
|1| 31 bits | 32 bits |
+-+------------------------------+--------------------------------+
|1| higher-order SIPP prefix | IP address |
+-+------------------------------+--------------------------------+
The highest-order bit of a SIPP address is called the IP compatibil-
ity bit or the C bit. A C bit value of 1 identifies an address as
belonging to an IP-only node.
The IP node's 32-bit IP address is carried in the low-order 32 bits
of the SIPP address. The remaining 31 bits are used to carry
higher-order SIPP prefixes, such as a service-provider ID.
2.3. Multicast Addresses
A SIPP multicast address is an identifier for a group of nodes. A
node may belong to any number of multicast groups. Multicast
addresses have the following format:
SIPP WG, Expires Sept. 1, 1994 [Page 11]
draft-ietf-sip-routing-addr-01.txt February 1994
|1| 7 | 4 | 4 | 48 bits |
+-+-------+----+----+---------------------------------------------+
|C|1111111|flgs|scop| group ID |
+-+-------+----+----+---------------------------------------------+
where:
C = IP compatibility bit; see [IPAE].
1111111 in the rest of the first octet identifies the address as
being a multicast address.
+-+-+-+-+
flgs is a set of 4 flags: |0|0|0|T|
+-+-+-+-+
the high-order 3 flags are reserved, and must be initialized to
0.
T = 0 indicates a permanently-assigned ("well-known") multicast
address, assigned by the global internet numbering authority.
T = 1 indicates a non-permanently-assigned ("transient") multi-
cast address.
scop is a 4-bit multicast scope value:
0 reserved
1 intra-node scope
2 intra-link scope
3 (unassigned)
4 (unassigned)
5 intra-site scope
6 (unassigned)
7 (unassigned)
8 intra-organization scope
9 (unassigned)
A (unassigned)
B intra-community scope
C (unassigned)
D (unassigned)
E global scope
F reserved
group ID identifies the multicast group, either permanent or
SIPP WG, Expires Sept. 1, 1994 [Page 12]
draft-ietf-sip-routing-addr-01.txt February 1994
transient, within the given scope.
The "meaning" of a permanently-assigned multicast address is indepen-
dent of the scope value. For example, if the "NTP servers group" is
assigned a permanent multicast address with a group ID of 43 (hex),
then:
7F01:0:0:43 means all NTP servers on the same node as the sender.
7F02:0:0:43 means all NTP servers on the same link as the sender.
7F05:0:0:43 means all NTP servers at the same site as the sender.
7F0E:0:0:43 means all NTP servers in the internet.
Non-permanently-assigned multicast addresses are meaningful only
within a given scope. For example, a group identified by the non-
permanent, intra-site multicast address 7F15:0:0:43 at one site bears
no relationship to a group using the same address at a different
site, nor to a non-permanent group using the same group ID with dif-
ferent scope, nor to a permanent group with the same group ID.
Multicast addresses must not be used as source addresses in SIPP
packets. A given route sequence must have zero or one multicast
address in it, but no more. The active address in a route sequence
must never be advanced beyond a multicast address. In other words,
if a SIPP node receives a packet with a multicast address in the des-
tination address field, the node must not advance the routing header,
even if the node is a member of that multicast group and the route
sequence has not yet been exhausted.
2.3.1. Pre-Defined Multicast Addresses
The following well-known multicast addresses are pre-defined:
The Reserved Multicast Addresses: 7F0s:0:0:0
These multicast addresses (with any scope value, s) are reserved, and
shall never be assigned to any multicast group.
The All Nodes Addresses: 7F01:0:0:1
7F02:0:0:1
These multicast addresses identify the group of all SIPP nodes,
within scope 1 (intra-node) or 2 (intra-link).
The All Hosts Addresses: 7F01:0:0:2
7F02:0:0:2
SIPP WG, Expires Sept. 1, 1994 [Page 13]
draft-ietf-sip-routing-addr-01.txt February 1994
These multicast addresses identify the group of all SIPP hosts,
within scope 1 (intra-node) or 2 (intra-link).
The All Routers Addresses: 7F01:0:0:3
7F02:0:0:3
These multicast addresses identify the group of all SIPP routers,
within scope 1 (intra-node) or 2 (intra-link).
2.4. A Node's Required Addresses
A host is required to recognize the following addresses as identify-
ing itself: its own unicast addresses, the loopback address, the All
Nodes and All Hosts multicast addresses, and the multicast addresses
of any other groups to which the host belongs.
A router is required to recognize the following addresses as identi-
fying itself: its own unicast addresses, the cluster addresses of all
clusters for which the router is a boundary router, the loopback
address, the All Nodes and All Routers multicast addresses, and any
other multicast addresses to which the router belongs.
Nodes must also know their own address sequences, primarily for the
purpose of inserting them in packets that they transmit.
3. ADDRESS SEQUENCE HANDLING BY NODES
For address sequences to be an effective means of extending SIPP
addresses or enriching SIPP routing semantics for use in provider
selection, mobility, auto-readdressing, etc., nodes must be able to
manipulate address sequences appropriately. A node must be able to
recognize that its own addresses and other nodes' addresses may be
represented as address sequences, for instance in transmitted and
received packets and in DNS. A node must also be able to reverse
address sequences for sending return packets.
3.1. Address Sequence Notation
The SIPP mechanism for encoding address sequences is the optional
Routing Header. With this mechanism, the active address of the
optional Routing Header is in the destination address field of the
SIPP header, and the remaining addresses in the address sequence
(those that were previously active and those that will be active) are
in the Routing Header. Thus, the fields of the Routing Header rotate
through the destination address field as each becomes active.
Notated literally, the mechanism would look like this:
SIPP WG, Expires Sept. 1, 1994 [Page 14]
draft-ietf-sip-routing-addr-01.txt February 1994
source address dest address Routing Header
-------------- ------------ ------------
initial S A >B D
next S B A >D
final S D A B >
This shows a packet from S, routed through A and B on its way to D.
The '>' symbol indicates which field is next in the Routing Header
(i.e., the field pointed to by the Next Addr field of the Routing
Header). While this notation accurately depicts what happens in the
packet header, it is unwieldy, so the following equivalent notation
is used instead:
initial S,*A, B, D
next S, A,*B, D
final S, A, B,*D
In this notation, the first element is in the source address field of
the SIPP header. The '*' denotes the active element of the Routing
Header, which is in the destination address field. The remaining
elements are in the Routing Header, with the Next Addr field pointing
to the element after the active one.
3.2. Node Formation of Address Sequences
This section describes a simple set of rules for the handling of
address sequences. These rules allow nodes to form and transmit SIPP
packets with traditional IP address semantics. More importantly,
they allow nodes to receive and "reverse" SIPP packets with advanced
routing and addressing semantics, such as policy routing. Thus nodes
that do not understand advanced routing semantics can still operate
appropriately when receiving packets from a node that does.
Every node has a set of address sequences that it considers its own.
Each such address sequence is a series of 64-bit addresses of the
form <Si, Si-1, Si-2, ..., S0>, where S0 is the low-order address and
also the Identifying Address, and Si is the high-order address. Note
that the terms low-order and high-order do not necessarily indicate
that the high-order terms are hierarchically above the low-order
terms. Rather, the implication is that the high-order terms must
come first in an address sequence.
All nodes must be capable of handling an address sequence of at least
three addresses. A node may be able to handle longer address
sequences if desired.
An address sequence of a node constitutes the sum total of informa-
tion needed in the packet header to route the packet to that node.
SIPP WG, Expires Sept. 1, 1994 [Page 15]
draft-ietf-sip-routing-addr-01.txt February 1994
Only the low-order address is required to identify the node. Some of
a node's address sequences are source-capable and others are not. A
source-capable address sequence is one that can validly be used as a
"source address" in a transmitted packet. For instance, unicast
address sequences are source-capable and multicast address sequences
are not, though both can be considered by the node to be its own
address sequences.
A route sequence may contain a number of components, such as a source
address sequence, a destination address sequence, a policy route, the
address of the router serving as a host's mobile host base station,
or a multicast tree core address. From the perspective of a "simple"
node, however, a route sequence contains only two parts, the source
address sequence and the destination address sequence:
<S0, S1, ..., Si, Dj, Dj-1, ..., D0>
For a transmitted packet, the source address sequence is one of the
node's own source-capable address sequences, and the destination
address sequence is everything else. For a received packet, the des-
tination address sequence is (or at least should be) any of the
node's own address sequences, and the source address sequence is
everything else.
In an address sequence, the addresses of the source address sequence
are ordered with the "low order" parts first, while the addresses of
the destination address sequence are ordered in the opposite direc-
tion, with the "high-order" parts first. Thus the first and last
addresses are always the identifying addresses--the "low order" parts
of the source and destination address sequences.
In the common case with a single-component source and destination
address, the complete route sequence simply has the form: <S0, D0>.
Such packets contain no Routing Header.
When a node has an "association" with another node (such as a TCP or
an application "connection" running over UDP), it must maintain the
following information with respect to the correspondent node (the
node with which it has the association):
1. The source and destination Identifying Addresses for the entire
association.
2. The source and destination address sequences currently in use.
The low-order parts of the source and destination address sequences
must match the Identifying Addresses.
SIPP WG, Expires Sept. 1, 1994 [Page 16]
draft-ietf-sip-routing-addr-01.txt February 1994
When a node initiates an association, it will normally learn the des-
tination address sequence through DNS or from local means (for
instance, the user typing it in). It extracts the destination Iden-
tifying Address for the association from the low-order part of the
destination address sequence. It chooses from among its source-
capable address sequences for the source address sequence, and forms
the header as indicated above.
When a node is not the initiator of an association, it must extract
the appropriate information from the received packet. This occurs in
two cases, where a node is the destination of the packet, and where
the node is a router that has encountered an error in processing a
packet and must return an ICMP error message.
3.2.1. Destination Node Reversal of Route Sequence
Let the route sequence in the received packet be <R0, R1, R2, ...,
Rn>. The receiving node compares its own address sequences against
the tail of the received route sequence, looking for the best match.
(Note that the multicast groups that the node belongs to are included
in its list of address sequences for this comparison process.)
The best match is the one where the largest number of addresses in
the tail of the received route sequence match the corresponding
addresses in the node's own address sequence. For instance, assume
the node has an address sequence of <Si, Si-1, Si-2, ..., S0>. The
best match is the one with the highest x for which S0 = Rn, S1 = Rn-
1,..., Sx = Rn-x. Note that it is not necessary for the node's com-
plete address sequence to match the tail of the received route
sequence. For instance, the case where S0 = Rn and S1 = Rn-1 but Si
!= Rn-i is still considered a match. At a minimum, the node's Iden-
tifying Address, S0, must match the destination Identifying Address
from the received route sequence, Rn.
The node then strips from the route sequence the addresses that best
matched its source address sequence, resulting in <R0, R1, ..., Rj>,
where j < n. The resulting sequence is reversed, giving <Rj, Rj-1,
..., R0>. This sequence is then prepended with one of the node's
source-capable address sequences, preferably the one that matched the
tail of the incoming route sequence, resulting in <S0, S1, ..., Sk,
Rj, Rj-1, ..., R0>. If the destination Identifying Address of the
incoming route sequence, Rn, is source-capable, then the source Iden-
tifying Address of the reversed route sequence, S0, must be equal to
Rn.
Finally, the active address (that is, the address to which the Next
Addr field of the Routing Header points) is set to be Rj, the first
address after the node's address sequence.
SIPP WG, Expires Sept. 1, 1994 [Page 17]
draft-ietf-sip-routing-addr-01.txt February 1994
Every node must implement these reversal rules. Even if a node has
no notion of, say, provider selection, it will successfully return
packets to a node that does if it implements these rules.
3.2.2. Intermediate Node Reversal of Route Sequence
Let the route sequence in the invoking packet be <R0, R1, R2, ...,
Rn>, where R0 is the source's Identifying Address and Rn the
destination's Identifying Address. Let Rj be the active element in
the route sequence. Note that j is always >= 1.
The route sequence in the ICMP error message MUST be <r0, r1, ...,
rk, Rj-1, ..., R2, R1, R0>, where <rk, ..., r1, r0> is any source-
capable address sequence for the router generating the ICMP error
message. The active element in this route sequence is Rj-1. Intui-
tively, the "consumed" portion of the invoking packet's route
sequence is used to route the error message back to the source.
4. ROUTING ALGORITHMS
SIPP routing algorithms are identical to those used with the CIDR
version of IP, except that the address used is 64 bits rather than 32
(for instance, [8]). This is true even when extended addresses are
in use. This is possible because a SIPP unicast forwarding table
lookup is made by looking at only a single (64-bit) address. The
result of such a forwarding table lookup may be to advance the route
header, causing the router to look at the subsequent address. The
routing table lookup on this subsequent address, however, is made
without consideration of the previous lookup. In other words, every
"atomic" forwarding table access for unicast routing requires only a
single address.
Because the forwarding table lookup only involves a single address,
the routing algorithm only need carry a single address. If extended
addresses are used, however, care must be taken in the distribution
of routing information. (For this reason, when extended addresses
are used, it may be desirable, though not necessary, that routing
algorithms carry extended addresses. Routing algorithms can be thus
enhanced in the future if desired.) In particular, routing informa-
tion cannot be leaked across routing hierarchy boundaries that coin-
cide with the boundary between two SIPP addresses in an extended
address.
For instance, consider the case where the subscriber prefix is
encoded in the upper address of an extended address, and the subnet
and host ID is encoded in the lower address of an extended address.
The boundary between the upper and lower address coincides with the
SIPP WG, Expires Sept. 1, 1994 [Page 18]
draft-ietf-sip-routing-addr-01.txt February 1994
boundary between the subscriber network and the provider network (or,
with the subscriber network and another subscriber network). Because
subnet IDs are not by themselves globally unique, if the lower
address were advertised outside of the subscriber network, it could
overlap with subnet numbers in the outside network, and routing would
fail.
The only mechanism required to make extended addresses work with
single-address routing algorithms is that routers recognize addresses
that identify themselves (see Section 2.4), and advance the route
header upon receiving such an address.
4.0.1. Handling Address Sequences in Source Addresses
For certain types of multicast routing--namely those based on build-
ing multicast trees from the source--it is necessary for a router to
examine the source address as well as the destination (multicast)
address when forwarding a packet. Since the source address in SIPP
may also be extended, the router must also know how to examine it in
order of high order address to low order address.
All of the addresses of the extended source address except for the
identifying address are in the routing header. To examine the source
address, the router starts at the address immediately preceding the
active address (in terms of the address sequence notation). In terms
of packet header format, this is the address in the routing header
immediately preceding the address indicated by the Next Addr field,
if any, and the address in the source address field otherwise.
If, upon examining an address in the source address sequence, the
router finds that it must examine the next lower-order address in the
sequence, the router examines the address in the route header immedi-
ately preceding the address it just examined, if any, and examines
the address in the source address field otherwise.
References
[1] V. Fuller, T. Li, K. Varadhan, J. Yu, "Supernetting: an Address
Assignment and Aggregation Strategy", RFC 1338.
[2] S. Deering, "Host Extensions for IP multicasting", RFC 1112.
[3] R. Gilligan et al, "SIPP Transition Mechanisms", Internet Draft.
SIPP WG, Expires Sept. 1, 1994 [Page 19]
draft-ietf-sip-routing-addr-01.txt February 1994
[4] S. Deering, "Simple Internet Protocol Plus (SIPP) Specification",
Internet Draft, work in progress.
[5] P. Francis, "SIPP Address Assignment", Internet Draft.
[6] R. Govindan and S. Deering, "ICMP and IGMP for the Simple Internet
Protocol Plus", Internet-Draft in preparation.
[7] S. Thomson, "Automatic Host Address Assignment in SIPP", Internet
Draft in preparation.
[8] P. Francis, "OSPF for SIPP", Internet Draft.
Author's Addresses
Steve Deering, deering@parc.xerox.com
Paul Francis, francis@cactus.ntt.jp
Ramesh Govindan, rxg@thumper.bellcore.com
SIPP WG, Expires Sept. 1, 1994 [Page 20]
draft-ietf-sip-routing-addr-01.txt February 1994
APPENDIX A: EXAMPLES
5. UNICAST EXAMPLES
In this section, we give several typical unicast examples that demon-
strate the use of the Routing Header mechanism for provider selection
and address extension. Later sections give typical examples for
mobility, multicast, and auto-configuration.
The examples assume the following topology. Subscriber domain D con-
tains node H. Subscriber domain E contains node I. Domain D is
attached to providers P and Q. Domain E is attached to providers Q
and R.
5.1. Simple (Non-Extended) Addresses
Assume that the addresses of node H are P.D.H and Q.D.H, and the
addresses of node I are Q.E.I and R.E.I, where the notation "a.b.c"
represents a 64-bit SIPP address. (Note that the 'D' of P.D.H and
Q.D.H are subscriber numbers assigned by P and Q respectively, and
are therefore in general not the same value.) H initiates an associa-
tion with I by querying DNS and learning the two addresses for I.
Assume that H chooses Q.E.I, since it has the best "match" with its
own addresses. H forms the following packet:
Route sequence at sender H: Q.D.H, *Q.E.I
I receives this packet, reverses the (in this case simple) route
sequence, and returns:
Reversed route sequence at receiver I: Q.E.I, *Q.D.H
5.2. Simple Addresses with Provider Selection
The previous example is in fact a form of provider selection, but it
is simple in that both ends have the same provider, so nothing expli-
cit has to be done. Assume in this case, however, that H wishes to
send its packet through provider P. Since I is not attached to pro-
vider P, H must explicitly indicate that it wants its packet to go
through provider P, and therefore forms the following packet:
Route sequence at sender H: P.D.H, *P.0, Q.E.I
The active element of the route sequence is the cluster address of
provider P. This causes routers in domain D to route the packet to
SIPP WG, Expires Sept. 1, 1994 [Page 21]
draft-ietf-sip-routing-addr-01.txt February 1994
provider P. When the first router in provider P receives this
packet, it recognizes the packet as being for "itself", and advances
the Routing Header, producing:
Advanced route sequence at provider P router: P.D.H, P.0, *Q.E.I
which causes the packet to be routed to I. Upon receiving this
packet, I uses the reversing rules stated above, producing the fol-
lowing packet:
Reversed route sequence at receiver I: Q.E.I, *P.0, P.D.H
This packet has a couple of noteworthy characteristics. First, the
packet may exit domain E via either provider Q or R, depending on
what routing considers the best path to provider P. Second, the P.0
element is redundant, since the destination address P.D.H will also
cause the packet to be routed to P. However, without knowing the
provider mask of P, I has know way of knowing that P.0 is redundant
with P.D.H, and so includes both elements. In the future, it may be
possible for I to learn H's cluster address and optimize the header
accordingly.
To continue this example, assume that I does care which exit provider
is used to reach H, and further that I chooses provider Q. In this
case, I would insert the following "policy route" (actually, one
address) to force the packet to go through Q outgoing:
Alternative reversed route sequence: Q.E.I, *Q.0, P.0, P.D.H
Note that this example describes a node that is more sophisticated
than the simple one described previously. In particular, the node in
this example understands three components of the source route (the
source and destination addresses and a provider) rather than just two
(the source and destination addresses). The node further understands
that when it inserts the provider selector in the route sequence, it
sets the active element to be that of the provider selector on
transmitted packets.
5.3. Extended Address (Address Sequence)
Now assume that at some point 64 bits become inadequate and addresses
are extended to an address sequence of two 64-bit addresses. In this
case, H's address sequences are P.D:S.H and Q.D:S.H, where the double
colon '::' indicates a 64-bit boundary, and S represents a subnet
inside domain D. I's address sequences are Q.E::S.I and R.E::S.I.
For H to send a packet to I, it could form:
SIPP WG, Expires Sept. 1, 1994 [Page 22]
draft-ietf-sip-routing-addr-01.txt February 1994
Route sequence at sender H: S.H, Q.D, *Q.E, S.I
The active element Q.E would cause the packet to be routed to domain
E, where the Routing Header would be advanced to:
Advanced route sequence at router in Domain E: S.H, Q.D, Q.E,
*S.I
and delivered to I.
The above reversing rules executed by I would produce:
Reversed route sequence at receiver I: S.I, Q.E, *Q.D, S.H
thus returning the packet to I.
6. MULTICASTING IN SIPP
This section describes how traditional multicast [2] works using SIPP
route sequences. As with unicast, SIPP multicast address sequences
are described using a series of 64-bit address elements. Thus, the
node's notion of multicast addressing is extended such that a "multi-
cast address" is seen as an address sequence rather than a single
multicast address as is the case with IP. The final element of the
multicast address sequence is the group ID.
When a node joins a multicast group, it considers the multicast
address sequence to be one of its own address sequences for the sake
of packet reception and reversal. The multicast address sequence is
not source-capable.
In traditional multicast (also known as Deering multicast or source-
based multicast), a packet from a sender to a multicast group is sent
on the shortest-path delivery tree (rooted at the sender) to members
of the group. The traditional SIPP multicast address sequence con-
tains only one address--the group ID. This section describes the
Routing Header that is formed by the sender, the reversed Routing
Header formed by the receiver and the necessary extensions to the
multicast forwarding algorithm.
6.0.1. Example
Assume the same scenario as described above (with nodes H and I),
further assuming that H and I have extended addresses as described
above. (We do an extended address example here because the simple
address example is the same as with current IP.) Assume further that
H is transmitting a traditional multicast with multicast address M,
and that I is a member of group M. H forms the following header:
SIPP WG, Expires Sept. 1, 1994 [Page 23]
draft-ietf-sip-routing-addr-01.txt February 1994
Route sequence at sender H: S.H, Q.D, *M
The route sequence is received unchanged at each of the receivers.
If I wishes to respond unicast to H, it executes the reversing rules
described above in the following way. First, it isolates its own
address from the route sequence. Since this is multicast, and since
I is a member of the multicast group M, I considers M to be one of
its "own" addresses, and strips it. Reversing what remains produces
<Q.D, P.H>. Since a multicast address cannot be used as a source
address, I knows to prepend its own unicast address sequence to the
route sequence, producing:
Reversed route sequence at receiver I: S.I, Q.E, *Q.D, S.H
7. MOBILITY IN SIPP
This section shows how SIPP source routing and SIPP route sequences
might be used for mobile communication. Note that the Mobile IP
group of IETF is deliberating on various solutions for mobility, and
may choose a different approach than the one outlined here. At the
same time, more approaches are possible with SIPP than with IP, so
the Mobile IP group may choose a different solution for use with
SIPP. First, we introduce some terminology.
Mobile Host (MH)
A node that is able to maintain its network connections even after
being physically moved.
Correspondent Host (CH)
A node that has a network connection open to an Mobile Host. A CH
may itself be mobile.
Foreign Agent
The SIPP router to which the MH is attached after it moves.
Home Agent
A SIPP node that is aware of the MH's current location. Each MH
has a preconfigured home station.
7.1. Mobility Example
Assume that H is a MH and that I is the CH, both with the (extended)
address sequences from above. Initially, a packet from the CH to the
MH carries the following route sequence as in the above example:
SIPP WG, Expires Sept. 1, 1994 [Page 24]
draft-ietf-sip-routing-addr-01.txt February 1994
Route sequence from CH to MH: S.I, Q.E, *Q.D, S.H
Now suppose the MH moves to the vicinity of a Foreign Agent with an
address D.d. MH discovers D.d through SIPP "I-Am-Here" advertise-
ments. These are multicast by the Foreign Agent to the SIPP All
Nodes address (similar to an IS hello advertisement in ES-IS). MH
also periodically multicast SIPP "I-Am-Here" advertisements to the
SIPP All Routers multicast address (similar to the ES hello adver-
tisement in ES-IS). This latter advertisement contains the MH's
identifying address.
Through a mechanism beyond the scope of this document, the MH informs
the Home Agent of its new base station. Packets carrying the old
route sequence from the CH are intercepted by the Home Agent. The
Home Agent tunnels them to the Foreign Agent, which forwards it to
the MH.
After the MH has discovered D.d, all subsequent packets to the CH
carry the following route sequence:
Route sequence from MH to CH after move: S.H, D.d, *Q.E, S.I
It is sufficient to include only MH's identifying address in the
route sequence; we assume that the Foreign Agent is within I's Iden-
tifying Addresses (S.I) routing scope. When the CH reverses the
incoming route sequence from the MH, it created the following route
sequence:
Reversed route sequence from CH to MH after move: S.I, Q.E,
*D.d, S.H
This causes packet to the MH to be routed through the Foreign Agent
at D.d, producing the desired behavior.
SIPP WG, Expires Sept. 1, 1994 [Page 25]
draft-ietf-sip-routing-addr-01.txt February 1994
APPENDIX B: SIPP Service Interface and Address Sequences
Because SIPP has larger addresses and a different packet format from
IP, the service interface it provides to the transport layer is dif-
ferent from that provided by IP [4]. Existing transport-layer proto-
cols that use IP must be modified to operate over SIPP's service
interface. In this section, we discuss only the changes to the SIPP
service interface that arise from the use of address sequences to
represent the location of SIPP nodes.
When sending a packet, the transport layer must specify the complete
address sequences of the source and destination. The lowest-order
address in each address sequence must correspond to the identifying
addresses used to form the transport-layer pseudo-header checksum.
The destination address sequence can include "policy-route" addresses
that an application may have prepended to the destination's address.
As discussed before, a node's address sequences may change over time
(e.g. because it is mobile). The node's SIPP layer must track such
changes; we do not require that the transport layer also track
changes in the node's address sequences. Thus, the source address
sequence specified in a send operation may be incorrect or insuffi-
cient.
In such a case, the send operation fails, and the SIPP layer returns
a correct source address sequence that may be used in the outgoing
packet. (Basically, the SIPP layer returns a source-capable address
sequence with a matching identifying address. If the transport layer
passed the SIPP Unspecified Address, the SIPP layer returns some
source-capable address). The transport layer may then retry the send
operation with this source address sequence.
After processing a received packet, the SIPP layer passes up to the
transport layer the source and destination address sequences in the
incoming packet. To do this, the SIPP layer first applies the rever-
sal rules. The packet's destination address sequence is that address
sequence that best matches the tail of the incoming route sequence.
The unmatched part of the incoming route sequence, reversed, is the
packet's source address sequence.
SIPP WG, Expires Sept. 1, 1994 [Page 26]