)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The spec proposes changes in Neutron to leverage OVN BGP capabilities."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Closes-Bug: https://bugs.launchpad.net/neutron/+bug/2111276"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8fef9b7e444b84448105bc60fc5551b0650aa214"},{"line_number":14,"context_line":"Signed-off-by: Jakub Libosvar \u003cjlibosva@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"6f059c81_05dabdc5","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":6},"updated":"2025-07-31 08:15:32.000000000","message":"nit: this is `Related-Bug: #2111276`, this patch doesn\u0027t close the bug.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b8763e36f02a1f3d6cbba56ce4eb4f1b2b79386","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The spec proposes changes in Neutron to leverage OVN BGP capabilities."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Closes-Bug: https://bugs.launchpad.net/neutron/+bug/2111276"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8fef9b7e444b84448105bc60fc5551b0650aa214"},{"line_number":14,"context_line":"Signed-off-by: Jakub Libosvar \u003cjlibosva@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"c51b48c4_274e07c1","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":6},"in_reply_to":"6f059c81_05dabdc5","updated":"2025-07-31 15:56:59.000000000","message":"Done","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"61d663b6_0c03345e","updated":"2025-07-31 08:15:32.000000000","message":"-1 for visibility","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ae7bba64_701045bf","updated":"2025-08-01 07:18:41.000000000","message":"Thanks for the update! I\u0027ve just added the OVN version heads-up and how to implement the sync tool exception.\n\nIn any case, I\u0027m OK with this spec as is now.","commit_id":"4db4bec4c7fb90ea01207bae239417669ae00d5a"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0fb7d168_581f6328","updated":"2025-08-11 11:51:57.000000000","message":"Thank you for your work on this!\n\nI have some comments in-line.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09d3378d79449213dcd7a2b680ee97217eb06853","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f7df13fa_fe6b77ff","updated":"2025-08-11 12:40:31.000000000","message":"Thanks for the comments!","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"11b9268f_cace48a3","updated":"2025-08-11 20:02:17.000000000","message":"a","commit_id":"f4d0b006778dc39fcee090398daefca3618518e3"}],"specs/2025.2/ovn-bgp-integration.rst":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":31,"context_line":"- LSP: Logical Switch Port"},{"line_number":32,"context_line":"- LS: Logical Switch"},{"line_number":33,"context_line":"- LR: Logical Router"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed Change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"32bd7515_d4828886","line":34,"updated":"2025-07-31 08:15:32.000000000","message":"To add: VRF, FRR","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"- LSP: Logical Switch Port"},{"line_number":32,"context_line":"- LS: Logical Switch"},{"line_number":33,"context_line":"- LR: Logical Router"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Proposed Change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"18ad7540_9a0c4f83","line":34,"in_reply_to":"32bd7515_d4828886","updated":"2025-07-31 15:38:21.000000000","message":"Done","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":44,"context_line":"resources, such as a router and a logical switch with a localnet port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"There is no need to make any changes to API or database models, however, there is"},{"line_number":47,"context_line":"a need to modify Neutron OVN DB sync scripts to not monitor the underlying BGP"},{"line_number":48,"context_line":"resources, and also we need to make sure on the presentation layer that all the"},{"line_number":49,"context_line":"underlying BGP resources are not exposed to the users through an API. For"},{"line_number":50,"context_line":"example a router list command must not return the BGP routers."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e9dada94_d7d9b726","line":48,"range":{"start_line":47,"start_character":25,"end_line":48,"end_character":9},"updated":"2025-07-31 08:15:32.000000000","message":"How are you going to do this?\n\nNOTE: there is a proposal in https://review.opendev.org/c/openstack/neutron-specs/+/891204","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4bfdc21f9c817f6303b7f9d8a92a61e5622956df","unresolved":true,"context_lines":[{"line_number":44,"context_line":"resources, such as a router and a logical switch with a localnet port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"There is no need to make any changes to API or database models, however, there is"},{"line_number":47,"context_line":"a need to modify Neutron OVN DB sync scripts to not monitor the underlying BGP"},{"line_number":48,"context_line":"resources, and also we need to make sure on the presentation layer that all the"},{"line_number":49,"context_line":"underlying BGP resources are not exposed to the users through an API. For"},{"line_number":50,"context_line":"example a router list command must not return the BGP routers."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"f4a0100a_5029f4c5","line":48,"range":{"start_line":47,"start_character":25,"end_line":48,"end_character":9},"in_reply_to":"84e4520a_dc596a27","updated":"2025-08-01 11:54:48.000000000","message":"Yes, likely some external_ids field. imho this is an implementation detail but I can add it here as well if you think it\u0027s needed.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":true,"context_lines":[{"line_number":44,"context_line":"resources, such as a router and a logical switch with a localnet port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"There is no need to make any changes to API or database models, however, there is"},{"line_number":47,"context_line":"a need to modify Neutron OVN DB sync scripts to not monitor the underlying BGP"},{"line_number":48,"context_line":"resources, and also we need to make sure on the presentation layer that all the"},{"line_number":49,"context_line":"underlying BGP resources are not exposed to the users through an API. For"},{"line_number":50,"context_line":"example a router list command must not return the BGP routers."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"f408bdd8_904a9b61","line":48,"range":{"start_line":47,"start_character":25,"end_line":48,"end_character":9},"in_reply_to":"e9dada94_d7d9b726","updated":"2025-07-31 15:38:21.000000000","message":"I knew there was some work related to it. Maybe I should add this as a pre-requisite or add the reconciliation functionality later outside of the scope of this spec and depending on this feature you linked.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":true,"context_lines":[{"line_number":44,"context_line":"resources, such as a router and a logical switch with a localnet port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"There is no need to make any changes to API or database models, however, there is"},{"line_number":47,"context_line":"a need to modify Neutron OVN DB sync scripts to not monitor the underlying BGP"},{"line_number":48,"context_line":"resources, and also we need to make sure on the presentation layer that all the"},{"line_number":49,"context_line":"underlying BGP resources are not exposed to the users through an API. For"},{"line_number":50,"context_line":"example a router list command must not return the BGP routers."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"84e4520a_dc596a27","line":48,"range":{"start_line":47,"start_character":25,"end_line":48,"end_character":9},"in_reply_to":"f408bdd8_904a9b61","updated":"2025-08-01 07:18:41.000000000","message":"Well, this is just a reference. I\u0027m just wondering how this will be done (using a special tag or any other mechanism).","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d636223f2ee095f4fe6098b9fba33a120802ac95","unresolved":false,"context_lines":[{"line_number":44,"context_line":"resources, such as a router and a logical switch with a localnet port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"There is no need to make any changes to API or database models, however, there is"},{"line_number":47,"context_line":"a need to modify Neutron OVN DB sync scripts to not monitor the underlying BGP"},{"line_number":48,"context_line":"resources, and also we need to make sure on the presentation layer that all the"},{"line_number":49,"context_line":"underlying BGP resources are not exposed to the users through an API. For"},{"line_number":50,"context_line":"example a router list command must not return the BGP routers."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"8d5cd719_eaf7bf14","line":48,"range":{"start_line":47,"start_character":25,"end_line":48,"end_character":9},"in_reply_to":"f4a0100a_5029f4c5","updated":"2025-08-01 15:33:47.000000000","message":"Done","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":72,"context_line":"enabled. The router is connected to the provider logical switch with a dummy"},{"line_number":73,"context_line":"connection. This connection is not used for any traffic and serves only to"},{"line_number":74,"context_line":"logically connect the logical switch and the BGP router so the northd can create"},{"line_number":75,"context_line":"Advertised_Route entries for the IPs that need to be advertised."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":78,"context_line":"the provider bridge that connects to the ls-public LS. This LS is what typically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c9ed4779_ad1e7fea","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":16},"updated":"2025-07-31 08:15:32.000000000","message":"I\u0027ve seen that later in this spec. What is this in OVN? Where/how is that stored?","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":true,"context_lines":[{"line_number":72,"context_line":"enabled. The router is connected to the provider logical switch with a dummy"},{"line_number":73,"context_line":"connection. This connection is not used for any traffic and serves only to"},{"line_number":74,"context_line":"logically connect the logical switch and the BGP router so the northd can create"},{"line_number":75,"context_line":"Advertised_Route entries for the IPs that need to be advertised."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":78,"context_line":"the provider bridge that connects to the ls-public LS. This LS is what typically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"afecb69b_bb77203b","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":16},"in_reply_to":"935f057a_aea0d0b3","updated":"2025-08-01 07:18:41.000000000","message":"I had an older version (not master). I see this table is added in v25.03.0. This is a hard requirement for this feature then that needs to be highlighted.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4bfdc21f9c817f6303b7f9d8a92a61e5622956df","unresolved":true,"context_lines":[{"line_number":72,"context_line":"enabled. The router is connected to the provider logical switch with a dummy"},{"line_number":73,"context_line":"connection. This connection is not used for any traffic and serves only to"},{"line_number":74,"context_line":"logically connect the logical switch and the BGP router so the northd can create"},{"line_number":75,"context_line":"Advertised_Route entries for the IPs that need to be advertised."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":78,"context_line":"the provider bridge that connects to the ls-public LS. This LS is what typically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ef5c78f6_65c45bdd","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":16},"in_reply_to":"afecb69b_bb77203b","updated":"2025-08-01 11:54:48.000000000","message":"Good point! I\u0027ll add the version dependency to the spec and check what we currently use.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"enabled. The router is connected to the provider logical switch with a dummy"},{"line_number":73,"context_line":"connection. This connection is not used for any traffic and serves only to"},{"line_number":74,"context_line":"logically connect the logical switch and the BGP router so the northd can create"},{"line_number":75,"context_line":"Advertised_Route entries for the IPs that need to be advertised."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":78,"context_line":"the provider bridge that connects to the ls-public LS. This LS is what typically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"935f057a_aea0d0b3","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":16},"in_reply_to":"c9ed4779_ad1e7fea","updated":"2025-07-31 15:38:21.000000000","message":"That is how OVN implements BGP, I\u0027ll mention it\u0027s a table in the SB DB - https://github.com/ovn-org/ovn/blob/c92e19aa0331ad90bb891633c5dc4cbe847bc2cc/ovn-sb.xml#L5280","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d636223f2ee095f4fe6098b9fba33a120802ac95","unresolved":false,"context_lines":[{"line_number":72,"context_line":"enabled. The router is connected to the provider logical switch with a dummy"},{"line_number":73,"context_line":"connection. This connection is not used for any traffic and serves only to"},{"line_number":74,"context_line":"logically connect the logical switch and the BGP router so the northd can create"},{"line_number":75,"context_line":"Advertised_Route entries for the IPs that need to be advertised."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":78,"context_line":"the provider bridge that connects to the ls-public LS. This LS is what typically"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8708b72e_51539edc","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":16},"in_reply_to":"ef5c78f6_65c45bdd","updated":"2025-08-01 15:33:47.000000000","message":"Done","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":130,"context_line":"LRP connecting to the provider LS. The nexthop is the LRP of the Neutron router"},{"line_number":131,"context_line":"port that serves as a gateway."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The second static route is unused and can look like this:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. code-block:: text"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"00d2cbd0_a10400d8","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":2},"updated":"2025-07-31 08:15:32.000000000","message":"I don\u0027t understand the goal of this route","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":130,"context_line":"LRP connecting to the provider LS. The nexthop is the LRP of the Neutron router"},{"line_number":131,"context_line":"port that serves as a gateway."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The second static route is unused and can look like this:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. code-block:: text"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"10be1598_a38cb7e8","line":133,"range":{"start_line":133,"start_character":0,"end_line":133,"end_character":2},"in_reply_to":"00d2cbd0_a10400d8","updated":"2025-07-31 15:38:21.000000000","message":"I\u0027ll try to explain it better with examples","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":194,"context_line":"  route_table         : \"\""},{"line_number":195,"context_line":"  selection_fields    : []"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"where ip_prefix matches the subnet of the provider network and the nexthop is"},{"line_number":198,"context_line":"set to the address of the LRP attached to the BGP distributed router and the"},{"line_number":199,"context_line":"output_port is set to its peer LRP."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The egress traffic from the OVN overlay needs to be routed with ECMP to the BGP"},{"line_number":202,"context_line":"network. This can be achieved with the following static routes for each BGP"},{"line_number":203,"context_line":"peer:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fb3bd78f_0070d8f2","line":200,"range":{"start_line":197,"start_character":66,"end_line":200,"end_character":1},"updated":"2025-07-31 08:15:32.000000000","message":"I see you are using 169.254.0.0/16 range for chassis-LR to distributed-LR subnet. Although this is a private communication between two resources 100% controlled by this project, is this the range you\u0027ll use by default?","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"  route_table         : \"\""},{"line_number":195,"context_line":"  selection_fields    : []"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"where ip_prefix matches the subnet of the provider network and the nexthop is"},{"line_number":198,"context_line":"set to the address of the LRP attached to the BGP distributed router and the"},{"line_number":199,"context_line":"output_port is set to its peer LRP."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The egress traffic from the OVN overlay needs to be routed with ECMP to the BGP"},{"line_number":202,"context_line":"network. This can be achieved with the following static routes for each BGP"},{"line_number":203,"context_line":"peer:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"340370aa_9652fb2f","line":200,"range":{"start_line":197,"start_character":66,"end_line":200,"end_character":1},"in_reply_to":"fb3bd78f_0070d8f2","updated":"2025-07-31 15:38:21.000000000","message":"I planned on using IPv6 LLAs but there is a bug in OVN that prevents me doing this - https://patchwork.ozlabs.org/project/ovn/patch/20250728175216.95183-1-jlibosva@redhat.com/\n\nthe prefixes should be /30 - not /16 - essentially between each router there is a small /30 subnet with peer to peer addressing","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":198,"context_line":"set to the address of the LRP attached to the BGP distributed router and the"},{"line_number":199,"context_line":"output_port is set to its peer LRP."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The egress traffic from the OVN overlay needs to be routed with ECMP to the BGP"},{"line_number":202,"context_line":"network. This can be achieved with the following static routes for each BGP"},{"line_number":203,"context_line":"peer:"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"10899c37_c60b1f62","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":68},"updated":"2025-07-31 08:15:32.000000000","message":"Just asking: is still valid this statement? (section \"Limitations\")\n`ECMP not properly working as there is no support for BFD at the ovn-cluster,\nwhich means if one of the routes goes away the OVN cluster won’t react to it\nand there will be traffic disruption.` \n\n[1]https://docs.openstack.org/ovn-bgp-agent/latest/contributor/drivers/ovn_bgp_mode_design.html","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":true,"context_lines":[{"line_number":198,"context_line":"set to the address of the LRP attached to the BGP distributed router and the"},{"line_number":199,"context_line":"output_port is set to its peer LRP."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The egress traffic from the OVN overlay needs to be routed with ECMP to the BGP"},{"line_number":202,"context_line":"network. This can be achieved with the following static routes for each BGP"},{"line_number":203,"context_line":"peer:"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"6c95efd0_ed848cea","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":68},"in_reply_to":"10899c37_c60b1f62","updated":"2025-07-31 15:38:21.000000000","message":"I think that limitation is for local ovn-cluster (OVN routing with ovn-bgp-agent) but I can look into it.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"861b28dac9ebf238fcd0ed5518c6f09bf5fc5f29","unresolved":false,"context_lines":[{"line_number":198,"context_line":"set to the address of the LRP attached to the BGP distributed router and the"},{"line_number":199,"context_line":"output_port is set to its peer LRP."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"The egress traffic from the OVN overlay needs to be routed with ECMP to the BGP"},{"line_number":202,"context_line":"network. This can be achieved with the following static routes for each BGP"},{"line_number":203,"context_line":"peer:"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9066aacb_7cf63a31","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":68},"in_reply_to":"6c95efd0_ed848cea","updated":"2025-08-21 14:38:34.000000000","message":"I think the limitation is outdated and it\u0027s ovn-bgp-agent specific and was resolved with https://review.opendev.org/c/openstack/ovn-bgp-agent/+/936881","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":250,"context_line":"configured to forward the traffic to the distributed BGP router. The BGP"},{"line_number":251,"context_line":"distributed router is configured to forward the traffic to the ls-inter-public"},{"line_number":252,"context_line":"switch with a Logical_Static_Route matching the destination IP with the"},{"line_number":253,"context_line":"provider network subnet and through the br-bgp provider bridge the traffic gets"},{"line_number":254,"context_line":"to the ls-public logical switch. From here the traffic follows the same path as"},{"line_number":255,"context_line":"without BGP and is NAT\u0027ed by the Neutron router."},{"line_number":256,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"b1e2dac9_acafba5d","line":253,"range":{"start_line":253,"start_character":40,"end_line":253,"end_character":62},"updated":"2025-07-31 08:15:32.000000000","message":"I see, in the diagram, the description of this bridge. But I don\u0027t know where physically is located.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":250,"context_line":"configured to forward the traffic to the distributed BGP router. The BGP"},{"line_number":251,"context_line":"distributed router is configured to forward the traffic to the ls-inter-public"},{"line_number":252,"context_line":"switch with a Logical_Static_Route matching the destination IP with the"},{"line_number":253,"context_line":"provider network subnet and through the br-bgp provider bridge the traffic gets"},{"line_number":254,"context_line":"to the ls-public logical switch. From here the traffic follows the same path as"},{"line_number":255,"context_line":"without BGP and is NAT\u0027ed by the Neutron router."},{"line_number":256,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"90ba8279_ddc0a1de","line":253,"range":{"start_line":253,"start_character":40,"end_line":253,"end_character":62},"in_reply_to":"b1e2dac9_acafba5d","updated":"2025-07-31 15:38:21.000000000","message":"Explained this bridge in the \"BGP distributed router\" section.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[{"line_number":262,"context_line":"forwarded to the provider network gateway which is connected to the ls-public"},{"line_number":263,"context_line":"LS. Because of the presence of the localnet ports the traffic gets through the"},{"line_number":264,"context_line":"br-bgp bridge to the distributed BGP router where it matches the artificial"},{"line_number":265,"context_line":"Logical_Router_Static_Route to skip the routing stage in the pipeline and will"},{"line_number":266,"context_line":"be matched with the BGP router policy based on the chassis locality. The reroute"},{"line_number":267,"context_line":"action of the policy will pick the right LRP that is connected to the per-chassis"},{"line_number":268,"context_line":"router. Here the traffic matches static routes per peer and with the ECMP is"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0108604b_c0feb962","line":265,"range":{"start_line":265,"start_character":0,"end_line":265,"end_character":27},"updated":"2025-07-31 08:15:32.000000000","message":"How/when this static route is created? It belongs to the distributed-LR, if I\u0027m not wrong, and its purpose is to send the traffic to the correct local chassis-LR, right?","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[{"line_number":262,"context_line":"forwarded to the provider network gateway which is connected to the ls-public"},{"line_number":263,"context_line":"LS. Because of the presence of the localnet ports the traffic gets through the"},{"line_number":264,"context_line":"br-bgp bridge to the distributed BGP router where it matches the artificial"},{"line_number":265,"context_line":"Logical_Router_Static_Route to skip the routing stage in the pipeline and will"},{"line_number":266,"context_line":"be matched with the BGP router policy based on the chassis locality. The reroute"},{"line_number":267,"context_line":"action of the policy will pick the right LRP that is connected to the per-chassis"},{"line_number":268,"context_line":"router. Here the traffic matches static routes per peer and with the ECMP is"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6982ef74_1fecb71d","line":265,"range":{"start_line":265,"start_character":0,"end_line":265,"end_character":27},"in_reply_to":"0108604b_c0feb962","updated":"2025-07-31 15:38:21.000000000","message":"It is the \"fajke\" route that I didn\u0027t explain sufficiently on L133. I expanded that piece - the only purpose of that route is to skip the lr_in_ip_routing - I can mention it explicitly here too.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":false,"context_lines":[{"line_number":262,"context_line":"forwarded to the provider network gateway which is connected to the ls-public"},{"line_number":263,"context_line":"LS. Because of the presence of the localnet ports the traffic gets through the"},{"line_number":264,"context_line":"br-bgp bridge to the distributed BGP router where it matches the artificial"},{"line_number":265,"context_line":"Logical_Router_Static_Route to skip the routing stage in the pipeline and will"},{"line_number":266,"context_line":"be matched with the BGP router policy based on the chassis locality. The reroute"},{"line_number":267,"context_line":"action of the policy will pick the right LRP that is connected to the per-chassis"},{"line_number":268,"context_line":"router. Here the traffic matches static routes per peer and with the ECMP is"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a46b49f_8e9e806e","line":265,"range":{"start_line":265,"start_character":0,"end_line":265,"end_character":27},"in_reply_to":"6982ef74_1fecb71d","updated":"2025-08-01 07:18:41.000000000","message":"Now I get it: the reroute action [1] will send the traffic to the specific chassis (coompute-0 in this case) to the local-LR, and then using ECMP, it will leave the cluster. Got it.\n\n[1]table\u003d17(lr_in_policy       ), priority\u003d10   , match\u003d(inport\u003d\u003d\"lrp-bgp-main-router-to-ls-interconnect\" \u0026\u0026 is_chassis_resident(\"cr-lrp-bgp-main-router-to-bgp-router-r0-compute-0\")","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b65cbebbffe57dfc074006e6985f05dc951d0d80","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7ad46730_fabe9d47","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":1},"updated":"2025-07-31 08:15:32.000000000","message":"I think you need to add assignees and the `documentation` section.","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2e3697d6cb73b8f5d88f49607b2019f5ef1f472f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"394d8185_d4ce051c","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":1},"in_reply_to":"7ad46730_fabe9d47","updated":"2025-07-31 15:38:21.000000000","message":"Done","commit_id":"fc66317d6a8b15939fb3bdde65ba497c92bcfd37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"to be advertised."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The router also connects to a LS with a localnet port. This LS is connected to"},{"line_number":81,"context_line":"the provider bridge br-bgp that needs to be configured on every chassis since"},{"line_number":82,"context_line":"the traffic here is distributed and can happen on any node. This bridge connects"},{"line_number":83,"context_line":"to the ls-public LS through the localnet port created by Neutron. This LS is"},{"line_number":84,"context_line":"what typically connects the physical network in the traditional deployments. We"},{"line_number":85,"context_line":"need to have localnet ports to avoid OVN sending traffic over the geneve tunnel"},{"line_number":86,"context_line":"to the node hosting the logical router gateway."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The BGP distributed router is connected to the per-chassis logical routers"},{"line_number":89,"context_line":"through peered LRPs and bound to the corresponding chassis. The LRs per chassis"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dcd8d1a1_5cc5e864","line":86,"range":{"start_line":81,"start_character":0,"end_line":86,"end_character":46},"updated":"2025-08-01 07:18:41.000000000","message":"+1 for the new description.","commit_id":"4db4bec4c7fb90ea01207bae239417669ae00d5a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"eb67045a3073478fc1ce61e403beef3d2a85d76b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  table\u003d16(lr_in_ip_routing_ecmp), priority\u003d0    , match\u003d(1), action\u003d(drop;)"},{"line_number":165,"context_line":"  table\u003d17(lr_in_policy       ), priority\u003d10   , match\u003d(inport\u003d\u003d\"lrp-bgp-main-router-to-ls-interconnect\" \u0026\u0026 is_chassis_resident(\"cr-lrp-bgp-main-router-to-bgp-router-r0-compute-0\")), action\u003d(reg0 \u003d 169.254.0.1; reg5 \u003d 169.254.0.2; eth.src \u003d 00:de:ad:00:10:00; outport \u003d \"lrp-bgp-main-router-to-bgp-router-r0-compute-0\"; flags.loopback \u003d 1; reg8[0..15] \u003d 0; reg9[9] \u003d 1; next;)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"As we need to get to the stage where the reroute policy is hit, we need to pass"},{"line_number":168,"context_line":"the lr_in_ip_routing stage first and this stage is implemented with a static"},{"line_number":169,"context_line":"route. That means we match the 0.0.0.0/0 prefix using the first rule and then"},{"line_number":170,"context_line":"later we change the output_port with the last rule with its reroute action. If"},{"line_number":171,"context_line":"the static route would not be present, the traffic would be dropped with the"},{"line_number":172,"context_line":"second rule containing the drop action."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Per-chassis logical routers"}],"source_content_type":"text/x-rst","patch_set":7,"id":"78b35b92_a3f9739e","line":172,"range":{"start_line":167,"start_character":0,"end_line":172,"end_character":39},"updated":"2025-08-01 07:18:41.000000000","message":"+1 thanks for the new description of this 0.0.0.0/0 NAT rule.","commit_id":"4db4bec4c7fb90ea01207bae239417669ae00d5a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2b37d9781594b15287a9c915a9718043cbb58e7d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"There is no need to make any changes to API or database models. However, there"},{"line_number":49,"context_line":"is a need to modify Neutron OVN DB sync scripts to not monitor the underlying"},{"line_number":50,"context_line":"BGP resources. That can be achieved by setting an explicit tag in the"},{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."}],"source_content_type":"text/x-rst","patch_set":8,"id":"ebfc8b55_43fafcf3","line":51,"range":{"start_line":50,"start_character":15,"end_line":51,"end_character":77},"updated":"2025-08-01 16:19:57.000000000","message":"+1","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f782ea281c567d9d4c761356616c277aeb3f4b1b","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"There is no need to make any changes to API or database models. However, there"},{"line_number":49,"context_line":"is a need to modify Neutron OVN DB sync scripts to not monitor the underlying"},{"line_number":50,"context_line":"BGP resources. That can be achieved by setting an explicit tag in the"},{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."}],"source_content_type":"text/x-rst","patch_set":8,"id":"a6ce66c9_83569b77","line":51,"range":{"start_line":50,"start_character":15,"end_line":51,"end_character":77},"in_reply_to":"ebfc8b55_43fafcf3","updated":"2025-08-01 16:46:19.000000000","message":"Marking the comment as resolved :)","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1f99d8922ada0d6026608d0e594653db6476b43a","unresolved":true,"context_lines":[{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"97bc7046_84cf9313","line":54,"updated":"2025-08-06 12:41:42.000000000","message":"Brilliant minds think alike :) Yes, all the BGP related resources are managed solely by the service plugin. They have no relationship to the openstack resources other than being below them in the topology (the dashed line in the topology diagram). They can be managed by the OVN ctl but should not. The fact they exist in OVN is just because how the connectivity is implemented and they happen to be Logical components in OVN.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"de970ce9e5ba023ef26aea93b491bfcace68a43e","unresolved":true,"context_lines":[{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"44af1263_94cdd3e9","line":54,"updated":"2025-08-06 12:36:26.000000000","message":"does it mean that there will be resources in the Neutron DB, like routers which will not be visible even to admin users?","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c4c11de4455a9b76de26d820e504996b780b694f","unresolved":true,"context_lines":[{"line_number":50,"context_line":"BGP resources. That can be achieved by setting an explicit tag in the"},{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"16af39fe_d68d046c","line":54,"range":{"start_line":53,"start_character":55,"end_line":54,"end_character":40},"updated":"2025-08-06 12:37:00.000000000","message":"so these can be listed only through OVN nb/sb CLI?","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[{"line_number":50,"context_line":"BGP resources. That can be achieved by setting an explicit tag in the"},{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"64a97d1c_2c415e78","line":54,"range":{"start_line":53,"start_character":55,"end_line":54,"end_character":40},"in_reply_to":"16af39fe_d68d046c","updated":"2025-08-11 20:02:17.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"de49e5c0_580bc4b5","line":54,"in_reply_to":"44af1263_94cdd3e9","updated":"2025-08-11 20:02:17.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d52a5082_b2dda195","line":54,"in_reply_to":"83d7c4af_c51badf5","updated":"2025-08-11 20:02:17.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f7c7cb05297754ab77fa78bd0ed8624a54e96b6d","unresolved":true,"context_lines":[{"line_number":51,"context_line":"external_ids column of the BGP managed resources that Neutron would not touch."},{"line_number":52,"context_line":"Also, we need to make sure on the presentation layer that all the underlying BGP"},{"line_number":53,"context_line":"resources are not exposed to the users through an API. For example, a router list"},{"line_number":54,"context_line":"command must not return the BGP routers."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Each compute node requires a running FRR instance that monitors the local VRF"},{"line_number":57,"context_line":"and advertises the routes to the BGP peers. It is the installer\u0027s responsibility"}],"source_content_type":"text/x-rst","patch_set":8,"id":"83d7c4af_c51badf5","line":54,"in_reply_to":"97bc7046_84cf9313","updated":"2025-08-11 13:25:26.000000000","message":"ok,thx for explanation. So in such case we should be rather safe as neutron lists only things from its own database. As long as those additional resources will be only in the OVN dbs Neutron will not be aware of them. But we need to make sure that db sync tool will not touch them, as you written above already :)","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":false,"context_lines":[{"line_number":87,"context_line":"need to have localnet ports to avoid OVN sending traffic over the geneve tunnel"},{"line_number":88,"context_line":"to the node hosting the logical router gateway."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"The BGP distributed router is connected to the per-chassis logical routers"},{"line_number":91,"context_line":"through peered LRPs and bound to the corresponding chassis. The LRs per chassis"},{"line_number":92,"context_line":"are described in the next section. Because the BGP router is distributed we need"},{"line_number":93,"context_line":"to pick the right LRP so the traffic is not forwarded to a different chassis."},{"line_number":94,"context_line":"For example, if there is egress traffic coming from a tenant LSP on chassis A,"},{"line_number":95,"context_line":"the BGP distributed router needs to route the traffic to the LRP on chassis A."},{"line_number":96,"context_line":"For this we will use logical routing policy and the is_chassis_resident match."},{"line_number":97,"context_line":"An example of the logical routing policy is shown below:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":".. code-block:: text"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"  action              : reroute"},{"line_number":102,"context_line":"  bfd_sessions        : []"},{"line_number":103,"context_line":"  chain               : []"},{"line_number":104,"context_line":"  external_ids        : {}"},{"line_number":105,"context_line":"  jump_chain          : []"},{"line_number":106,"context_line":"  match               : \"inport\u003d\u003d\\\"lrp-bgp-main-router-to-ls-interconnect\\\" \u0026\u0026 is_chassis_resident(\\\"cr-lrp-bgp-main-router-to-bgp-router-r0-compute-0\\\")\""},{"line_number":107,"context_line":"  nexthop             : []"},{"line_number":108,"context_line":"  nexthops            : [\"169.254.0.1\"]"},{"line_number":109,"context_line":"  options             : {}"},{"line_number":110,"context_line":"  priority            : 10"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The nexthop in this case is the LRP on the chassis A and for now must be an IPv4"},{"line_number":113,"context_line":"as OVN currently contains a bug that prevents the use of IPv6 LLAs as nexthops."}],"source_content_type":"text/x-rst","patch_set":8,"id":"b6f4e83d_8be2acbe","line":110,"range":{"start_line":90,"start_character":0,"end_line":110,"end_character":26},"updated":"2025-08-11 11:51:57.000000000","message":"Nice, I knew we could use routing policy for this, and have yet found the time to formulate it. Thanks!","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":true,"context_lines":[{"line_number":110,"context_line":"  priority            : 10"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The nexthop in this case is the LRP on the chassis A and for now must be an IPv4"},{"line_number":113,"context_line":"as OVN currently contains a bug that prevents the use of IPv6 LLAs as nexthops."},{"line_number":114,"context_line":"The policy is implemented only on the chassis defined in is_chassis_resident and"},{"line_number":115,"context_line":"hence the traffic will always remain local to the chassis. Because the policy is"},{"line_number":116,"context_line":"at a later stage in the LR pipeline we need to create a logical router static"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ee208cc1_b156db31","line":113,"range":{"start_line":113,"start_character":3,"end_line":113,"end_character":78},"updated":"2025-08-11 11:51:57.000000000","message":"Should this perhaps contain a reference to a bug tracker and/or reference to on-list patch or discussion?","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09d3378d79449213dcd7a2b680ee97217eb06853","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  priority            : 10"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The nexthop in this case is the LRP on the chassis A and for now must be an IPv4"},{"line_number":113,"context_line":"as OVN currently contains a bug that prevents the use of IPv6 LLAs as nexthops."},{"line_number":114,"context_line":"The policy is implemented only on the chassis defined in is_chassis_resident and"},{"line_number":115,"context_line":"hence the traffic will always remain local to the chassis. Because the policy is"},{"line_number":116,"context_line":"at a later stage in the LR pipeline we need to create a logical router static"}],"source_content_type":"text/x-rst","patch_set":8,"id":"22a74653_32f8f575","line":113,"range":{"start_line":113,"start_character":3,"end_line":113,"end_character":78},"in_reply_to":"ee208cc1_b156db31","updated":"2025-08-11 12:40:31.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":true,"context_lines":[{"line_number":273,"context_line":"The traffic does not match any of the higher priority :ref:`openflow rules"},{"line_number":274,"context_line":"\u003copenflow-rules\u003e` on the provider bridge and matches the last rule. The rule"},{"line_number":275,"context_line":"changes the destination MAC to the LRP MAC address of the per-chassis router"},{"line_number":276,"context_line":"associated with the NIC and the traffic is forwarded to the OVN overlay. The"},{"line_number":277,"context_line":"traffic enters the per chassis logical router that has Logical_Static_Route"},{"line_number":278,"context_line":"configured to forward the traffic to the distributed BGP router. The BGP"},{"line_number":279,"context_line":"distributed router is configured to forward the traffic to the ls-inter-public"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8f23451e_2a0243fe","line":276,"range":{"start_line":276,"start_character":56,"end_line":276,"end_character":71},"updated":"2025-08-11 11:51:57.000000000","message":"I think the use of \"OVN overlay\" is misleading here, as it implies encap/decap and tunneling, which is not necessarily the case.\n\nIn the case of a FIP (e.g. /32 IPv4 route or /128 IPv6 route) being announced on from a chassis, indicating that the instance is in fact living on that chassis, the traffic will not be sent through a tunnel but rather sent directly to the destination instance on the local chassis.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09d3378d79449213dcd7a2b680ee97217eb06853","unresolved":false,"context_lines":[{"line_number":273,"context_line":"The traffic does not match any of the higher priority :ref:`openflow rules"},{"line_number":274,"context_line":"\u003copenflow-rules\u003e` on the provider bridge and matches the last rule. The rule"},{"line_number":275,"context_line":"changes the destination MAC to the LRP MAC address of the per-chassis router"},{"line_number":276,"context_line":"associated with the NIC and the traffic is forwarded to the OVN overlay. The"},{"line_number":277,"context_line":"traffic enters the per chassis logical router that has Logical_Static_Route"},{"line_number":278,"context_line":"configured to forward the traffic to the distributed BGP router. The BGP"},{"line_number":279,"context_line":"distributed router is configured to forward the traffic to the ls-inter-public"}],"source_content_type":"text/x-rst","patch_set":8,"id":"f670b427_2069a9eb","line":276,"range":{"start_line":276,"start_character":56,"end_line":276,"end_character":71},"in_reply_to":"8f23451e_2a0243fe","updated":"2025-08-11 12:40:31.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":true,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"35c343c1_fdc1d784","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"updated":"2025-08-11 11:51:57.000000000","message":"I like the fact that this is split in two, and I\u0027d like to include wording that makes the second part optional.\n\nFrom our point of view, the on-host BGP daemon that is provided by deployment tooling, has use outside the context of OpenStack.\n\nConsequently, we would like the deployment tooling to manage the BGP daemon as well as the per chassis host OVN configuration.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"c1d24df6879f27d97f883f2bbc803de28ddfe8e8","unresolved":true,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"772588d1_fc3602bc","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"in_reply_to":"16e39f45_1e5e29eb","updated":"2025-08-11 14:38:23.000000000","message":"I have no issues with having OVN agent extension implementation as part of this spec.\n\nMy ask is to take into account the use case where someone would provide a separate daemon to maintain the per-chassis resources as opposed to having use of the Neutron OVN agent be mandatory.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09d3378d79449213dcd7a2b680ee97217eb06853","unresolved":true,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ac2034e4_ac7052b3","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"in_reply_to":"35c343c1_fdc1d784","updated":"2025-08-11 12:40:31.000000000","message":"I\u0027m not sure I follow. Maybe you thought of ovn-bgp-agent? Perhaps I should make an explicit statement about what is the OVN agent. The OVN agent extension is a must and the traffic will not be able to get to OVN processing without managing the host. OVN agent cannot be used outside of OpenStack.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a1e051b1_0d13a2f8","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"in_reply_to":"772588d1_fc3602bc","updated":"2025-08-11 20:02:17.000000000","message":"I updated the spec, please let me know if that\u0027s what you wanted.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"57366f5b32c7826b342a24ed1c4cc5f4bc4a2c5d","unresolved":true,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"16e39f45_1e5e29eb","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"in_reply_to":"8e6a706a_28874166","updated":"2025-08-11 14:03:28.000000000","message":"I can re-word and make it optional, however there are dynamic configurations that require a daemon running and cannot be set during deployment time once. For example the block below that avoids creating FDB entries depends on the patch ports created by the ovn-controller between the integration and \"provider\" bridge and the ofproto number can change with node reboots.\n\nSimilarly openflow rules that differentiate the control plane and the dataplane traffic - although this can be avoided having separate nics for the two.\n\nI\u0027d like to include the OVN agent extension implementation as part of this spec as without it there must be some process that sets the openflow dynamically, or by the ovn-br-controller once implemented.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"2cebab36ce312302ee139ab7346eaf817af7668a","unresolved":true,"context_lines":[{"line_number":312,"context_line":"plugin that takes care of the BGP topology in OVN including the configuration of"},{"line_number":313,"context_line":"static routes and router policies."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"The second part is an OVN agent extension that configures per chassis host"},{"line_number":316,"context_line":"configurations, such as adding ovn-bridge-mappings per BGP peer and local"},{"line_number":317,"context_line":"openflow rules to differentiate traffic between the control plane and the"},{"line_number":318,"context_line":"dataplane. It also monitors patch ports on the br-bgp and creates direct"},{"line_number":319,"context_line":"connection between the localnet ports to avoid any FDB learning on the bridge."},{"line_number":320,"context_line":"An example of the simple openflow rules is shown below:"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":".. code-block:: text"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"8e6a706a_28874166","line":320,"range":{"start_line":315,"start_character":0,"end_line":320,"end_character":54},"in_reply_to":"ac2034e4_ac7052b3","updated":"2025-08-11 13:48:29.000000000","message":"Not thinking of `ovn-bgp-agent`, no.\n\nWe plan to equip the deployment tooling that provides the routing protocol daemon with the capabilities of also managing the per chassis OVN configuration, so would like to see this as an option in the spec.\n\nI don\u0027t see any reason to limit this functionality to the OpenStack Neutron OVN agent, or do you see any issues with having some other entity managing these resources?","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"6b3c6c117828baa46800de09218b53f020c98a0d","unresolved":true,"context_lines":[{"line_number":344,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":347,"context_line":"and what needs to be configured on the nodes, such as FRR configuration and"},{"line_number":348,"context_line":"ovn-bridge-mappings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"59ffe9c0_ea74416b","line":347,"range":{"start_line":347,"start_character":54,"end_line":347,"end_character":57},"updated":"2025-08-11 11:51:57.000000000","message":"Perhaps use a more generic term such as \"routing protocol suite\"?\n\nA major design goal with the OVN implementation [0][1] was to not tie it to a specific implementation, so it can potentially be used with any of BIRD, FRRouting, Holo Routing and others.\n\n0: https://docs.google.com/document/d/1luzYUlzk0tur5OixJL5fTkP8nbhkf0PJrh5GS5rngB0\n1: https://mail.openvswitch.org/pipermail/ovs-dev/2024-July/416042.html","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09d3378d79449213dcd7a2b680ee97217eb06853","unresolved":true,"context_lines":[{"line_number":344,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":347,"context_line":"and what needs to be configured on the nodes, such as FRR configuration and"},{"line_number":348,"context_line":"ovn-bridge-mappings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"8bb4cdd6_a0bd8d9b","line":347,"range":{"start_line":347,"start_character":54,"end_line":347,"end_character":57},"in_reply_to":"59ffe9c0_ea74416b","updated":"2025-08-11 12:40:31.000000000","message":"Hmm, I think there should be documentation where an OpenStack operator could go, read and learn about how to deploy Neutron with BGP capabilities all as a whole, including all host configuration. Maybe we can emphasize in the deployment guide that any BGP speaker can be used as long as it advertises routes from a configured VRF. And also document FRR configuration example as a reference.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"2cebab36ce312302ee139ab7346eaf817af7668a","unresolved":false,"context_lines":[{"line_number":344,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":347,"context_line":"and what needs to be configured on the nodes, such as FRR configuration and"},{"line_number":348,"context_line":"ovn-bridge-mappings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"609b16a0_dff7ec44","line":347,"range":{"start_line":347,"start_character":54,"end_line":347,"end_character":57},"in_reply_to":"8bb4cdd6_a0bd8d9b","updated":"2025-08-11 13:48:29.000000000","message":"Yep, that works, my point was mostly about using FRR not being a requirement.","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c4c11de4455a9b76de26d820e504996b780b694f","unresolved":true,"context_lines":[{"line_number":344,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":347,"context_line":"and what needs to be configured on the nodes, such as FRR configuration and"},{"line_number":348,"context_line":"ovn-bridge-mappings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"ea56f658_df33cf0e","line":348,"range":{"start_line":347,"start_character":46,"end_line":348,"end_character":20},"updated":"2025-08-06 12:37:00.000000000","message":"+1 for documenting these, perhaps with some basic debugging also where to see if something goes wrong","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ce41ece584a3dc061423eef82afb3c7e7ad01104","unresolved":false,"context_lines":[{"line_number":344,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":347,"context_line":"and what needs to be configured on the nodes, such as FRR configuration and"},{"line_number":348,"context_line":"ovn-bridge-mappings."}],"source_content_type":"text/x-rst","patch_set":8,"id":"79f8bd37_ef6acb54","line":348,"range":{"start_line":347,"start_character":46,"end_line":348,"end_character":20},"in_reply_to":"ea56f658_df33cf0e","updated":"2025-08-11 20:02:17.000000000","message":"Done","commit_id":"bb940f58c0927e0341e5eb4430bf3c748ed2a664"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"41ee8e793a58d6653370764d9652b362f06335ef","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"There is also a logical router created and bound to each chassis. These routers"},{"line_number":182,"context_line":"serve to learn ECMP routes from the BGP peers and to forward traffic between the"},{"line_number":183,"context_line":"provider bridges and the BGP distributed router."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"For cases where the compute nodes share data plane and control plane traffic"},{"line_number":186,"context_line":"over the same spine-and-leaf topology, there is a need to maintain openflow rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf7a8fe6_14556a28","line":183,"updated":"2025-08-19 18:50:34.000000000","message":"So are these routers created by the plugin? But they aren\u0027t visible to the project? Or they aren\u0027t in the Neutron DB?","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"58fc21c2d2f78a7c48a0c8702f4f8a156e2f5e83","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"There is also a logical router created and bound to each chassis. These routers"},{"line_number":182,"context_line":"serve to learn ECMP routes from the BGP peers and to forward traffic between the"},{"line_number":183,"context_line":"provider bridges and the BGP distributed router."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"For cases where the compute nodes share data plane and control plane traffic"},{"line_number":186,"context_line":"over the same spine-and-leaf topology, there is a need to maintain openflow rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5e4764d2_a81de069","line":183,"in_reply_to":"7f4b774c_e66675aa","updated":"2025-08-19 20:50:58.000000000","message":"Done","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b86cc7480d1f3f49062780339031bcf65dab63ae","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"There is also a logical router created and bound to each chassis. These routers"},{"line_number":182,"context_line":"serve to learn ECMP routes from the BGP peers and to forward traffic between the"},{"line_number":183,"context_line":"provider bridges and the BGP distributed router."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"For cases where the compute nodes share data plane and control plane traffic"},{"line_number":186,"context_line":"over the same spine-and-leaf topology, there is a need to maintain openflow rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"f46dbb6c_77ac89c2","line":183,"in_reply_to":"bf7a8fe6_14556a28","updated":"2025-08-19 19:12:39.000000000","message":"All the BGP related routers and switches are in the OVN DB only and they are not in the Neutron DB and the admin cannot manage them through the Neutron API as they are the plugin specific workloads (that happen to be in OVN but in theory it could be any underlaying technology doing BGP).","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b7a1922456d1b82ac37c67efbf1abaf537aec1c9","unresolved":true,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"There is also a logical router created and bound to each chassis. These routers"},{"line_number":182,"context_line":"serve to learn ECMP routes from the BGP peers and to forward traffic between the"},{"line_number":183,"context_line":"provider bridges and the BGP distributed router."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"For cases where the compute nodes share data plane and control plane traffic"},{"line_number":186,"context_line":"over the same spine-and-leaf topology, there is a need to maintain openflow rules"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7f4b774c_e66675aa","line":183,"in_reply_to":"f46dbb6c_77ac89c2","updated":"2025-08-19 20:47:42.000000000","message":"Ack, thanks.","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"41ee8e793a58d6653370764d9652b362f06335ef","unresolved":true,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"This section describes the traffic flow from and to a LSP hosted on a chassis."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"An example of the traffic from the external network to a VM with a FIP on chassis 1"},{"line_number":263,"context_line":"-----------------------------------------------------------------------------------"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Because of the dummy connection between the ls-public LS and the BGP"}],"source_content_type":"text/x-rst","patch_set":10,"id":"f0e5ef55_6ae29fbd","line":262,"range":{"start_line":262,"start_character":67,"end_line":262,"end_character":70},"updated":"2025-08-19 18:50:34.000000000","message":"super nit: FIP is not in your acronym section, i\u0027m assuming most know it\u0027s Floating IP, maybe add if you update","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e2c875186a937e4a9b911522168ef593011d982c","unresolved":false,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"This section describes the traffic flow from and to a LSP hosted on a chassis."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"An example of the traffic from the external network to a VM with a FIP on chassis 1"},{"line_number":263,"context_line":"-----------------------------------------------------------------------------------"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Because of the dummy connection between the ls-public LS and the BGP"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5ee35451_ee45078f","line":262,"range":{"start_line":262,"start_character":67,"end_line":262,"end_character":70},"in_reply_to":"66d50695_e1711e13","updated":"2025-08-19 19:15:31.000000000","message":"Done","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b86cc7480d1f3f49062780339031bcf65dab63ae","unresolved":true,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":"This section describes the traffic flow from and to a LSP hosted on a chassis."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"An example of the traffic from the external network to a VM with a FIP on chassis 1"},{"line_number":263,"context_line":"-----------------------------------------------------------------------------------"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Because of the dummy connection between the ls-public LS and the BGP"}],"source_content_type":"text/x-rst","patch_set":10,"id":"66d50695_e1711e13","line":262,"range":{"start_line":262,"start_character":67,"end_line":262,"end_character":70},"in_reply_to":"f0e5ef55_6ae29fbd","updated":"2025-08-19 19:12:39.000000000","message":"Will do.","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"41ee8e793a58d6653370764d9652b362f06335ef","unresolved":true,"context_lines":[{"line_number":269,"context_line":"instance advertises the route to the BGP peers."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The fabric learns the route to the FIP IP from the BGP peers and forwards the"},{"line_number":272,"context_line":"traffic to the chassis 1 to either eth0 or eth1 because of the ECMP routes."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"The traffic does not match any of the higher priority :ref:`openflow rules"},{"line_number":275,"context_line":"\u003copenflow-rules\u003e` on the provider bridge and matches the last rule. The rule"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d069d82f_a62abf58","line":272,"range":{"start_line":272,"start_character":35,"end_line":272,"end_character":47},"updated":"2025-08-19 18:50:34.000000000","message":"I don\u0027t see eth1 in any text above, and eth0 only in the block at L195, otherwise I only see eth2 and eth3. Just wanted to make sure I wasn\u0027t missing something.","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e2c875186a937e4a9b911522168ef593011d982c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"instance advertises the route to the BGP peers."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The fabric learns the route to the FIP IP from the BGP peers and forwards the"},{"line_number":272,"context_line":"traffic to the chassis 1 to either eth0 or eth1 because of the ECMP routes."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"The traffic does not match any of the higher priority :ref:`openflow rules"},{"line_number":275,"context_line":"\u003copenflow-rules\u003e` on the provider bridge and matches the last rule. The rule"}],"source_content_type":"text/x-rst","patch_set":10,"id":"858b1e29_365ddd7b","line":272,"range":{"start_line":272,"start_character":35,"end_line":272,"end_character":47},"in_reply_to":"6f9bff34_a46e28b5","updated":"2025-08-19 19:15:31.000000000","message":"Done","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b86cc7480d1f3f49062780339031bcf65dab63ae","unresolved":true,"context_lines":[{"line_number":269,"context_line":"instance advertises the route to the BGP peers."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"The fabric learns the route to the FIP IP from the BGP peers and forwards the"},{"line_number":272,"context_line":"traffic to the chassis 1 to either eth0 or eth1 because of the ECMP routes."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"The traffic does not match any of the higher priority :ref:`openflow rules"},{"line_number":275,"context_line":"\u003copenflow-rules\u003e` on the provider bridge and matches the last rule. The rule"}],"source_content_type":"text/x-rst","patch_set":10,"id":"6f9bff34_a46e28b5","line":272,"range":{"start_line":272,"start_character":35,"end_line":272,"end_character":47},"in_reply_to":"d069d82f_a62abf58","updated":"2025-08-19 19:12:39.000000000","message":"Sharp eye :) That is because in my deployment the NICs connected to the spine\u0027n\u0027leaf are eth2 and eth3 but I decided to be generic here in the spec and describe them as eth0 and eth1 - and I did that in the diagram too. Then I went and copy\u0026pasted the OVN DB rows here.","commit_id":"796b05f80da911da84ba28112e9c902d6cb44a1b"},{"author":{"_account_id":13686,"name":"Frode Nordahl","email":"fnordahl@ubuntu.com","username":"fnordahl"},"change_message_id":"06d4b2472a5ec1629ff5f961365f7d1709c4e51a","unresolved":true,"context_lines":[{"line_number":349,"context_line":"Documentation"},{"line_number":350,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":353,"context_line":"and what needs to be configured on the nodes, such as steering traffic to the"},{"line_number":354,"context_line":"OVN or configuration of a BGP speaker advertising the routes to its peer. An"},{"line_number":355,"context_line":"example using FRR configuration will be introduced so the operators have a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"382920ca_69b5a210","line":352,"range":{"start_line":352,"start_character":0,"end_line":352,"end_character":9},"updated":"2025-08-20 05:57:31.000000000","message":"s/Deploment/Deployment","commit_id":"44955b50516eebc8b24091ecf1370f43bfced9d1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"694f5b1b5aedfe75fff17539c512ffb8dee51174","unresolved":false,"context_lines":[{"line_number":349,"context_line":"Documentation"},{"line_number":350,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"Deploment guide will be written in describing how to enable the service plugin"},{"line_number":353,"context_line":"and what needs to be configured on the nodes, such as steering traffic to the"},{"line_number":354,"context_line":"OVN or configuration of a BGP speaker advertising the routes to its peer. An"},{"line_number":355,"context_line":"example using FRR configuration will be introduced so the operators have a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"b65d494e_83f5acc1","line":352,"range":{"start_line":352,"start_character":0,"end_line":352,"end_character":9},"in_reply_to":"382920ca_69b5a210","updated":"2025-08-20 11:38:29.000000000","message":"Done","commit_id":"44955b50516eebc8b24091ecf1370f43bfced9d1"}]}
