OFAgent: Flow-based tunneling

https://blueprints.launchpad.net/neutron/+spec/ofagent-flow-based-tunneling

make ofagent use flow-based tunneling rather than the current port-based tunneling.

Problem Description

ofagent creates tunnel ports for each peer nodes. It’s unscalable and complex.

Proposed Change

use flow-based tunneling, using tun_ipv4_src/tun_ipv4_dst NXMs. (in addition to tun_id OXM, which is currently used by ofagent)

Note: while the use of NXMs contradicts to the one of goals of ofagent, i.e. being portable to other switch implementations, it isn’t a problem right now because:

  • the tunneling support is OVS-dependent anyway

  • i’ve heard that the future versions of OpenFlow aims to the same direction. there seems to be no publically available reference for this, though.

Alternatives

none

Data Model Impact

none

REST API Impact

none

Security Impact

none

Notifications Impact

none

Other End User Impact

none

Performance Impact

none

IPv6 Impact

none

Other Deployer Impact

none

Developer Impact

code would get simpler and easier to maintain.

Community Impact

none

Implementation

Assignee(s)

Primary assignee:

yamamoto

Other contributors:

kakuma

Work Items

  • tweak L2populationRpcCallBackTunnelMixin api so that it can handle the “a single tunnel port for many networks” situation more naturally

  • tweak how ofagent sets up tunnel ports

  • tweak ofagent flows accordingly

Dependencies

none

Testing

Tempest Tests

ideally multi-node testing is necessary. however i don’t plan to cover it by this blueprint.

Functional Tests

none

API Tests

no api change thus no additional tests.

Documentation Impact

User Documentation

should document new requirement (ryu>=3.15) for relevant NXMs support

Developer Documentation

none

References

the current implementation of this blueprint:

as far as i know, NXMs are only documentated in Open vSwitch source code: