INTERNET-DRAFT Marc Blanchet 17 october 1998 Viagenie inc. Expires 16 april 1999 A method for flexible IPv6 address assignments Status of this Memo This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu Abstract This draft presents a method for assigning IP address prefixes that enables the IP assigning autority - the organisation that assigns IP address prefixes to other organisations, like a registry to an internet service provider or an internet service provider to a client organisation connected to its network -to postpone the final decision of prefix length by keeping space between assigned bits of the different parts of the IP address. This enables the assigning autority to change the different part lengths of the prefix (TLA (top level aggregator), subTLA, NLA(next-level aggregator) SLA (site-level aggregator), ...) even after allocated spaces. This scheme is applicable to both IPv4 and IPv6 but is envisionned mainly for IPv6 where the address space is larger and more flexible. It is a generalization of RFC1219 and can be used for IPv6 assignments based on RFC2373 and RFC2374. 1. Context IPv6 addresses have a more flexible structure for address assignments where no pre-defined prefixes (called subnetmasks in IPv4) are used (except a few special cases). It enables registries, internet service providers, network designers and others to assign addresses ranges to organisations and networks based on different criterias, like size of networks, estimated growth rate, etc. Often, the initial assignation doesn't scale well because a small network becomes larger than expected, needing more addresses. But then, the assignment autority cannot allocate contiguous addresses because they were already assigned to another network. RFC1219 [IPv4Assign] describes an allocation scheme for IPv4 where address space is kept unallocated between the leftmost bits of the subnet part and the rightmost bits of the host part of the address. This enables the network designer to change the subnetmask without renumbering, for the central bits that were not allocated. This work generalizes the previous scheme by extending the algorithm so it can be applied on any part of an IP address, which are assigned by any assignment autority level (TLA, registries, ISPs, organisations, ...). It can be used for both IPv4 and IPv6, with IPv6 assignments conforming to RFC2373 [IPv6AddrArch] and RFC2374 [IPv6Aggr]. 2. Scheme We define parts of the IP address as p1, p2 , p3, ... pN in order, so that an IP address is composed of these parts contiguously. Boundaries between each part are based on the prefix assigned by the next level assignment autority. Part p1 is the leftmost part probably assigned to a TLA, Part p2 can be assigned by the TLA to a large internet service provider or to a national registry. Part p3 can be allocated to a large customer or a smaller provider, etc. Each part can be of different length. We define l(pX) the length of part X. +------+------+------+------+------+------+ | p1 | p2 | p3 | p4 | ... | pN | +------+------+------+------+------+------+ <------- ipv6 or ipv4 address ------------> The algorithm for allocating addresses is as follows : a) for the leftmost part (p1), assign addresses using the leftmost bits first b) for the rightmost part (pN), assign addresses using the rightmost bits first c) for all other parts (center parts), predefine an arbitrary boundary (prefix) and then assign addresses using the center bits first of the part being assigned. This algorithm grow assigned bits in such way that it keeps unassigned bits near the boundary of the parts. This means that the prefix between any two parts can be changed forward or backward, later on, up to the assigned bits. Any assignment must conform to RFC2373 and RFC2374, which have precedence over this method in case of conflicts. 3. Assignment 3.1 leftmost p1 will be assigned in order as follows : Order Assignment 1 10000000 2 01000000 3 11000000 4 00100000 5 10100000 6 01100000 7 11100000 8 00010000 9 ... This is actually a mirror of binary counting. 3.2 rightmost pN (the last part) will be assigned in order as follows : Order Assignment 1 00000001 2 00000010 3 00000011 4 00000100 5 00000101 6 00000110 7 00000111 8 00001000 9 ... 3.3 centermost pX (where 1 < X < N) will be assigned in order as follows : (for example, with a 8 bit predefined length l(pX)=8)) Order Assignment 1 00001000 2 00010000 3 00011000 4 00000100 5 00001100 6 00010100 7 00011100 8 00100000 9 ... 4. Example A TLA has been assigned the 3ffe:0b00/24 prefix and wants to assign prefixes to its connected networks. It anticipates in the forseable future a maximum of 256 NLAs consuming 8 bits. One of these NLA, named NLA2, anticipates a maximum of 1024 subNLA assignments under it, consuming 10 other bits. The assignment will be as follows, not showing the first 24 leftmost bits (3ffe:0b00/24: 00111111 11111110 00001011): TLA assigning to NLAs using lefmost bits: 10000000 : assigned to NLA1 01000000 : assigned to NLA2 11000000 : assigned to NLA3 00100000 : assigned to NLA4 ... NLA2 assigning to its subNLAs using centermost bits: 0000010000 : assigned to subNLA1 0000100000 : assigned to subNLA2 0000110000 : assigned to subNLA3 ... subNLAs can use centermost bits for maximum flexibility and then the last aggregators (should be a network in a site) will be assigned using rightmost bits. Putting all bits together for subNLA3: TLA |NLA2 |subNLA3 00111111 11111110 00001011 01000000 00001100 00 <-------> <------> growing bits By using this method, the TLA will be able to expand the number of NLAs and the NLAs will be able to modify their first assumptions about the size of their subNLAs, until "reserved" bits are assigned. 5. Implementation While describing this method is easier displaying bits, it is not useful to do the assignment using bits. Programs implementing this method will be useful. 6. Acknowledgements Thanks to Steve Deering, Bob Hinden, Erik Nordmark and Florent Parent for their very useful comments on this work. 7. Security Considerations Address assignment doesn't seem to have any specific security consideration. 8. References [IPv4Assign] On the assignment of subnet numbers. P.F. Tsuchiya. April 1991. RFC1219. [IPv6AddrArch] IP Version 6 Addressing Architecture, R. Hinden, S. Deering, July 1998, RFC2373. [IPv6Aggr] An IPv6 Aggregatable Global Unicast Address Format, R. Hinden, M. O'Dell, S. Deering. July 1998. RFC2374. 9. Author's address Marc Blanchet Viagenie inc. 3107 des hotels Ste-Foy, Quebec, Canada G1W 4W5 Email : Marc.Blanchet@viagenie.qc.ca Tel. : 418-656-9254 Fax : 418-656-0183