Nortel Networks Multi-link Multi-node PPP Bundle Discovery Protocol
Finding and coordinating PPP connections spread across multiple servers.
Malkin, G., "Nortel Networks Multi-link Multi-node PPP Bundle Discovery Protocol", RFC 2701, DOI 10.17487/RFC2701, September 1999, <https://www.rfc-editor.org/info/rfc2701>.
@misc{rfc2701,
series = {Request for Comments},
number = 2701,
howpublished = {RFC 2701},
publisher = {RFC Editor},
doi = {10.17487/RFC2701},
url = {https://www.rfc-editor.org/info/rfc2701},
author = {G. Malkin},
title = {{Nortel Networks Multi-link Multi-node PPP Bundle Discovery Protocol}},
pagetotal = 9,
year = 1999,
month = sep,
} RFC text
Contents
Network Working Group G. Malkin
Request for Comments: 2701 Nortel Networks
Category: Informational September 1999
Nortel Networks
Multi-link Multi-node PPP Bundle Discovery Protocol
Status of this Memo
This memo provides information for the Internet community. It does
not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
Abstract
This document specifies a standard way for Multi-link PPP to operate
across multiple nodes. Both the mechanism by which the Bundle Head
is discovered and the PPP fragment encapsulation are specified.
Acknowledgements
I would like to thank Joe Frazier for filling in some of the details
and reviewing this document.
1. Introduction
Multi-link PPP [MP] allows a dial-in user to open multiple PPP
connections to a given host. In general, this is done on an on-
demand basis. That is, a secondary link, or multiple secondary
links, are established when the data load on the primary link, and
any previously established secondary links, nears capacity. As the
load decreases, the secondary link(s) may be disconnected.
Many dial-in hosts which support multi-link PPP dial the same phone
number for all links. This implies that there exists a rotary at the
Point Of Presence (POP) which routes incoming calls to a bank of
modems. These may be physically independent modems connected to
Remote Access Server (RAS) and a rotary of analog phone lines, or a
RAS with internal modems connected to analog lines or a T1/E1 or
T3/E3 channel. In any case, a given RAS can only handle just so many
simultaneous connections. A typical POP may need to support hundreds
of connections, but no RAS today can handle that many. This creates
a problem when a user's primary PPP connection is established to one
RAS in a POP and a secondary connection is established to another.
This may occur because the first RAS has no available modems, or
because incoming calls are assigned to ports in a round-robin
fashion, for example, and the second call is simply assigned to
another RAS.
The solution to this problem is to provide a mechanism by which a RAS
can determine if a Multi-link PPP connection is a primary or
secondary and, if a secondary, where the Bundle Head (the process
within a RAS which reassembles the PPP fragments transmitted over the
primary and secondary links) resides. If the Bundle Head resides on
a different RAS, a protocol must be used to transfer the PPP
fragments to the RAS containing the Bundle Head so that the PPP frame
can be reassembled.
Section 2 of this document specifies the Discovery Mechanism.
Section 3 specifies the Transfer Protocol. Section 4 specifies the
configuration parameters needed for the Discovery Protocol.
2. Bundle Head Discovery Mechanism
When a user dials into a RAS and negotiates Multi-link PPP (MP)
during the Link Control Protocol (LCP) phase, the RAS must determine
which one of the following three cases exists:
1- This is the primary (first) link of the MP connection. In this
case, the RAS should create the Bundle Head.
2- This is a secondary link of the MP connection and the Bundle Head
resides on this RAS. In this case, the RAS should add the link to
the Bundle (standard MP).
3- This is a secondary link of the MP connection and the Bundle Head
resides on a different RAS. In this case, the RAS should
establish a path (see section 3) to the RAS that has the Bundle
Head, and use that path to transfer MP fragments.
In operation, a RAS will make the determination for case 2 first
(because it is the easiest and requires no communication with other
RASes. If the Bundle Head is not local, the Discovery Protocol is
used to determine where the Bundle Head is, if it exists at all.
2.1 Packet Format
See "IANA Considerations" (section 6) for UDP port number assignment.
A Discovery Message has the following format:
+------+------+------------+------+----======----+
| type |length| random ID | hash | endpoint ID |
+------+------+------------+------+----======----+
where:
type - 2 octets
Message type: 1-query, 2-response.
length - 2 octets
The length (in octets) of the endpoint ID.
Random ID - 4 octets
A random identifier generated by the RAS used to resolve
contention. See "Contention Handling" (section 2.4) for the use
of this field.
hash - 2 octets
The unsigned sum (modulo 2^16) of the unsigned octets of the
Endpoint ID. A value of zero indicates that no hash has been
generated. See "Endpoint Identifier Matching" (section 2.2) for
the use of this field.
endpoint ID - variable length
The endpoint identifier of the connection. From the discovery
protocol's point of view, this is an opaque value. However, to
ensure multi-vendor interoperability, the format of this field
must be defined. The descriptions of, and legal values for, the
fields in the endpoint ID are defined in [MP].
+------+------+--==--+------+------+--==--+------+--==--+
|remote|remote|remote|local |local |local |user | user |
|EPD |EPD |EPD |EPD |EPD |EPD |name | name |
|class |length|data |class |length|data |length| data |
+------+------+--==--+------+------+--==--+------+--==--+
Notes:
EPD = EndPoint Descriminator.
remote = dial-in host.
local = RAS.
class and length fields are 1-octet in length.
data fields are of variable (including zero) length.
The MP protocol requires that the RASes all have the same Local EPD.
For MMP, this implies that a RAS may not use its IP or Ethernet
address as an EPD. This also implies that all RASes on a rotary must
have the same EPD. RASes on different rotaries may share different
EPDs. The Local EPD is included in the endpoint identifier to ensure
that RASes on different rotaries, but sharing a common Ethernet, will
not join a particular discovery if the Remote EPDs just happen to be
the same.
Except for unicast Response Messages, all messages are sent to the
multicast address specified in "IANA Considerations". If a system
cannot send multicast messages, the limited broadcast address
(255.255.255.255) should be used.
2.2 Endpoint Identifier Matching
Comparing Endpoint IDs can be time consuming. First, the classes of
the EPDs must be determined, then the values compared. These
comparisons might be fast arithmetic compares or slow octet-wise
compares of 20-octet long values. To improve performance, because
the protocol is time-driven, the hash field may be used for a fast
comparison.
When a Bundle Head is created, the hash is created and stored along
with the Endpoint ID. When a Query or Response Message is generated,
the hash is created and stored in the message. When a RAS receives a
message, it can do a quick comparison of the hash in the message to
the hashes in its tables. If a hash does not match, the Endpoint ID
cannot match. However, if a hash does match, the Endpoint IDs must
be properly compared to verify the match.
Obviously, there is a cost associated with creating the hashes, but
they are created only once per message and once for each Bundle Head
creation. However, the comparisons occur multiple times in multiple
RASes for each new secondary connection. Therefore, there is a net
savings in processing.
2.3 Protocol Operation
Throughout this section, configurable variables are specified by
their names (e.g., ROBUSTNESS refers to the number of transmits).
The Discovery Protocol begins by multicasting ROBUSTNESS Query
Messages at QUERY_INTERVAL intervals. If no Response Message for
that Request is received within QUERY_INTERVAL of the last broadcast
(a total time of ROBUSTNESS * QUERY_INTERVAL), the RAS assumes that
this is the primary link and begins to build the Bundle Head. It
then sends a multicast Response Message (in case another link comes
up after the time-out but before the Bundle Head is built). If a
Response Message is received (i.e., a Bundle Head exists on another
RAS), no additional Query Messages are sent and the RAS establishes a
path to the RAS containing the Bundle Head.
If a RAS receives a Query Message for an MP connection for which it
has the Bundle Head, it sends a unicast Response Message to the
querier. Note that no repetition of the Response Message is
necessary because, if it is lost, the querier's next query message
will trigger a new Response Message.
2.4 Contention Handling
If, while sending Query Messages, a Query Message for the same MP
connection is received, it indicates that the Dial-in Node has
brought up multiple links simultaneously. The resolution to this
contention is to elect the bundle head. To do this, each RAS waits
until all Query Messages are sent (ROBUSTNESS * QUERY_INTERVAL). At
that time, the RAS with the lowest Random ID becomes the Bundle Head.
If two or more RASes have the same Random ID, the RAS with the lowest
IP address becomes the Bundle Head. That RAS then sends TWO Response
Messages, with a QUERY_INTERVAL interval, and indicates to the MP
process that a Bundle Head should be formed. When the other RAS(es)
receive the Response Message, they cease broadcasting (if they
haven't already sent ROBUSTNESS Query Messages), stop listening for
additional Response Messages, and indicate to their respective MP
processes where the Bundle Head resides.
Note that a RAS generates a Random ID for each connection and uses
that value for all Query and Response messages associated with that
connection. The same Random ID must not be reused until it can be
guaranteed that another RAS will not mistake the message for an old
message from a previous connection. For this reason, it is
recommended that the Random ID be either monotonically increasing or
a clock value (either time since boot or time of day).
2.5 MP Operation
MP must use the following algorithm to ensure that there are no
windows of vulnerability during which multiple Bundle Heads might be
created for the same MP connection.
When an MP link is negotiated, MP first checks to see if it already
has the Bundle Head for this connection (i.e., is this a secondary
link). If it does, it should attach to it and not initiate a
discovery. As an optimization, if MP does not have a Bundle Head for
this connection, but does have a existing secondary link for it, MP
should attach to the known Bundle Head without initiating discovery.
If MP knows of no Bundle Head for this connection, it should initiate
a discovery. If the discovery should locate a Bundle Head, it should
attach to the indicated bundle head. If no Bundle Head is found, MP
should create a Bundle Head.
When a RAS determines that it is to become the Bundle Head for a
connection, it should establish the Bundle Head as quickly as
possible so Query Messages for that connection from other RASes will
be recognized. If a RAS indicates that it will become the Bundle
Head, but delays establishment of it, other RASes may time out on
their discovery and begin to establish additional Bundle Heads of
their own.
3. Transfer Protocol
The Layer 2 Tunneling Protocol (L2TP) [L2TP] will be used to transfer
PPP fragments from a RAS containing a secondary link to the RAS
containing the Bundle Head. By specifying the use of an existing
protocol, it is neither necessary to create nor implement a new
protocol.
4. Configuration
There are two required configuration switches and one conditional
configuration switch. None of the switches are optional.
4.1 Robustness - required
This switch sets the number of transmits (repetitions) for Query
Messages. It may be set between 1 and 15. The default is 3. Be
aware that lower settings may create windows of vulnerability.
Higher settings may cause MP timeouts, but may be needed on very
lossy or congested networks.
4.2 Query Interval - required
This switch sets the interval between Query Messages and the interval
between multicast Response Messages. It should be calibrated in
deciseconds (1/10 second) and may be set between 1 and 15. The
default is 1. Be aware that higher settings may cause MP timeouts,
but may be needed on very slow systems/networks.
4.3 TTL - conditional
This switch sets the IP Time-To-Live (TTL) of all Discovery packets.
For systems which are using the limited broadcast address, this
switch should not be implemented and the TTL should be set to 1. The
default value should be 1.
5. Security Considerations
No security is designed into the Discovery Mechanism. When not
forwarding multicast packets (or when using the limited broadcast
address), the discovery packets are restricted to a single LAN. If
the LAN is physically secure, there is no need for software security.
If the multicast packets are forwarded, but the range is limited to a
small, physically secure network (e.g., a POP), there is still no
need for software security. If the discovery packets are allowed to
cross an internet (and this is NOT recommended for timing reasons),
authentication of RASes may be done with IPSEC. For increased
security on a LAN, or in a POP, IPSEC may still be used.
L2TP security is discussed in [L2TP].
6. IANA Considerations
UDP port number: 581
Multicast address: 224.0.1.69
7. References
[MP] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and
T. Coradetti, "The PPP Multilink Protocol (MP)", RFC 1990,
August 1996.
[L2TP] Townsley, W., Valencia, A., Rubens, A., Pall, G., Zorn, G.
and B. Palter, "Layer Two Tunneling Protocol "L2TP"", RFC
2661, August 1999.
Author's Address
Gary Scott Malkin
Nortel Networks
11 Elizabeth Drive
Chelmsford, MA 01824-4111
Phone: +1 (978) 250-3635
Email: gmalkin@nortelnetworks.com
Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
AI ELI5
On this page
§1The Multi-Server PPP Problem
Multi-link PPP (MP, defined in RFC 1990) lets a dial-in user open multiple connections to a single host and combine them into one logical stream. If the data load gets heavy, the user dials additional links and they are automatically added to the bundle.
But dial-in facilities at a Point Of Presence (POP) often use multiple Remote Access Servers (RASes) behind a rotary that distributes incoming calls. When the first call lands on one RAS and a second call lands on a different RAS, the bundle cannot be assembled because the second RAS does not know where the bundle head (the reassembler) is located.
This RFC specifies how RASes can discover each other and coordinate: a discovery mechanism to find where the bundle head is, and L2TP to transfer PPP fragments between RASes so they can be reassembled.
When you dial in and get one RAS, then dial in again and get a different RAS, they need a way to find each other and work together to handle your multiple lines.
§2Bundle Head Discovery
When a user negotiates Multi-link PPP on a new connection, the RAS must determine which of three cases applies: this is the first (primary) link, this is a secondary link and the bundle head is on this RAS, or this is a secondary link and the bundle head is on a different RAS.
The RAS first checks locally for the bundle. If not found, it multicasts a Query Message to the network (to multicast address 224.0.1.69 on UDP port 581) asking if anyone has the bundle head. If a Response Message is received, the RAS establishes a path to the other RAS. If no response arrives after sending queries multiple times (ROBUSTNESS times at QUERY_INTERVAL intervals), the RAS assumes it is the first link and creates the bundle head.
Query and Response messages contain a type, the endpoint identifier (which specifies the user and their machines), a random ID for tie-breaking, and a hash of the endpoint ID for fast matching. The endpoint identifier includes both the remote machine's identity and the local RAS's identity, ensuring that different rotaries do not interfere with each other.
When a RAS has the bundle head, it sends back a Response Message with a nickname (an integer) that the client can use in future messages instead of sending the full endpoint identifier. This speeds up subsequent connections.
The new RAS shouts out "Does anyone have this bundle?" If someone answers, it connects to them. If not, it becomes the bundle head itself.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
TYPE | Type | 2 bytes | Message type: 1 for query, 2 for response. | |
LENGTH | Length | 2 bytes | Length of the endpoint ID in octets. | |
RANDOM-ID | Random ID | 4 bytes | Random number for contention resolution. | |
HASH | Hash | 2 bytes | Checksum of endpoint ID for fast matching. | |
ENDPOINT-ID | Endpoint ID (variable) | 2 bytes | Variable-length endpoint identifier (remote, local, user name). |
§3Handling Contention and Configuration
If two RASes send Query Messages for the same bundle at the same time (which can happen if a user dials multiple links simultaneously), a contention resolution mechanism elects the bundle head. Each RAS waits until all its Query Messages are sent. Then the RAS with the lowest Random ID becomes the bundle head. If two RASes have the same Random ID, the one with the lowest IP address wins.
The winning RAS sends two Response Messages (one second apart) and indicates to its MP process that it should form the bundle head. The losing RASes stop querying and instead establish a path to the winner's RAS.
The configuration requires two mandatory and one conditional setting: Robustness (1 to 15, default 3) sets how many times to retransmit Query Messages; Query Interval (1 to 15 deciseconds, default 1) sets the interval between messages; and TTL (only for multicast, default 1) controls how far the discovery packets travel. Lower Robustness or Query Interval settings can create brief windows where multiple bundle heads might form, so operators must calibrate based on network conditions.
If both RASes think they should be in charge, they flip a coin (based on random IDs). The winner runs things, and the loser connects to it.
§4Moving Fragments Between RASes
Once the bundle head location is known, the RAS holding a secondary link must transfer PPP fragments to the RAS with the bundle head. This RFC specifies that Layer Two Tunneling Protocol (L2TP, defined in RFC 2661) is used for this purpose.
L2TP is a standard protocol for tunneling Layer 2 frames through an IP network. By using an existing protocol, the MMP specification does not need to define a new transfer mechanism, simplifying implementation.
L2TP is like a tunnel through the network that carries the PPP data from one RAS to the other.
§5Security
The discovery mechanism has no built-in security. If discovery packets stay on a single physical LAN that is physically secure, software security is not needed. If packets are forwarded across a POP, security is still not a strict requirement because the scope is limited.
However, if discovery packets are allowed to cross the Internet (not recommended), RASes can be authenticated using IPSec. For increased security on a LAN or POP, IPSec may also be applied. L2TP security is handled by the protocols and mechanisms specified in RFC 2661.
If the RASes are in the same secure room, they do not need extra security. If they are far apart, IPSec can protect the discovery messages.