User Tools

Site Tools


arch:addressing

Addressing in CONFINE

This document explains the different address schemes used by a CONFINE testbed. For the mapping of addresses to the different devices in a node, see the Node architecture. For information on which address ranges are used by all CONFINE project partners in the Community-Lab testbed see page Network Ranges.

Common concepts

CONFINE private IPv6 prefix

A 48-bit prefix used to generate unique internal node-wide, fixed recovery node-wide and unique recovery local link-wide IPv6 addresses for slivers, node devices and hosts in the node private network. This ULA prefix is common to all nodes in all CONFINE testbeds.

Value: fdbd:e804:6aa9::/48

CONFINE debug IPv6 prefix

A 48-bit prefix used to generate unique debug local link-wide IPv6 addresses for servers, node devices, slivers and hosts in the local debug network. This ULA prefix is common to all nodes in all CONFINE testbeds.

Value: fd5f:eee5:e6ad::/48

Testbed management IPv6 prefix

A 48-bit prefix used to generate unique management testbed-wide IPv6 addresses for servers, node devices, slivers and hosts in the testbed management network. This can be a public IPv6 network like X:Y:Z::/48 or a private one using ULA like fdxx:Y:Z::/48. ULA and 6to4 are particularly easy ways to obtain a /48 prefix (private and public, respectively). A public prefix can be used to make the management network reachable from the IPv6 Internet.

Example: 2001:db8:cafe::/48

Node private IPv4 prefix

A 24-bit prefix used to generate reusable internal and fixed recovery node-wide IPv4 addresses in the node private network. This must be a private IPv4 network (see) like X.Y.Z.0/24.

Example: 192.168.157.0/24

Node sliver MAC prefix

A 16-bit prefix used to generate reusable node-wide MAC addresses for slivers in the node. It must be a locally administered unicast prefix (see), so it must accomplish that prefix & 0x300 == 0x200.

Example: 0x06ab

Node ID

A 16-bit positive number starting from 1 which uniquely identifies a node in the testbed. It can not be reused for other nodes.

Example: 1234

Slice ID

A 48-bit positive number starting from 1 which uniquely identifies a slice in the testbed. It can not be reused for other slices.

Example: 1234567890

Interface number

An 8-bit positive number associated with a given interface of a given sliver. The number of the private interface is always 0.

Sliver number

An 8-bit positive number starting from 1 associated with a given sliver deployed in a given node at a given time. When the sliver is undeployed its number is freed. Sliver numbers must be reused by the same node in a compact way, i.e. when a sliver is deployed, the lowest free sliver number must be used.

MAC address scheme

This is the format of MAC addresses assigned to sliver interfaces during the sliver's lifetime:

<mac-prefix-msb>:<mac-prefix-lsb>:<node-id-msb>:<node-id-lsb>:<sliver-n>:<interface-n>

Please note that this may not apply to some kinds of sliver interfaces like isolated interfaces, which inherit the MAC address of their parent interface (see the Node architecture).

Also, per convention the private interface of a sliver is always #0, its main management one #1 and its main public one #2.

For instance, the MAC address

06:ab:04:d2:05:00

corresponds to interface #0 (i.e. the private interface) of sliver #5 deployed in node 1234 (0x04d2), which uses the 0x06ab MAC prefix. To find out the associated slice, the database must be queried (or the node if the sliver is still deployed).

IPv4 address scheme

A node private IPv4 network X.Y.Z.0/24 is further divided into two subnetworks: the internal network and the recovery network.

