neutron/neutron/agent/linux
Rodolfo Alonso Hernandez ed22f7a2ff [OVS][FW] Remote SG IDs left behind when a SG is removed
When any port in the OVS agent is using a security groups (SG) and
this SG is removed, is marked to be deleted. This deletion process
is done in [1].

The SG deletion process consists on removing any reference of this SG
from the firewall and the SG port map. The firewall removes this SG in
[2].

The information of a SG is stored in:
* ConjIPFlowManager.conj_id_map = ConjIdMap(). This class stores the
  conjunction IDS (conj_ids) in a dictionary using the following keys:

    ConjIdMap.id_map[(sg_id, remote_sg_id, direction, ethertype,
      conj_ids)] = conj_id_XXX

* ConjIPFlowManager.conj_ids is a nested dictionary, built in the
  following way:

    self.conj_ids[vlan_tag][(direction, ethertype)][remote_sg_id] = \
      set([conj_id_1, conj_id_2, ...])

This patch stores all conjuntion IDs generated and assigned to the
tuple (sg_id, remote_sg_id, direction, ethertype). When a SG is
removed, the deletion method will look for this SG in the new storage
variable created, ConjIdMap.id_map_group, and will mark all the
conjuntion IDs related to be removed. That will cleanup those rules
left in the OVS matching:
  action=conjunction(conj_id, 1/2)

[1]118930f03d/neutron/agent/linux/openvswitch_firewall/firewall.py (L731)
[2]118930f03d/neutron/agent/linux/openvswitch_firewall/firewall.py (L399)

Change-Id: I63e446a30cf10e7bcd34a6f0d6ba1711301efcbe
Related-Bug: #1881157
(cherry picked from commit 0eebd002cc)
2020-07-31 09:02:31 +00:00
..
openvswitch_firewall [OVS][FW] Remote SG IDs left behind when a SG is removed 2020-07-31 09:02:31 +00:00
__init__.py Empty files should not contain copyright or license 2014-10-20 00:50:32 +00:00
bridge_lib.py Add namespace support for "bridge" commands 2019-04-29 07:52:18 +00:00
daemon.py Use sys.executable instead of 'python' 2020-02-07 19:48:05 +01:00
dhcp.py Fixes dnsmasq host file parsing with "addr6_list" 2020-06-22 11:19:52 +00:00
dibbler.py use PROVISIONAL_IPV6_PD_PREFIX from neutron-lib 2017-11-14 12:26:43 -07:00
ethtool.py Workaround for TCP checksum issue with ovs-dpdk and veth pair 2020-06-29 17:34:39 +00:00
external_process.py Check dnsmasq process is active when spawned 2019-10-25 13:30:30 -04:00
interface.py Workaround for TCP checksum issue with ovs-dpdk and veth pair 2020-06-29 17:34:39 +00:00
ip_conntrack.py Merge "Use '-p ip' instead of '-p 0' with conntrack" 2019-04-12 13:02:24 +00:00
ip_lib.py Use pyroute2 for SRIOV VF commands 2020-06-26 06:09:48 +00:00
ipset_manager.py [Security] fix allowed-address-pair 0.0.0.0/0 issue 2020-03-21 17:54:34 +08:00
iptables_comments.py Iptables firewall driver adds forward rules for trusted ports 2018-03-06 10:13:44 +01:00
iptables_firewall.py Fix iptables rules comments 2020-06-10 06:57:14 +00:00
iptables_manager.py Log the IPTables rules if "debug_iptables_rules" 2019-09-23 09:58:36 +00:00
keepalived.py [L3 HA] Add "no_track" option to VIPs in keepalived config 2020-04-22 15:05:13 +02:00
l3_tc_lib.py Use Pyroute2 "add_tc_qdisc" function in l3_tc_lib 2019-07-05 08:13:07 +00:00
of_monitor.py OpenFlow monitor 2019-11-20 18:00:13 +00:00
pd.py remove neutron.common.constants 2019-04-04 14:10:26 -06:00
pd_driver.py use PROVISIONAL_IPV6_PD_PREFIX from neutron-lib 2017-11-14 12:26:43 -07:00
ra.py Add radvd_user config option 2019-10-14 13:01:30 +00:00
tc_lib.py Fix the wrong value for QoS rate conversion to bytes/s 2020-06-24 17:21:16 +00:00
utils.py Log exact error during getting value from file 2019-12-03 10:10:27 +01:00
xenapi_root_helper.py Fix bandit warning 2019-05-10 08:38:34 -04:00