What does an IPv6 address look like?

(and where do I get one?)

Unlike the familiar IPv4 addresses which are 32 bits long, written in decimal, and separated by periods, IPv6 addresses are 128 bits long, written in hexadecimal, and separated by colons. An example would be:

 

3ffe:1900:4545:3:200:f8ff:fe21:67cf

Colons separate 16-bit fields. Leading zeros can be omitted in each field as can be seen above where the field :0003: is written :3:. In addition, a double colon (::) can be used once in an address to replace multiple fields of zeros. For example:

 

fe80:0:0:0:200:f8ff:fe21:67cf

can be written

fe80::200:f8ff:fe21:67cf



To see an example of these addresses, try the following commands in a terminal window of the OpenVMS system:

 

$ ifconfig -a

to see the network interfaces and addresses and

$ netstat -rn

to see the routing tables.

Notice the IPv4 address and the two IPv6 addresses on the ethernet interface (WE0). One address is a globally assigned address and one is a local address valid only on the local network. Also notice the loopback address on the loopback interface (LO0). Many zeros have been replaced with the double colon.

RFC2732 describes the format for typing IPv6 address literals in URLs, enclosing the the address in square brackets.

For example:

http://[3ffe:1900:4545:3:200:f8ff:fe21:67cf]:80/index.html

 

Address prefixes are assigned to you by your Internet Service Provider. RFC2374 breaks down the IPv6 global unicast address format as follows:

 

     | 3|  13 | 8 |   24   |   16   |          64 bits               |
     +--+-----+---+--------+--------+--------------------------------+
     |FP| TLA |RES|  NLA   |  SLA   |         Interface ID           |
     |  | ID  |   |  ID    |  ID    |                                |
     +--+-----+---+--------+--------+--------------------------------+
     <--Public Topology--->   Site
                           <-------->
                            Topology
                                     <------Interface Identifier----->

Where

FP Format Prefix (001)

TLA ID Top-Level Aggregation Identifier

RES Reserved for future use

NLA ID Next-Level Aggregation Identifier

SLA ID Site-Level Aggregation Identifier

INTERFACE ID Interface Identifier

The three level hierarchy shown above includes a Public Topology (the 48 bit external routing prefix), a Site Topology (typically a 16 bit subnet number), and an Interface Identifier (typically an automatically generated 64 bit number unique at least on the local LAN segment).

The Public Topology has two or more levels of hierarchy, specifying the Top Level Aggregator (typically a high level ISP), Next Level Aggregators (zero or more mid-level ISPs) and a final Next Level Aggregator which is the end-user-site. End-user-sites get their address prefix from an ISP that provides them IPv6 service.

 

To date there are two types of Top Level Aggregator (TLA) prefixes:

the one for the 6bone whose first 16 bits are 3FFE::/16

the top level aggregators here are called pseudo-TLA's, or pTLA's, which are assigned through a process defined by the 6bone community.

the one for early production assignments whose first 16 bits are 2001::/16

the top level aggregators here are called sub-TLA's, which are assigned through the International Regional Internet Registry (RIR) Process.

The Interface ID is a 64-bit field usually generated from the interface LAN address. For example, on Ethernet the address is generated according to RFC2464. Very briefly, on Ethernet the Interface ID is created by using the first three bytes of the Ethernet address, followed by FFFE, followed by the last three bytes of the Ethernet address and performing an exclusive-or function of the result with 0200:0000:0000:0000. Since Ethernet addresses are globally unique, this helps generate a unique IPv6 address.

 

For example, the Ethernet address for all of the above examples is

00-00-f8-21-67-cf

For more information on address allocation, visit http://www.6bone.net where some of this document's information was obtained.