← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1888121] [NEW] L3 agent fails to update routers with onlink gateway

 

Public bug reported:

If a router uses an external gateway network with an "onlink" gateway (=
gateway not in subnet range), L3 agents fails to process router update.

* Versions: currently in Train, since the code did not changed I think
in Ussuri too.

* How to reproduce:

# Create external network
openstack network create public --external
# Create associated subnet with a gateway not in the subnet range. This kind of gateway should be
# handle as an "onlink" route.
openstack subnet create --network public --subnet-range 192.168.144.0/24 --gateway 192.168.0.1

# Create router and set external gateway
openstack router create external
openstack router set --external-gateway public

# Check l3 agent logs
http://paste.openstack.org/show/796084/


* Current fix:

During gateway setup here
https://github.com/openstack/neutron/blob/stable/train/neutron/agent/linux/ip_lib.py#L604,
adding 'onlink' flag allows pyroute2 to successfully add the onlink
default gateway:

```
    def add_gateway(self, gateway, metric=None, table=None, scope='global', flags=[]):
        kwargs = {'flags': ['onlink']}
        self.add_route(None, via=gateway, table=table, metric=metric,
                       scope=scope, **kwargs)
```

Result: http://paste.openstack.org/show/796085/


About the patch, I don't really know the consequences of adding the onlink flag standards gateway. Maybe we could add a check "if 'gateway not in subnet cidr' then onlink", this will impact all existing routers otherwise.

** Affects: neutron
     Importance: Undecided
         Status: New

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

Title:
  L3 agent fails to update routers with onlink gateway

Status in neutron:
  New

Bug description:
  If a router uses an external gateway network with an "onlink" gateway
  (= gateway not in subnet range), L3 agents fails to process router
  update.

  * Versions: currently in Train, since the code did not changed I think
  in Ussuri too.

  * How to reproduce:

  # Create external network
  openstack network create public --external
  # Create associated subnet with a gateway not in the subnet range. This kind of gateway should be
  # handle as an "onlink" route.
  openstack subnet create --network public --subnet-range 192.168.144.0/24 --gateway 192.168.0.1

  # Create router and set external gateway
  openstack router create external
  openstack router set --external-gateway public

  # Check l3 agent logs
  http://paste.openstack.org/show/796084/

  
  * Current fix:

  During gateway setup here
  https://github.com/openstack/neutron/blob/stable/train/neutron/agent/linux/ip_lib.py#L604,
  adding 'onlink' flag allows pyroute2 to successfully add the onlink
  default gateway:

  ```
      def add_gateway(self, gateway, metric=None, table=None, scope='global', flags=[]):
          kwargs = {'flags': ['onlink']}
          self.add_route(None, via=gateway, table=table, metric=metric,
                         scope=scope, **kwargs)
  ```

  Result: http://paste.openstack.org/show/796085/

  
  About the patch, I don't really know the consequences of adding the onlink flag standards gateway. Maybe we could add a check "if 'gateway not in subnet cidr' then onlink", this will impact all existing routers otherwise.

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


Follow ups