yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #95333
[Bug 2097747] [NEW] neutron not update ovn routers
Public bug reported:
openstack relase: stable/wallaby
related bugs: https://bugs.launchpad.net/neutron/+bug/2058433
https://bugs.launchpad.net/neutron/+bug/2035281
In bug(2058433), I encountered a multi-subnet issue, which caused
interconnection issues between multiple subnets. I solved it by adding
multiple fixed_ips to a router_gateway_port.
In bug(2035281), It fundamentally solved my problem, but since I'm in a
production environment, I can't update the source code.
ok, that's fine. But I found a new bug when I add/update/delete multiple
fixed_ips on router_gateway_port .
In the _update_lrouter_port function in ovn_client.py, it will find all
cidr networks through the _get_nets_and_ipv6_ra_confs_for_router_port
function, which will be updated to ovn lsp-route.
When I add fixed_ip multiple times to cause the port to be updated, the
route will be repeated. like below
```shell
docker exec -it ovn_nb_db ovn-nbctl lr-route-list c728637d-b8c4-4dd5-b897-28e18b89656a
# xx.xxx is a same prefix.
IPv4 Routes
172.16.0.0/24 10.0.0.10 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
```
But it won't make any difference
ok, when i delete a fixed_ip on router_gateway_port, it still have a
route.
When I add multiple fixed_ips, it will turn into emcp mode when routing,
and a route will be randomly selected from my several gateways. So when
I delete a fixed_ip but the route still exists, it will not be able to
find the corresponding gateway in ecmp mode.
I think this is because there is only a method in the code for adding,
not updating or deleting. Therefore, it will lead to repeated addition
or inability to delete
in function self._nb_idl.update_lrouter_port, It is
```
for col, val in self.columns.items():
if col == 'gateway_chassis':
col, val = _add_gateway_chassis(self.api, txn, self.name,
val)
setattr(lrouter_port, col, val)
```
** Affects: neutron
Importance: Undecided
Status: New
** Tags: ovn
** Tags added: ovn
** Description changed:
openstack relase: stable/wallaby
- related bugs: https://bugs.launchpad.net/neutron/+bug/2058433
- https://bugs.launchpad.net/neutron/+bug/2035281
+ related bugs: https://bugs.launchpad.net/neutron/+bug/2058433
+ https://bugs.launchpad.net/neutron/+bug/2035281
In bug(2058433), I encountered a multi-subnet issue, which caused
interconnection issues between multiple subnets. I solved it by adding
multiple fixed_ips to a router_gateway_port.
In bug(2035281), It fundamentally solved my problem, but since I'm in a
production environment, I can't update the source code.
ok, that's fine. But I found a new bug when I added multiple fixed_ips
on router_gateway_port .
In the _update_lrouter_port function in ovn_client.py, it will find all
cidr networks through the _get_nets_and_ipv6_ra_confs_for_router_port
- function, which will be updated to ovn lsp_router.
+ function, which will be updated to ovn lsp-route.
When I add fixed_ip multiple times to cause the port to be updated, the
route will be repeated. like below
```shell
docker exec -it ovn_nb_db ovn-nbctl lr-route-list c728637d-b8c4-4dd5-b897-28e18b89656a
- # xx.xxx is a same prefix.
+ # xx.xxx is a same prefix.
IPv4 Routes
- 172.16.0.0/24 10.0.0.10 dst-ip
- 0.0.0.0/0 xx.xxx.177.129 dst-ip
- 0.0.0.0/0 xx.xxx.177.129 dst-ip
- 0.0.0.0/0 xx.xxx.203.193 dst-ip
- 0.0.0.0/0 xx.xxx.203.193 dst-ip
- 0.0.0.0/0 xx.xxx.203.193 dst-ip
- 0.0.0.0/0 xx.xxx.203.65 dst-ip
- 0.0.0.0/0 xx.xxx.203.65 dst-ip
- 0.0.0.0/0 xx.xxx.203.65 dst-ip
- 0.0.0.0/0 xx.xxx.234.1 dst-ip
- 0.0.0.0/0 xx.xxx.234.1 dst-ip
+ 172.16.0.0/24 10.0.0.10 dst-ip
+ 0.0.0.0/0 xx.xxx.177.129 dst-ip
+ 0.0.0.0/0 xx.xxx.177.129 dst-ip
+ 0.0.0.0/0 xx.xxx.203.193 dst-ip
+ 0.0.0.0/0 xx.xxx.203.193 dst-ip
+ 0.0.0.0/0 xx.xxx.203.193 dst-ip
+ 0.0.0.0/0 xx.xxx.203.65 dst-ip
+ 0.0.0.0/0 xx.xxx.203.65 dst-ip
+ 0.0.0.0/0 xx.xxx.203.65 dst-ip
+ 0.0.0.0/0 xx.xxx.234.1 dst-ip
+ 0.0.0.0/0 xx.xxx.234.1 dst-ip
```
But it won't make any difference
ok, when i delete a fixed_ip on router_gateway_port, it still have a
route.
When I add multiple fixed_ips, it will turn into emcp mode when routing,
and a route will be randomly selected from my several gateways. So when
I delete a fixed_ip but the route still exists, it will not be able to
find the corresponding gateway in ecmp mode.
-
- I think this is because there is only a method in the code for adding, not updating or deleting. Therefore, it will lead to repeated addition or inability to delete
-
+ I think this is because there is only a method in the code for adding,
+ not updating or deleting. Therefore, it will lead to repeated addition
+ or inability to delete
in function self._nb_idl.update_lrouter_port, It is
```
- for col, val in self.columns.items():
- if col == 'gateway_chassis':
- col, val = _add_gateway_chassis(self.api, txn, self.name,
- val)
- setattr(lrouter_port, col, val)
+ for col, val in self.columns.items():
+ if col == 'gateway_chassis':
+ col, val = _add_gateway_chassis(self.api, txn, self.name,
+ val)
+ setattr(lrouter_port, col, val)
```
** Description changed:
openstack relase: stable/wallaby
related bugs: https://bugs.launchpad.net/neutron/+bug/2058433
https://bugs.launchpad.net/neutron/+bug/2035281
In bug(2058433), I encountered a multi-subnet issue, which caused
interconnection issues between multiple subnets. I solved it by adding
multiple fixed_ips to a router_gateway_port.
In bug(2035281), It fundamentally solved my problem, but since I'm in a
production environment, I can't update the source code.
- ok, that's fine. But I found a new bug when I added multiple fixed_ips
- on router_gateway_port .
+ ok, that's fine. But I found a new bug when I add/update/delete multiple
+ fixed_ips on router_gateway_port .
In the _update_lrouter_port function in ovn_client.py, it will find all
cidr networks through the _get_nets_and_ipv6_ra_confs_for_router_port
function, which will be updated to ovn lsp-route.
When I add fixed_ip multiple times to cause the port to be updated, the
route will be repeated. like below
```shell
docker exec -it ovn_nb_db ovn-nbctl lr-route-list c728637d-b8c4-4dd5-b897-28e18b89656a
# xx.xxx is a same prefix.
IPv4 Routes
172.16.0.0/24 10.0.0.10 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
```
But it won't make any difference
ok, when i delete a fixed_ip on router_gateway_port, it still have a
route.
When I add multiple fixed_ips, it will turn into emcp mode when routing,
and a route will be randomly selected from my several gateways. So when
I delete a fixed_ip but the route still exists, it will not be able to
find the corresponding gateway in ecmp mode.
I think this is because there is only a method in the code for adding,
not updating or deleting. Therefore, it will lead to repeated addition
or inability to delete
in function self._nb_idl.update_lrouter_port, It is
```
for col, val in self.columns.items():
if col == 'gateway_chassis':
col, val = _add_gateway_chassis(self.api, txn, self.name,
val)
setattr(lrouter_port, col, val)
```
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2097747
Title:
neutron not update ovn routers
Status in neutron:
New
Bug description:
openstack relase: stable/wallaby
related bugs: https://bugs.launchpad.net/neutron/+bug/2058433
https://bugs.launchpad.net/neutron/+bug/2035281
In bug(2058433), I encountered a multi-subnet issue, which caused
interconnection issues between multiple subnets. I solved it by adding
multiple fixed_ips to a router_gateway_port.
In bug(2035281), It fundamentally solved my problem, but since I'm in
a production environment, I can't update the source code.
ok, that's fine. But I found a new bug when I add/update/delete
multiple fixed_ips on router_gateway_port .
In the _update_lrouter_port function in ovn_client.py, it will find
all cidr networks through the
_get_nets_and_ipv6_ra_confs_for_router_port function, which will be
updated to ovn lsp-route.
When I add fixed_ip multiple times to cause the port to be updated,
the route will be repeated. like below
```shell
docker exec -it ovn_nb_db ovn-nbctl lr-route-list c728637d-b8c4-4dd5-b897-28e18b89656a
# xx.xxx is a same prefix.
IPv4 Routes
172.16.0.0/24 10.0.0.10 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.177.129 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.193 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.203.65 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
0.0.0.0/0 xx.xxx.234.1 dst-ip
```
But it won't make any difference
ok, when i delete a fixed_ip on router_gateway_port, it still have a
route.
When I add multiple fixed_ips, it will turn into emcp mode when
routing, and a route will be randomly selected from my several
gateways. So when I delete a fixed_ip but the route still exists, it
will not be able to find the corresponding gateway in ecmp mode.
I think this is because there is only a method in the code for adding,
not updating or deleting. Therefore, it will lead to repeated addition
or inability to delete
in function self._nb_idl.update_lrouter_port, It is
```
for col, val in self.columns.items():
if col == 'gateway_chassis':
col, val = _add_gateway_chassis(self.api, txn, self.name,
val)
setattr(lrouter_port, col, val)
```
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2097747/+subscriptions
Follow ups