← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1804634] [NEW] [RFE] l3_agent should separate router_info creation logic

 

Public bug reported:

Currently, l3-agent has tightly coupled with router_info creation logic,
so there is no way to make a big change of default router's behaviors.
Even there are already many diverse routers (dvr, dvrha, dvr_snat...),
every routers depend detailed implementation rather than structured
interfaces. So it makes hard to add new feature.

I found a majority of networking-* with l3 implementation just override
core L3NatAgent and add a little tweaking functions to change default
l3-agent behavior. IMHO, if there is clear interface in L3 agent for
specific router, they just add their router business logic rather than
did not override core agent class. I noticed they did not change RPC
mechanism a lot in agent side, and want to just make few tweak like us.

What I suggest is make abstract class for router with minimal functions
(initialize(), process()..), and add create router logic with
dynamically configured router_info class. It decouples the creation and
RPC controller so that plugin developer can easily change the default
router behavior.

To provide more specific use case, what we have done was to add linux
VRF feature instead of namespace and East-West traffic is enabled by
default so that there is no need to add GW / internal port at all. We do
not need majority of functions except floating IP, but every kind of API
/ RPC is useful at the same time from server side.

** Affects: neutron
     Importance: Undecided
         Status: New


** Tags: rfe

** Tags added: rfe

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1804634

Title:
  [RFE] l3_agent should separate router_info creation logic

Status in neutron:
  New

Bug description:
  Currently, l3-agent has tightly coupled with router_info creation
  logic, so there is no way to make a big change of default router's
  behaviors. Even there are already many diverse routers (dvr, dvrha,
  dvr_snat...), every routers depend detailed implementation rather than
  structured interfaces. So it makes hard to add new feature.

  I found a majority of networking-* with l3 implementation just
  override core L3NatAgent and add a little tweaking functions to change
  default l3-agent behavior. IMHO, if there is clear interface in L3
  agent for specific router, they just add their router business logic
  rather than did not override core agent class. I noticed they did not
  change RPC mechanism a lot in agent side, and want to just make few
  tweak like us.

  What I suggest is make abstract class for router with minimal
  functions (initialize(), process()..), and add create router logic
  with dynamically configured router_info class. It decouples the
  creation and RPC controller so that plugin developer can easily change
  the default router behavior.

  To provide more specific use case, what we have done was to add linux
  VRF feature instead of namespace and East-West traffic is enabled by
  default so that there is no need to add GW / internal port at all. We
  do not need majority of functions except floating IP, but every kind
  of API / RPC is useful at the same time from server side.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1804634/+subscriptions


Follow ups