summaryrefslogtreecommitdiff
path: root/doc/rtd/topics/network-config-format-v1.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rtd/topics/network-config-format-v1.rst')
-rw-r--r--doc/rtd/topics/network-config-format-v1.rst625
1 files changed, 0 insertions, 625 deletions
diff --git a/doc/rtd/topics/network-config-format-v1.rst b/doc/rtd/topics/network-config-format-v1.rst
deleted file mode 100644
index a9dd31af..00000000
--- a/doc/rtd/topics/network-config-format-v1.rst
+++ /dev/null
@@ -1,625 +0,0 @@
-.. _network_config_v1:
-
-Networking Config Version 1
-===========================
-
-This network configuration format lets users customize their instance's
-networking interfaces by assigning subnet configuration, virtual device
-creation (bonds, bridges, vlans) routes and DNS configuration.
-
-Required elements of a Network Config Version 1 are ``config`` and
-``version``.
-
-Cloud-init will read this format from :ref:`base_config_reference`.
-
-For example the following could be present in
-``/etc/cloud/cloud.cfg.d/custom-networking.cfg``:
-
-.. code-block:: yaml
-
- network:
- version: 1
- config:
- - type: physical
- name: eth0
- subnets:
- - type: dhcp
-
-The :ref:`datasource_nocloud` datasource can also provide cloud-init
-networking configuration in this Format.
-
-Configuration Types
--------------------
-Within the network ``config`` portion, users include a list of configuration
-types. The current list of support ``type`` values are as follows:
-
-- Physical (``physical``)
-- Bond (``bond``)
-- Bridge (``bridge``)
-- VLAN (``vlan``)
-- Nameserver (``nameserver``)
-- Route (``route``)
-
-Physical, Bond, Bridge and VLAN types may also include IP configuration under
-the key ``subnets``.
-
-- Subnet/IP (``subnets``)
-
-
-Physical
-~~~~~~~~
-The ``physical`` type configuration represents a "physical" network device,
-typically Ethernet-based. At least one of these entries is required for
-external network connectivity. Type ``physical`` requires only one key:
-``name``. A ``physical`` device may contain some or all of the following
-keys:
-
-**name**: *<desired device name>*
-
-A devices name must be less than 15 characters. Names exceeding the maximum
-will be truncated. This is a limitation of the Linux kernel network-device
-structure.
-
-**mac_address**: *<MAC Address>*
-
-The MAC Address is a device unique identifier that most Ethernet-based network
-devices possess. Specifying a MAC Address is optional.
-Letters must be lowercase.
-
-.. note::
-
- MAC addresses must be strings. As MAC addresses which consist of only the
- digits 0-9 (i.e. no hex a-f) can be interpreted as a base 60 integer per
- the `YAML 1.1 spec`_ it is best practice to quote all MAC addresses to ensure
- they are parsed as strings regardless of value.
-
-.. _YAML 1.1 spec: https://yaml.org/type/int.html
-
-.. note::
-
- Cloud-init will handle the persistent mapping between a
- device's ``name`` and the ``mac_address``.
-
-**mtu**: *<MTU SizeBytes>*
-
-The MTU key represents a device's Maximum Transmission Unit, the largest size
-packet or frame, specified in octets (eight-bit bytes), that can be sent in a
-packet- or frame-based network. Specifying ``mtu`` is optional.
-
-.. note::
-
- The possible supported values of a device's MTU is not available at
- configuration time. It's possible to specify a value too large or to
- small for a device and may be ignored by the device.
-
-
-**Physical Example**::
-
- network:
- version: 1
- config:
- # Simple network adapter
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- # Second nic with Jumbo frames
- - type: physical
- name: jumbo0
- mac_address: aa:11:22:33:44:55
- mtu: 9000
- # 10G pair
- - type: physical
- name: gbe0
- mac_address: cd:11:22:33:44:00
- - type: physical
- name: gbe1
- mac_address: cd:11:22:33:44:02
-
-Bond
-~~~~
-A ``bond`` type will configure a Linux software Bond with one or more network
-devices. A ``bond`` type requires the following keys:
-
-**name**: *<desired device name>*
-
-A devices name must be less than 15 characters. Names exceeding the maximum
-will be truncated. This is a limitation of the Linux kernel network-device
-structure.
-
-**mac_address**: *<MAC Address>*
-
-When specifying MAC Address on a bond this value will be assigned to the bond
-device and may be different than the MAC address of any of the underlying
-bond interfaces. Specifying a MAC Address is optional. If ``mac_address`` is
-not present, then the bond will use one of the MAC Address values from one of
-the bond interfaces.
-
-.. note::
-
- MAC addresses must be strings. As MAC addresses which consist of only the
- digits 0-9 (i.e. no hex a-f) can be interpreted as a base 60 integer per
- the `YAML 1.1 spec`_ it is best practice to quote all MAC addresses to ensure
- they are parsed as strings regardless of value.
-
-.. _YAML 1.1 spec: https://yaml.org/type/int.html
-
-**bond_interfaces**: *<List of network device names>*
-
-The ``bond_interfaces`` key accepts a list of network device ``name`` values
-from the configuration. This list may be empty.
-
-**mtu**: *<MTU SizeBytes>*
-
-The MTU key represents a device's Maximum Transmission Unit, the largest size
-packet or frame, specified in octets (eight-bit bytes), that can be sent in a
-packet- or frame-based network. Specifying ``mtu`` is optional.
-
-.. note::
-
- The possible supported values of a device's MTU is not available at
- configuration time. It's possible to specify a value too large or to
- small for a device and may be ignored by the device.
-
-**params**: *<Dictionary of key: value bonding parameter pairs>*
-
-The ``params`` key in a bond holds a dictionary of bonding parameters.
-This dictionary may be empty. For more details on what the various bonding
-parameters mean please read the Linux Kernel Bonding.txt.
-
-Valid ``params`` keys are:
-
- - ``active_slave``: Set bond attribute
- - ``ad_actor_key``: Set bond attribute
- - ``ad_actor_sys_prio``: Set bond attribute
- - ``ad_actor_system``: Set bond attribute
- - ``ad_aggregator``: Set bond attribute
- - ``ad_num_ports``: Set bond attribute
- - ``ad_partner_key``: Set bond attribute
- - ``ad_partner_mac``: Set bond attribute
- - ``ad_select``: Set bond attribute
- - ``ad_user_port_key``: Set bond attribute
- - ``all_slaves_active``: Set bond attribute
- - ``arp_all_targets``: Set bond attribute
- - ``arp_interval``: Set bond attribute
- - ``arp_ip_target``: Set bond attribute
- - ``arp_validate``: Set bond attribute
- - ``downdelay``: Set bond attribute
- - ``fail_over_mac``: Set bond attribute
- - ``lacp_rate``: Set bond attribute
- - ``lp_interval``: Set bond attribute
- - ``miimon``: Set bond attribute
- - ``mii_status``: Set bond attribute
- - ``min_links``: Set bond attribute
- - ``mode``: Set bond attribute
- - ``num_grat_arp``: Set bond attribute
- - ``num_unsol_na``: Set bond attribute
- - ``packets_per_slave``: Set bond attribute
- - ``primary``: Set bond attribute
- - ``primary_reselect``: Set bond attribute
- - ``queue_id``: Set bond attribute
- - ``resend_igmp``: Set bond attribute
- - ``slaves``: Set bond attribute
- - ``tlb_dynamic_lb``: Set bond attribute
- - ``updelay``: Set bond attribute
- - ``use_carrier``: Set bond attribute
- - ``xmit_hash_policy``: Set bond attribute
-
-**Bond Example**::
-
- network:
- version: 1
- config:
- # Simple network adapter
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- # 10G pair
- - type: physical
- name: gbe0
- mac_address: cd:11:22:33:44:00
- - type: physical
- name: gbe1
- mac_address: cd:11:22:33:44:02
- - type: bond
- name: bond0
- bond_interfaces:
- - gbe0
- - gbe1
- params:
- bond-mode: active-backup
-
-Bridge
-~~~~~~
-Type ``bridge`` requires the following keys:
-
-- ``name``: Set the name of the bridge.
-- ``bridge_interfaces``: Specify the ports of a bridge via their ``name``.
- This list may be empty.
-- ``params``: A list of bridge params. For more details, please read the
- bridge-utils-interfaces manpage.
-
-Valid keys are:
-
- - ``bridge_ageing``: Set the bridge's ageing value.
- - ``bridge_bridgeprio``: Set the bridge device network priority.
- - ``bridge_fd``: Set the bridge's forward delay.
- - ``bridge_hello``: Set the bridge's hello value.
- - ``bridge_hw``: Set the bridge's MAC address.
- - ``bridge_maxage``: Set the bridge's maxage value.
- - ``bridge_maxwait``: Set how long network scripts should wait for the
- bridge to be up.
- - ``bridge_pathcost``: Set the cost of a specific port on the bridge.
- - ``bridge_portprio``: Set the priority of a specific port on the bridge.
- - ``bridge_ports``: List of devices that are part of the bridge.
- - ``bridge_stp``: Set spanning tree protocol on or off.
- - ``bridge_waitport``: Set amount of time in seconds to wait on specific
- ports to become available.
-
-
-**Bridge Example**::
-
- network:
- version: 1
- config:
- # Simple network adapter
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- # Second nic with Jumbo frames
- - type: physical
- name: jumbo0
- mac_address: aa:11:22:33:44:55
- mtu: 9000
- - type: bridge
- name: br0
- bridge_interfaces:
- - jumbo0
- params:
- bridge_ageing: 250
- bridge_bridgeprio: 22
- bridge_fd: 1
- bridge_hello: 1
- bridge_maxage: 10
- bridge_maxwait: 0
- bridge_pathcost:
- - jumbo0 75
- bridge_pathprio:
- - jumbo0 28
- bridge_stp: 'off'
- bridge_maxwait:
- - jumbo0 0
-
-
-VLAN
-~~~~
-Type ``vlan`` requires the following keys:
-
-- ``name``: Set the name of the VLAN
-- ``vlan_link``: Specify the underlying link via its ``name``.
-- ``vlan_id``: Specify the VLAN numeric id.
-
-The following optional keys are supported:
-
-**mtu**: *<MTU SizeBytes>*
-
-The MTU key represents a device's Maximum Transmission Unit, the largest size
-packet or frame, specified in octets (eight-bit bytes), that can be sent in a
-packet- or frame-based network. Specifying ``mtu`` is optional.
-
-.. note::
-
- The possible supported values of a device's MTU is not available at
- configuration time. It's possible to specify a value too large or to
- small for a device and may be ignored by the device.
-
-
-**VLAN Example**::
-
- network:
- version: 1
- config:
- # Physical interfaces.
- - type: physical
- name: eth0
- mac_address: c0:d6:9f:2c:e8:80
- # VLAN interface.
- - type: vlan
- name: eth0.101
- vlan_link: eth0
- vlan_id: 101
- mtu: 1500
-
-Nameserver
-~~~~~~~~~~
-
-Users can specify a ``nameserver`` type. Nameserver dictionaries include
-the following keys:
-
-- ``address``: List of IPv4 or IPv6 address of nameservers.
-- ``search``: List of hostnames to include in the resolv.conf search path.
-- ``interface``: Optional. Ties the nameserver definition to the specified
- interface. The value specified here must match the `name` of an interface
- defined in this config. If unspecified, this nameserver will be considered
- a global nameserver.
-
-**Nameserver Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: static
- address: 192.168.23.14/27
- gateway: 192.168.23.1
- - type: nameserver
- interface: interface0 # Ties nameserver to interface0 only
- address:
- - 192.168.23.2
- - 8.8.8.8
- search:
- - exemplary
-
-
-
-Route
-~~~~~
-
-Users can include static routing information as well. A ``route`` dictionary
-has the following keys:
-
-- ``destination``: IPv4 network address with CIDR netmask notation.
-- ``gateway``: IPv4 gateway address with CIDR netmask notation.
-- ``metric``: Integer which sets the network metric value for this route.
-
-**Route Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: static
- address: 192.168.23.14/24
- gateway: 192.168.23.1
- - type: route
- destination: 192.168.24.0/24
- gateway: 192.168.24.1
- metric: 3
-
-Subnet/IP
-~~~~~~~~~
-
-For any network device (one of the Config Types) users can define a list of
-``subnets`` which contain ip configuration dictionaries. Multiple subnet
-entries will create interface alias allowing a single interface to use
-different ip configurations.
-
-Valid keys for ``subnets`` include the following:
-
-- ``type``: Specify the subnet type.
-- ``control``: Specify manual, auto or hotplug. Indicates how the interface
- will be handled during boot.
-- ``address``: IPv4 or IPv6 address. It may include CIDR netmask notation.
-- ``netmask``: IPv4 subnet mask in dotted format or CIDR notation.
-- ``gateway``: IPv4 address of the default gateway for this subnet.
-- ``dns_nameservers``: Specify a list of IPv4 dns server IPs to end up in
- resolv.conf.
-- ``dns_search``: Specify a list of search paths to be included in
- resolv.conf.
-- ``routes``: Specify a list of routes for a given interface
-
-
-Subnet types are one of the following:
-
-- ``dhcp4``: Configure this interface with IPv4 dhcp.
-- ``dhcp``: Alias for ``dhcp4``
-- ``dhcp6``: Configure this interface with IPv6 dhcp.
-- ``static``: Configure this interface with a static IPv4.
-- ``static6``: Configure this interface with a static IPv6 .
-- ``ipv6_dhcpv6-stateful``: Configure this interface with ``dhcp6``
-- ``ipv6_dhcpv6-stateless``: Configure this interface with SLAAC and DHCP
-- ``ipv6_slaac``: Configure address with SLAAC
-
-When making use of ``dhcp`` or either of the ``ipv6_dhcpv6`` types,
-no additional configuration is needed in the subnet dictionary.
-
-Using ``ipv6_dhcpv6-stateless`` or ``ipv6_slaac`` allows the IPv6 address to be
-automatically configured with StateLess Address AutoConfiguration (`SLAAC`_).
-SLAAC requires support from the network, so verify that your cloud or network
-offering has support before trying it out. With ``ipv6_dhcpv6-stateless``,
-DHCPv6 is still used to fetch other subnet details such as gateway or DNS
-servers. If you only want to discover the address, use ``ipv6_slaac``.
-
-
-**Subnet DHCP Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: dhcp
-
-
-**Subnet Static Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: static
- address: 192.168.23.14/27
- gateway: 192.168.23.1
- dns_nameservers:
- - 192.168.23.2
- - 8.8.8.8
- dns_search:
- - exemplary.maas
-
-The following will result in an ``interface0`` using DHCP and ``interface0:1``
-using the static subnet configuration.
-
-**Multiple subnet Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: dhcp
- - type: static
- address: 192.168.23.14/27
- gateway: 192.168.23.1
- dns_nameservers:
- - 192.168.23.2
- - 8.8.8.8
- dns_search:
- - exemplary
-
-**Subnet with routes Example**::
-
- network:
- version: 1
- config:
- - type: physical
- name: interface0
- mac_address: '00:11:22:33:44:55'
- subnets:
- - type: dhcp
- - type: static
- address: 10.184.225.122
- netmask: 255.255.255.252
- routes:
- - gateway: 10.184.225.121
- netmask: 255.240.0.0
- network: 10.176.0.0
- - gateway: 10.184.225.121
- netmask: 255.240.0.0
- network: 10.208.0.0
-
-
-Multi-layered configurations
-----------------------------
-
-Complex networking sometimes uses layers of configuration. The syntax allows
-users to build those layers one at a time. All of the virtual network devices
-supported allow specifying an underlying device by their ``name`` value.
-
-**Bonded VLAN Example**::
-
- network:
- version: 1
- config:
- # 10G pair
- - type: physical
- name: gbe0
- mac_address: cd:11:22:33:44:00
- - type: physical
- name: gbe1
- mac_address: cd:11:22:33:44:02
- # Bond.
- - type: bond
- name: bond0
- bond_interfaces:
- - gbe0
- - gbe1
- params:
- bond-mode: 802.3ad
- bond-lacp-rate: fast
- # A Bond VLAN.
- - type: vlan
- name: bond0.200
- vlan_link: bond0
- vlan_id: 200
- subnets:
- - type: dhcp4
-
-More Examples
--------------
-Some more examples to explore the various options available.
-
-**Multiple VLAN example**::
-
- network:
- version: 1
- config:
- - id: eth0
- mac_address: d4:be:d9:a8:49:13
- mtu: 1500
- name: eth0
- subnets:
- - address: 10.245.168.16/21
- dns_nameservers:
- - 10.245.168.2
- gateway: 10.245.168.1
- type: static
- type: physical
- - id: eth1
- mac_address: d4:be:d9:a8:49:15
- mtu: 1500
- name: eth1
- subnets:
- - address: 10.245.188.2/24
- dns_nameservers: []
- type: static
- type: physical
- - id: eth1.2667
- mtu: 1500
- name: eth1.2667
- subnets:
- - address: 10.245.184.2/24
- dns_nameservers: []
- type: static
- type: vlan
- vlan_id: 2667
- vlan_link: eth1
- - id: eth1.2668
- mtu: 1500
- name: eth1.2668
- subnets:
- - address: 10.245.185.1/24
- dns_nameservers: []
- type: static
- type: vlan
- vlan_id: 2668
- vlan_link: eth1
- - id: eth1.2669
- mtu: 1500
- name: eth1.2669
- subnets:
- - address: 10.245.186.1/24
- dns_nameservers: []
- type: static
- type: vlan
- vlan_id: 2669
- vlan_link: eth1
- - id: eth1.2670
- mtu: 1500
- name: eth1.2670
- subnets:
- - address: 10.245.187.2/24
- dns_nameservers: []
- type: static
- type: vlan
- vlan_id: 2670
- vlan_link: eth1
- - address: 10.245.168.2
- search:
- - dellstack
- type: nameserver
-
-.. _SLAAC: https://tools.ietf.org/html/rfc4862
-
-.. vi: textwidth=79