RFC 6431

Huawei Port Range Configuration Options for PPP IP Control Protocol (IPCP)

πŸ“… published November 2011, from ietf

RFC 6431: Huawei Port Range Configuration Options for PPP IP Control Protocol (IPCP) πŸŽ€

Okay bestie, this one is an Informational doc (not Standards Track πŸ™ˆ) from the Independent Submission stream, dated November 2011. The ISSN is 2070-1721. The authors are M. Boucadair, P. Levis, G. Bajko, T. Savolainen, and T. Tsou, and the affiliations printed on the document are France Telecom, Nokia, and Huawei Technologies (USA) πŸ’œ. The title block doesn't list anything it obsoletes or updates, so there's nothing to chase there ✨.

Abstract

Here's the gist πŸ¦‹. This doc defines two Huawei IPCP (IP Control Protocol) options whose whole job is to carry a set of ports. You'd use them for port range-based solutions or NAT-based solutions, where you're handing out ports for delegation and forwarding purposes πŸ“.

Status of This Memo

Real talk: this is not an Internet Standards Track spec. It's published just for information 🌸.

It's a contribution to the RFC Series, and it's independent of any other RFC stream. The RFC Editor picked to publish it at their discretion and makes no statement about whether it's good to implement or deploy 🫢. Anything the RFC Editor approves for publication is not a candidate for any level of Internet Standard. See Section 2 of RFC 5741 for the details πŸ’….

If you want the current status, any errata, or a way to give feedback, check http://www.rfc-editor.org/info/rfc6431 ✨.

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved πŸ’–.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. Please actually read these, because they spell out your rights and restrictions for this document πŸ“œ.

Table of Contents

   1. Introduction ....................................................2
      1.1. Use Cases ..................................................3
      1.2. Terminology ................................................3
      1.3. Requirements Language ......................................4
   2. Port Range Options ..............................................4
      2.1. Description of Port Range Value and Port Range Mask ........4
      2.2. Cryptographically Random Port Range Option .................6
           2.2.1. Random Port Delegation Function .....................6
           2.2.2. Description of Cryptographically Random Port
                  Range Option ........................................8
      2.3. Illustration Examples .....................................10
           2.3.1. Overview ...........................................10
           2.3.2. Successful Flow: Port Range Options Supported
                  by Both the Client and the Server ..................10
           2.3.3. Port Range Option Not Supported by the Server ......11
           2.3.4. Port Range Option Not Supported by the Client ......13
   3. Security Considerations ........................................14
   4. Contributors ...................................................14
   5. Acknowledgements ...............................................14
   6. References .....................................................14
      6.1. Normative References ......................................14
      6.2. Informative References ....................................15

1. Introduction ✨

So IPv4 addresses are running out, and people have been brainstorming ways to share them 🌈. There are two main flavors. One is NAT-based, like Carrier-Grade NAT (CGN) [CGN-REQS]. The other is port range-based, like [RFC6346], [PORT-RANGE-ARCH], and [SAM]. The port range-based ones don't need an extra NAT level inside the service provider's domain, which is honestly iconic πŸ‘‘. There are several ways to convey port range info.

This doc defines the notion of a "Port Mask," which is generic and flexible 🧚. You can implement several allocation schemes with a Port Mask. The doc proposes a basic mechanism that gives a unique port range to a requesting client. It also defines Huawei IPCP options to carry that port range information πŸ’œ.

IPv4 address exhaustion is just one example of where these PPP IPCP options get used. Port Range options can be used even when the IP-Address IPCP Option isn't there at all πŸ¦‹.

