diff options
Diffstat (limited to 'doc/rfc/rfc1735.txt')
-rw-r--r-- | doc/rfc/rfc1735.txt | 619 |
1 files changed, 619 insertions, 0 deletions
diff --git a/doc/rfc/rfc1735.txt b/doc/rfc/rfc1735.txt new file mode 100644 index 0000000..a6e1e4d --- /dev/null +++ b/doc/rfc/rfc1735.txt @@ -0,0 +1,619 @@ + + + + + + +Network Working Group J. Heinanen +Request for Comments: 1735 Telecom Finland +Category: Experimental R. Govindan + ISI + December 1994 + + + NBMA Address Resolution Protocol (NARP) + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. This memo does not specify an Internet standard of any + kind. Discussion and suggestions for improvement are requested. + Distribution of this memo is unlimited. + +IESG Note: + + Note that the work contained in this memo does not describe an + Internet standard. This work represents an early stage in the + ongoing efforts to resolve direct communication over NBMA subnets. + It is a suitable experimental protocol for early deployment. It is + expect that it will be superceded by other work being developed + within the IETF. + +Abstract + + This document describes the NBMA Address Resolution Protocol (NARP). + NARP can be used by a source terminal (host or router) connected to a + Non-Broadcast, Multi-Access link layer (NBMA) network to find out the + NBMA addresses of the a destination terminal provided that the + destination terminal is connected to the same NBMA network. Although + this document focuses on NARP in the context of IP, the technique is + applicable to other network layer protocols as well. This RFC is a + product of the Routing over Large Clouds Working Group of the IETF. + +1. Introduction + + The NBMA Address Resolution Protocol (NARP) allows a source terminal + (a host or router), wishing to communicate over a Non-Broadcast, + Multi-Access link layer (NBMA) network, to find out the NBMA + addresses of a destination terminal if the destination terminal is + connected to the same NBMA network as the source. + + + + + + + + +Heinanen & Govindan [Page 1] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + A conventional address resolution protocol, such as ARP [1, 2] for + IP, may not be sufficient to resolve the NBMA address of the + destination terminal, since it only applies to terminals belonging to + the same IP subnetwork, whereas an NBMA network can consist of + multiple logically independent IP subnets (LISs, [3]). + + Once the NBMA address of the destination terminal is resolved, the + source may either start sending IP packets to the destination (in a + connectionless NBMA network such as SMDS) or may first establish a + connection to the destination with the desired bandwidth and QOS + characteristics (in a connection oriented NBMA network such as ATM). + + An NBMA network can be non-broadcast either because it technically + doesn't support broadcasting (e.g., an X.25 network) or because + broadcasting is not feasible for one reason or another (e.g., an SMDS + broadcast group or an extended Ethernet would be too large). + +2. Protocol Overview + + In this section, we briefly describe how a source S uses NARP to + determine the NBMA address of a destination D or to find out that + such an address doesn't exist. S first checks if the destination + terminal belongs to the same IP subnetwork as S itself. If so, S + resolves the NBMA address of D using conventional means, such as ARP + [1, 2] or preconfigured tables. If D resides in another subnetwork, + S formulates a NARP request containing the source and destination IP + addresses. S then forwards the request to an entity called the "NBMA + ARP Server" (NAS). + + For administrative and policy reasons, a physical NBMA network may be + partitioned into several disjoint logical NBMA networks. NASs + cooperatively resolve the NBMA next hop within their logical NBMA + network. In the following we'll always use the term "NBMA network" + to mean a logical NBMA network. If S is connected to several NBMA + networks, it should have at least one NAS in each of them. In order + to know which NAS(s) to query for which destination addresses, a + multi-homed S should also be configured to receive reachability + information from its NASs. + + Each NAS "serves" a pre-configured set of terminals and peers with a + pre-configured set of NASs, which all belong to the same NBMA + network. A NAS may also peer with routers outside the served NBMA. + A NAS exchanges reachability information with its peers (and possibly + with the terminals it serves) using regular routing protocols. This + exchange is used to construct a forwarding table in every NAS. The + forwarding table determines the next hop NAS towards the NARP + request's destination or a next hop router outside the NBMA. + + + + +Heinanen & Govindan [Page 2] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + After receiving a NARP request, the NAS checks if it "serves" D. If + so, the NAS resolves D's NBMA address, using mechanisms beyond the + scope of this document (examples of such mechanisms include ARP [1, + 2] and pre-configured tables). The NAS then either forwards the NARP + request to D or generates a positive NARP reply on its behalf. The + reply contains D's IP and NBMA address and is sent back to S. NARP + replies usually traverse the same sequence of NASs as the NARP + request (in reverse order, of course). + + If the NAS does not serve D, it extracts from its forwarding table + the next hop towards D. If the next hop is a peer NAS, it forwards + the NARP request to the next hop. If the next hop is a peer router + outside the served NBMA or if no such next hop entry is found, the + NAS generates a negative NARP reply. + + A NAS receiving a NARP reply may cache the NBMA address information + contained therein. If a subsequent NARP request for the same target + address does not desire an authorative reply, a caching NAS can then + respond with the cached non-authoritative NBMA address or with cached + negative information. A well behaving terminal should always first + accept a non-authoritative reply. Only if communication attempt + based on the non-authoritative information fails, the terminal can + choose to issue another request this time asking for an authoritative + reply. + + NARP requests and replies never cross the borders of an NBMA network. + Thus, IP traffic out off and into an NBMA network always traverses an + IP router at its border. Network layer filtering can then be + implemented at these border routers. + +3. Configuration + + Terminals + + To participate in NARP, a terminal connected to an NBMA network + should to be configured with the IP address(es) of its NAS(s). If + the terminal is attached to several NBMA networks, it should also + be configured to receive reachability information from its NAS(s) + so that it can determine, which IP destinations are reachable + through which NBMA networks. + + NBMA ARP Servers + + A NAS is configured with a set of IP address prefixes that + correspond to the IP addresses of the terminals it is serving. + Moreover, the NAS must be configured to exchange reachability + information with its peer NASs (if any). In addition, the NAS may + be configured to exchange reachability information with routers + + + +Heinanen & Govindan [Page 3] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + outside the served NBMA. And finally, if a served terminal is + attached to several NBMA networks, the NAS may need to be + configured to send reachability information to such a terminal. + +4. Packet Formats + + NARP requests and replies are carried in IP packets as protocol type + 54. This section describes the packet formats of NARP requests and + replies: + + NARP Request + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version | Hop Count | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Code | Unused | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | NBMA length | NBMA address | + +-+-+-+-+-+-+-+-+ | + | (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Version + The NARP version number. Currently this value is 1. + + Hop Count + The Hop count indicates the maximum number of NASs that a request + or reply is allowed to traverse before being discarded. + + Checksum + The standard IP checksum over the entire NARP packet (starting with + the fixed header). + + Type + The NARP packet type. The NARP Request has a Type code 1. + + Code + A response to an NARP request may contain cached information. If an + authoritative answer is desired, then code 2 (NARP Request for + Authoritative Information) should be used. Otherwise, a code value + of 1 (NARP Request) should be used. + + + + +Heinanen & Govindan [Page 4] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + Source and Destination IP Addresses + Respectively, these are the IP addresses of the NARP requestor and + the target terminal for which the NBMA address is desired. + + NBMA Length and NBMA Address + The NBMA length field is the length of the NBMA address of the + source terminal in bits. The NBMA address itself is zero-filled to + the nearest 32-bit boundary. + + NARP Reply + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version | Hop Count | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Code | Unused | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | NBMA length | NBMA address | + +-+-+-+-+-+-+-+-+ | + | (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Version + The NARP version number. Currently this value is 1. + + Hop Count + The Hop count indicates the maximum number of NASs that a request + or reply is allowed to traverse before being discarded. + + Checksum + The standard IP checksum over the entire NARP packet (starting with + the fixed header). + + Type + The NARP packet type. The NARP Reply has a Type code 2. + + Code + NARP replies may be positive or negative. A Positive, Non- + authoritative Reply carries a code of 1, while a Positive, + Authoritative Reply carries a code of 2. A Negative, Non- + authoritative Reply carries a code of 3 and a Negative, + Authoritative reply carries a code of 4. + + + + +Heinanen & Govindan [Page 5] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + The general rule is that a NAS should not reply to an NARP request + for authoritative information with cached information, but may do + so for an NARP request. A NAS implementation is allowed to relax + this rule and return non-authoritative information even in case + authorative was desired if the NAS becomes heavily loaded and the + cached information is very recently updated. + + Source and Destination IP Address + Respectively, these are the IP addresses of the NARP requestor and + the target terminal for which the NBMA address is desired. + + NBMA Length and NBMA Address + The NBMA length field is the length of the NBMA address of the + destination terminal in bits. The NBMA address itself is zero- + filled to the nearest 32-bit boundary. Negative replies do not + carry the NBMA length or the NBMA address field. + + A NAS may cache NBMA replies. + +5. Protocol Operation + + The external behavior of a NAS may be described in terms of two + procedures (processRequest and processReply) operating on two tables + (forwardingTable and cacheTable). In an actual implementation, the + code and data structures may be realized differently. + + Each NAS has a forwardingTable consisting of entries with the fields: + + <networkLayerAddrPrefix, type, outIf, outIfAddr> + + The networkLayerAddrPrefix field identifies a set of IP addresses + known to the NAS. It consists of two subfields <ipAddr, mask>. + + The type field indicates the type of the networkLayerAddrPrefix. The + possible values are: + + - locallyServed: The NAS is itself serving the + networkLayerAddrPrefix. The outIf field denotes the NBMA interface + via which the served terminals can be reached and the outIfAddr + field has no meaning. Such a forwardingTable entry has been + created by manual configuration. + + - nasLearned: The NAS has learned about the networkLayerAddrPrefix + from another NAS. The outIf and outIfAddr fields, respectively, + denote the NBMA interface and IP address of this next hop NAS. + Such a forwardingTable entry is a result of network layer address + prefix information exchange with one of the NAS' peer NASs. + + + + +Heinanen & Govindan [Page 6] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + - externallyLearned: The NAS has learned about the + networkLayerAddrPrefix from a peer router outside the served NBMA. + The outIf and outIfAddr fields, respectively, denote the NBMA + interface and IP address of this next hop NAS. Such a + forwardingTable entry is a result of network layer address prefix + information exchange with one of the NAS' peer routers. + + The protocol used to exchange networkLayerAddrPrefix information + among the NASs can be any regular IP intra-domain or inter-domain + routing protocol. + + In addition to the forwardingTable, each NAS has an NARP cacheTable + consisting of entries with the fields: + + <networkLayerAddr, nbmaAddr, timeStamp> + + The entries in the cacheTable are learned from NARP replies + traversing the NAS. In case of a negative cache entry the nbmaAddr + is empty. The timeStamp field records the time when the cacheTable + entry has been created or updated. It is used to determine if an + entry is a very recent one and to age old entries after a certain + hold period. + + The following pseudocode defines how NBMA NARP requests and replies + are processed by an NAS. + + procedure processRequest(request); + let bestMatch == matchForwardingTable(request.dIPa) do + if bestMatch then + if bestMatch.type == locallyServed then + let nbmaAddr == arp(request.dIPa) do + if nbmaAddr then + genPosAuthReply(request.sIPa, request.dIPa, nbmaAddr) + else + genNegAuthReply(request.sIPa, request.dIPa) + end + end + elseif bestMatch.type == nasLearned then + if not requestForAuthInfo?(request) or + realBusyRightNow?() then + let cacheMatch == matchCacheTable(request.dIPa) do + if cacheMatch and + (not requestForAuthInfo?(request) or + realRecentCacheEntry?(cacheMatch)) then + if cacheMatch.nbmaAddr == EMPTY then + genNegNonAuthReply(request.sIPa, request.dIPa) + else + genPosNonAuthReply(request.sIPa, request.dIPa, + + + +Heinanen & Govindan [Page 7] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + cacheMatch.nbmaAddr) + end + else /* no cache match */ + forwardRequest(request, bestMatch.OutIf, + bestMatch.OutIfAddr) + end + end + else /* request for authoritative information */ + forwardRequest(request, bestMatch.OutIf, + bestMatch.OutIfAddr) + end + else /* bestMatch.type == externallyLearned */ + genNegAuthReply(request.sIPa, request.dIPa) + end + else /* no match in forwardingTable */ + genNegAuthReply(request.sIPa, request.dIPa) + end + end + end + + procedure processReply(reply); + addCacheTableEntry(reply.dIPa, reply.nbmaAddr, currentTime); + if reply.sIPa == selfIpAddr then + /* reply is to the NAS itself */ + else + let bestMatch == matchForwardingTable(reply.sIPa) do + if bestMatch then + forwardReply(reply, bestMatch.outIf, bestMatch.outIfAddr) + end + end + end + end + + The semantics of the procedures used in the pseudocode are explained + below. + + matchForwardingTable(ipAddress) returns the forwardingTable entry + whose networkLayerAddrPrefix field is the longest match for ipAddress + or FALSE if no match is found. + + arp(ipAddress) resolves the NBMA address corresponding to ipAddress. + It returns FALSE if the resolution fails. + + genPosAuthReply(sourceIpAddr, destIpAddr, destNbmaAddr) and + genPosNonAuthReply(sourceIpAddr, destIpAddr, destNbmaAddr) generate a + positive, authoritative and non-authoritative reply with + sourceIpAddr, destIpAddr, and destNbmaAddr in Source IP address, + Destination IP address, and NBMA Address fields, respectively. + + + +Heinanen & Govindan [Page 8] + +RFC 1735 NBMA ARP (NARP) December 1994 + + + genNegAuthReply(sourceIpAddr, destIpAddr) and + genNegNonAuthReply(sourceIpAddr, destIpAddr) respectively generate a + negative, authoritative and non-authoritative reply with sourceIpAddr + and destIpAddr in Source IP address and Destination IP address + fields, respectively. + + requestForAuthInfo?(request) tests if request is a Request for + authoritative information. + + realBusyRightNow?() returns TRUE if the NAS is heavily loaded and + FALSE otherwise. + + realRecentCacheEntry?(cacheTableEntry) returns TRUE if the + cacheTableEntry is very recently updated and FALSE otherwise. + + matchCacheTable(ipAddr) returns a cacheTable entry whose + networkLayerAddr field is equal to ipAddr or FALSE if no match is + found. + + forwardRequest(request, interface, ipAddr) decrements the Hop count + field of request, recomputes the NARP Checksum field, and forwards + request to ipAddr of interface provided that the value of the Hop + count field remains positive. + + addCacheTableEntry(ipAddr, nbmaAddr, time) adds a new entry to the + cacheTable or overwrites an existing entry whose networkLayerAddr + field is equal to ipAddr. + + forwardReply(reply, interface, ipAddr) decrements the Hop count field + of request, recomputes the NARP Checksum field, and forwards reply to + ipAddr of interface provided that the value of the Hop count field + remains positive. + + Like NASs, each NBMA terminal has a forwardingTable and a cacheTable. + The forwardingTable is either manually configured or filled via + reachability information exchange with the terminal's NASs or peer + routers. + + When the terminal wishes to find out the NBMA address of a particular + destination terminal, it first checks if a matching entry is found in + the forwardingTable. If not, the destination is unreachable and the + terminal gives up. If a forwardingTable entry is found, and if the + next hop belongs to one of the terminal's NASs, the terminal next + consults its cacheTable to obtain the NBMA address. If no cache + match is found, the terminal generates a NARP request to the next hop + NAS. If the reply to the NARP request is positive, the terminal + learns the NBMA address and updates its cacheTable with the new + information. + + + +Heinanen & Govindan [Page 9] + +RFC 1735 NBMA ARP (NARP) December 1994 + + +6. Discussion + + The NARP semantics resembles closely the ATMARP semantics described + in [2]. The only actual differences are: + + - NARP requests and replies include a hop count to prevent them from + looping forever in case of misconfigured NAS routing. + + - NARP request and replies distinguish between authoritative and + non-authoritative information. + + In order to keep the NBMA terminals as simple as possible, it would + be desirable to extend the the ATMARP protocol a little further so + that it could be also used as the terminal-NAS protocol. This could + be easily accomplished just by adding three new operation codes to + ATMARP to cover the different kinds of queries and responses. NARP + would then become the NAS-NAS protocol. Finally, if the NASs are + co-located with the "classical" ATM ARP servers, the terminals would + not need to make any distinction between between local and foreign IP + subnetworks. + + The NASs can also act as "connectionless servers" for the terminal by + advertizing to it all destinations no matter if they are inside or + outside the served NBMA. Then, the terminal could choose either to + try to resolve the NBMA address of the destination or just to send + the IP packets to the NAS. The latter option may be desirable if + communication with the destination is short-lived and/or doesn't + require much network resources. + + NARP supports portability of NBMA terminals. A terminal can be moved + anywhere within the NBMA network and still keep its original IP + address as long as its NAS(s) remain the same. Requests for + authoritative information will always return the correct NBMA + address. + +References + + [1] Plummer, D., "An Ethernet Address Resolution Protocol - or - + Converting Network Protocol Addresses to 48.bit Ethernet Address + for Transmission on Ethernet Hardware", STD 37, RFC 826, MIT, + November 1982. + + [2] Laubach, M., "Classical IP and ARP over ATM", RFC 1577, Hewlett- + Packard Laboratories, January 1994. + + [3] Piscitello, D., and J. Lawrence, "Transmission of IP Datagrams + over the SMDS Service, RFC 1209, Bell Communications Research, + March 1991. + + + +Heinanen & Govindan [Page 10] + +RFC 1735 NBMA ARP (NARP) December 1994 + + +Acknowledgements + + We would like to thank John Burnett of Adaptive, Dennis Ferguson of + ANS, Joel Halpern of Network Systems, and Paul Francis of Bellcore + for their valuable insight and comments to earlier versions of this + draft. + +Security Considerations + + Security issues are not discussed in this memo. + +Authors' Addresses + + Juha Heinanen + Telecom Finland + PO Box 228 + SF-33101 Tampere + Finland + + Phone: +358 49 500 958 + EMail: Juha.Heinanen@datanet.tele.fi + + + Ramesh Govindan + USC/Information Sciences Institute + 4676 Admiralty Way + Marina del Rey, CA 90292 + + Phone: +1 310-822-1511 + EMail: govindan@isi.edu + + + + + + + + + + + + + + + + + + + + + +Heinanen & Govindan [Page 11] + |