rfc1717.txt
来自「<VC++网络游戏建摸与实现>源代码」· 文本 代码 · 共 1,180 行 · 第 1/4 页
TXT
1,180 行
link idle timer to guard against indefinite stalls. The increasing sequence per link rule prohibits the reallocation of fragments queued up behind a failing link to a working one, a practice which is not unusual for implementations of ISO multilink over LAPB [4].4.2. Buffer Space Requirements There is no amount of buffering that will guarantee correct detection of fragment loss, since an adversarial peer may withhold a fragment on one channel and send arbitrary amounts on the others. For the usual case where all channels are transmitting, you can show that there is a minimum amount below which you could not correctly detect packet loss. The amount depends on the relative delay between the channels, (D[channel-i,channel-j]), the data rate of each channel, R[c], the maximum fragment size permitted on each channel, F[c], and the total amount of buffering the transmitter has allocated amongst the channels. When using PPP, the delay between channels could be estimated by using LCP echo request and echo reply packets. (In the case of links of different transmission rates, the round trip times should be adjusted to take this into account.) The slippage for each channelSklower, Lloyd, McGregor & Carr [Page 11]RFC 1717 PPP Multilink November 1994 is defined as the bandwidth times the delay for that channel relative to the channel with the longest delay, S[c] = R[c] * D[c,c-worst]. (S[c-worst] will be zero, of course!) A situation which would exacerbate sequence number skew would be one in which there is extremely bursty traffic (almost allowing all channels to drain), and then where the transmitter would first queue up as many consecutively numbered packets on one link as it could, then queue up the next batch on a second link, and so on. Since transmitters must be able to buffer at least a maximum- sized fragment for each link (and will usually buffer up at least two) A receiver that allocates any less than S[1] + S[2] + ... + S[N] + F[1] + ... + F[N], will be at risk for incorrectly assuming packet loss, and therefore, SHOULD allocate at least twice that.5. PPP Link Control Protocol Extensions If reliable multilink operation is desired, PPP Reliable Transmission [6] (essentially the use of ISO LAPB) MUST be negotiated prior to the use of the Multilink Protocol on each member link. Whether or not reliable delivery is employed over member links, an implementation MUST present a signal to the NCP's running over the multilink arrangement that a loss has occurred. Compression may be used separately on each member link, or run over the bundle (as a logical group link). The use of multiple compression streams under the bundle (i.e., on each link separately) is indicated by running the Compression Control Protocol [5] but with an alternative PPP protocol ID.5.1. Configuration Option Types The Multilink Protocol introduces the use of additional LCP Configuration Options: o Multilink Maximum Received Reconstructed Unit o Multilink Short Sequence Number Header Format o Endpoint DiscriminatorSklower, Lloyd, McGregor & Carr [Page 12]RFC 1717 PPP Multilink November 19945.1.1. Multilink MRRU LCP option Figure 4: Multilink MRRU LCP option 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 17 | Length = 4 | Max-Receive-Reconstructed-Unit| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The presence of this option indicates that the system sending it implements the PPP Multilink Protocol, and unless rejected, will construe all packets receive on this link as being able to be processed by a common protocol machine with any other packets received from the same peer on any other link on which this option has been accepted. A system MUST NOT accept the Multilink MRRU LCP Option if it is not willing to symmetrically have the packets it sends interpreted in the same fashion. This option also advises the peer that the implementation will be able to reconstruct a PPP packet whose payload will contain the number of bytes as Max-Receive-Reconstructed-Unit. A system MAY indicate the desire to conduct multilink operation solely by use of the Multilink Short Sequence Number Header Format LCP option (discussed next); the default value for MRRU option is 1600 bytes if not otherwise explicitly negotiated. Note: this option corresponds to what would have been the MRU of the bundle when conceptualized as a PPP-like entity.5.1.2. Short Sequence Number Header Format Option Figure 5: Short Sequence Number Header Format Option 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 18 | Length = 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ This option advises the peer that the implementation wishes to receive fragments with short, 12 bit sequence numbers. By default sequence, numbers are 24 bits long. When this option is received, an implementation MUST either transmit all subsequent multilink packets on all links of the bundle with 12 bit sequence numbers or configure-NAK or configure-Reject the option.Sklower, Lloyd, McGregor & Carr [Page 13]RFC 1717 PPP Multilink November 1994 An implementation wishing to transmit multilink fragments with short sequence numbers MAY include the multilink short sequence number in a configure-NAK to ask that the peer respond with a request to receive short sequence numbers. The peer is not compelled to respond with the option.5.1.3. Endpoint Discriminator Option Figure 7: Endpoint Discriminator Option 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 19 | Length | Class | Address ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The Endpoint Discriminator Option represents identification of the system transmitting the packet. This option advises a system that the peer on this link could be the same as the peer on another existing link. If the option distinguishes this peer from all others, a new bundle MUST be established from the link being negotiated. If this option matches the class and address of some other peer of an existing link, the new link MUST be joined to the bundle containing the link to the matching peer or MUST establish a new bundle, depending on the decision tree shown in (1) through (4) below. To securely join an existing bundle, a PPP authentication protocol [3] must be used to obtain authenticated information from the peer to prevent a hostile peer from joining an existing bundle by presenting a falsified discriminator option. This option is not required for multilink operation. If a system does not receive either of the Multilink MRRU or Short Sequence options, but does receive the Endpoint Discriminator Option, and there is no manual configuration providing outside information, the implementation MUST NOT assume that multilink operation is being requested on this basis alone. As there is also no requirement for authentication, there are four sets of scenarios: (1) No authentication, no discriminator: All new links MUST be joined to one bundle. (2) Discriminator, no authentication: Discriminator match -> MUST join matching bundle, discriminator mismatch -> MUST establish new bundle.Sklower, Lloyd, McGregor & Carr [Page 14]RFC 1717 PPP Multilink November 1994 (3) No discriminator, authentication: Authenticated match -> MUST join matching bundle, authenticated mismatch -> MUST establish new bundle. (4) Discriminator, authentication: Discriminator match and authenticated match -> MUST join bundle, discriminator mismatch -> MUST establish new bundle, authenticated mismatch -> MUST establish new bundle. The option contains a Class which selects an identifier address space and an Address which selects a unique identifier within the class address space. This identifier is expected to refer to the mechanical equipment associated with the transmitting system. For some classes, uniqueness of the identifier is global and is not bounded by the scope of a particular administrative domain. Within each class, uniqueness of address values is controlled by a class dependent policy for assigning values. Each endpoint may chose an identifier class without restriction. Since the objective is to detect mismatches between endpoints erroneously assumed to be alike, mismatch on class alone is sufficient. Although no one class is recommended, classes which have universally unique values are preferred. This option is not required to be supported either by the system or the peer. If the option is not present in a Configure-Request, the system MUST NOT generate a Configure-Nak of this option, instead it SHOULD behave as if it had received the option with Class = 0, Address = 0. If a system receives a Configure-Nak or Configure- Reject of this option, it MUST remove it from any additional Configure-Request. The size is determined from the Length field of the element. For some classes, the length is fixed, for others the length is variable. The option is invalid if the Length field indicates a size below the minimum for the class. An implementation MAY use the Endpoint Discriminator to locate administration or authentication records in a local database. Such use of this option is incidental to its purpose and is deprecated when a PPP Authentication protocol [3] can be used instead. Since some classes permit the peer to generate random or locally assigned address values, use of this option as a database key requires prior agreement between peer administrators.Sklower, Lloyd, McGregor & Carr [Page 15]RFC 1717 PPP Multilink November 1994 The specification of the subfields are: Type 19 = for Endpoint Discriminator Length 3 + length of Address Class The Class field is one octet and indicates the identifier address space. The most up-to-date values of the LCP Endpoint Discriminator Class field are specified in the most recent "Assigned Numbers" RFC [7]. Current values are assigned as follows: 0 Null Class 1 Locally Assigned Address 2 Internet Protocol (IP) Address 3 IEEE 802.1 Globally Assigned MAC Address 4 PPP Magic-Number Block 5 Public Switched Network Directory Number Address The Address field is one or more octets and indicates the identifier address within the selected class. The length and content depend on the value of the Class as follows: Class 0 - Null Class Maximum Length: 0 Content: This class is the default value if the option is not present in a received Configure-Request.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?