diff --git a/etc/neutron.conf b/etc/neutron.conf index 56997e9b34c..3b208dab29b 100644 --- a/etc/neutron.conf +++ b/etc/neutron.conf @@ -146,6 +146,13 @@ lock_path = $state_path/lock # Maximum number of routes per router # max_routes = 30 +# =========== items for MTU selection and advertisement ============= +# Advertise MTU. If True, effort is made to advertise MTU +# settings to VMs via network methods (ie. DHCP and RA MTU options) +# when the network's preferred MTU is known. +# advertise_mtu = False +# ======== end of items for MTU selection and advertisement ========= + # =========== items for agent management extension ============= # Seconds to regard the agent as down; should be at least twice # report_interval, to be sure the agent is down for good diff --git a/etc/neutron/plugins/ml2/ml2_conf.ini b/etc/neutron/plugins/ml2/ml2_conf.ini index 4fb1a4a360c..9b8a4619202 100644 --- a/etc/neutron/plugins/ml2/ml2_conf.ini +++ b/etc/neutron/plugins/ml2/ml2_conf.ini @@ -26,6 +26,29 @@ # extension_drivers = # Example: extension_drivers = anewextensiondriver +# =========== items for MTU selection and advertisement ============= +# (IntOpt) Path MTU. The maximum permissible size of an unfragmented +# packet travelling from and to addresses where encapsulated Neutron +# traffic is sent. Drivers calculate maximum viable MTU for +# validating tenant requests based on this value (typically, +# path_mtu - max encap header size). If <=0, the path MTU is +# indeterminate and no calculation takes place. +# path_mtu = 0 + +# (IntOpt) Segment MTU. The maximum permissible size of an +# unfragmented packet travelling a L2 network segment. If <=0, +# the segment MTU is indeterminate and no calculation takes place. +# segment_mtu = 0 + +# (ListOpt) Physical network MTUs. List of mappings of physical +# network to MTU value. The format of the mapping is +# :. This mapping allows specifying a +# physical network MTU value that differs from the default +# segment_mtu value. +# physical_network_mtus = +# Example: physical_network_mtus = physnet1:1550, physnet2:1500 +# ======== end of items for MTU selection and advertisement ========= + [ml2_type_flat] # (ListOpt) List of physical_network names with which flat networks # can be created. Use * to allow flat networks with arbitrary diff --git a/neutron/common/config.py b/neutron/common/config.py index 194f8f9492d..a0572c94eba 100644 --- a/neutron/common/config.py +++ b/neutron/common/config.py @@ -121,6 +121,10 @@ core_opts = [ cfg.IntOpt('send_events_interval', default=2, help=_('Number of seconds between sending events to nova if ' 'there are any events to send.')), + cfg.BoolOpt('advertise_mtu', default=False, + help=_('If True, effort is made to advertise MTU settings ' + 'to VMs via network methods (DHCP and RA MTU options) ' + 'when the network\'s preferred MTU is known.')), ] core_cli_opts = [ diff --git a/neutron/plugins/ml2/config.py b/neutron/plugins/ml2/config.py index a5c05658851..ddc1547fb8e 100644 --- a/neutron/plugins/ml2/config.py +++ b/neutron/plugins/ml2/config.py @@ -35,6 +35,22 @@ ml2_opts = [ help=_("An ordered list of extension driver " "entrypoints to be loaded from the " "neutron.ml2.extension_drivers namespace.")), + cfg.IntOpt('path_mtu', default=0, + help=_('The maximum permissible size of an unfragmented ' + 'packet travelling from and to addresses where ' + 'encapsulated Neutron traffic is sent. If <= 0, ' + 'the path MTU is indeterminate.')), + cfg.IntOpt('segment_mtu', default=0, + help=_('The maximum permissible size of an unfragmented ' + 'packet travelling a L2 network segment. If <= 0, the ' + 'segment MTU is indeterminate.')), + cfg.ListOpt('physical_network_mtus', + default=[], + help=_("A list of mappings of physical networks to MTU " + "values. The format of the mapping is " + ":. This mapping allows " + "specifying a physical network MTU value that " + "differs from the default segment_mtu value.")), ]