draft-ietf-ipv6-ipaddressassign-05.txt   rfc3531.txt 
Internet M. Blanchet Network Working Group M. Blanchet
Internet-Draft Viagenie inc. Request for Comments: 3531 Viagenie
Expires: May 19, 2003 November 18, 2002 Category:Informational April 2003
A Flexible Method for Managing the Assignment of Bits of an IPv6 A Flexible Method for Managing the Assignment of Bits
Address Block of an IPv6 Address Block
draft-ietf-ipv6-ipaddressassign-05
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This memo provides information for the Internet community. It does
all provisions of Section 10 of RFC2026. not specify an Internet standard of any kind. Distribution of this
memo is unlimited.
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."
The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 19, 2003.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract Abstract
This document proposes a method to manage the assignment of bits of This document proposes a method to manage the assignment of bits of
an IPv6 address block or range. When an organisation needs to make an IPv6 address block or range. When an organisation needs to make
an address plan for its subnets or when an ISP needs to make an an address plan for its subnets or when an ISP needs to make an
address plan for its customers, this method enables the organisation address plan for its customers, this method enables the organisation
to postpone the final decision on the number of bits to partition in to postpone the final decision on the number of bits to partition in
the address space they have. It does it by keeping the bits around the address space they have. It does it by keeping the bits around
the borders of the partition to be free as long as possible. This the borders of the partition to be free as long as possible. This
scheme is applicable to any bits addressing scheme using bits with scheme is applicable to any bits addressing scheme using bits with
partitions in the space, but its first intended use is for IPv6. It partitions in the space, but its first intended use is for IPv6. It
is a generalization of RFC1219 [1] and can be used for IPv6 is a generalization of RFC 1219 and can be used for IPv6 assignments.
assignments.
Table of Contents Table of Contents
1. Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Description of the Algorithm . . . . . . . . . . . . . . . . . 4 3. Description of the Algorithm . . . . . . . . . . . . . . . . . 3
3.1 Leftmost . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1 Leftmost . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Rightmost . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Rightmost . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Centermost . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 Centermost . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. Implementation . . . . . . . . . . . . . . . . . . . . . . . . 6 5. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 5
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 6
References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 8 Full Copyright Statement . . . . . . . . . . . . . . . . . . . 7
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 9
1. Rationale 1. Rationale
IPv6 addresses have a flexible structure for address assignments. IPv6 addresses have a flexible structure for address assignments.
This enables registries, internet service providers, network This enables registries, internet service providers, network
designers and others to assign address ranges to organizations and designers and others to assign address ranges to organizations and
networks based on different criteria, like size of networks, networks based on different criteria, like size of networks,
estimated growth rate, etc. Often, the initial assignment doesn't estimated growth rate, etc. Often, the initial assignment doesn't
scale well because a small network becomes larger than expected, scale well because a small network becomes larger than expected,
needing more addresses. But then, the assignment authority cannot needing more addresses. But then, the assignment authority cannot
allocate contiguous addresses because they were already assigned to allocate contiguous addresses because they were already assigned to
another network. another network.
RFC1219 [1] describes an allocation scheme for IPv4 where address RFC 1219 [1] describes an allocation scheme for IPv4 where address
space is kept unallocated between the leftmost bits of the subnet space is kept unallocated between the leftmost bits of the subnet
part and the rightmost bits of the host part of the address. This part and the rightmost bits of the host part of the address. This
enables the network designer to change the subnet mask without enables the network designer to change the subnet mask without
renumbering, for the central bits not allocated. renumbering, for the central bits not allocated.
This work generalizes the previous scheme by extending the algorithm 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 so it can be applied on any part of an IP address, which are assigned
by any assignment authority level (registries, ISPs of any level, by any assignment authority level (registries, ISPs of any level,
organizations, ...). It can be used for both IPv4 and IPv6. organizations, ...). It can be used for both IPv4 and IPv6.
skipping to change at page 3, line 47 skipping to change at page 2, line 47
to a registry, Part p2 can be allocated to a large internet service to a registry, Part p2 can be allocated to a large internet service
provider or to a national registry. Part p3 can be allocated to a 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 large customer or a smaller provider, etc. Each part can be of
different length. We define l(pX) the length of part X. different length. We define l(pX) the length of part X.
+------+------+------+------+------+------+ +------+------+------+------+------+------+
| p1 | p2 | p3 | p4 | ... | pN | | p1 | p2 | p3 | p4 | ... | pN |
+------+------+------+------+------+------+ +------+------+------+------+------+------+
<------- ipv6 or ipv4 address ------------> <------- ipv6 or ipv4 address ------------>
The algorithm for allocating addresses is as follows : a) for the The algorithm for allocating addresses is as follows: a) for the
leftmost part (p1), assign addresses using the leftmost bits first b) leftmost part (p1), assign addresses using the leftmost bits first b)
for the rightmost part (pN), assign addresses using the rightmost for the rightmost part (pN), assign addresses using the rightmost
bits first c) for all other parts (center parts), predefine an bits first c) for all other parts (center parts), predefine an
arbitrary boundary (prefix) and then assign addresses using the arbitrary boundary (prefix) and then assign addresses using the
center bits first of the part being assigned. center bits first of the part being assigned.
This algorithm grows assigned bits in such way that it keeps This algorithm grows assigned bits in such way that it keeps
unassigned bits near the boundary of the parts. This means that the unassigned bits near the boundary of the parts. This means that the
prefix between any two parts can be changed forward or backward, prefix between any two parts can be changed forward or backward,
later on, up to the assigned bits. later on, up to the assigned bits.
3. Description of the Algorithm 3. Description of the Algorithm
This section describes the assignment of leftmost bits, rightmost This section describes the assignment of leftmost bits, rightmost
bits and centermost bits. bits and centermost bits.
3.1 Leftmost 3.1 Leftmost
p1 will be assigned in order as follows : p1 will be assigned in order as follows:
Order Assignment Order Assignment
1 00000000 1 00000000
2 10000000 2 10000000
3 01000000 3 01000000
4 11000000 4 11000000
5 00100000 5 00100000
6 10100000 6 10100000
7 01100000 7 01100000
8 11100000 8 11100000
9 00010000 9 00010000
... ...
This is actually a mirror of binary counting. This is actually a mirror of binary counting.
3.2 Rightmost 3.2 Rightmost
pN (the last part) will be assigned in order as follows : pN (the last part) will be assigned in order as follows:
Order Assignment Order Assignment
1 00000000 1 00000000
2 00000001 2 00000001
3 00000010 3 00000010
4 00000011 4 00000011
5 00000100 5 00000100
6 00000101 6 00000101
7 00000110 7 00000110
8 00000111 8 00000111
9 00001000 9 00001000
... ...
3.3 Centermost 3.3 Centermost
pX (where 1 < X < N) will be assigned in order as follows : (for pX (where 1 < X < N) will be assigned in order as follows: (for
example, with a 8 bit predefined length l(pX)=8)) example, with a 8 bit predefined length l(pX)=8))
Order Assignment Order Assignment
1 00000000 1 00000000
2 00001000 2 00001000
3 00010000 3 00010000
4 00011000 4 00011000
5 00000100 5 00000100
6 00001100 6 00001100
7 00010100 7 00010100
8 00011100 8 00011100
9 00100000 9 00100000
... ...
The bits are assigned using the following algorithm: The bits are assigned using the following algorithm:
1. The first round is to select only the middle bit (and if there is 1. The first round is to select only the middle bit (and if there is
an even number of bits pick the bit following the center) an even number of bits pick the bit following the center)
2. Create all combinations using the selected bits that haven't yet 2. Create all combinations using the selected bits that haven't yet
been created. been created.
skipping to change at page 6, line 5 skipping to change at page 5, line 10
anticipates in the foreseeable future a maximum of 256 customers anticipates in the foreseeable future a maximum of 256 customers
consuming 8 bits. One of these customers, named C2, anticipates a consuming 8 bits. One of these customers, named C2, anticipates a
maximum of 1024 customer's assignments under it, consuming 10 other maximum of 1024 customer's assignments under it, consuming 10 other
bits. bits.
The assignment will be as follows, not showing the first 24 leftmost The assignment will be as follows, not showing the first 24 leftmost
bits (3ffe:0b00/24: 00111111 11111110 00001011): bits (3ffe:0b00/24: 00111111 11111110 00001011):
P1 assigns address space to its customers using leftmost bits: P1 assigns address space to its customers using leftmost bits:
10000000 : assigned to C1 10000000 : assigned to C1
01000000 : assigned to C2 01000000 : assigned to C2
11000000 : assigned to C3 11000000 : assigned to C3
00100000 : assigned to C4 00100000 : assigned to C4
... ...
C2 assigns address space to its customers (C2C1, C2C2, ...) using C2 assigns address space to its customers (C2C1, C2C2, ...) using
centermost bits: centermost bits:
0000010000 : assigned to C2C1 0000010000 : assigned to C2C1
0000100000 : assigned to C2C2 0000100000 : assigned to C2C2
0000110000 : assigned to C2C3 0000110000 : assigned to C2C3
... ...
Customers of C2 can use centermost bits for maximum flexibility and Customers of C2 can use centermost bits for maximum flexibility and
then the last aggregators (should be a network in a site) will be then the last aggregators (should be a network in a site) will be
assigned using rightmost bits. assigned using rightmost bits.
Putting all bits together for C2C3: Putting all bits together for C2C3:
P1 |C2 |C2C3 P1 |C2 |C2C3
00111111 11111110 00001011 01000000 00001100 00 00111111 11111110 00001011 01000000 00001100 00
<-------> <------> <-------> <------>
growing bits growing bits
By using this method, P1 will be able to expand the number of By using this method, P1 will be able to expand the number of
customers and the customers will be able to modify their first customers and the customers will be able to modify their first
assumptions about the size of their own customers, until the assumptions about the size of their own customers, until the
"reserved" bits are assigned. "reserved" bits are assigned.
5. Implementation 5. Security Considerations
The following Perl code was written by Jocelyn Picard
(Jocelyn.Picard@viagenie.qc.ca) and implements this draft. This code
is free and without any warranty.
#!/sur/bin/perl -w
use strict;
#=========================================================
# allocation(Last Prefix,Number of bits,Method)
#
# Last Prefix = last prefix allocated, ex: 3ffe:b00::/48
# Number of bits = range we want to allocate
# Method = method to use: l,c or r (left,center,right)
#
# Returns next prefix using selected method
#
# Note: no validation is made
#
#-------------------------------------------------------
sub allocation {
my ($ip,$pl)=split('/',shift);
my ($nbits,$method) = @_ ;
my ($w,@Abits,$abits);
my $i = $ip =~ s/:/:/g;
my $repl= ':0' x (9 - $i);
$ip =~ s/::/$repl/;
$ip =~ s/^:/0:/;
foreach $i (split(':',$ip)) {
push @Abits, split('',unpack("B16", pack("n", hex($i))));
}
my $sp = int($nbits/2);
for($i=0;$i<$nbits;$i++) {
if ($method eq "c") {
$w = ($i % 2) ? $sp - ($i+1)/2: $sp + $i/2;
}
elsif ($method eq "r") {
$w = $nbits -1 - $i;
}
else {
$w = $i ;
}
$w += $pl - $nbits;
if ($Abits[$w] == 0) {
$Abits[$w] = 1;
last;
}
else {
return 0 if ($i == $nbits-1);
$Abits[$w] = 0;
}
}
$abits = join("",@Abits);
$ip = "";
for($i=0;$i<8;$i++) {
$ip .= sprintf("%lx",
unpack("n", pack("B16", substr($abits, $i * 16,16)))) . ":";
}
chop $ip;
$ip =~ s/(:0){2,}$/::/;
return($ip . "/$pl");
}
#===============================================================
#
#Usage example: allocation of 100 /48 using "centermost" method
#
my $Prefix = '3ffe:b00::/48';
for(my $i=0;$i<100;$i++) {
print $Prefix = allocation($Prefix,16,'c'),"\n";
}
6. Security Considerations
Address assignment doesn't seem to have any specific security Address assignment doesn't seem to have any specific security
consideration. consideration.
7. Acknowledgements 6. Acknowledgements
Thanks to Steve Deering, Bob Hinden, Thomas Narten, Erik Nordmark, Thanks to Steve Deering, Bob Hinden, Thomas Narten, Erik Nordmark,
Florent Parent and Jocelyn Picard for their very useful comments on Florent Parent and Jocelyn Picard for their very useful comments on
this work. this work.
References References
[1] Tsuchiya, P., "On the assignment of subnet numbers", RFC 1219, [1] Tsuchiya, P., "On the assignment of subnet numbers", RFC 1219,
April 1991. April 1991.
[2] Bradner, S., "The Internet Standards Process -- Revision 3", BCP [2] Bradner, S., "The Internet Standards Process -- Revision 3", BCP
9, RFC 2026, October 1996. 9, RFC 2026, October 1996.
Author's Address Author's Address
Marc Blanchet Marc Blanchet
Viagenie inc. Viagenie
2875 boul. Laurier, bureau 300 2875 boul. Laurier, bureau 300
Sainte-Foy, QC G1V 2M2 Sainte-Foy, QC G1V 2M2
Canada Canada
Phone: +1 418 656 9254 Phone: +1 418 656 9254
EMail: Marc.Blanchet@viagenie.qc.ca EMail: Marc.Blanchet@viagenie.qc.ca
URI: http://www.viagenie.qc.ca/ URI: http://www.viagenie.qc.ca/
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2002). All Rights Reserved. Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
 End of changes. 21 change blocks. 
167 lines changed or deleted 71 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/