draft-ietf-6man-text-addr-representation-04.txt | draft-ietf-6man-text-addr-representation-07.txt | |||
---|---|---|---|---|
IPv6 Maintenance Working Group S. Kawamura | IPv6 Maintenance Working Group S. Kawamura | |||
Internet-Draft NEC BIGLOBE, Ltd. | Internet-Draft NEC BIGLOBE, Ltd. | |||
Intended status: Standards Track M. Kawashima | Updates: 4291 (if approved) M. Kawashima | |||
Expires: July 18, 2010 NEC AccessTechnica, Ltd. | Intended status: Standards Track NEC AccessTechnica, Ltd. | |||
January 14, 2010 | Expires: August 29, 2010 February 25, 2010 | |||
A Recommendation for IPv6 Address Text Representation | A Recommendation for IPv6 Address Text Representation | |||
draft-ietf-6man-text-addr-representation-04 | draft-ietf-6man-text-addr-representation-07 | |||
Abstract | Abstract | |||
As IPv6 network grows, there will be more engineers and also non- | As IPv6 deployment increases there will be a dramatic increase in the | |||
engineers who will have the need to use an IPv6 address in text. | need to use IPv6 addresses in text. While the IPv6 address | |||
While the IPv6 address architecture RFC 4291 section 2.2 depicts a | architecture in RFC 4291 section 2.2 describes a flexible model for | |||
flexible model for text representation of an IPv6 address, this | text representation of an IPv6 address this flexibility has been | |||
flexibility has been causing problems for operators, system | causing problems for operators, system engineers, and users. This | |||
engineers, and users. This document will describe the problems that | document defines a canonical textual representation format. It does | |||
a flexible text representation has been causing. This document also | not define a format for internal storage, such as within an | |||
recommends a canonical representation format that best avoids | application or database. It is expected that the canonical format is | |||
confusion. It is expected that the canonical format is followed by | followed by humans and systems when representing IPv6 addresses as | |||
humans and systems when representing IPv6 addresses as text, but all | text, but all implementations must accept and be able to handle any | |||
implementations must accept and be able to handle any legitimate | legitimate RFC 4291 format. | |||
RFC4291 format. | ||||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF 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), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 1, line 48 | skipping to change at page 1, line 47 | |||
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." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on July 18, 2010. | This Internet-Draft will expire on August 29, 2010. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 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 | |||
skipping to change at page 3, line 10 | skipping to change at page 3, line 43 | |||
3.4.3. Legibility . . . . . . . . . . . . . . . . . . . . . . 9 | 3.4.3. Legibility . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4. A Recommendation for IPv6 Text Representation . . . . . . . . 9 | 4. A Recommendation for IPv6 Text Representation . . . . . . . . 9 | |||
4.1. Handling Leading Zeros in a 16 Bit Field . . . . . . . . . 10 | 4.1. Handling Leading Zeros in a 16 Bit Field . . . . . . . . . 10 | |||
4.2. "::" Usage . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. "::" Usage . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.2.1. Shorten As Much As Possible . . . . . . . . . . . . . 10 | 4.2.1. Shorten As Much As Possible . . . . . . . . . . . . . 10 | |||
4.2.2. Handling One 16 Bit 0 Field . . . . . . . . . . . . . 10 | 4.2.2. Handling One 16 Bit 0 Field . . . . . . . . . . . . . 10 | |||
4.2.3. Choice in Placement of "::" . . . . . . . . . . . . . 10 | 4.2.3. Choice in Placement of "::" . . . . . . . . . . . . . 10 | |||
4.3. Lower Case . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.3. Lower Case . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5. Text Representation of Special Addresses . . . . . . . . . . . 10 | 5. Text Representation of Special Addresses . . . . . . . . . . . 10 | |||
6. Notes on Combining IPv6 Addresses with Port Numbers . . . . . 11 | 6. Notes on Combining IPv6 Addresses with Port Numbers . . . . . 11 | |||
7. Prefix Representation . . . . . . . . . . . . . . . . . . . . 11 | 7. Prefix Representation . . . . . . . . . . . . . . . . . . . . 12 | |||
8. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . . 13 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 13 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . . 13 | ||||
Appendix A. For Developers . . . . . . . . . . . . . . . . . . . 13 | Appendix A. For Developers . . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
1. Introduction | 1. Introduction | |||
A single IPv6 address can be text represented in many ways. Examples | A single IPv6 address can be text represented in many ways. Examples | |||
are shown below. | are shown below. | |||
2001:db8:0:0:1:0:0:1 | 2001:db8:0:0:1:0:0:1 | |||
skipping to change at page 4, line 26 | skipping to change at page 4, line 26 | |||
2001:db8::0:1:0:0:1 | 2001:db8::0:1:0:0:1 | |||
2001:0db8::1:0:0:1 | 2001:0db8::1:0:0:1 | |||
2001:db8:0:0:1::1 | 2001:db8:0:0:1::1 | |||
2001:db8:0000:0:1::1 | 2001:db8:0000:0:1::1 | |||
2001:DB8:0:0:1::1 | 2001:DB8:0:0:1::1 | |||
All the above point to the same IPv6 address. This flexibility has | All of the above examples represent the same IPv6 address. This | |||
caused many problems for operators, systems engineers, and customers. | flexibility has caused many problems for operators, systems | |||
The problems will be noted in Section 3. Also, a canonical | engineers, and customers. The problems are noted in Section 3. | |||
representation format to avoid problems will be introduced in | Also, a canonical representation format to avoid problems is | |||
Section 4. | introduced in Section 4. | |||
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 [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
2. Text Representation Flexibility of RFC4291 | 2. Text Representation Flexibility of RFC4291 | |||
Examples of flexibility in Section 2.2 of [RFC4291] are described | Examples of flexibility in Section 2.2 of [RFC4291] are described | |||
below. | below. | |||
2.1. Leading Zeros in a 16 Bit Field | 2.1. Leading Zeros in a 16 Bit Field | |||
'It is not necessary to write the leading zeros in an individual | 'It is not necessary to write the leading zeros in an individual | |||
field.' | field.' | |||
In other words, it is also not necessary to omit leading zeros. This | Conversely it is also not necessary to omit leading zeros. This | |||
means that, it is possible to select from such as the following | means that, it is possible to select from such as the following | |||
example. The final 16 bit field is different, but all these | example. The final 16 bit field is different, but all these | |||
addresses mean the same. | addresses represent the same address. | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001 | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001 | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:001 | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:001 | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:01 | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:01 | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 | |||
2.2. Zero Compression | 2.2. Zero Compression | |||
skipping to change at page 5, line 25 | skipping to change at page 5, line 25 | |||
'A special syntax is available to compress the zeros. The use of | 'A special syntax is available to compress the zeros. The use of | |||
"::" indicates one or more groups of 16 bits of zeros.' | "::" indicates one or more groups of 16 bits of zeros.' | |||
It is possible to select whether or not to omit just one 16 bits of | It is possible to select whether or not to omit just one 16 bits of | |||
zeros. | zeros. | |||
2001:db8:aaaa:bbbb:cccc:dddd::1 | 2001:db8:aaaa:bbbb:cccc:dddd::1 | |||
2001:db8:aaaa:bbbb:cccc:dddd:0:1 | 2001:db8:aaaa:bbbb:cccc:dddd:0:1 | |||
In case where there are more than one zero fields, there is a choice | In case where there is more than one zero fields, there is a choice | |||
of how many fields can be shortened. Examples follow. | of how many fields can be shortened. | |||
2001:db8:0:0:0::1 | 2001:db8:0:0:0::1 | |||
2001:db8:0:0::1 | 2001:db8:0:0::1 | |||
2001:db8:0::1 | 2001:db8:0::1 | |||
2001:db8::1 | 2001:db8::1 | |||
In addition, [RFC4291] in section 2.2 notes, | In addition, [RFC4291] in section 2.2 notes, | |||
'The "::" can only appear once in an address.' | 'The "::" can only appear once in an address.' | |||
This gives a choice on where, in a single address to compress the | This gives a choice on where in a single address to compress the | |||
zero. Examples are shown below. | zero. | |||
2001:db8::aaaa:0:0:1 | 2001:db8::aaaa:0:0:1 | |||
2001:db8:0:0:aaaa::1 | 2001:db8:0:0:aaaa::1 | |||
2.3. Uppercase or Lowercase | 2.3. Uppercase or Lowercase | |||
[RFC4291] does not mention about preference of uppercase or | [RFC4291] does not mention any preference of uppercase or lowercase. | |||
lowercase. Various flavors are shown below. | ||||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:aaaa | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:aaaa | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:AAAA | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AAAA | |||
2001:db8:aaaa:bbbb:cccc:dddd:eeee:AaAa | 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AaAa | |||
3. Problems Encountered with the Flexible Model | 3. Problems Encountered with the Flexible Model | |||
3.1. Searching | 3.1. Searching | |||
skipping to change at page 6, line 50 | skipping to change at page 6, line 50 | |||
being done to see if it was not in use. This may cause problems to | being done to see if it was not in use. This may cause problems to | |||
the end-hosts or end-users. This type of address management is very | the end-hosts or end-users. This type of address management is very | |||
often seen in enterprise networks and also in ISPs. | often seen in enterprise networks and also in ISPs. | |||
3.1.3. Searching with Whois | 3.1.3. Searching with Whois | |||
The "whois" utility is used by a wide range of people today. When a | The "whois" utility is used by a wide range of people today. When a | |||
record is set to a database, one will likely check the output to see | record is set to a database, one will likely check the output to see | |||
if the entry is correct. If an entity was recorded as 2001:db8::/48, | if the entry is correct. If an entity was recorded as 2001:db8::/48, | |||
but the whois output showed 2001:0db8:0000::/48, most non-engineers | but the whois output showed 2001:0db8:0000::/48, most non-engineers | |||
would think that their input was wrong, and will likely retry several | would think that their input was wrong and will likely retry several | |||
times or make a frustrated call to the database hostmaster. If there | times or make a frustrated call to the database hostmaster. If there | |||
was a need to register the same address on different systems, and | was a need to register the same address on different systems, and | |||
each system showed a different text representation, this would | each system showed a different text representation, this would | |||
confuse people even more. Although this document focuses on | confuse people even more. Although this document focuses on | |||
addresses rather than prefixes, this is worth mentioning since | addresses rather than prefixes, this is worth mentioning since the | |||
problems encountered are mostly equal. | problems encountered are mostly equal. | |||
3.1.4. Searching for an Address in a Network Diagram | 3.1.4. Searching for an Address in a Network Diagram | |||
Network diagrams and blue-prints contain IP addresses as allocated to | Network diagrams and blueprints often show what IP addresses are | |||
system devices. In times of trouble shooting, there may be a need to | assigned to a system devices. In times of trouble shooting there may | |||
search through a diagram to find the point of failure (for example, | be a need to search through a diagram to find the point of failure | |||
if a traceroute stopped at 2001:db8::1, one would search the diagram | (for example, if a traceroute stopped at 2001:db8::1, one would | |||
for that address). This is a technique quite often in use in | search the diagram for that address). This is a technique quite | |||
enterprise networks and managed services. Again, the different | often in use in enterprise networks and managed services. Again, the | |||
flavors of text representation will result in a time-consuming | different flavors of text representation will result in a time- | |||
search, leading to longer MTTR in times of trouble. | consuming search leading to longer MTTR in times of trouble. | |||
3.2. Parsing and Modifying | 3.2. Parsing and Modifying | |||
3.2.1. General Summary | 3.2.1. General Summary | |||
With all the possible text representation ways, each application must | With all the possible methods of text representation each application | |||
include a module, object, link, etc. to a function that will parse | must include a module, object, link, etc. to a function that will | |||
IPv6 addresses in a manner that no matter how it is represented, they | parse IPv6 addresses in a manner that no matter how it is | |||
will mean the same address. This is not too much a problem if the | represented, they will mean the same address. Many system engineers | |||
output is to be just 'read' or 'managed' by a network engineer. | who integrate complex computer systems for corporate customers will | |||
However, many system engineers who integrate complex computer systems | have difficulties finding that their favorite tool will not have this | |||
to corporate customers will have difficulties finding that their | function, or will encounter difficulties such as having to rewrite | |||
favorite tool will not have this function, or will encounter | their macros or scripts for their customers. | |||
difficulties such as having to rewrite their macro's or scripts for | ||||
their customers. | ||||
3.2.2. Logging | 3.2.2. Logging | |||
If an application were to output a log summary that represented the | If an application were to output a log summary that represented the | |||
address in full (such as 2001:0db8:0000:0000:1111:2222:3333:4444), | address in full (such as 2001:0db8:0000:0000:1111:2222:3333:4444), | |||
the output would be highly unreadable compared to the IPv4 output. | the output would be highly unreadable compared to the IPv4 output. | |||
The address would have to be parsed and reformed to make it useful | The address would have to be parsed and reformed to make it useful | |||
for human reading. Sometimes, logging for critical systems is done | for human reading. Sometimes logging for critical systems is done by | |||
by mirroring the same traffic to two different systems. Care must be | mirroring the same traffic to two different systems. Care must be | |||
taken that no matter what the log output is, the logs should be | taken so that no matter what the log output is the logs should be | |||
parsed so they will mean the same. | parsed so they will mean the same. | |||
3.2.3. Auditing: Case 1 | 3.2.3. Auditing: Case 1 | |||
When a router or any other network appliance machine configuration is | When a router or any other network appliance machine configuration is | |||
audited, there are many methods to compare the configuration | audited, there are many methods to compare the configuration | |||
information of a node. Sometimes, auditing will be done by just | information of a node. Sometimes auditing will be done by just | |||
comparing the changes made each day. In this case, if configuration | comparing the changes made each day. In this case if configuration | |||
was done such that 2001:db8::1 was changed to 2001:0db8:0000:0000: | was done such that 2001:db8::1 was changed to 2001:0db8:0000:0000: | |||
0000:0000:0000:0001 just because the new engineer on the block felt | 0000:0000:0000:0001 just because the new engineer on the block felt | |||
it was better, a simple diff will tell you that a different address | it was better, a simple diff will show that a different address was | |||
was configured. If this was done on a wide scale network, people | configured. If this was done on a wide scale network people will be | |||
will be focusing on 'why the extra zeros were put in' instead of | focusing on 'why the extra zeros were put in' instead of doing any | |||
doing any real auditing. Lots of tools are just plain 'diff's that | real auditing. Lots of tools are just plain diffs that do not take | |||
do not take into account address representation rules. | into account address representation rules. | |||
3.2.4. Auditing: Case 2 | 3.2.4. Auditing: Case 2 | |||
Node configurations will be matched against an information system | Node configurations will be matched against an information system | |||
that manages IP addresses. If output notation is different, there | that manages IP addresses. If output notation is different there | |||
will need to be a script that is implemented to cover for this. The | will need to be a script that is implemented to cover for this. The | |||
result of an SNMP GET operation, converted to text and compared to a | result of an SNMP GET operation, converted to text and compared to a | |||
textual address written by a human is highly unlikely to match on | textual address written by a human is highly unlikely to match on the | |||
first try. | first try. | |||
3.2.5. Verification | 3.2.5. Verification | |||
Some protocols require certain data fields to be verified. One | Some protocols require certain data fields to be verified. One | |||
example of this is X.509 certificates. If an IPv6 address field in a | example of this is X.509 certificates. If an IPv6 address field in a | |||
certificate was incorrectly verified by converting it to text and | certificate was incorrectly verified by converting it to text and | |||
making a simple textual comparison to some other address, the | making a simple textual comparison to some other address, the | |||
certificate may be mistakenly shown as being invalid due to a | certificate may be mistakenly shown as being invalid due to a | |||
difference in text representation methods. | difference in text representation methods. | |||
skipping to change at page 9, line 13 | skipping to change at page 9, line 11 | |||
address representation should be handled with care. Not all | address representation should be handled with care. Not all | |||
customers are engineers nor have the same skill in IPv6 technology. | customers are engineers nor have the same skill in IPv6 technology. | |||
The network operations center will have to take extra steps to | The network operations center will have to take extra steps to | |||
humanly parse the address to avoid having to explain to the customers | humanly parse the address to avoid having to explain to the customers | |||
that 2001:db8:0:1::1 is the same as 2001:db8::1:0:0:0:1. This is one | that 2001:db8:0:1::1 is the same as 2001:db8::1:0:0:0:1. This is one | |||
thing that will never happen in IPv4 because IPv4 address cannot be | thing that will never happen in IPv4 because IPv4 address cannot be | |||
abbreviated. | abbreviated. | |||
3.3.3. Abuse | 3.3.3. Abuse | |||
Network abuse is reported along with the abusing IP address. This | Network abuse reports generally include the abusing IP address. This | |||
'reporting' could take any shape or form of the flexible model. A | 'reporting' could take any shape or form of the flexible model. A | |||
team that handles network abuse must be able to tell the difference | team that handles network abuse must be able to tell the difference | |||
between a 2001:db8::1:0:1 and 2001:db8:1::0:1. Mistakes in the | between a 2001:db8::1:0:1 and 2001:db8:1::0:1. Mistakes in the | |||
placement of the "::" will result in a critical situation. A system | placement of the "::" will result in a critical situation. A system | |||
that handles these incidents should be able to handle any type of | that handles these incidents should be able to handle any type of | |||
input and parse it in a correct manner. Also, incidents are reported | input and parse it in a correct manner. Also, incidents are reported | |||
over the phone. It is unnecessary to report if the letter is an | over the phone. It is unnecessary to report if the letter is an | |||
uppercase or lowercase. However, when a letter is spelled uppercase, | uppercase or lowercase. However, when a letter is spelled uppercase, | |||
people tend to clarify that it is uppercase, which is unnecessary | people tend to clarify that it is uppercase, which is unnecessary | |||
information. | information. | |||
skipping to change at page 9, line 38 | skipping to change at page 9, line 36 | |||
When an engineer decides to change the platform of a running service, | When an engineer decides to change the platform of a running service, | |||
the same code may not work as expected due to the difference in IPv6 | the same code may not work as expected due to the difference in IPv6 | |||
address text representation. Usually, a change in a platform (e.g. | address text representation. Usually, a change in a platform (e.g. | |||
Unix to Windows, Cisco to Juniper) will result in a major change of | Unix to Windows, Cisco to Juniper) will result in a major change of | |||
code anyway, but flexibility in address representation will increase | code anyway, but flexibility in address representation will increase | |||
the work load. | the work load. | |||
3.4.2. Preference in Documentation | 3.4.2. Preference in Documentation | |||
A document that is edited by more than one author, may become harder | A document that is edited by more than one author may become harder | |||
to read. | to read. | |||
3.4.3. Legibility | 3.4.3. Legibility | |||
Capital case D and 0 can be quite often misread. Capital B and 8 can | Capital case D and 0 can be quite often misread. Capital B and 8 can | |||
also be misread. | also be misread. | |||
4. A Recommendation for IPv6 Text Representation | 4. A Recommendation for IPv6 Text Representation | |||
A recommendation for a canonical text representation format of IPv6 | A recommendation for a canonical text representation format of IPv6 | |||
addresses is presented in this section. The recommendation in this | addresses is presented in this section. The recommendation in this | |||
document is one that, complies fully with [RFC4291], is implemented | document is one that, complies fully with [RFC4291], is implemented | |||
by various operating systems, and is human friendly. The | by various operating systems, and is human friendly. The | |||
recommendation in this document SHOULD be followed by systems when | recommendation in this section SHOULD be followed by systems when | |||
generating an address to represent as text, but all implementations | generating an address to represent as text, but all implementations | |||
MUST accept any legitimate [RFC4291] format. It is advised that | MUST accept and be able to handle any legitimate [RFC4291] format. | |||
humans also follow these recommendations when spelling an address. | It is advised that humans also follow these recommendations when | |||
spelling an address. | ||||
4.1. Handling Leading Zeros in a 16 Bit Field | 4.1. Handling Leading Zeros in a 16 Bit Field | |||
Leading zeros should be chopped for human legibility and easier | Leading zeros MUST be suppressed. For example 2001:0db8::0001 is not | |||
searching. Also, a single 16 bit 0000 field should be represented as | acceptable and must be represented as 2001:db8::1. A single 16 bit | |||
just 0. | 0000 field MUST be represented as 0. | |||
4.2. "::" Usage | 4.2. "::" Usage | |||
4.2.1. Shorten As Much As Possible | 4.2.1. Shorten As Much As Possible | |||
The use of "::" should be used to its maximum capability (i.e. 2001: | The use of symbol "::" MUST be used to its maximum capability. For | |||
db8::0:1 is not considered as clean representation). | example, 2001:db8::0:1 is not acceptable, because the symbol "::" | |||
could have been used to produce a shorter representation 2001:db8::1. | ||||
4.2.2. Handling One 16 Bit 0 Field | 4.2.2. Handling One 16 Bit 0 Field | |||
"::" should not be used to shorten just one 16 bit 0 field for it | The symbol "::" MUST NOT be used to shorten just one 16 bit 0 field. | |||
would tend to mislead that there are more than one 16 bit field that | For example, the representation 2001:db8:0:1:1:1:1:1 is correct, but | |||
is shortened. | 2001:db8::1:1:1:1:1 is not correct. | |||
4.2.3. Choice in Placement of "::" | 4.2.3. Choice in Placement of "::" | |||
When there is an alternative choice in the placement of a "::", the | When there is an alternative choice in the placement of a "::", the | |||
longest run of consecutive 16 bit 0 fields should be shortened (i.e. | longest run of consecutive 16 bit 0 fields MUST be shortened (i.e. | |||
latter is shortened in 2001:0:0:1:0:0:0:1). When the length of the | the sequence with three consecutive zero fields is shortened in 2001: | |||
consecutive 16 bit 0 fields are equal (i.e. 2001:db8:0:0:1:0:0:1), | 0:0:1:0:0:0:1). When the length of the consecutive 16 bit 0 fields | |||
the former is shortened. This is consistent with many current | are equal (i.e. 2001:db8:0:0:1:0:0:1), the first sequence of zero | |||
implementations. One idea to avoid any confusion, is for the | bits MUST be shortened. For example 2001:db8::1:0:0:1 is correct | |||
operator to not use 16 bit field 0 in the first 64 bits. By nature | representation. | |||
IPv6 addresses are usually assigned or allocated to end-users from a | ||||
prefix of 32 bits or longer (typically 48 bits or longer). | ||||
4.3. Lower Case | 4.3. Lower Case | |||
Recent implementations tend to represent IPv6 address as lower case. | The characters "a", "b", "c", "d", "e", "f" in an IPv6 address MUST | |||
It is better to use lower case to avoid problems such as described in | be represented in lower case. | |||
section 3.3.3 and 3.4.3. | ||||
5. Text Representation of Special Addresses | 5. Text Representation of Special Addresses | |||
Addresses such as IPv4-Mapped IPv6 addresses, ISATAP [RFC5214], and | Addresses such as IPv4-Mapped IPv6 addresses, ISATAP [RFC5214], and | |||
IPv4-translatable addresses [I-D.ietf-behave-address-format] have | IPv4-translatable addresses [I-D.ietf-behave-address-format] have | |||
IPv4 addresses embedded in the low-order 32 bits of the address. | IPv4 addresses embedded in the low-order 32 bits of the address. | |||
These addresses have special representation that may mix hexadecimal | These addresses have special representation that may mix hexadecimal | |||
and dot decimal notations. The decimal notation may be used only for | and dot decimal notations. The decimal notation may be used only for | |||
the last 32 bits of the address. For these addresses, mixed notation | the last 32 bits of the address. For these addresses, mixed notation | |||
is recommended if the following condition is met: The address can be | is RECOMMENDED if the following condition is met: The address can be | |||
distinguished as having IPv4 addresses embedded in the lower 32 bits | distinguished as having IPv4 addresses embedded in the lower 32 bits | |||
solely from the address field through the use of a well known prefix. | solely from the address field through the use of a well known prefix. | |||
If it is known by some external method that a given prefix includes | Such prefixes are defined in [RFC4291] and [RFC2765] at the time of | |||
an IPv4 address, it MAY be represented as mixed notation. Tools that | writing. If it is known by some external method that a given prefix | |||
provide options to specify prefixes that is (or is not) to be | is used to embed IPv4, it MAY be represented as mixed notation. | |||
represented as mixed notation may be useful. | Tools that provide options to specify prefixes that are (or are not) | |||
to be represented as mixed notation may be useful. | ||||
There is a trade-off here where a recommendation to achieve exact | ||||
match in a search (no dot decimals whatsoever) and recommendation to | ||||
help the readability of an addresses (dot decimal whenever possible) | ||||
does not result in the same solution. The above recommendation is | ||||
aimed at fixing the representation as much as possible while leaving | ||||
the opportunity for future well known prefixes to be represented in a | ||||
human friendly manner as tools adjust to newly assigned prefixes. | ||||
The text representation method noted in Section 4 should be applied | The text representation method noted in Section 4 should be applied | |||
for the leading hexadecimal part (i.e. ::ffff:192.0.2.1 instead of | for the leading hexadecimal part (i.e. ::ffff:192.0.2.1 instead of | |||
0:0:0:0:0:ffff:192.0.2.1). | 0:0:0:0:0:ffff:192.0.2.1). | |||
6. Notes on Combining IPv6 Addresses with Port Numbers | 6. Notes on Combining IPv6 Addresses with Port Numbers | |||
When IPv6 addresses and port numbers are represented in text combined | When IPv6 addresses and port numbers are represented in text combined | |||
together, there are many different ways to do so. Examples are shown | together, there are many different ways to do so. Examples are shown | |||
below. | below. | |||
skipping to change at page 11, line 40 | skipping to change at page 11, line 46 | |||
o 2001:db8::1.80 | o 2001:db8::1.80 | |||
o 2001:db8::1 port 80 | o 2001:db8::1 port 80 | |||
o 2001:db8::1p80 | o 2001:db8::1p80 | |||
o 2001:db8::1#80 | o 2001:db8::1#80 | |||
The situation is not much different in IPv4, but the most ambiguous | The situation is not much different in IPv4, but the most ambiguous | |||
case with IPv6 is the second bullet. This is due to the "::"usage in | case with IPv6 is the second bullet. This is due to the "::"usage in | |||
IPv6 addresses. This style is not recommended for its ambiguity. | IPv6 addresses. This style is NOT RECOMMENDED for its ambiguity. | |||
The [] style as expressed in [RFC3986] should be employed, and is the | The [] style as expressed in [RFC3986] SHOULD be employed, and is the | |||
default unless otherwise specified. Other styles are acceptable when | default unless otherwise specified. Other styles are acceptable when | |||
there is exactly one style for the given context and cross-platform | there is exactly one style for the given context and cross-platform | |||
portability does not become an issue. | portability does not become an issue. For URIs containing IPv6 | |||
address literals, [RFC3986] MUST be followed, as well as the rules in | ||||
this document. | ||||
7. Prefix Representation | 7. Prefix Representation | |||
Problems with prefixes are just the same as problems encountered with | Problems with prefixes are just the same as problems encountered with | |||
addresses. Text representation method of IPv6 prefixes should be no | addresses. The text representation method of IPv6 prefixes should be | |||
different from that of IPv6 addresses. | no different from that of IPv6 addresses. | |||
8. Conclusion | ||||
The recommended format of text representing an IPv6 address is | ||||
summarized as follows. | ||||
(1) omit leading zeros in a 16 bit field | ||||
(2) when using "::", shorten consecutive zero fields to their | ||||
maximum extent (leave no zero fields behind). | ||||
(3) "::" used where shortens address the most | ||||
(4) "::" used in the former part in case of a tie breaker | ||||
(5) do not shorten one 16 bit 0 field, but always shorten when | ||||
there are two or more consecutive 16 bit 0 fields | ||||
(6) use lower case | ||||
Hints for developers are written in the Appendix section. | ||||
9. Security Considerations | 8. Security Considerations | |||
None. | This document notes some examples where IPv6 addresses are compared | |||
in text format. The example on Section 3.2.5 is one that may cause a | ||||
security risk if used for access control. The common practice of | ||||
comparing X.509 data is done in binary format. | ||||
10. IANA Considerations | 9. IANA Considerations | |||
None. | None. | |||
11. Acknowledgements | 10. Acknowledgements | |||
The authors would like to thank Jan Zorz, Randy Bush, Yuichi Minami, | The authors would like to thank Jan Zorz, Randy Bush, Yuichi Minami, | |||
Toshimitsu Matsuura for their generous and helpful comments in kick | Toshimitsu Matsuura for their generous and helpful comments in kick | |||
starting this document. We also would like to thank Brian Carpenter, | starting this document. We also would like to thank Brian Carpenter, | |||
Akira Kato, Juergen Schoenwaelder, Antonio Querubin, Dave Thaler, | Akira Kato, Juergen Schoenwaelder, Antonio Querubin, Dave Thaler, | |||
Brian Haley, Suresh Krishnan, Jerry Huang, Roman Donchenko, Heikki | Brian Haley, Suresh Krishnan, Jerry Huang, Roman Donchenko, Heikki | |||
Vatiainen ,Dan Wing for their input. Also a very special thanks to | Vatiainen ,Dan Wing, and Doug Barton for their input. Also a very | |||
Ron Bonica, Fred Baker, Brian Haberman, Robert Hinden, Jari Arkko, | special thanks to Ron Bonica, Fred Baker, Brian Haberman, Robert | |||
and Kurt Lindqvist for their support in bringing this document to the | Hinden, Jari Arkko, and Kurt Lindqvist for their support in bringing | |||
light of IETF working groups. | this document to the light of IETF working groups. | |||
12. References | 11. References | |||
12.1. Normative References | 11.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. | |||
[RFC2765] Nordmark, E., "Stateless IP/ICMP Translation Algorithm | ||||
(SIIT)", RFC 2765, February 2000. | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
Resource Identifier (URI): Generic Syntax", STD 66, | ||||
RFC 3986, January 2005. | ||||
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | |||
Architecture", RFC 4291, February 2006. | Architecture", RFC 4291, February 2006. | |||
12.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-behave-address-format] | [I-D.ietf-behave-address-format] | |||
Huitema, C., Bao, C., Bagnulo, M., Boucadair, M., and X. | Huitema, C., Bao, C., Bagnulo, M., Boucadair, M., and X. | |||
Li, "IPv6 Addressing of IPv4/IPv6 Translators", | Li, "IPv6 Addressing of IPv4/IPv6 Translators", | |||
draft-ietf-behave-address-format-03 (work in progress), | draft-ietf-behave-address-format-04 (work in progress), | |||
December 2009. | January 2010. | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
Resource Identifier (URI): Generic Syntax", STD 66, | ||||
RFC 3986, January 2005. | ||||
[RFC4038] Shin, M-K., Hong, Y-G., Hagino, J., Savola, P., and E. | [RFC4038] Shin, M-K., Hong, Y-G., Hagino, J., Savola, P., and E. | |||
Castro, "Application Aspects of IPv6 Transition", | Castro, "Application Aspects of IPv6 Transition", | |||
RFC 4038, March 2005. | RFC 4038, March 2005. | |||
[RFC5214] Templin, F., Gleeson, T., and D. Thaler, "Intra-Site | [RFC5214] Templin, F., Gleeson, T., and D. Thaler, "Intra-Site | |||
Automatic Tunnel Addressing Protocol (ISATAP)", RFC 5214, | Automatic Tunnel Addressing Protocol (ISATAP)", RFC 5214, | |||
March 2008. | March 2008. | |||
Appendix A. For Developers | Appendix A. For Developers | |||
End of changes. 46 change blocks. | ||||
143 lines changed or deleted | 133 lines changed or added | |||
This html diff was produced by rfcdiff 1.32. The latest version is available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |