| < draft-sweet-uri-zoneid-00.txt | draft-sweet-uri-zoneid-01.txt > | |||
|---|---|---|---|---|
| Internet Engineering Task Force M. Sweet, Ed. | Internet Engineering Task Force M. Sweet, Ed. | |||
| Internet-Draft Apple Inc. | Internet-Draft Apple Inc. | |||
| Intended status: Standards Track B. Carpenter | Intended status: Informational November 22, 2013 | |||
| Expires: February 28, 2014 University of Auckland | Expires: May 26, 2014 | |||
| S. Cheshire | ||||
| Apple Inc. | ||||
| R. Hinden | ||||
| Check Point Software Technologies, Inc. | ||||
| August 27, 2013 | ||||
| Representing IPv6 Zone Identifiers in Address Literals and Uniform | An IPvFuture Syntax for IPv6 Link-Local Addresses | |||
| Resource Identifiers | draft-sweet-uri-zoneid-01 | |||
| draft-sweet-uri-zoneid-00 | ||||
| Abstract | Abstract | |||
| This document describes how the zone identifier of an IPv6 scoped | This document describes how the zone identifier of an IPv6 scoped | |||
| address, defined as <zone_id> in the IPv6 Scoped Address Architecture | address, defined as <zone_id> in the IPv6 Scoped Address Architecture | |||
| (RFC 4007), can be represented in a literal IPv6 address and in a | (RFC 4007), can be represented in a literal IPv6 address and in a | |||
| Uniform Resource Identifier that includes such a literal address. It | Uniform Resource Identifier that includes such a literal address. It | |||
| updates the URI Generic Syntax specification (RFC 3986) accordingly. | documents a long-standing usage of the IPvFuture extension point | |||
| provided in the Uniform Resource Identifier (URI) syntax | ||||
| specification [RFC3986]. | ||||
| [ Editor's note: This draft adds the IPvFuture format used by CUPS | [ Editor's note: This draft documents the IPvFuture format originally | |||
| since 2005, addresses some misconceptions of how zoneid's are not | defined in [LITERAL-ZONE] and used by CUPS since 2005. A separate, | |||
| useful to HTTP servers, and is intended to replace RFC 6874. ] | incompatible format was defined and published in RFC 6874. ] | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 28, 2014. | This Internet-Draft will expire on May 26, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Specification . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Specification . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Web Browsers . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. HTTP Requirements . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Security Consideration . . . . . . . . . . . . . . . . . . . 6 | 4. Security Consideration . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. Normative References . . . . . . . . . . . . . . . . . . 5 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 5.2. Informative References . . . . . . . . . . . . . . . . . 6 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 7 | Appendix A. Change History . . . . . . . . . . . . . . . . . . . 6 | |||
| Appendix A. Options Considered . . . . . . . . . . . . . . . . . 8 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| Appendix B. Change History . . . . . . . . . . . . . . . . . . . 9 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | ||||
| 1. Introduction | 1. Introduction | |||
| The Uniform Resource Identifier (URI) syntax specification [RFC3986] | The Uniform Resource Identifier (URI) syntax specification [RFC3986] | |||
| defined how a literal IPv6 address can be represented in the "host" | defines how a literal IPv6 address can be represented in the "host" | |||
| part of a URI. Two months later, the IPv6 Scoped Address | part of a URI. However, it does not define how zone identifiers (see | |||
| Architecture specification [RFC4007] extended the text representation | IPv6 Scoped Address Architecture specification [RFC4007]) are | |||
| of limited-scope IPv6 addresses such that a zone identifier may be | represented, which has lead to the development and deployment of two | |||
| concatenated to a literal address, for purposes described in that | incompatible URI syntax extensions. The first syntax, "A Format for | |||
| specification. Zone identifiers are especially useful in contexts in | IPv6 Scope Zone Identifiers in Literal URIs" [LITERAL-ZONE], was | |||
| which literal addresses are typically used, for example, during fault | originally proposed in 2005 and used the IPvFuture rule that was | |||
| diagnosis, when it may be essential to specify which interface is | defined for future address extensions in URIs. While this draft was | |||
| used for sending to a link-local address. It should be noted that | ultimately never published, the syntax was adopted by the CUPS [CUPS] | |||
| zone identifiers have purely local meaning within the node in which | software in 2005 and is now widely deployed in clients and printers. | |||
| they are defined, often being the same as IPv6 interface names. They | The second syntax, "Representing IPv6 Zone Identifiers in Address | |||
| are completely meaningless for any other node. Today, they are | Literals and Uniform Resource Identifiers" [RFC6874], was published | |||
| meaningful only when attached to addresses with less than global | in February 2013 and incompatibly extends the URI syntax with a new | |||
| scope, but it is possible that other uses might be defined in the | IPv6addrz rule. This document describes the first syntax and | |||
| future. | provides additional implementation guidelines for its use. | |||
| The IPv6 Scoped Address Architecture specification [RFC4007] does not | ||||
| specify how zone identifiers are to be represented in URIs. | ||||
| Practical experience has shown that this feature is useful, in | ||||
| particular when using a web browser for debugging with link-local | ||||
| addresses, but because it is undefined, it is not implemented | ||||
| consistently in URI parsers or in browsers. | ||||
| Some versions of some browsers directly accept the IPv6 Scoped | ||||
| Address syntax [RFC4007] for scoped IPv6 addresses embedded in URIs, | ||||
| i.e., they have been coded to interpret a "%" sign following the | ||||
| literal address as introducing a zone identifier [RFC4007], instead | ||||
| of introducing two hexadecimal characters representing some percent- | ||||
| encoded octet [RFC3986]. Clearly, interpreting the "%" sign as | ||||
| introducing a zone identifier is very convenient for users, although | ||||
| it formally breaches the established URI syntax [RFC3986]. This | ||||
| document defines an alternative approach that respects and extends | ||||
| the rules of URI syntax, and IPv6 literals in general, to be | ||||
| consistent. | ||||
| Thus, this document updates the URI syntax specification [RFC3986] by | ||||
| adding two syntaxes that allow a zone identifier to be included in a | ||||
| literal IPv6 address within a URI. The first extends the ABNF | ||||
| [RFC5234] syntax to allow for a direct inclusion of the zone ID while | ||||
| the second is backwards-compatible with the original syntax defined | ||||
| in RFC 3986. | ||||
| It should be noted that in contexts other than a user interface, a | ||||
| zone identifier is mapped into a numeric zone index or interface | ||||
| number. The MIB textual convention InetZoneIndex [RFC4001] and the | ||||
| socket interface [RFC3493] define this as a 32-bit unsigned integer. | ||||
| The mapping between the human-readable zone identifier string and the | ||||
| numeric value is a host-specific function that varies between | ||||
| operating systems. The present document is concerned only with the | ||||
| human-readable string. | ||||
| Several alternative solutions were considered while this document was | [ Editor's note: Would it be appropriate to provide adoption numbers | |||
| developed. Appendix A briefly describes the various options and | here (hundreds of millions of devices)? ] | |||
| their advantages and disadvantages. | ||||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in "Key words for use in | document are to be interpreted as described in "Key words for use in | |||
| RFCs to Indicate Requirement Levels" [RFC2119]. | RFCs to Indicate Requirement Levels" [RFC2119]. | |||
| 2. Specification | 2. Specification | |||
| skipping to change at page 4, line 25 ¶ | skipping to change at page 3, line 32 ¶ | |||
| be percent-encoded and represented in the form "%25". Thus, the | be percent-encoded and represented in the form "%25". Thus, the | |||
| scoped address fe80::a%en1 would appear in a URI as http:// | scoped address fe80::a%en1 would appear in a URI as http:// | |||
| [fe80::a%25en1]. | [fe80::a%25en1]. | |||
| However, since parsers based on the ABNF [RFC5234] in the URI syntax | However, since parsers based on the ABNF [RFC5234] in the URI syntax | |||
| specification [RFC3986] will not allow a URI of that form, an | specification [RFC3986] will not allow a URI of that form, an | |||
| alternate format based on the IPvFuture rule [LITERAL-ZONE] can be | alternate format based on the IPvFuture rule [LITERAL-ZONE] can be | |||
| used where the address is prefixed with "v1." and the "+" character | used where the address is prefixed with "v1." and the "+" character | |||
| is used as the separator between the address and <zone_id>. Thus, | is used as the separator between the address and <zone_id>. Thus, | |||
| the alternate form of the scoped address fe80::a%en1 would appear in | the alternate form of the scoped address fe80::a%en1 would appear in | |||
| a URI as http://[v1.fe80::a+en1]. Note: This format, originally | a URI as http://[v1.fe80::a+en1]. | |||
| proposed in 2005, was adopted by CUPS [CUPS] and has subsequently | ||||
| become widely implemented for printing. | ||||
| [ Editor's note: Would it be appropriate to provide adoption numbers | ||||
| here (hundreds of millions of devices)? ] | ||||
| A <zone_id> SHOULD contain only ASCII characters classified as | A <zone_id> SHOULD contain only ASCII characters classified as | |||
| "unreserved" for use in URIs [RFC3986]. This excludes characters | "unreserved" for use in URIs [RFC3986]. This excludes characters | |||
| such as "]" or even "%" that would complicate parsing. However, the | such as "]" or even "%" that would complicate parsing. However, the | |||
| syntax described below does allow such characters to be percent- | syntax described below does allow such characters to be percent- | |||
| encoded, for compatibility with existing devices that use them. | encoded, for compatibility with existing devices that use them. | |||
| If an operating system uses any other characters in zone or interface | If an operating system uses any other characters in zone or interface | |||
| identifiers that are not in the "unreserved" character set, they MUST | identifiers that are not in the "unreserved" character set, they MUST | |||
| be represented using percent encoding [RFC3986]. | be represented using percent encoding [RFC3986]. | |||
| skipping to change at page 5, line 8 ¶ | skipping to change at page 4, line 8 ¶ | |||
| literal format in ABNF [RFC5234] by the following rule: | literal format in ABNF [RFC5234] by the following rule: | |||
| IP-literal = "[" ( IPv6address / IPvFuture ) "]" | IP-literal = "[" ( IPv6address / IPvFuture ) "]" | |||
| To provide support for a zone identifier, the existing syntax of | To provide support for a zone identifier, the existing syntax of | |||
| IPv6address is retained, and a zone identifier may be added | IPv6address is retained, and a zone identifier may be added | |||
| optionally to any literal address. This syntax allows flexibility | optionally to any literal address. This syntax allows flexibility | |||
| for unknown future uses. The rule quoted above from the previous URI | for unknown future uses. The rule quoted above from the previous URI | |||
| syntax specification [RFC3986] is replaced by three rules: | syntax specification [RFC3986] is replaced by three rules: | |||
| IP-literal = "[" ( IPv6address / IPv6addrz / IPvFuture ) "]" | IP-literal = "[" ( IPv6address / IPvFuture / | |||
| "v1." IPv6address "+" ZoneID ) "]" | ||||
| ZoneID = 1*( unreserved / pct-encoded ) | ZoneID = 1*( unreserved / pct-encoded ) | |||
| IPv6addrz = IPv6address "%25" ZoneID / "v1." IPv6address "+" ZoneID | ||||
| This syntax fills the gap that is described at the end of | This syntax fills the gap that is described at the end of | |||
| Section 11.7 of the IPv6 Scoped Address Architecture specification | Section 11.7 of the IPv6 Scoped Address Architecture specification | |||
| [RFC4007]. | [RFC4007]. | |||
| The established rules for textual representation of IPv6 addresses | The established rules for textual representation of IPv6 addresses | |||
| [RFC5952] SHOULD be applied in producing URIs. | [RFC5952] SHOULD be applied in producing URIs. | |||
| The URI syntax specification [RFC3986] states that URIs have a global | The URI syntax specification [RFC3986] states that URIs have a global | |||
| scope, but that in some cases their interpretation depends on the | scope, but that in some cases their interpretation depends on the | |||
| end-user's context. URIs including a ZoneID are to be interpreted | end-user's context. URIs including a ZoneID are to be interpreted | |||
| only in the context of the host at which they originate, since the | only in the context of the host at which they originate, since the | |||
| ZoneID is of local significance only. | ZoneID is of local significance only. | |||
| The IPv6 Scoped Address Architecture specification [RFC4007] offers | The IPv6 Scoped Address Architecture specification [RFC4007] offers | |||
| guidance on how the ZoneID affects interface/address selection inside | guidance on how the ZoneID affects interface/address selection inside | |||
| the IPv6 stack. Note that the behaviour of an IPv6 stack, if it is | the IPv6 stack. Note that the behaviour of an IPv6 stack, if it is | |||
| passed a non-null zone index for an address other than link-local, is | passed a non-null zone index for an address other than link-local, is | |||
| undefined. | undefined. | |||
| 3. Web Browsers | 3. HTTP Requirements | |||
| This section discusses how web browsers might handle this syntax | ||||
| extension. Unfortunately, there is no formal distinction between the | ||||
| syntax allowed in a browser's input dialogue box and the syntax | ||||
| allowed in URIs. For this reason, no normative statements are made | ||||
| in this section. | ||||
| Due to the lack of defined syntax, web browsers have been | ||||
| inconsistent in providing for ZoneIDs. Many have no support, but | ||||
| there are examples of ad hoc support. For example, some versions of | ||||
| Firefox allowed the use of a ZoneID preceded by a bare "%" character, | ||||
| but this feature was removed for consistency with established syntax | ||||
| [RFC3986]. As another example, some versions of Internet Explorer | ||||
| allow use of a ZoneID preceded by a "%" character encoded as "%25", | ||||
| still beyond the syntax allowed by the established rules [RFC3986]. | ||||
| This syntax extension is in fact used internally in the Windows | ||||
| operating system and some of its APIs. | ||||
| It is desirable for all browsers to recognise a ZoneID preceded by a | ||||
| percent-encoded "%". In the spirit of "be liberal with what you | ||||
| accept", we also suggest that URI parsers accept bare "%" signs when | ||||
| possible (i.e., a "%" not followed by two valid and meaningful | ||||
| hexadecimal characters). This would make it possible for a user to | ||||
| copy and paste a string such as "fe80::a%en1" from the output of a | ||||
| "ping" command and have it work. On the other hand, "%ee1" would | ||||
| need to be manually rewritten to "fe80::a%25ee1" to avoid any risk of | ||||
| misinterpretation. | ||||
| Such bare "%" signs are for user interface convenience, and need to | The Hypertext Transfer Protocol -- HTTP/1.1 [RFC2616] requires the | |||
| be turned into properly encoded characters (where "%25" encodes "%") | client to supply the host and URI used to access the server. While a | |||
| before the URI is used in any protocol or HTML document. And while | ZoneID is only significant to the HTTP client, many HTTP server | |||
| URIs including a ZoneID have no meaning outside the originating node, | solutions, including IPP [RFC2911], generate absolute URIs to server- | |||
| the address values can be used to construct subsequent valid URIs on | resident resources in response to a client's request. If the | |||
| behalf of the originating node. It is therefore highly desirable for | client's ZoneID is not sent to the server, the server will not be | |||
| a browser to retain the ZoneID in any URI included in an HTTP | able to provide absolute URIs that can be directly used by the | |||
| request. | client. However, the server cannot use the provided ZoneID for any | |||
| local address comparisons since the client and server likely have | ||||
| different ZoneID's for the same IPv6 link-local address. | ||||
| [ Editor's note: Reworded the previous paragraph from RFC 6874 to | HTTP clients SHOULD include the client-specific ZoneID in the HTTP | |||
| indicate a preference for including the ZoneID. ] | Host: header and (if applicable) the HTTP Request-URI. | |||
| The normal diagnostic usage for the ZoneID syntax will cause it to be | HTTP servers MUST support Host: and Request-URI values containing | |||
| entered in the browser's input dialogue box. Thus, URIs including a | client-specific ZoneID's, MUST use the full address (including | |||
| ZoneID are unlikely to be encountered in HTML documents. However, if | ZoneID) when generating absolute URIs for a response to the client, | |||
| they do (for example, in a diagnostic script coded in HTML), it would | and MUST NOT use the ZoneID in any local (server) address | |||
| be appropriate to treat them exactly as above. | comparisons. | |||
| 4. Security Consideration | 4. Security Consideration | |||
| The security considerations from the URI syntax specification | The security considerations from the URI syntax specification | |||
| [RFC3986] and the IPv6 Scoped Address Architecture specification | [RFC3986] and the IPv6 Scoped Address Architecture specification | |||
| [RFC4007] apply. In particular, this URI format creates a specific | [RFC4007] apply. In particular, this URI format creates a specific | |||
| pathway by which a deceitful zone index might be communicated, as | pathway by which a deceitful zone index might be communicated, as | |||
| mentioned in the final security consideration of the Scoped Address | mentioned in the final security consideration of the Scoped Address | |||
| Architecture specification. It is emphasised that the format is | Architecture specification. It is emphasised that the format is | |||
| intended only for debugging purposes, but of course this intention | intended only for local access purposes, but of course this intention | |||
| does not prevent misuse. | does not prevent misuse. | |||
| To limit this risk, implementations MUST NOT allow use of this format | To limit this risk, implementations MUST NOT allow use of this format | |||
| except for well-defined usages, such as sending to link-local | except for well-defined usages, such as sending to link-local | |||
| addresses under prefix fe80::/10. At the time of writing, this is | addresses under prefix fe80::/10. At the time of writing, this is | |||
| the only well-defined usage known. | the only well-defined usage known. | |||
| An HTTP client, proxy, or other intermediary MUST NOT remove any | 5. References | |||
| ZoneID attached to an outgoing URI so that URIs generated by the | ||||
| receiving host for the sending host retain the sending host's ZoneID | ||||
| information | ||||
| [ Editor's note: The previous paragraph has the opposite conformance | ||||
| requirement from RFC 6874. ] | ||||
| 5. Acknowledgements | ||||
| The lack of this format was first pointed out by Margaret Wasserman | ||||
| some years ago, and more recently by Kerry Lynn. A previous draft | ||||
| document by Martin Duerst and Bill Fenner [LITERAL-ZONE] discussed | ||||
| this topic but was not finalised. | ||||
| Valuable comments and contributions were made by Karl Auer, Carsten | ||||
| Bormann, Benoit Claise, Stephen Farrell, Brian Haberman, Ted Hardie, | ||||
| Tatuya Jinmei, Yves Lafon, Barry Leiba, Radia Perlman, Tom Petch, | ||||
| Tomoyuki Sahara, Juergen Schoenwaelder, Dave Thaler, Martin Thomson, | ||||
| and Ole Troan. | ||||
| Brian Carpenter was a visitor at the Computer Laboratory, Cambridge | ||||
| University during part of this work. | ||||
| 6. References | ||||
| 6.1. Normative References | 5.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | ||||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | ||||
| Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | ||||
| [RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S., and P. | ||||
| Powell, "Internet Printing Protocol/1.1: Model and | ||||
| Semantics", RFC 2911, September 2000. | ||||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, RFC | Resource Identifier (URI): Generic Syntax", STD 66, RFC | |||
| 3986, January 2005. | 3986, January 2005. | |||
| [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and | [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and | |||
| B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | |||
| March 2005. | March 2005. | |||
| [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
| [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | |||
| Address Text Representation", RFC 5952, August 2010. | Address Text Representation", RFC 5952, August 2010. | |||
| 6.2. Informative References | 5.2. Informative References | |||
| [CUPS] Sweet, M., "CUPS software", October 2005. | [CUPS] Sweet, M., "CUPS software", October 2005. | |||
| [LITERAL-ZONE] | [LITERAL-ZONE] | |||
| Fenner, B. and M. Duerst, "A Format for IPv6 Scope Zone | Fenner, B. and M. Duerst, "A Format for IPv6 Scope Zone | |||
| Identifiers in Literal URIs", October 2005. | Identifiers in Literal URIs", October 2005. | |||
| [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. | [RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. | |||
| Stevens, "Basic Socket Interface Extensions for IPv6", RFC | Stevens, "Basic Socket Interface Extensions for IPv6", RFC | |||
| 3493, February 2003. | 3493, February 2003. | |||
| [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. | [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. | |||
| Schoenwaelder, "Textual Conventions for Internet Network | Schoenwaelder, "Textual Conventions for Internet Network | |||
| Addresses", RFC 4001, February 2005. | Addresses", RFC 4001, February 2005. | |||
| Appendix A. Options Considered | [RFC6874] Carpenter, B., Cheshire, S., and R. Hinden, "Representing | |||
| IPv6 Zone Identifiers in Address Literals and Uniform | ||||
| The syntax defined above allows a ZoneID to be added to any IPv6 | Resource Identifiers", RFC 6874, February 2013. | |||
| address. The 6man WG discussed and rejected an alternative in which | ||||
| the existing syntax of IPv6address would be extended by an option to | ||||
| add the ZoneID only for the case of link-local addresses. It was | ||||
| felt that the solution presented in this document offers more | ||||
| flexibility for future uses and is more straightforward to implement. | ||||
| The various syntax options considered are now briefly described. | ||||
| [ Editor's note: I reversed items 4 and 5 from RFC 6874 and adjusted | ||||
| the example to match the alternate syntax used in CUPS. ] | ||||
| 1. Leave the problem unsolved. | ||||
| This would mean that per-interface diagnostics would still have to | ||||
| be performed using ping or ping6: | ||||
| ping fe80::a%en1 | ||||
| Advantage: works today. | ||||
| Disadvantage: less convenient than using a browser. | ||||
| 2. Simply use the percent character: | ||||
| http://[fe80::a%en1] | ||||
| Advantage: allows use of browser; allows cut and paste. | ||||
| Disadvantage: invalid syntax under RFC 3986; not acceptable to URI | ||||
| community. | ||||
| 3. Simply use an alternative separator: | ||||
| http://[fe80::a-en1] | ||||
| Advantage: allows use of browser; simple syntax. | ||||
| Disadvantage: Requires all IPv6 address literal parsers and | ||||
| generators to be updated in order to allow simple cut and paste; | ||||
| inconsistent with existing tools and practice. | ||||
| Note: The initial proposal for this choice was to use an | ||||
| underscore as the separator, but it was noted that this becomes | ||||
| effectively invisible when a user interface automatically | ||||
| underlines URLs. | ||||
| 4. Retain the percent character already specified for introducing | ||||
| zone identifiers for IPv6 Scoped Addresses [RFC4007], and then | ||||
| percent-encode it when it appears in a URI, according to the | ||||
| already-established URI syntax rules [RFC 3986]: | ||||
| http://[fe80::a%25en1] | ||||
| Advantage: allows use of browser; consistent with general URI | ||||
| syntax. | ||||
| Disadvantage: somewhat ugly and confusing; doesn't allow simple | Appendix A. Change History | |||
| cut and paste. | ||||
| This is the primary format chosen for standardization. | [ RFC Editor: This section to be deleted before RFC publication ] | |||
| 5. Simply use the "IPvFuture" syntax left open in RFC 3986: | November 22, 2013 - draft-sweet-uri-zoneid-01 | |||
| http://[v1.fe80::a+en1] | o Changed to informative draft to document what CUPS has been using | |||
| since 2005. | ||||
| Advantage: allows use of browser, compatible with RFC 3986-based | o Section 1: Rewritten to document the two incompatible syntaxes. | |||
| URI parsers. | ||||
| Disadvantage: ugly; doesn't allow simple cut and paste. | o Section 2: Dropped 6874 syntax and added the v1. syntax to the | |||
| main address rule. | ||||
| This is the alternate format chosen for standardization. | o Section 3: Changed to HTTP Requirements, explained why this is | |||
| necessary, provided conformance requirements. | ||||
| Appendix B. Change History | o Section 4: Cleaned up now that we are no longer obsoleting 6874. | |||
| [ RFC Editor: This section to be deleted before RFC publication ] | o Deleted unused sections/appendices | |||
| August 27, 2013 - draft-sweet-uri-zoneid-00 | August 27, 2013 - draft-sweet-uri-zoneid-00 | |||
| [ Changes are from published RFC 6874 text ] | [ Changes are from published RFC 6874 text ] | |||
| o Abstract: Added editor's note explaining why we need to update RFC | o Abstract: Added editor's note explaining why we need to update RFC | |||
| 6874 | 6874 | |||
| o Section 1: Update to talk about having two formats. | o Section 1: Update to talk about having two formats. | |||
| o Section 2: Provide example and define IPvFuture format as an | o Section 2: Provide example and define IPvFuture format as an | |||
| alternate, RFC 3986-compatible encoding. | alternate, RFC 3986-compatible encoding. | |||
| o Section 3: Reword to encourage browsers to retain the ZoneID as an | o Section 3: Reword to encourage browsers to retain the ZoneID as an | |||
| aid for getting usable server-generated URIs. | aid for getting usable server-generated URIs. | |||
| o Section 4: Change conformance to MUST NOT remove ZoneID. | o Section 4: Change conformance to MUST NOT remove ZoneID. | |||
| o Section 6.2: Add reference to CUPS. | o Section 6.2: Add reference to CUPS. | |||
| o Appendix A: Put the IPvFuture example at the end, make it match | o Appendix A: Put the IPvFuture example at the end, make it match | |||
| the correct IPvFuture format, and note it at the alternate syntax. | the correct IPvFuture format, and note it at the alternate syntax. | |||
| Authors' Addresses | Author's Address | |||
| Michael Sweet (editor) | Michael Sweet (editor) | |||
| Apple Inc. | Apple Inc. | |||
| 1 Infinite Loop | 1 Infinite Loop | |||
| Cupertino, California 95014 | Cupertino, California 95014 | |||
| United States | United States | |||
| Email: msweet@apple.com | Email: msweet@apple.com | |||
| Brian Carpenter | ||||
| University of Auckland | ||||
| Department of Computer Science | ||||
| Auckland, PB 92019 1142 | ||||
| New Zealand | ||||
| Email: brian.e.carpenter@gmail.com | ||||
| Stuart Cheshire | ||||
| Apple Inc. | ||||
| 1 Infinite Loop | ||||
| Cupertino, California 95014 | ||||
| United States | ||||
| Email: cheshire@apple.com | ||||
| Robert M. Hinden | ||||
| Check Point Software Technologies, Inc. | ||||
| 800 Bridge Parkway | ||||
| Redwood City, California 94065 | ||||
| United States | ||||
| Email: bob.hinden@gmail.com | ||||
| End of changes. 34 change blocks. | ||||
| 229 lines changed or deleted | 85 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||