diff --git a/manifests/agents/ml2/ovs.pp b/manifests/agents/ml2/ovs.pp index e25c6e203..d7a0d69a1 100644 --- a/manifests/agents/ml2/ovs.pp +++ b/manifests/agents/ml2/ovs.pp @@ -173,6 +173,12 @@ # outgoing IP packet carrying GRE/VXLAN tunnel. # Defaults to $::os_service_default # +# [*explicitly_egress_direct*] +# (optional) When set to True, the accepted egress unicast traffic will not +# use action NORMAL. The accepted egress packets will be taken care of in the +# final egress tables direct output flows for unicast traffic. (boolean value) +# Defaults to $::os_service_default +# # DEPRECATED # # [*of_interface*] @@ -212,6 +218,7 @@ class neutron::agents::ml2::ovs ( $permitted_ethertypes = $::os_service_default, $minimize_polling = $::os_service_default, $tunnel_csum = $::os_service_default, + $explicitly_egress_direct = $::os_service_default, # DEPRECATED $of_interface = undef, ) { @@ -313,6 +320,7 @@ class neutron::agents::ml2::ovs ( 'agent/extensions': value => join(any2array($extensions), ','); 'agent/minimize_polling': value => $minimize_polling; 'agent/tunnel_csum': value => $tunnel_csum; + 'agent/explicitly_egress_direct': value => $explicitly_egress_direct; 'ovs/ovsdb_timeout': value => $ovsdb_timeout; 'ovs/of_connect_timeout': value => $of_connect_timeout; 'ovs/of_request_timeout': value => $of_request_timeout; diff --git a/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml b/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml new file mode 100644 index 000000000..c3e22818a --- /dev/null +++ b/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Add new configuration parameter explicitly_egress_direct for ML2 OVS agent + When set to True, the accepted egress unicast traffic will not use action + NORMAL. The accepted egress packets will be taken care of in the final + egress tables direct output flows for unicast traffic so that operators can + set customized integration bridge name in l3 agent configuration. + This can be enabled on some nodes to prevent flooding on integration bridge. diff --git a/spec/classes/neutron_agents_ml2_ovs_spec.rb b/spec/classes/neutron_agents_ml2_ovs_spec.rb index dafa3b04d..466af3189 100644 --- a/spec/classes/neutron_agents_ml2_ovs_spec.rb +++ b/spec/classes/neutron_agents_ml2_ovs_spec.rb @@ -65,6 +65,7 @@ describe 'neutron::agents::ml2::ovs' do is_expected.to contain_neutron_agent_ovs('ovs/int_peer_patch_port').with_ensure('absent') is_expected.to contain_neutron_agent_ovs('ovs/tun_peer_patch_port').with_ensure('absent') is_expected.to contain_neutron_agent_ovs('agent/tunnel_types').with_ensure('absent') + is_expected.to contain_neutron_agent_ovs('agent/explicitly_egress_direct').with_value(['']) end it 'installs neutron ovs agent package' do @@ -376,6 +377,16 @@ describe 'neutron::agents::ml2::ovs' do end end + context 'with direct output enabled for egress flows' do + before :each do + params.merge!(:explicitly_egress_direct => true) + end + + it 'configure neutron/plugins/ml2/ml2_conf.ini' do + is_expected.to contain_neutron_agent_ovs('agent/explicitly_egress_direct').with_value(true) + end + end + end on_supported_os({