It looks like ovn not passing logical router/switch active/down status up to Neutron properly or Neutron is not honoring the information. Although everything is working as expected Openstack reports logical router/switch port to be in a down state. This does not appear to have an affect on instance ports as they report properly.
Below is an example, the router ports (172.17.0.1, 172.18.0.1, 172.19.0.1, and the GTSP/DTSP) all show down even though inter-network traffic works as expected. You can see that the instances (172.17.0.10, 172.17.0.20, 172.17.0.30) port do show proper status.
openstack port list
+--------------------------------------+-------------+-------------------+------------------------------------------------------------------------------+--------+
| ID | Name | MAC Address | Fixed IP Addresses | Status |
+--------------------------------------+-------------+-------------------+------------------------------------------------------------------------------+--------+
| 12312489-79e5-4f88-8698-4c57081623af | GTSP | fa:16:3e:90:13:98 | ip_address='169.254.128.1', subnet_id='a9aedac2-c36a-4964-a1d7-a5b4e815abe5' | DOWN |
| 19e66975-2f81-40df-86d1-587a2121fe20 | | fa:16:3e:aa:4b:c5 | ip_address='10.0.64.8', subnet_id='a726918b-b273-4a2b-8a42-4605fccdb8fb' | DOWN |
| 56db066c-dd6c-4cc4-9c14-0cc6e6c48fcf | test-3-port | fa:16:3e:ff:fb:76 | ip_address='172.18.0.30', subnet_id='8bfc9808-ba56-49ce-b308-ed6d7f1c6701' | ACTIVE |
| 82a335ea-dbd5-4bc0-b1a0-0b88a346b582 | | fa:16:3e:70:e8:1e | ip_address='172.17.0.30', subnet_id='9dd04c5c-9162-4dfc-b903-6e558f44fa0b' | ACTIVE |
| 90b16a19-11d9-4844-8fbe-2340367f18d5 | | fa:16:3e:b6:bd:29 | ip_address='172.18.0.1', subnet_id='8bfc9808-ba56-49ce-b308-ed6d7f1c6701' | DOWN |
| a6f73995-9c70-47cb-bc04-f9d98e48c5fa | test-1-port | fa:16:3e:35:27:9c | ip_address='172.17.0.10', subnet_id='9dd04c5c-9162-4dfc-b903-6e558f44fa0b' | ACTIVE |
| a9ce85a0-c2ff-4f4f-86dc-521e341ee938 | test-2-port | fa:16:3e:52:69:77 | ip_address='172.17.0.20', subnet_id='9dd04c5c-9162-4dfc-b903-6e558f44fa0b' | ACTIVE |
| b391b91f-44eb-49dd-8b6d-c7f9f22436a4 | DTSP | fa:16:3e:ac:6c:bf | ip_address='169.254.128.2', subnet_id='a9aedac2-c36a-4964-a1d7-a5b4e815abe5' | DOWN |
| c96e6e9a-bec6-40b1-8beb-3adcf6098a68 | | fa:16:3e:42:1b:54 | ip_address='172.17.0.1', subnet_id='9dd04c5c-9162-4dfc-b903-6e558f44fa0b' | DOWN |
| e5cc28bd-2db2-4361-9cbf-63eeb1296d65 | | fa:16:3e:0a:cc:d4 | ip_address='172.19.0.1', subnet_id='e447accd-cbf4-411a-b76f-a7582063caf2' | DOWN |
+--------------------------------------+-------------+-------------------+------------------------------------------------------------------------------+--------+
Looking into the log file one example shows that information is being passed as Neutron does log what is akin to a link flap, but as previously metnioned it may not be honored or properly formatted. This example is a router port tied to the 172.18.0.1 subnet.
cat /var/log/neutron/server.log | grep "networking_ovn.ml2.mech_driver" | awk '{ print $1=$2=""; print $0}'
5393 INFO networking_ovn.ml2.mech_driver [req-d4aa53c5-b78e-4360-9c9e-194f76cdb15c - - - - -] Starting OVNMechanismDriver
5416 INFO networking_ovn.ml2.mech_driver [-] OVN reports status up for port: 90b16a19-11d9-4844-8fbe-2340367f18d5
5416 INFO networking_ovn.ml2.mech_driver [req-347dbab3-4326-4a0d-b77c-eccc5532bee1 - - - - -] OVN reports status down for port: 90b16a19-11d9-4844-8fbe-2340367f18d5
5416 INFO networking_ovn.ml2.mech_driver [req-347dbab3-4326-4a0d-b77c-eccc5532bee1 - - - - -] OVN reports status up for port: 90b16a19-11d9-4844-8fbe-2340367f18d5
5416 INFO networking_ovn.ml2.mech_driver [req-347dbab3-4326-4a0d-b77c-eccc5532bee1 - - - - -] OVN reports status down for port: 90b16a19-11d9-4844-8fbe-2340367f18d55
This issue was also reported on the OVS mailing list
This issue was seen on a Openstack Ocata release using OVS/OVN 2.6.1 (from packages) running on CentOS 7.