Addresses in the node internal IPv4 network X.Y.Z.0/25 are assigned like this:

  • X.Y.Z.S is the address of sliver #S during its lifetime (called the sliver's private IPv4 address).
  • X.Y.Z.126 is always the address of the research device (called the RD's internal IPv4 address).

For instance, the address 192.168.157.7 corresponds to the private IPv4 address of sliver #7 in a node which uses the 192.168.157.0/24 private IPv4 prefix. To find out the associated slice given a node (since this is an internal address), the database must be queried (or the node if the sliver is still deployed).

  • Example command for a sliver getting its private IPv4 address:

    ip -4 a s dev eth0 | sed -rne 's#^ +inet ([.0-9]+)/[0-9]+ .*scope global.*#\1#p'
    
  • Example command for a sliver getting the RD's internal IPv4 address:

    ip -4 a s dev eth0 | sed -rne 's#^ +inet ([.0-9]+)\.[0-9]+/[0-9]+ .*scope global.*#\1.126#p'
    

Addresses in the node fixed recovery IPv4 network X.Y.Z.128/25 are assigned like this:

  • X.Y.Z.129 is always the address of the community device.
  • X.Y.Z.130 is always the address of the research device (called the RD's fixed recovery IPv4 address).
  • X.Y.Z.131 is always the address of the recovery device.
  • X.Y.Z.H with 132 ≤ H < 255 is free for hosts to connect to other node devices using their addresses in the recovery network.

On local links having several CONFINE nodes, these recovery addresses can only work if each node has a different private IPv4 network. Otherwise, use local unique recovery IPv6 addresses (see below).

For instance, the address 192.168.157.130 corresponds to the RD's IPv4 recovery address a node which uses the 192.168.157.0/24 private IPv4 prefix.

IPv6 address scheme

Please note how in all IPv6 addresses with a constructed interface identifier (i.e. not based in Modified EUI-64), the second nibble of the identifier is always 0 to ensure that the corresponding EUI-64 address is identified as locally administered and unicast.

Testbed management IPv6 network

The network X:Y:Z::/48 is further divided into several /64 subnetworks.

Addresses in the network X:Y:Z:0::/64 belong to individual hosts and are assigned like this:

  • X:Y:Z:0:0000:rrrr:rrrr:rrrr/128 with 0xrrrrrrrrrrrr = R ≥ 1 is the address of the testbed server R.
  • X:Y:Z:0:1000::N/128 is the address of the node N (called the node's host address) if native routing towards its management subnetwork is needed.
  • X:Y:Z:0:2000:hhhh:hhhh:hhhh/128 with 0xhhhhhhhhhhhh = H ≥ 1 is the address of the odd host H.

For instance, the address 2001:db8:cafe:0:200::abcd corresponds to the management IPv6 address of the odd host 43981 (0xabcd) in a testbed which uses the 2001:db8:cafe::/48 management IPv6 prefix.

Addresses in each local node management IPv6 subnetwork X:Y:Z:N::/64 implemented in node ID N are assigned like this:

  • X:Y:Z:N:0000::1/64 is always the address of the community device.
  • X:Y:Z:N:0000::2/64 is always the address of the research device (called the RD's management address).
  • X:Y:Z:N:0000::3/64 is always the address of the recovery device.
  • X:Y:Z:N:10ii:ssss:ssss:ssss/64 with 0xssssssssssss = S ≥ 1 and 0xii = I is the address of interface #I in the sliver of slice ID S.
  • X:Y:Z:N:2000:hhhh:hhhh:hhhh/64 with 0xhhhhhhhhhhhh = H ≥ 1 is the address of the node host H.

For instance, the address 2001:db8:cafe:4d2:1001::4996:02d2 corresponds to the management IPv6 address of interface #1 of the sliver associated with slice ID 1234567890 (0x0000499602d2) deployed in node 1234 (0x04d2) in a testbed which uses the 2001:db8:cafe::/48 management IPv6 prefix.

CONFINE debug IPv6 network

The network fd5f:eee5:e6ad::/48 exactly mirrors the address scheme of the CONFINE management IPv6 network over a local link connecting several CONFINE servers, nodes and hosts. For instance, the address fd5f:eee5:e6ad:4d2:1001::4996:02d2 corresponds to the debug IPv6 address of interface #1 of the sliver associated with slice ID 1234567890 (0x0000499602d2) deployed in node 1234 (0x04d2) in the testbed.

CONFINE private IPv6 network

The network fdbd:e804:6aa9::/48 is further divided into several /64 subnetworks.

Addresses in the node internal IPv6 network fdbd:e804:6aa9:0::/64 implemented in each node are assigned like this:

  • fdbd:e804:6aa9:0:0000::1/64 is always the address of the research device (called the RD's internal IPv6 address).
  • fdbd:e804:6aa9:0:1000:ssss:ssss:ssss/64 with 0xssssssssssss = S is the address of the sliver of slice ID S.

For instance, the address fdbd:e804:6aa9:0:1000::4996:02d2 corresponds to the private IPv6 address of a sliver associated with slice ID 1234567890 (0x0000499602d2).

  • Example command for a sliver getting its private IPv6 address:

    ip -6 a s dev eth0 | sed -rne 's#^ +inet6 ([:0-9a-f]*)/[0-9]+ .*scope global.*#\1#p'
    

Addresses in the node fixed recovery IPv6 network fdbd:e804:6aa9:1::/64 implemented in each node are assigned like this:

  • fdbd:e804:6aa9:1:0000::1/64 is always the address of the community device.
  • fdbd:e804:6aa9:1:0000::2/64 is always the address of the research device (called the RD's fixed recovery IPv6 address).
  • fdbd:e804:6aa9:1:0000::3/64 is always the address of the recovery device.
  • fdbd:e804:6aa9:1:2000:hhhh:hhhh:hhhh/64 is free for hosts to connect to other node devices using their addresses in the recovery network.

These can only be used in local links having a single CONFINE node. Otherwise, use local unique recovery IPv6 addresses (see below).

Addresses in the local unique recovery IPv6 network fdbd:e804:6aa9:2::/64 are used over a local link connecting several CONFINE servers, node devices and hosts. They have the format fdbd:e804:6aa9:2:W:X:Y:Z/64 where the host part of the address is the EUI-64 version of the MAC address of the interface connected to that link.

arch/addressing.txt · Last modified: 2015/03/13 12:35 by santiago