RFC 4219

Things Multihoming in IPv6 (MULTI6) Developers Should Think About

๐Ÿ“… published October 2005, from ietf

RFC 4219 ๐Ÿ’– Things Multihoming in IPv6 (MULTI6) Developers Should Think About

okay bestie, this is RFC 4219 ๐ŸŽ€ It's from the Network Working Group, written by E. Lear at Cisco Systems. It's marked Informational ๐ŸŒธ and it's dated October 2005. It doesn't list anything it obsoletes or updates, so it's its own little thing ๐Ÿฆ‹

Status of this Memo โœจ

This memo gives information to the Internet community ๐Ÿ’… It does not specify an Internet standard of any kind. Distribution of this memo is unlimited ๐ŸŒˆ

Copyright (C) The Internet Society (2005).

Abstract ๐Ÿ’œ

so this doc lays out a list of questions that authors should be ready to answer when they propose a fix for multihoming with IPv6 โœจ The questions don't assume multihoming is the only problem anyone cares about, and they don't demand some giant all-in-one solution ๐Ÿ™ˆ

Table of Contents ๐Ÿ“š

   1. Introduction ....................................................3
      1.1. Reading this Document ......................................3
   2. On the Wire Behavior ............................................4
      2.1. How will your solution solve the multihoming problem? ......4
      2.2. At what layer is your solution applied, and how? ...........4
      2.3. Why is the layer you chose the correct one? ................4
      2.4. Does your solution address mobility? .......................4
      2.5. Does your solution expand the size of an IP packet? ........4
      2.6. Will your solution add additional latency? .................4
      2.7. Can multihoming capabilities be negotiated
           end-to-end during a ........................................4
      2.8. Do you change the way fragmenting is handled? ..............5
      2.9. Are there any layer 2 implications to your proposal? .......5
   3. Identifiers and Locators ........................................5
      3.1. Uniqueness .................................................5
      3.2. Does your solution provide for a split between
           identifiers and ............................................5
      3.3. What is the lifetime of a binding from an
           identifier to a locator? ...................................5
      3.4. How is the binding updated? ................................5
      3.5. How does a host know its identity? .........................5
      3.6. Can a host have multiple identifiers? ......................5
      3.7. If you have separate locators and identifiers, how
           will they be ...............................................5
      3.8. Does your solution create an alternate "DNS-like"
           service? ...................................................5
      3.9. Please describe authentication/authorization ...............6
      3.10. Is your mechanism hierarchical? ...........................6
      3.11. Middlebox interactions ....................................6
      3.12. Are there any implications for scoped addressing? .........6
   4. Routing System Interactions .....................................6
      4.1. Does your solution change existing aggregation methods? ....6
      4.2. Does the solution solve traffic engineering requirements? ..7
      4.3. Does the solution offer ways for the site to manage
           its traffic ................................................7
      4.4. If you introduce any new name spaces, do they
           require aggregation? .......................................7
      4.5. Does your solution interact with Autonomous System
           numbering? .................................................7
      4.6. Are there any changes to ICMP error semantics? .............7
   5. Name Service Interactions .......................................7
      5.1. Please explain the relationship of your solution to DNS ....7
      5.2. Please explain interactions with "2-faced" DNS .............7
      5.3. Does your solution require centralized registration? .......8
      5.4. Have you checked for DNS circular dependencies? ............8
      5.5. What if a DNS server itself is multihomed? .................8
      5.6. What additional load will be placed on DNS servers? ........8
      5.7. Any upstream provider support required? ....................8
      5.8. How do you debug connectivity? .............................8
   6. Application Concerns and Backward Compatibility .................8
      6.1. What application/API changes are needed? ...................8
      6.2. Is this solution backward compatible with "old" IP
           version 6? .................................................9
      6.3. Is your solution backward compatible with IPv4? ............9
      6.4. Can IPv4 devices take advantage of this solution? ..........9
      6.5. What is the impact of your solution on different
           types of sites? ............................................9
      6.6. How will your solution interact with other middleboxes? ...10
      6.7. Referrals .................................................10
      6.8. Demonstrate use with a real life complex application ......10
   7. Legal Concerns .................................................10
   8. Security Considerations ........................................10
   9. Acknowledgements ...............................................11
   10. References ....................................................11
      10.1. Normative References .....................................11
      10.2. Informative References ...................................11