This doc sticks to the considerations in [RFC2153] πŸŽ€. It is also not a product of the PPPEXT working group. Heads up that IPR disclosures apply to it too (see https://datatracker.ietf.org/ipr/) πŸ™ˆ.

1.1. Use Cases

Port Range options can go in port range-based solutions (like [RFC6346]) or in a CGN-based solution πŸ“. In a CGN context they can help you bypass the NAT. That means transparent NAT traversal, and you avoid stacking several NAT levels on the path. They can also delegate one port or a set of ports to the requesting client, say to dodge the ALG (Application Level Gateway) or for port forwarding 🫢.

Section 3.3.1 of [RFC6346] shows an example of using the options defined here πŸ’….

1.2. Terminology

Okay, so we need names to tell apart a port range that's a contiguous run of port numbers from one that's non-contiguous and maybe random 🌸. Here they are:

  • Contiguous Port Range: A set of port values that form a contiguous sequence.
  • Non-Contiguous Port Range: A set of port values that do not form a contiguous sequence.
  • Random Port Range: A cryptographically random set of port values.

Unless it's explicitly mentioned otherwise, "Port Mask" refers to the tuple (Port Range Value, Port Range Mask) 🧚.

The doc also uses these terms:

  • Delegated port or delegated port range: A port or a range of ports that belong to an IP address managed by an upstream device (such as NAT) and that are delegated to a client for use as the source address and port when sending packets 🌈.
  • Forwarded port or forwarder port range: A port or a range of ports that belong to an IP address managed by an upstream device such as (NAT) and that are statically mapped to the internal IP address of the client and same port number of the client πŸ¦‹.

This memo uses the same terminology as [RFC1661] πŸ’–.

1.3. Requirements Language

Here's the part where the capital letters matter πŸ”₯. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be read as described in RFC 2119 [RFC2119]. Yes, all ten of them, no cap πŸ‘‘.

2. Port Range Options 🌸

This section defines the IPCP Option for port range delegation. The format of vendor-specific options is defined in [RFC2153]. Here are the values you convey when the Port Range Option is used πŸ’…:

  • Organizationally Unique Identifier (OUI): This field is set to 781DBA (hex).
  • Kind: This field is set to F0 (hex).
  • Value(s): The content of this field is specified in Sections 2.1 and 2.2.2 ✨.

2.1. Description of Port Range Value and Port Range Mask

okay so the Port Range Value and Port Range Mask are a dynamic duo πŸ‘―β€β™€οΈ that together describe one range of ports (contiguous or non-contiguous!) tied to a given IP address. πŸ’– Basically, they let a remote peer know which Port Mask to apply when it picks a source port. The Port Range Value helps figure out which port values are allowed. The Port Range Mask picks out a group of ports that all share a subset of "pre-positioned bits," and that group is what we call the port range ✨

two port numbers belong to the same port range if and only if they have the same Port Range Mask. πŸŽ€ that's the whole vibe!

A Port Mask is made of a Port Range Value and a Port Range Mask:

  • The Port Range Value indicates the value of the significant bits of the Port Mask. The Port Range Value is coded as follows:
    • The significant bits may take a value of 0 or 1.
    • All of the other bits (i.e., non-significant ones) are set to 0.
  • The Port Range Mask indicates, by the bit(s) set to 1, the position of the significant bits of the Port Range Value.

this IPCP Configuration Option is how you negotiate the Port Range to use on the local end of the link πŸ”— The sender of the Configure-Request can say which port range tied to a given IP address they want, or ask the peer to just hand over the config. πŸ₯Ή The peer can do that by NAKing the option and sending back a valid port range, meaning a (Port Range Value, Port Range Mask) pair.

if a peer sends a request with the IPCP Port Range Option and the server doesn't support it, the server rejects the option. πŸ™…β€β™€οΈ rude, but that's the rule!

the set of ports carried in an IPCP Port Range Option applies to all transport protocols. πŸ¦‹

and the set of ports in an IPCP Port Range Option gets revoked once the link is no longer up (for example, when Terminate-Request and Terminate-Ack are exchanged). 🫢 gone, poof! πŸ’¨

the Port Range IPCP option follows the format defined in Section 2.1 of [RFC2153]. The "Value(s)" field of the option defined in [RFC2153], when it's carrying the Port Range IPCP Option, is shown in Figure 1. πŸ’…

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |M|          Reserved           |      Port Range Value         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      Port Range Mask          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: Format of the Port Range IPCP Option

the bits are sent in Most significant bit (MSB) network order, for both the Port Range Value and the Port Range Mask fields. 🧠

  • M: mode bit. The mode bit indicates the mode for which the port range is allocated. A value of zero indicates that the port ranges are delegated, while a value of 1 indicates that the port ranges are port-forwarded. πŸ”€
  • Port Range Value (PRV): The PRV indicates the value of the significant bits of the Port Mask. By default, no PRV is assigned.
  • Port Range Mask (PRM): The Port Range Mask indicates the position of the bits that are used to build the Port Range Value. By default, no PRM value is assigned. The 1 values in the Port Range Mask indicate, by their position, the significant bits of the Port Range Value.

time for an example! 🧚 Figure 2 shows what the resulting port range looks like:

  • The Port Range Mask is set to 0001010000000000 (5120).
  • The Port Range Value is set to 0000010000000000 (1024).
      0                   1
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0| Port Range Mask
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             |   |
             |   | (two significant bits)
             v   v
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0| Port Range Value
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |x x x 0 x 1 x x x x x x x x x x| Usable ports
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+      (x may be set to 0 or 1)

Figure 2: Example of Port Range Mask and Port Range Value

okay so the port values in this port range need the fourth bit from the left set to 0, and the sixth bit from the left set to 1. 🎯 Only these port values get used by the peer when it enforces the configuration sent over PPP IPCP. πŸ‘‘

2.2. Cryptographically Random Port Range Option

a cryptographically random Port Range Option may be used as a mitigation tool against blind attacks like the ones described in [RFC6056]. πŸ›‘οΈ it's giving security glow-up πŸ”₯

2.2.1. Random Port Delegation Function

so delegating random ports can be done by defining a function that takes as input a key 'K' and an integer 'x' within the 1024-65535 port range, and produces an output 'y' that's also within the 1024-65535 port range. 🌈

the cryptographic mechanism uses the 1024-65535 port range instead of the ephemeral range, 49152-65535, to generate a set of ports. 🌸 The reason is to optimize IPv4 address utilization efficiency (see "Appendix B. Address Space Multiplicative Factor" of [RFC6269]). This behavior is compliant with the recommendation to use the whole 1024-65535 port range for the ephemeral port selection algorithms (see Section 3.2 of [RFC6056]). ✨

the cryptographic mechanism makes sure the entire 64k port range can be efficiently distributed across multiple nodes. When each node calculates its ports, the results never overlap with ports other nodes have calculated (that's the property of permutation 🧩), and ports in the reserved range (smaller than 1024) are not used. πŸ™…β€β™€οΈ Because the randomization is done cryptographically, an attacker who sees a node using some port X can't work out which other ports that node may be using, since the attacker doesn't know the key. πŸ” The random port list is calculated like this:

the cryptographic mechanism uses an encryption function y = E(K,x). It takes as input a key K (for example, 128 bits) and an integer x (the plaintext) in the 1024-65535 port range, and produces an output y (the ciphertext), which is also an integer in the 1024-65535 port range. This section describes one such encryption function, but others are also possible. πŸ’œ

the server picks the key K. When the server wants to allocate, for example, 2048 random ports, it selects a starting point 'a' (1024 <= a <= 65536-2048) such that the port range (a, a+2048) doesn't overlap with any other active client. Then it calculates the values E(K,a), E(K,a+1), E(K,a+2), ..., E(K,a+2046), E(K,a+2047). Those are the port numbers allocated for this node. πŸŽ€ Instead of sending every port number individually, the server just sends the values 'K', 'a', and '2048'. The client then repeats the same calculation and gets the same ports. 🫢

The server SHOULD use a different key K for each IPv4 address it allocates, to make attacks as difficult as possible. πŸ”‘ This way, learning the key K used for IPv4 address IP1 wouldn't help an attacker going after IPv4 address IP2, even when IP2 is allocated by the same server to different nodes. πŸ’€

here's the tea β˜• typical encryption functions (like AES and DES) take in and spit out blocks of some fixed size. For example, that's 128 bits for AES and 64 bits for DES. But for port randomization, we need an encryption function whose input and output is an integer in the 1024-65535 port range. πŸ™ˆ

one possible way to do this is to use the 'Generalized Feistel Cipher' [CIPHERS] construction by Black and Rogaway, with AES as the underlying round function. 🧁

this would look like this (using pseudo-code):

           def E(k, x):
               y = Feistel16(k, x)
               if y >= 1024:
                     return y
               else:
                     return E(k, y)

Note that although E(k,x) is recursive, it is guaranteed to terminate. The average number of iterations is just slightly over 1. 🌟

Feistel16 is a 16-bit block cipher:

           def Feistel16(k, x):
               left = x & 0xff
               right = x >> 8
               for round = 1 to 3:
                   temp = left ^ FeistelRound(k, round, right))
                   left = right
                   right = temp
               return (right << 8) | left

The Feistel round function uses:

           def FeistelRound(k, round, x):
               msg[0] = round
               msg[1] = x
               msg[2...15] = 0
               return AES(k, msg)[0]

Performance: to generate a list of 2048 port numbers, about 6000 calls to AES are required (i.e., encrypting 96 kilobytes). πŸ‹οΈβ€β™€οΈ Thus, it won't be a problem for any device that can do, for example, HTTPS (web browsing over Secure Sockets Layer/Transport Layer Security (SSL/TLS)). 🌐 easy peasy!

2.2.2. Description of Cryptographically Random Port Range Option

the cryptographically random Port Range IPCP Option follows the format defined in Section 2.1 of [RFC2153]. The "Value(s)" field of the option defined in [RFC2153], when it's carrying the cryptographically random Port Range IPCP Option, is illustrated in Figure 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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |M|          Reserved           |          function             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |        starting point         |   number of delegated ports   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                             key K               ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ...                                                           ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ...                                                           ...
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ...                                                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 3: Format of the Cryptographically Random Port Range Option

  • M: mode bit. The mode bit indicates the mode for which the port range is allocated. A value of zero indicates that the port ranges are delegated, while a value of 1 indicates that the port ranges are port-forwarded.
  • Function: A 16-bit field whose value is associated with predefined encryption functions. This specification associates value 1 with the predefined function described in Section 2.2.1.
  • Starting Point: A 16-bit value used as an input to the specified function.
  • Number of delegated ports: A 16-bit value specifying the number of ports delegated to the client for use as source port values.
  • Key K: A 128-bit key used as input to the predefined function for delegated port calculation.

when the option is included in the IPCP Configure-Request, the "Key K" and "Starting Point" fields SHALL be set to all zeros. 🫧 The requester MAY indicate in the "Function" field which encryption function it prefers, and in the "Number of Delegated Ports" field the number of ports it would like to get. 🎯 If the requester has no preference, it SHALL also set the "Function" field and/or "Number of Delegated Ports" field to zero. πŸ€·β€β™€οΈ

the way the option gets used in IPCP message negotiation (Request/Reject/Nak/Ack) follows the same logic described for Port Mask and Port Range options in Section 2.1. πŸ¦‹ that's the main character energy of consistency πŸ’…

2.3. Illustration Examples πŸŽ€

Okay so this part is the fun bit ✨ The flows below show how IPCP carries the Port Range Option. As you'll see in Figures 4, 5, and 6, IPCP messages get passed back and forth between a Host and a BRAS (Broadband Remote Access Server) 🧚

2.3.1. Overview

Here's the setup: these flows are examples of IPCP conveying the Port Range Option, and you can follow each one in the figures πŸ’œ

2.3.2. Successful Flow: Port Range Options Supported by Both the Client and the Server

This is the happy path πŸ₯Ή The exchange in Figure 4 is a successful IPCP configuration where the Port Range IPCP Option gets used.

  +-----+                                          +-----+
  | Host|                                          | BRAS|
  +-----+                                          +-----+
     |                                                |
     |              (1) IPCP Configure-Request        |
     |                  IP ADDRESS=0.0.0.0            |
     |                  PORT RANGE VALUE=0            |
     |                  PORT RANGE MASK=0             |
     |===============================================>|
     |                                                |
     |              (2) IPCP Configure-Nak            |
     |                  IP ADDRESS=a.b.c.d            |
     |                  PORT RANGE VALUE=80           |
     |                  PORT RANGE MASK=496           |
     |<===============================================|
     |                                                |
     |              (3) IPCP Configure-Request        |
     |                  IP ADDRESS=a.b.c.d            |
     |                  PORT RANGE VALUE=80           |
     |                  PORT RANGE MASK=496           |
     |===============================================>|
     |                                                |
     |              (4) IPCP Configure-Ack            |
     |                  IP ADDRESS=a.b.c.d            |
     |                  PORT RANGE VALUE=80           |
     |                  PORT RANGE MASK=496           |
     |<===============================================|
     |                                                |

                      Figure 4: Successful Flow

Here are the main steps of this flow, bestie πŸ’…

  1. The Host sends a first Configure-Request, and it includes the set of options it wants to negotiate. All of these configuration options are negotiated simultaneously ✨ In this step, the Configure-Request carries info about the IP address, the Port Range Value, and the Port Range Mask. The IP-Address Option is set to 0.0.0.0, the Port Range Value is set to 0, and the Port Range Mask is set to 0.
  2. The BRAS sends back a Configure-Nak and sets the enclosed options to its preferred values πŸŽ€ In this step, the IP-Address Option is set to a.b.c.d, the Port Range Value is set to 80, and the Port Range Mask is set to 496.
  3. The Host re-sends a Configure-Request asking for the IP-Address Option to be a.b.c.d, the Port Range Value to be 80, and the Port Range Mask to be 496. Asking nicely, no cap 🫢
  4. The BRAS sends a Configure-Ack message. Done and dusted πŸ’–

So as a result of this exchange, the Host is configured to use a.b.c.d as its local IP address, and it gets the following 128 contiguous port ranges resulting from the Port Mask (Port Range Value == 0, Port Range Mask == 496) 🌈

  • from 80 to 95
  • from 592 to 607
  • ...
  • from 65104 to 65119

2.3.3. Port Range Option Not Supported by the Server

Now the plot twist 😭 Figure 5 shows what happens when the BRAS does not support the IPCP Port Range Option.

  +-----+                                          +-----+
  | Host|                                          | BRAS|
  +-----+                                          +-----+
     |                                                |
     |              (1) IPCP Configure-Request        |
     |                  IP ADDRESS=0.0.0.0            |
     |                  PORT RANGE VALUE=0            |
     |                  PORT RANGE MASK=0             |
     |===============================================>|
     |                                                |
     |              (2) IPCP Configure-Reject         |
     |                  PORT RANGE VALUE=0            |
     |                  PORT RANGE MASK=0             |
     |<===============================================|
     |                                                |
     |              (3) IPCP Configure-Request        |
     |                  IP ADDRESS=0.0.0.0            |
     |===============================================>|
     |                                                |
     |              (4) IPCP Configure-Nak            |
     |                  IP ADDRESS=a.b.c.d            |
     |<===============================================|
     |                                                |
     |              (5) IPCP Configure-Request        |
     |                  IP ADDRESS=a.b.c.d            |
     |===============================================>|
     |                                                |
     |              (6) IPCP Configure-Ack            |
     |                  IP ADDRESS=a.b.c.d            |
     |<===============================================|
     |                                                |

  Figure 5: Failed Flow: Port Range Option Not Supported by the Server

Okay, the steps πŸ“

  1. The Host sends a first Configure-Request with the set of options it wants to negotiate, and they're all negotiated simultaneously. This time the Configure-Request carries the codes of the IP-Address, Port Range Value, and Port Range Mask options. The IP-Address Option is set to 0.0.0.0, the Port Range Value is set to 0, and the Port Range Mask is set to 0.
  2. The BRAS sends back a Configure-Reject to decline the Port Range Option. Rude, but valid πŸ’€
  3. The Host sends a Configure-Request that includes only the code of the IP-Address Option. In this step, the IP-Address Option is set to 0.0.0.0.
  4. The BRAS sends back a Configure-Nak and sets the enclosed option to its preferred value, which here is a.b.c.d for the IP-Address Option.
  5. The Host re-sends a Configure-Request asking for the IP-Address Option to be a.b.c.d.
  6. The BRAS sends a Configure-Ack message. Finally πŸ₯³

As a result of this exchange, the Host is configured to use a.b.c.d as its local IP address. And this IP address is not a shared IP address, so it's giving exclusive energy πŸ‘‘

2.3.4. Port Range Option Not Supported by the Client

Last one, and this is the cautionary tale πŸ™ˆ Figure 6 shows exchanges where only shared IP addresses get assigned to end-users' devices. The server is configured to assign only shared IP addresses. If Port Range options aren't enclosed in the configuration request, the request gets rejected, and the requesting peer won't be able to access the service. Yikes 😭

  +-----+                                          +-----+
  | Host|                                          | BRAS|
  +-----+                                          +-----+
     |                                                |
     |              (1) IPCP Configure-Request        |
     |                  IP ADDRESS=0.0.0.0            |
     |===============================================>|
     |                                                |
     |              (2) IPCP Protocol-Reject          |
     |<===============================================|
     |                                                |

        Figure 6: Port Range Option Not Supported by the Client

The main steps of this flow:

  1. The Host sends a Configure-Request asking for the IP-Address Option to be set to 0.0.0.0, and it doesn't enclose the Port Range Option.
  2. The BRAS sends a Protocol-Reject message 🚫

So as a result of this exchange, the Host is not able to access the service. Rip 🫠


3. Security Considerations πŸ”

Okay, security time, and I'm being serious for a sec 🫢 This document doesn't introduce any security issues beyond the ones already related to PPP. Service providers should use authentication mechanisms such as the Challenge Handshake Authentication Protocol (CHAP) [RFC1994] or PPP link encryption [RFC1968].

The use of small and non-random port ranges may increase host exposure to attacks, as described in [RFC6056]. This risk can be reduced by using larger port ranges, by using the random Port Range Option, or by activating means to improve the robustness of TCP against blind in-window attacks [RFC5961]. Do not sleep on this one, bestie πŸ’€

4. Contributors 🧚

Jean-Luc Grimault and Alain Villefranque contributed to this document πŸ’–

5. Acknowledgements 🌸

The authors would like to thank C. Jacquenet, J. Carlson, B. Carpenter, M. Townsley, and J. Arkko for their review. Thank you, legends πŸ™Œ

6. References πŸ“š

6.1. Normative References

[RFC1661]  Simpson, W., Ed., "The Point-to-Point Protocol (PPP)",
           STD 51, RFC 1661, July 1994.

[RFC1968]  Meyer, G., "The PPP Encryption Control Protocol (ECP)",
           RFC 1968, June 1996.

[RFC1994]  Simpson, W., "PPP Challenge Handshake Authentication
           Protocol (CHAP)", RFC 1994, August 1996.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2153]  Simpson, W., "PPP Vendor Extensions", RFC 2153, May 1997.

[RFC5961]  Ramaiah, A., Stewart, R., and M. Dalal, "Improving TCP's
           Robustness to Blind In-Window Attacks", RFC 5961,
           August 2010.

6.2. Informative References

[CGN-REQS]
           Perreault, S., Ed., Yamagata, I., Miyakawa, S., Nakagawa,
           A., and H. Ashida, "Common requirements for Carrier Grade
           NAT (CGN)", Work in Progress, October 2011.

[CIPHERS]  Black, J. and P. Rogaway, "Ciphers with Arbitrary Finite
           Domains.  Topics in Cryptology", CT-RSA 2002, Lecture
           Notes in Computer Science, vol. 2271, 2002.

[PORT-RANGE-ARCH]
           Boucadair, M., Ed., Levis, P., Bajko, G., and T.
           Savolainen, "IPv4 Connectivity Access in the Context of
           IPv4 Address Exhaustion: Port Range based IP
           Architecture", Work in Progress, July 2009.

[RFC6056]  Larsen, M. and F. Gont, "Recommendations for Transport-
           Protocol Port Randomization", BCP 156, RFC 6056,
           January 2011.

[RFC6269]  Ford, M., Ed., Boucadair, M., Durand, A., Levis, P., and
           P. Roberts, "Issues with IP Address Sharing", RFC 6269,
           June 2011.

[RFC6346]  Bush, R., Ed., "The Address plus Port (A+P) Approach to
           the IPv4 Address Shortage", RFC 6346, August 2011.

[SAM]      Despres, R., "Scalable Multihoming across IPv6 Local-
           Address Routing Zones Global-Prefix/Local-Address
           Stateless Address Mapping (SAM)", Work in Progress,
           July 2009.

Authors' Addresses ✨

Mohamed Boucadair
France Telecom
Rennes  35000
France

EMail: mohamed.boucadair@orange.com


Pierre Levis
France Telecom
Caen
France

EMail: pierre.levis@orange.com


Gabor Bajko
Nokia

EMail: gabor.bajko@nokia.com


Teemu Savolainen
Nokia

EMail: teemu.savolainen@nokia.com


Tina Tsou
Huawei Technologies (USA)
2330 Central Expressway
Santa Clara, CA  95050
USA

Phone: +1 408 330 4424
EMail: tina.tsou.zouting@huawei.com
πŸ“¦ where this page comes from