idnits 2.17.1 draft-ietf-6man-text-addr-representation-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** The document seems to lack a License Notice according IETF Trust Provisions of 28 Dec 2009, Section 6.b.i or Provisions of 12 Sep 2009 Section 6.b -- however, there's a paragraph with a matching beginning. Boilerplate error? (You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Feb 2009 rather than one of the newer Notices. See https://trustee.ietf.org/license-info/.) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with non-RFC3849-compliant IPv6 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (August 23, 2009) is 5360 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- -- Obsolete informational reference (is this intentional?): RFC 2765 (Obsoleted by RFC 6145) Summary: 1 error (**), 0 flaws (~~), 2 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 IPv6 Maintenance Working Group S. Kawamura 3 Internet-Draft NEC BIGLOBE, Ltd. 4 Intended status: Informational M. Kawashima 5 Expires: February 24, 2010 NEC AccessTechnica, Ltd. 6 August 23, 2009 8 A Recommendation for IPv6 Address Text Representation 9 draft-ietf-6man-text-addr-representation-00 11 Status of this Memo 13 This Internet-Draft is submitted to IETF in full conformance with the 14 provisions of BCP 78 and BCP 79. 16 Internet-Drafts are working documents of the Internet Engineering 17 Task Force (IETF), its areas, and its working groups. Note that 18 other groups may also distribute working documents as Internet- 19 Drafts. 21 Internet-Drafts are draft documents valid for a maximum of six months 22 and may be updated, replaced, or obsoleted by other documents at any 23 time. It is inappropriate to use Internet-Drafts as reference 24 material or to cite them other than as "work in progress." 26 The list of current Internet-Drafts can be accessed at 27 http://www.ietf.org/ietf/1id-abstracts.txt. 29 The list of Internet-Draft Shadow Directories can be accessed at 30 http://www.ietf.org/shadow.html. 32 This Internet-Draft will expire on February 24, 2010. 34 Copyright Notice 36 Copyright (c) 2009 IETF Trust and the persons identified as the 37 document authors. All rights reserved. 39 This document is subject to BCP 78 and the IETF Trust's Legal 40 Provisions Relating to IETF Documents in effect on the date of 41 publication of this document (http://trustee.ietf.org/license-info). 42 Please review these documents carefully, as they describe your rights 43 and restrictions with respect to this document. 45 Abstract 47 As IPv6 network grows, there will be more engineers and also non- 48 engineers who will have the need to use an IPv6 address in text. 50 While the IPv6 address architecture RFC 4291 section 2.2 depicts a 51 flexible model for text representation of an IPv6 address, this 52 flexibility has been causing problems for operators, system 53 engineers, and users. This document will describe the problems that 54 a flexible text representation has been causing. This document also 55 recommends a canonical representation format that best avoids 56 confusion. It is expected that the canonical format is followed by 57 humans and systems when representing IPv6 addresses as text, but all 58 implementations must accept and be able to handle any legitimate 59 RFC4291 format. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 64 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 65 2. Text Representation Flexibility of RFC4291 . . . . . . . . . . 4 66 2.1. Leading Zeros in a 16 Bit Field . . . . . . . . . . . . . 4 67 2.2. Zero Compression . . . . . . . . . . . . . . . . . . . . . 5 68 2.3. Uppercase or Lowercase . . . . . . . . . . . . . . . . . . 5 69 3. Problems Encountered with the Flexible Model . . . . . . . . . 6 70 3.1. Searching . . . . . . . . . . . . . . . . . . . . . . . . 6 71 3.1.1. General Summary . . . . . . . . . . . . . . . . . . . 6 72 3.1.2. Searching Spreadsheets and Text Files . . . . . . . . 6 73 3.1.3. Searching with Whois . . . . . . . . . . . . . . . . . 6 74 3.1.4. Searching for an Address in a Network Diagram . . . . 7 75 3.2. Parsing and Modifying . . . . . . . . . . . . . . . . . . 7 76 3.2.1. General Summary . . . . . . . . . . . . . . . . . . . 7 77 3.2.2. Logging . . . . . . . . . . . . . . . . . . . . . . . 7 78 3.2.3. Auditing: Case 1 . . . . . . . . . . . . . . . . . . . 8 79 3.2.4. Auditing: Case 2 . . . . . . . . . . . . . . . . . . . 8 80 3.2.5. Unexpected Modifying . . . . . . . . . . . . . . . . . 8 81 3.3. Operating . . . . . . . . . . . . . . . . . . . . . . . . 8 82 3.3.1. General Summary . . . . . . . . . . . . . . . . . . . 8 83 3.3.2. Customer Calls . . . . . . . . . . . . . . . . . . . . 8 84 3.3.3. Abuse . . . . . . . . . . . . . . . . . . . . . . . . 9 85 3.4. Other Minor Problems . . . . . . . . . . . . . . . . . . . 9 86 3.4.1. Changing Platforms . . . . . . . . . . . . . . . . . . 9 87 3.4.2. Preference in Documentation . . . . . . . . . . . . . 9 88 3.4.3. Legibility . . . . . . . . . . . . . . . . . . . . . . 9 89 4. A Recommendation for IPv6 Text Representation . . . . . . . . 9 90 4.1. Handling Leading Zeros in a 16 Bit Field . . . . . . . . . 10 91 4.2. "::" Usage . . . . . . . . . . . . . . . . . . . . . . . . 10 92 4.2.1. Shorten As Much As Possible . . . . . . . . . . . . . 10 93 4.2.2. Handling One 16 Bit 0 Field . . . . . . . . . . . . . 10 94 4.2.3. Choice in Placement of "::" . . . . . . . . . . . . . 10 95 4.3. Lower Case . . . . . . . . . . . . . . . . . . . . . . . . 10 96 5. Text Representation of Special Addresses . . . . . . . . . . . 10 97 6. Notes on Combining IPv6 Addresses with Port Numbers . . . . . 11 98 7. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 11 99 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 100 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 101 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 102 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 103 11.1. Normative References . . . . . . . . . . . . . . . . . . . 12 104 11.2. Informative References . . . . . . . . . . . . . . . . . . 12 105 Appendix A. For Developers . . . . . . . . . . . . . . . . . . . 13 106 Appendix B. Prefix Issues . . . . . . . . . . . . . . . . . . . . 13 107 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 109 1. Introduction 111 A single IPv6 address can be text represented in many ways. Examples 112 are shown below. 114 2001:db8:0:0:1:0:0:1 116 2001:0db8:0:0:1:0:0:1 118 2001:db8::1:0:0:1 120 2001:db8::0:1:0:0:1 122 2001:0db8::1:0:0:1 124 2001:db8:0:0:1::1 126 2001:db8:0000:0:1::1 128 2001:DB8:0:0:1::1 130 All the above point to the same IPv6 address. This flexibility has 131 caused many problems for operators, systems engineers, and customers. 132 The problems will be noted in Section 3. Also, a canonical 133 representation format to avoid problems will be introduced in 134 Section 4. 136 1.1. Requirements Language 138 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 139 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 140 document are to be interpreted as described in [RFC2119]. 142 2. Text Representation Flexibility of RFC4291 144 Examples of flexibility in Section 2.2 of [RFC4291] are described 145 below. 147 2.1. Leading Zeros in a 16 Bit Field 149 'It is not necessary to write the leading zeros in an individual 150 field.' 152 In other words, it is also not necessary to omit leading zeros. This 153 means that, it is possible to select from such as the following 154 example. The final 16 bit field is different, but all these 155 addresses mean the same. 157 2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001 159 2001:db8:aaaa:bbbb:cccc:dddd:eeee:001 161 2001:db8:aaaa:bbbb:cccc:dddd:eeee:01 163 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 165 2.2. Zero Compression 167 'A special syntax is available to compress the zeros. The use of 168 "::" indicates one or more groups of 16 bits of zeros.' 170 It is possible to select whether or not to omit just one 16 bits of 171 zeros. 173 2001:db8:aaaa:bbbb:cccc:dddd::1 175 2001:db8:aaaa:bbbb:cccc:dddd:0:1 177 In case where there are more than one zero fields, there is a choice 178 of how many fields can be shortened. Examples follow. 180 2001:db8:0:0:0::1 182 2001:db8:0:0::1 184 2001:db8:0::1 186 2001:db8::1 188 In addition, [RFC4291] in section 2.2 notes, 190 'The "::" can only appear once in an address.' 192 This gives a choice on where, in a single address to compress the 193 zero. Examples are shown below. 195 2001:db8::aaaa:0:0:1 197 2001:db8:0:0:aaaa::1 199 2.3. Uppercase or Lowercase 201 [RFC4291] does not mention about preference of uppercase or 202 lowercase. Various flavors are shown below. 204 2001:db8:aaaa:bbbb:cccc:dddd:eeee:aaaa 206 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AAAA 208 2001:db8:aaaa:bbbb:cccc:dddd:eeee:AaAa 210 3. Problems Encountered with the Flexible Model 212 3.1. Searching 214 3.1.1. General Summary 216 A search of an IPv6 address if conducted through a UNIX system is 217 usually case sensitive and extended options to allow for regular 218 expression use will come in handy. However, there are many 219 applications in the Internet today that do not provide this 220 capability. When searching for an IPv6 address in such systems, the 221 system engineer will have to try each and every possibility to search 222 for an address. This has critical impacts especially when trying to 223 deploy IPv6 over an enterprise network. 225 3.1.2. Searching Spreadsheets and Text Files 227 Spreadsheet applications and text editors on GUI systems, rarely have 228 the ability to search for a text using regular expression. Moreover, 229 there are many non-engineers (who are not aware of case sensitivity 230 and regular expression use) that use these application to manage IP 231 addresses. This has worked quite well with IPv4 since text 232 representation in IPv4 has very little flexibility. There is no 233 incentive to encourage these non-engineers to change their tool or 234 learn regular expression when they decide to go dual-stack. If the 235 entry in the spreadsheet reads, 2001:db8::1:0:0:1, but the search was 236 conducted as 2001:db8:0:0:1::1, this will show a result of no match. 237 One example where this will cause problem is, when the search is 238 being conducted to assign a new address from a pool, and a check was 239 being done to see if it was not in use. This may cause problems to 240 the end-hosts or end-users. This type of address management is very 241 often seen in enterprise networks and also in ISPs. 243 3.1.3. Searching with Whois 245 The "whois" utility is used by a wide range of people today. When a 246 record is set to a database, one will likely check the output to see 247 if the entry is correct. If an entity was recorded as 2001:db8::/48, 248 but the whois output showed 2001:0db8:0000::/48, most non-engineers 249 would think that their input was wrong, and will likely retry several 250 times or make a frustrated call to the database hostmaster. If there 251 was a need to register the same address on different systems, and 252 each system showed a different text representation, this would 253 confuse people even more. Although this document focuses on 254 addresses rather than prefixes, this is worth mentioning since 255 problems encountered are mostly equal. 257 3.1.4. Searching for an Address in a Network Diagram 259 Network diagrams and blue-prints contain IP addresses as allocated to 260 system devices. In times of trouble shooting, there may be a need to 261 search through a diagram to find the point of failure (for example, 262 if a traceroute stopped at 2001:db8::1, one would search the diagram 263 for that address). This is a technique quite often in use in 264 enterprise networks and managed services. Again, the different 265 flavors of text representation will result in a time-consuming 266 search, leading to longer MTTR in times of trouble. 268 3.2. Parsing and Modifying 270 3.2.1. General Summary 272 With all the possible text representation ways, each application must 273 include a module, object, link, etc. to a function that will parse 274 IPv6 addresses in a manner that no matter how it is represented, they 275 will mean the same address. This is not too much a problem if the 276 output is to be just 'read' or 'managed' by a network engineer. 277 However, many system engineers who integrate complex computer systems 278 to corporate customers will have difficulties finding that their 279 favorite tool will not have this function, or will encounter 280 difficulties such as having to rewrite their macro's or scripts for 281 their customers. It must be noted that each additional line of a 282 program will result in increased development fees that will be 283 charged to the customers. 285 3.2.2. Logging 287 If an application were to output a log summary that represented the 288 address in full (such as 2001:0db8:0000:0000:1111:2222:3333:4444), 289 the output would be highly unreadable compared to the IPv4 output. 290 The address would have to be parsed and reformed to make it useful 291 for human reading. This will result in additional code on the 292 applications which will result in extra fees charged to the 293 customers. Sometimes, logging for critical systems is done by 294 mirroring the same traffic to two different systems. Care must be 295 taken that no matter what the log output is, the logs should be 296 parsed so they will mean the same. 298 3.2.3. Auditing: Case 1 300 When a router or any other network appliance machine configuration is 301 audited, there are many methods to compare the configuration 302 information of a node. Sometimes, auditing will be done by just 303 comparing the changes made each day. In this case, if configuration 304 was done such that 2001:db8::1 was changed to 2001:0db8:0000:0000: 305 0000:0000:0000:0001 just because the new engineer on the block felt 306 it was better, a simple diff will tell you that a different address 307 was configured. If this was done on a wide scale network, people 308 will be focusing on 'why the extra zeros were put in' instead of 309 doing any real auditing. Lots of tools are just plain 'diff's that 310 do not take into account address representation rules. 312 3.2.4. Auditing: Case 2 314 Node configurations will be matched against an information system 315 that manages IP addresses. If output notation is different, there 316 will need to be a script that is implemented to cover for this. An 317 SNMP GET of an interface address and text representation in a humanly 318 written text file is highly unlikely to match on first try. 320 3.2.5. Unexpected Modifying 322 Sometimes, a system will take an address and modify it as a 323 convenience. For example, a system may take an input of 324 2001:0db8:0::1 and make the output 2001:db8::1 (which is seen in some 325 RIR databases). If the zeros were input for a reason, the outcome 326 may be somewhat unexpected. 328 3.3. Operating 330 3.3.1. General Summary 332 When an operator sets an IPv6 address of a system as 2001:db8:0:0:1: 333 0:0:1, the system may take the address and show the configuration 334 result as 2001:DB8::1:0:0:1. A distinguished engineer will know that 335 the right address is set, but an operator, or a customer that is 336 communicating with the operator to solve a problem, is usually not as 337 distinguished as we would like. Again, the extra load in checking 338 that the IP address is the same as was intended, will result in fees 339 that will be charged to the customers. 341 3.3.2. Customer Calls 343 When a customer calls to inquire about a suspected outage, IPv6 344 address representation should be handled with care. Not all 345 customers are engineers nor have the same skill in IPv6 technology. 347 The NOC will have to take extra steps to humanly parse the address to 348 avoid having to explain to the customers that 2001:db8:0:1::1 is the 349 same as 2001:db8::1:0:0:0:1. This is one thing that will never 350 happen in IPv4 because IPv4 address cannot be abbreviated. 352 3.3.3. Abuse 354 Network abuse is reported along with the abusing IP address. This 355 'reporting' could take any shape or form of the flexible model. A 356 team that handles network abuse must be able to tell the difference 357 between a 2001:db8::1:0:1 and 2001:db8:1::0:1. Mistakes in the 358 placement of the "::" will result in a critical situation. A system 359 that handles these incidents should be able to handle any type of 360 input and parse it in a correct manner. Also, incidents are reported 361 over the phone. It is unnecessary to report if the letter is an 362 uppercase or lowercase. However, when a letter is spelled uppercase, 363 people tend to clarify that it is uppercase, which is unnecessary 364 information. 366 3.4. Other Minor Problems 368 3.4.1. Changing Platforms 370 When an engineer decides to change the platform of a running service, 371 the same code may not work as expected due to the difference in IPv6 372 address text representation. Usually, a change in a platform (e.g. 373 Unix to Windows, Cisco to Juniper) will result in a major change of 374 code, but flexibility in address representation will increase the 375 work load which will again, result in fees that will be charged to 376 the customers, and also longer down time of systems. 378 3.4.2. Preference in Documentation 380 A document that is edited by more than one author, may become harder 381 to read. 383 3.4.3. Legibility 385 Capital case D and 0 can be quite often misread. Capital B and 8 can 386 also be misread. 388 4. A Recommendation for IPv6 Text Representation 390 A recommendation for a canonical text representation format of IPv6 391 addresses is presented in this section. The recommendation in this 392 document is one that, complies fully with [RFC4291], is implemented 393 by various operating systems, and is human friendly. The 394 recommendation in this document SHOULD be followed by humans and 395 systems when generating an address to represent as text, but all 396 implementations MUST accept any legitimate [RFC4291] format. 398 4.1. Handling Leading Zeros in a 16 Bit Field 400 Leading zeros should be chopped for human legibility and easier 401 searching. Also, a single 16 bit 0000 field should be represented as 402 just 0. Place holder zeros are often cause of misreading. 404 4.2. "::" Usage 406 4.2.1. Shorten As Much As Possible 408 The use of "::" should be used to its maximum capability (i.e. 2001: 409 db8::0:1 is not considered as clean representation). 411 4.2.2. Handling One 16 Bit 0 Field 413 "::" should not be used to shorten just one 16 bit 0 field for it 414 would tend to mislead that there are more than one 16 bit field that 415 is shortened. 417 4.2.3. Choice in Placement of "::" 419 When there is an alternative choice in the placement of a "::", the 420 longest run of consecutive 16 bit 0 fields should be shortened (i.e. 421 latter is shortened in 2001:0:0:1:0:0:0:1). When the length of the 422 consecutive 16 bit 0 fields are equal (i.e. 2001:db8:0:0:1:0:0:1), 423 the former is shortened. This is consistent with many current 424 implementations. One idea to avoid any confusion, is for the 425 operator to not use 16 bit field 0 in the first 64 bits. By nature 426 IPv6 addresses are usually assigned or allocated to end-users as 427 longer than 32 bits (typically 48 bits or longer). 429 4.3. Lower Case 431 Recent implementations tend to represent IPv6 address as lower case. 432 It is better to use lower case to avoid problems such as described in 433 section 3.3.3 and 3.4.3. 435 5. Text Representation of Special Addresses 437 Addresses such as IPv4-Mapped IPv6 addresses, ISATAP [RFC5214], and 438 IPv4-translated addresses [RFC2765] have IPv4 addresses embedded in 439 the low-order 32 bits of the address. These addresses have special 440 representation that may mix hexadecimal and decimal notations. In 441 cases where there is a choice of whether to express the address as 442 fully hexadecimal or hexadecimal and decimal mixed, and if the 443 address type can be distinguished as having IPv4 addresses embedded 444 in the lower 32 bits solely from the 128bits of the address field 445 itself, mixed notation is the better choice. However, there may be 446 situations where hexadecimal representation is chosen to meet certain 447 needs. Addressing those needs is out of the scope of this document. 448 The text representation method noted in Section 4 should be applied 449 for the leading hexadecimal part (i.e. ::ffff:192.0.2.1 instead of 450 0:0:0:0:0:ffff:192.0.2.1). 452 6. Notes on Combining IPv6 Addresses with Port Numbers 454 When IPv6 addresses and port numbers are represented in text combined 455 together, there seems to be many different ways to do so. Examples 456 are shown below. 458 o [2001:db8::1]:80 460 o 2001:db8::1:80 462 o 2001:db8::1.80 464 o 2001:db8::1 port 80 466 o 2001:db8::1p80 468 o 2001:db8::1#80 470 The situation is not much different in IPv4, but the most ambiguous 471 case with IPv6 is the second bullet. This is due to the "::"usage in 472 IPv6 addresses. This style is not recommended for its ambiguity. 473 The most common case is the [] style as expressed in [RFC3986]. 475 7. Conclusion 477 The recommended format of text representing an IPv6 address is 478 summarized as follows. 480 (1) omit leading zeros in a 16 bit field 482 (2) when using "::", shorten consecutive zero fields to their 483 maximum extent (leave no zero fields behind). 485 (3) "::" used where shortens address the most 486 (4) "::" used in the former part in case of a tie breaker 488 (5) do not shorten one 16 bit 0 field, but always shorten when 489 there are two or more consecutive 16 bit 0 fields 491 (6) use lower case 493 Hints for developers are written in the Appendix section. 495 8. Security Considerations 497 None. 499 9. IANA Considerations 501 None. 503 10. Acknowledgements 505 The authors would like to thank Jan Zorz, Randy Bush, Yuichi Minami, 506 Toshimitsu Matsuura for their generous and helpful comments in kick 507 starting this document. We also would like to thank Brian Carpenter, 508 Akira Kato, Juergen Schoenwaelder, Antonio Querubin, Dave Thaler, 509 Brian Haley, Suresh Krishnan, Jerry Huang, Roman Donchenko for their 510 input. Also a very special thanks to Ron Bonica, Fred Baker, Brian 511 Haberman, Robert Hinden, Jari Arkko, and Kurt Lindqvist for their 512 support in bringing this document to the light of IETF working 513 groups. 515 11. References 517 11.1. Normative References 519 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 520 Requirement Levels", BCP 14, RFC 2119, March 1997. 522 [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing 523 Architecture", RFC 4291, February 2006. 525 11.2. Informative References 527 [RFC2765] Nordmark, E., "Stateless IP/ICMP Translation Algorithm 528 (SIIT)", RFC 2765, February 2000. 530 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 531 Resource Identifier (URI): Generic Syntax", STD 66, 532 RFC 3986, January 2005. 534 [RFC4038] Shin, M-K., Hong, Y-G., Hagino, J., Savola, P., and E. 535 Castro, "Application Aspects of IPv6 Transition", 536 RFC 4038, March 2005. 538 [RFC5214] Templin, F., Gleeson, T., and D. Thaler, "Intra-Site 539 Automatic Tunnel Addressing Protocol (ISATAP)", RFC 5214, 540 March 2008. 542 Appendix A. For Developers 544 We recommend that developers use display routines that conform to 545 these rules. For example, the usage of getnameinfo() with flags 546 argument NI_NUMERICHOST in FreeBSD 7.0 will give a conforming output, 547 except for the special addresses notes in Section 5. The function 548 inet_ntop() of FreeBSD7.0 is a good C code reference, but should not 549 be called directly. See [RFC4038] for details. 551 Appendix B. Prefix Issues 553 Problems with prefixes are just the same as problems encountered with 554 addresses. Text representation method of IPv6 prefixes should be no 555 different from that of IPv6 addresses. 557 Authors' Addresses 559 Seiichi Kawamura 560 NEC BIGLOBE, Ltd. 561 14-22, Shibaura 4-chome 562 Minatoku, Tokyo 108-8558 563 JAPAN 565 Phone: +81 3 3798 6085 566 Email: kawamucho@mesh.ad.jp 567 Masanobu Kawashima 568 NEC AccessTechnica, Ltd. 569 800, Shimomata 570 Kakegawa-shi, Shizuoka 436-8501 571 JAPAN 573 Phone: +81 537 23 9655 574 Email: kawashimam@necat.nec.co.jp