1. Introduction ๐ŸŒธ

At the time of this writing, there are QUITE a few proposed solutions to multihoming inside IPv6 ๐ŸŒˆ and to related stuff like the locator/identifier split ๐Ÿ’…

This doc is full of question sets that try to keep these solutions focused on real operational problems ๐ŸŽฏ It does NOT suggest how to solve anything ๐Ÿ™…โ€โ™€๏ธ We just want to make sure that while fixing one problem, the medicine isn't worse than the cure ๐Ÿ’€ We care about practical operational problems that both single-homed and multihomed deployments might run into โœจ

The author is hoping that other solution authors will use this doc to spot gaps in their own solutions, and then team up to close them ๐Ÿซถ

1.1. Reading this Document ๐Ÿ“–

The questions are grouped along these lines:

  • changes to on the wire behavior;
  • routing system interactions;
  • identifier/mapping split;
  • application concerns and backward compatibility;
  • name service interactions;
  • legal concerns; and
  • security considerations.

Real talk, a lot of questions cut across all of these ๐Ÿ”€ Like, the identifier / locator split has big application implications, and every area has security considerations ๐Ÿ”

Unless it's blatantly obvious, each question comes with some reasoning for why it's being asked ๐Ÿง  Nobody is expected to answer every question perfectly ๐Ÿ™ˆ There are going to be tradeoffs, and the answers from each solution's designers should help the community see which tradeoffs we actually want to make ๐Ÿ’œ

It would be silly for people who already wrote detailed answers to have to redo all that work ๐Ÿ˜ญ So a simple reference to existing docs is enough, as long as the answer is complete. If it isn't complete, reference it and add whatever text is needed to finish the job โœจ

This doc assumes you're already familiar with RFC 3582 [2], and it doesn't try to repeat the requirements work gathered there ๐Ÿ“š

2. On the Wire Behavior ๐Ÿฆ‹

2.1. How will your solution solve the multihoming problem? ๐ŸŽ€

Scope out the problem you're trying to solve, and also say what you're NOT trying to solve ๐ŸŽฏ

2.2. At what layer is your solution applied, and how? ๐Ÿงฉ

Is it applied in every packet? If so, which fields get used? ๐Ÿ‘€

2.3. Why is the layer you chose the correct one? ๐Ÿฐ

Every layer has its benefits and tradeoffs ๐Ÿ’… For instance, transport layer solutions would require that EVERY transport be modified ๐Ÿ˜ฉ Meanwhile, IP layer solutions might mean expanding the packet or changing the pseudo-header, which would then mean changes to the transport layer too ๐ŸŒ€

2.4. Does your solution address mobility? ๐Ÿš—

If so, how are rendezvous handled? Can your solution deal with both locators changing at the same time? If yes, explain how. Should it? If not, how will your solution interact with MOBILEIP-V6 [3] (MIPv6)? ๐Ÿค”

2.5. Does your solution expand the size of an IP packet? ๐Ÿ“ฆ

Making an IP packet bigger can cause excessive fragmentation in some situations ๐Ÿ’€

2.6. Will your solution add additional latency? โฑ๏ธ

Latency matters a LOT for plenty of apps, voice included ๐Ÿ“ž Any big chunk of extra latency, including during session initiation, would be super undesirable ๐Ÿ™…โ€โ™€๏ธ

2.7. Can multihoming capabilities be negotiated end-to-end during a connection? ๐Ÿค

If the proposal adds overhead, can the info ride along on messages that are already being sent? ๐Ÿš€ That would help keep connection setup constant ๐Ÿ’– Please also call out any drawbacks that might come with that piggybacking ๐Ÿซฃ

2.8. Do you change the way fragmenting is handled? ๐Ÿงต

If you use a shim approach, do you fragment above or below the shim? ๐Ÿ”ช How are fragments identified so they can be put back together? ๐Ÿงฉ If you use any additional names, do they need to be associated with fragments? If not, why not? If so, how will that happen? ๐Ÿคจ

