OFAgent: Merge br-int and br-tun

OFAgent: Merge br-int and br-tun

https://blueprints.launchpad.net/neutron/+spec/ofagent-merge-bridges

merge br-int and br-tun and stop using OVS patch ports feature. this involves drastic flow table changes.

Problem description

ofagent aims to be portable among switch implementations. currently it uses some of OVS specific features. patch ports is one of them.

Proposed change

merge br-int and br-tun into a single bridge.

Alternatives

  • give up and declare that tunnel support is only for OVS. this is not what we want to do.
  • use veth pair instead. this is not ideal as it still requires multiple logical bridge feature. besides that, it likely involve some performance loss because patch ports is better optimized than veth pair.

Data model impact

none

REST API impact

none

Security impact

none

Notifications impact

none

Other end user impact

none

Performance Impact

because OVS patch ports hardly have negative performace effects for fast path, this change is not expected to improve performance.

Other deployer impact

when upgrading the agent, deployer might want to remove br-tun.

Developer impact

none

Implementation

Assignee(s)

Primary assignee:
yamamoto
Other contributors:
kakuma

Work Items

  • design flow table. see flow_table for WIP design.
  • implement it in ofagent neutron agent
  • document the upgrade procedure

Dependencies

strictly speaking, none. but the following items are nice to have before this.

  • ofagent-l2pop blueprint (our WIP implementation relies on this)
  • matrohon’s get_device_details-enhancement. or other way to obtain device’s mac_address. (for example, make l2pop provide device-id for entries.) we want to use it for node local routing of packets.

Testing

  • unit tests
  • existing third party testing

Documentation Impact

  • document the upgrade procedure

References

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

neutron-specs
{"cc_re__cc_re__cc_by_3_0": ["terface mappings\"></i></a>\n          \n            <a id=\"logABugLink3\" href=\"\" target=\"_blank\" title=\"Found an error? Report a bug against this page\"><i class=\"fa fa-bug\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Report a Bug\"></i></a>\n          \n          </div>\n          <div class=\"row docs-byline bottom\">\n            <div class=\"docs-updated\">updated: 2018-05-30 17:51</div>\n          </div>\n          <div class=\"row\">\n            <div class=\"col-lg-8 col-md-8 col-sm-8 docs-license\">\n<a href=\"https://creativecommons.org/licenses/by/3.0/\">\n <img src=\"../../_static/images/docs/license.png\" alt=\"Creative Commons Attribution 3.0 License\"/>\n</a>\n<p>\n Except where otherwise noted, this document is licensed under\n <a href=\"https://creativecommons.org/licenses/by/3.0/\">Creative Commons\n Attribution 3.0 License</a>. See all <a href=\"http://www.openstack.org/legal\">\n OpenStack Legal Documents</a>.\n</p>\n            </div>\n            <div class=\"col-lg-4 col-md-4 col-sm-4 docs-actions-wrapper\">\n            <!-- ID buglinkbottom added so th", "a Bug\"></i></a>\n          \n          </div>\n          <div class=\"row docs-byline bottom\">\n            <div class=\"docs-updated\">updated: 2018-05-30 17:51</div>\n          </div>\n          <div class=\"row\">\n            <div class=\"col-lg-8 col-md-8 col-sm-8 docs-license\">\n<a href=\"https://creativecommons.org/licenses/by/3.0/\">\n <img src=\"../../_static/images/docs/license.png\" alt=\"Creative Commons Attribution 3.0 License\"/>\n</a>\n<p>\n Except where otherwise noted, this document is licensed under\n <a href=\"https://creativecommons.org/licenses/by/3.0/\">Creative Commons\n Attribution 3.0 License</a>. See all <a href=\"http://www.openstack.org/legal\">\n OpenStack Legal Documents</a>.\n</p>\n            </div>\n            <div class=\"col-lg-4 col-md-4 col-sm-4 docs-actions-wrapper\">\n            <!-- ID buglinkbottom added so that pre-filled doc bugs\n                 are sent to Launchpad projects related to the\n                 document -->\n              <a href=\"#\" id=\"logABugLink2\" class=\"docs-footer-actions\"><i class=\"fa fa-bug\"></i> found an error"]}