2.9. Are there any layer 2 implications to your proposal? ๐Ÿ”Œ

IPv6 has a simplified approach to layer 2, right? ๐Ÿ™ƒ Maybe you UNsimplified it though ๐Ÿ˜ญ If so, please give the details ๐Ÿ’…

3. Identifiers and Locators ๐Ÿงš

3.1. Uniqueness ๐Ÿ’Ž

3.2. Does your solution provide for a split between identifiers and locators? โœ‚๏ธ

3.3. What is the lifetime of a binding from an identifier to a locator? โณ

3.4. How is the binding updated? ๐Ÿ”„

Will transport connections stay up when new paths show up or when old ones disappear? ๐ŸŒŠ How does the end node find out about these events? ๐Ÿ‘€

3.5. How does a host know its identity? ๐Ÿชช

If you're establishing a brand-new identity, how does the host learn it? ๐ŸŒฑ

3.6. Can a host have multiple identifiers? ๐Ÿ‘ฏ

If so, how does an application pick which identity to use? ๐Ÿคทโ€โ™€๏ธ

3.7. If you have separate locators and identifiers, how will they be mapped? ๐Ÿ—บ๏ธ

Does the mapping work in both directions? ๐Ÿ” How would someone debugging a network figure out which end stations are involved? ๐Ÿ•ต๏ธโ€โ™€๏ธ

3.8. Does your solution create an alternate "DNS-like" service? ๐ŸŒ

If you use mechanisms other than DNS, first ask: why wasn't DNS appropriate? ๐Ÿค” Also, how will this other mechanism interact with DNS? And what are its scaling properties? ๐Ÿ“ˆ

3.9. Please describe authentication/authorization ๐Ÿ”‘

How are bindings authenticated and authorized? And what technology are you building on for this mechanism? ๐Ÿ›ก๏ธ

3.10. Is your mechanism hierarchical? ๐Ÿชœ

Please describe the hierarchical breakdown ๐Ÿงฑ

3.11. Middlebox interactions ๐Ÿ“ฆ

What are the implications for firewalls? What about interactions with Network Address Translation (NAT)? And with web caches? What complications does your solution introduce? For instance, are there implications for ingress filters? If so, what are they? ๐Ÿง

When you think about this question, there are really TWO issues ๐Ÿ‘‘ First, will middleboxes get in the way of your solution by rewriting headers somehow, like NATs do for IP addresses and web caches do at higher layers? ๐Ÿ™…โ€โ™€๏ธ Second, is there a way that middleboxes are actually PART of your solution? Like, are they required? ๐Ÿคฏ An example of that would be the Generalized Structure Element (GSE) (8+8) ๐Ÿซง


part 1 is a wrap ๐Ÿ’… part 2 is coming next, so stay tuned bestie ๐Ÿซถโœจ

3.12. Are there any implications for scoped addressing? ๐ŸŒธ

Okay, so the scoped addressing question. Go check RFC 3513 [1] first, bestie. Then tell me: how does your mechanism play with multicast? ๐Ÿฆ‹

How does your solution interact with link-local addressing? ๐Ÿงš

How does your solution interact with Son-Of-Sitelocal (whatever that will be)? ๐Ÿ’€

4. Routing System Interactions โœจ

4.1. Does your solution change existing aggregation methods? ๐Ÿ’…

Okay, the internet scales today because hosts and networks can get rolled up into a pretty small number of routing entries. That's iconic. So does your solution change how route aggregation happens? Be honest ๐Ÿ™ˆ

4.2. Does the solution solve traffic engineering requirements? ๐Ÿ”ฅ

One of the big goals of IPv4 multihoming solutions has been being able to do traffic engineering by tweaking BGP advertisements. But if the prefixes a site uses get aggregated (especially past the site's border), the site loses some of that control. Not ideal, not me ๐Ÿ˜ญ

4.3. Does the solution offer ways for the site to manage its traffic flows? ๐ŸŽ€

If it does, how? Can the site control this per host, or per site? Spill the tea ๐Ÿซถ

4.4. If you introduce any new name spaces, do they require aggregation? ๐ŸŒˆ

Is it desirable, or required, to introduce some kind of aggregation method so mapping information can be distributed at scale? ๐Ÿ’œ

4.5. Does your solution interact with Autonomous System numbering? ๐Ÿ‘‘

If your solution involves address prefixes distributed with BGP4+, does it touch how AS numbers get used? If yes, how? And will it need extra AS numbers? Ngl this is a lot of numbers ๐Ÿ”ข

4.6. Are there any changes to ICMP error semantics? โญ

Do you make up new codes? If you do, why, and what do they mean? And will a host that doesn't know about your scheme even see them? ๐Ÿ™ƒ

5. Name Service Interactions ๐Ÿงš

5.1. Please explain the relationship of your solution to DNS ๐ŸŒ

If your solution uses new names for identifiers, explain what mappings get defined and how they're performed. ๐Ÿ“

If there are extra administrative requirements, like new zones or RR types to manage, explain those too. ๐Ÿ“‹

5.2. Please explain interactions with "2-faced" DNS ๐Ÿชž

2-faced DNS is a trick so hosts behind a NAT get one address for internal hosts, and hosts outside the NAT get a different one. Similar mechanisms show up for application layer gateways, like SOCKS [5]. Iykyk ๐Ÿ’–

5.3. Does your solution require centralized registration? ๐Ÿ“ฎ

For instance, if you're using the DNS, what's the top level domain, and how does the name space spread out through it? ๐ŸŒ

And how is that centralized registration managed? ๐Ÿ—‚๏ธ

5.4. Have you checked for DNS circular dependencies? ๐Ÿ”

If you're using DNS in your solution, is it required for connectivity? What happens if the DNS fails? Can communication between the DNS resolver and the server use your solution? What about between the application and the resolver? Major dependency energy ๐Ÿ˜ฉ

5.5. What if a DNS server itself is multihomed? ๐Ÿ 

If a link fails or a service drops, how does that hit DNS? Again, are there any dependency loops? Maybe draw out your dependencies so you can actually see them ๐Ÿ–๏ธ

5.6. What additional load will be placed on DNS servers? ๐Ÿ“ˆ

Can the load get distributed? Remember DNS is optimized for READ operations. ๐Ÿ‘€

5.7. Any upstream provider support required? ๐Ÿ›ฐ๏ธ

If so, describe it. For example, reverse mappings are currently delegated down from upstream providers. How would that work with your solution? ๐Ÿค”

5.8. How do you debug connectivity? ๐Ÿ”

How would tools like ping and traceroute need to be enhanced? What other tools would be useful or necessary? For example, if there's an id/locator split, can you ping an identifier? If you can, what gets returned? ๐ŸŽฏ

6. Application Concerns and Backward Compatibility ๐Ÿ’œ

6.1. What application/API changes are needed? ๐Ÿ› ๏ธ

Will old code still work with the new mechanism? Like, what about code that uses gethostbyname()? Will getaddrinfo() need to change? What about other API calls? ๐Ÿ“ž

There are a few possible approaches here. A multihoming service could try to require no API changes at all. The catch is that IP addresses might turn into opaque blobs that work with the API but break operational assumptions applications make about addresses. Picture a web server that wants to log IP addresses. How's it supposed to do that? ๐Ÿ™ˆ

Another option is a compatibility library for legacy applications, plus a richer calling interface for transparency. โœจ

Yet another option is to only give the new functionality to applications that use a new calling interface. ๐ŸŽ

One useful exercise would be to provide code fragments that show any API changes. Show your work, bestie ๐Ÿ’…

6.2. Is this solution backward compatible with "old" IP version 6? ๐Ÿ”™

Can it be deployed incrementally? Please describe how. ๐Ÿš€

Does your solution put requirements on non-multihomed or non-mobile hosts? ๐Ÿ–ฅ๏ธ

What happens if someone plugs in a normal IPv6 node? ๐Ÿ”Œ

6.3. Is your solution backward compatible with IPv4? ๐ŸŒท

How will your mechanism interact with 6to4 gateways and IPv4 hosts? ๐ŸŒ‰

6.4. Can IPv4 devices take advantage of this solution? ๐Ÿช„

Can the same mechanism somehow be used on the existing network? Quick note: this is NOT a primary consideration, just maybe a side benefit of a particular solution. ๐ŸŽ€

6.5. What is the impact of your solution on different types of sites? ๐Ÿ˜๏ธ

What will the impact be on these kinds of systems?

  • single homed sites
  • small multihomed sites
  • large multihomed sites
  • ad-hoc sites
  • short lived connections (think aggregator wireless ISPs)

Especially think about ongoing administration, renumbering events, and mobile workforces. Big brain stuff ๐Ÿง 

6.6. How will your solution interact with other middleboxes? ๐Ÿ“ฆ

Tea please ๐Ÿต

6.7. Referrals ๐Ÿ”—

How will your solution handle referrals, like the ones in FTP or various conferencing or other peer to peer systems? ๐Ÿค

Referrals show up in lots of other protocols too, like so-called "peer to peer" applications. Referrals can suffer three types of failure:

  • firewall and NAT - Does it fail the same way FTP active mode does today with relatively simple firewalls?
  • time-based - Is there something ephemeral about the solution that could make a referral (like a URL) fail over time, more than what we have today?
  • location-based - If the binding varies based on where the parties are in the network, and one of them moves, will they be unable to find each other anymore? ๐Ÿ˜ฑ

6.8. Demonstrate use with a real life complex application ๐ŸŽฌ

Give a detailed walk-through of SIP + Real Time Streaming Protocol (SIP+RTSP) when one or more of the peers is multihomed. How does your analysis change when encrypted RTSP is used, or when SIP with S/MIME end-to-end (e2e) signalling is used? Main character homework ๐Ÿ“š

Are you introducing a namespace that might involve mnemonics? That could bring trademark concerns. If so, how do you plan to handle them? ๐Ÿท๏ธ

Are there any organizations required to manage a new name space? If so, describe what they are and how the method will scale. ๐Ÿข

8. Security Considerations ๐Ÿšจ

Okay, this part is SERIOUS, so pay attention ๐Ÿ˜ค

How secure should a multi6 solution be? This is a reasonable question for each solution to answer. The author opines that the worst case should be no worse than what we have today. For example, would a multi6 solution open up a host, on either end of a communication, to a time-based attack? Any such risks should be clearly stated by the authors. Considerable time should be spent on threat analysis. Please see [4] for more details. ๐Ÿ›ก๏ธ

As IP addresses can often be tied to individuals, are there any auditing or privacy concerns introduced by your solution? ๐Ÿ•ต๏ธโ€โ™€๏ธ

9. Acknowledgements ๐Ÿซถ

The author wishes to acknowledge everyone in the multi6 group and elsewhere who is putting forward proposals. Asking questions like the ones in this document is easy. Developing running code to answer them is a lot harder. Marcelo Bagnulo, Kurt Erik Lindqvist, Joe Touch, Patrik Faltstrom, Brian Carpenter, and Iljitsch van Beijnum provided input to this document. Thank you, legends ๐ŸŒŸ

10. References ๐Ÿ“š

10.1. Normative References

  • [1] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6) Addressing Architecture", RFC 3513, April 2003.
  • [2] Abley, J., Black, B., and V. Gill, "Goals for IPv6 Site-Multihoming Architectures", RFC 3582, August 2003.
  • [3] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in IPv6", RFC 3775, June 2004.
  • [4] Nordmark, E., "Threats Relating to IPv6 Multihoming Solutions", RFC 4218, October 2005.

10.2. Informative References

  • [5] Kitamura, H., "A SOCKS-based IPv6/IPv4 Gateway Mechanism", RFC 3089, April 2001.

Author's Address ๐Ÿ–Š๏ธ

Eliot Lear
Cisco Systems GmbH
Glatt-com, 2nd Floor
CH-8301 Glattzentrum ZH
Switzerland

EMail: lear@cisco.com

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property ๐Ÿ’Ž

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. Nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement ๐ŸŒท

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿ’–

๐Ÿ“ฆ where this page comes from