)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2a9ab3d0cef31d3f02242fd814bac6f9018d0eb0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7e1ad5c7_6b241e4e","updated":"2025-10-27 16:29:42.000000000","message":"I have added a discussion topic about old specs for tomorrow\u0027s\nNeutron PTG meeting, ~14:00 UTC in the Folsom room. We plan on\nbriefly discussing the status of specs that have not been\nmerged and approved. If you want to come and give a quick update,\nor just add an update here (and rebase to 2026.1 branch) please\ndo so before then.\n\nThanks, Brian\n\n[0] https://ptg.opendev.org/ptg.html\n[1] https://etherpad.opendev.org/p/oct2025-ptg-neutron#L61","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"335e7978_720a9ae9","updated":"2025-06-13 14:01:58.000000000","message":"I need to understand the differences between fabric and physical networks, according to you.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"0f2bd3565ec1930e8018dae18cdc69e207847aea","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"223c8bb2_249593ca","updated":"2025-10-28 03:51:18.000000000","message":"I would still like to see this land. I spoke with @ralonsoh@redhat.com previously because there\u0027s some interest at RedHat about EVPN. This spec is really trying to focus on the physical EVPN and how to bring VM-like networking / interconnect with physical ports. I\u0027ve made https://review.opendev.org/c/openstack/neutron/+/965053 which is a partial implementation of what I tried to explain with the spec and on calls.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5c4d2657254a6f46f2c4bbfbcd15fed35d527d30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"188b53fe_fc92b638","updated":"2025-10-01 13:51:34.000000000","message":"If I understand well this will be the x-project PTG topic 😊","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1430b73ad86190b035dbf8e9dfcb0f2230176ea9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b84c602c_4a663464","updated":"2025-09-02 15:28:26.000000000","message":"It is not clear to me what exactly would be Neutron\u0027s job with this spec. I\u0027m not saying this is wrong - I\u0027m saying I do not understand it :) and it would help me if more details related to the wiring is explained.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"14e23757439ec478c66144bf23697d81a37703c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1e6cf83f_eddef9dd","updated":"2025-09-02 13:45:12.000000000","message":"recheck","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6a9d6f495c5d4bcf88c240c321ae0d7f015392e4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7fdc3e01_2421f5c5","in_reply_to":"223c8bb2_249593ca","updated":"2025-11-13 08:34:48.000000000","message":"During the last PTG, you said you have a working implementation. Apart from the driver [1], it is needed a EVPN infrastructure deployed on each compute node. Do you have a POC of this EVPN driver?\n\n[1]https://review.opendev.org/c/openstack/neutron/+/965053","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"c7f287e5617d2bfdb91df860cb97fb83f8de334f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7e543d0c_2c3dd6af","in_reply_to":"7fdc3e01_2421f5c5","updated":"2026-04-22 06:15:36.000000000","message":"This has been implemented over in networking-baremetal. https://docs.openstack.org/networking-baremetal/latest/configuration/ml2/l2vni-mechanism-driver.html","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9fdf469213886f20ee8a1a42bdcc9be22fcea4f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9aa2366b_fb2579e0","updated":"2026-04-17 15:58:24.000000000","message":"Or perhaps, just abandon it because we have already achieved our goals with an ml2 plugin.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"9251d348fcd32b9b77c939cc042c7dae7f860dfd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"81729a28_85205749","updated":"2026-05-12 22:18:07.000000000","message":"So not a complete implementation but https://review.opendev.org/c/openstack/neutron/+/985837 would allow for different backend plugins to still share one global range of 1, 2^16-1 of VNIs but it could allow for them to be carved up by the physical_network value.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e1d0da096938c15675a56018ff0737ee794b1f73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5db16eed_3878751d","updated":"2026-04-06 21:01:57.000000000","message":"This needs to be moved to 2026.2 directory","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"90914c728414172415efea2220b06a68d4b3b31d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3a866118_a7609b3d","in_reply_to":"81729a28_85205749","updated":"2026-05-15 18:09:52.000000000","message":"This change is now an implementation of phase 1 of this spec.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7063ef0ed8a1720365f55a9fe0159a3335c479e1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"649cd7ec_40b53f8c","in_reply_to":"9aa2366b_fb2579e0","updated":"2026-05-12 21:14:03.000000000","message":"So, I chatted with Doug. From my minimalist point of view, I was thinking \"the needful is done\", however the larger consensus aspect and the need for the ability to scope VNIs to \"physcial networks\" is really critical. Minimally we skim over a lot of that, but if we\u0027re ever going to support Type-2 routes, we will really need to able to directly model the physical_network where tied to the VNI. Type-5 routes are completely different access models as well, and I\u0027m aware Neutron is focused on Type-5 today, but eventually you\u0027ll want Type-2 to support the physical attachment cases where we *really* need that delineation because there is always more than one network fabric.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"}],"specs/2025.2/ml2-type-vxlan-evpn.rst":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1430b73ad86190b035dbf8e9dfcb0f2230176ea9","unresolved":true,"context_lines":[{"line_number":13,"context_line":"The objective of this specification is to capture the needs of defining"},{"line_number":14,"context_line":"the networking underlay in an OpenStack deployment. This builds on"},{"line_number":15,"context_line":"behaviors and workarounds seen by different deployers and developers"},{"line_number":16,"context_line":"of ML2 drivers such as Cisco ACI, Juniper, and Arista."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"15d7335b_83caae62","line":16,"updated":"2025-09-02 15:28:26.000000000","message":"Is this a solution for any particular mechanism driver, like OVN, or is this generic and agnostic to the mechanism drivers?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"803337595b47ac172d6bcdbe5179984e4f445e0b","unresolved":true,"context_lines":[{"line_number":13,"context_line":"The objective of this specification is to capture the needs of defining"},{"line_number":14,"context_line":"the networking underlay in an OpenStack deployment. This builds on"},{"line_number":15,"context_line":"behaviors and workarounds seen by different deployers and developers"},{"line_number":16,"context_line":"of ML2 drivers such as Cisco ACI, Juniper, and Arista."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e3e8f37a_f9c5f212","line":16,"in_reply_to":"15d7335b_83caae62","updated":"2025-09-11 10:39:21.000000000","message":"Right, this should be defined in the `proposed change` section, what drivers will support this type (at least in this first implementation)","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b1586e79c01b130e4a318ed9010f107552c8d62","unresolved":true,"context_lines":[{"line_number":13,"context_line":"The objective of this specification is to capture the needs of defining"},{"line_number":14,"context_line":"the networking underlay in an OpenStack deployment. This builds on"},{"line_number":15,"context_line":"behaviors and workarounds seen by different deployers and developers"},{"line_number":16,"context_line":"of ML2 drivers such as Cisco ACI, Juniper, and Arista."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f9a1bea6_0bc1b5d4","line":16,"in_reply_to":"e3e8f37a_f9c5f212","updated":"2025-09-13 23:44:25.000000000","message":"So my goal would be to be generic and agnostic. I would like to integrate OVN and another mechanism driver that would interact with switches directly like networking-generic-switch.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1e08fe5b5a995994994c3293058bcab31a2694af","unresolved":false,"context_lines":[{"line_number":13,"context_line":"The objective of this specification is to capture the needs of defining"},{"line_number":14,"context_line":"the networking underlay in an OpenStack deployment. This builds on"},{"line_number":15,"context_line":"behaviors and workarounds seen by different deployers and developers"},{"line_number":16,"context_line":"of ML2 drivers such as Cisco ACI, Juniper, and Arista."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"42c2a3cc_c9b803c2","line":16,"in_reply_to":"f9a1bea6_0bc1b5d4","updated":"2026-05-15 21:32:46.000000000","message":"Done","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Neutron’s ML2 plugin today supports VXLAN overlays for tenant"},{"line_number":22,"context_line":"segmentation and classic VLANs for provider or intra-rack networking."},{"line_number":23,"context_line":"Operators who run large leaf–spine fabrics built on **EVPN-VXLAN**"},{"line_number":24,"context_line":"require the ability to model the *overlay* (VNI) **and** the *per-leaf"},{"line_number":25,"context_line":"endpoint VLANs* that bridge VMs onto the underlay.  Current Neutron"}],"source_content_type":"text/x-rst","patch_set":2,"id":"91fb4098_fc00f21c","line":22,"range":{"start_line":22,"start_character":25,"end_line":22,"end_character":43},"updated":"2025-06-13 14:01:58.000000000","message":"VLAN can be used in a tenant network too.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1430b73ad86190b035dbf8e9dfcb0f2230176ea9","unresolved":true,"context_lines":[{"line_number":23,"context_line":"Operators who run large leaf–spine fabrics built on **EVPN-VXLAN**"},{"line_number":24,"context_line":"require the ability to model the *overlay* (VNI) **and** the *per-leaf"},{"line_number":25,"context_line":"endpoint VLANs* that bridge VMs onto the underlay.  Current Neutron"},{"line_number":26,"context_line":"capabilities cannot express this relationship:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* An *EVPN-VXLAN* network is identified by a **VNI**."},{"line_number":29,"context_line":"* Each leaf switch that hosts servers must dedicate a **local VLAN ID**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3da695f5_5b284900","line":26,"updated":"2025-09-02 15:28:26.000000000","message":"I\u0027ve read this several times and I do not understand how the wiring should look like. I\u0027d like to see who forms the vxlan tunnel and where is its other endpoint. \n\nNeutron ML2 plugin needs to have a mechanism driver that is responsible for wiring the networks based on their types (in your case the evpn-vxlan type). Would that require extra changes also in the mechanism drivers too?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"803337595b47ac172d6bcdbe5179984e4f445e0b","unresolved":true,"context_lines":[{"line_number":23,"context_line":"Operators who run large leaf–spine fabrics built on **EVPN-VXLAN**"},{"line_number":24,"context_line":"require the ability to model the *overlay* (VNI) **and** the *per-leaf"},{"line_number":25,"context_line":"endpoint VLANs* that bridge VMs onto the underlay.  Current Neutron"},{"line_number":26,"context_line":"capabilities cannot express this relationship:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* An *EVPN-VXLAN* network is identified by a **VNI**."},{"line_number":29,"context_line":"* Each leaf switch that hosts servers must dedicate a **local VLAN ID**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baf13bd3_efaa3d15","line":26,"in_reply_to":"3da695f5_5b284900","updated":"2025-09-11 10:39:21.000000000","message":"Agree, some kind of schema or link to a public description would be needed. Actually I would like to see any public document describing this functionality and how it works.\n\nIn a private meeting we had last week, the \"picture\" I took from this driver is:\n* Several nodes (baremental nodes) that are connected to several VLAN IDs.\n* This traffic is received by some HW SWs that remove the VLAN tag and encapsulates the traffic into one single VXLAN.\n* The OpenStack nodes (compute nodes, controllers, networkers) can be connected to the physical network (must be GW nodes) that transmit this VXLAN traffic. Each node should have a VTEP interface to decapsulate this traffic (I still have no idea how).\n\nSo we have several mappings here (if I\u0027m not wrong):\n* The baremetal node VLAN IDs with the VXLAN VNI (many:1)\n* The VXLAN VNI to physnet (1:1)\n\nWe would also need the external VTEP IPs to create the mesh (or use multicast).","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1e08fe5b5a995994994c3293058bcab31a2694af","unresolved":true,"context_lines":[{"line_number":23,"context_line":"Operators who run large leaf–spine fabrics built on **EVPN-VXLAN**"},{"line_number":24,"context_line":"require the ability to model the *overlay* (VNI) **and** the *per-leaf"},{"line_number":25,"context_line":"endpoint VLANs* that bridge VMs onto the underlay.  Current Neutron"},{"line_number":26,"context_line":"capabilities cannot express this relationship:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* An *EVPN-VXLAN* network is identified by a **VNI**."},{"line_number":29,"context_line":"* Each leaf switch that hosts servers must dedicate a **local VLAN ID**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2a1e4bdd_ec4e70bc","line":26,"in_reply_to":"b26ffc14_73669ed0","updated":"2026-05-15 21:32:46.000000000","message":"https://review.opendev.org/c/openstack/neutron/+/965415 is what I had written to describe this.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b1586e79c01b130e4a318ed9010f107552c8d62","unresolved":true,"context_lines":[{"line_number":23,"context_line":"Operators who run large leaf–spine fabrics built on **EVPN-VXLAN**"},{"line_number":24,"context_line":"require the ability to model the *overlay* (VNI) **and** the *per-leaf"},{"line_number":25,"context_line":"endpoint VLANs* that bridge VMs onto the underlay.  Current Neutron"},{"line_number":26,"context_line":"capabilities cannot express this relationship:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* An *EVPN-VXLAN* network is identified by a **VNI**."},{"line_number":29,"context_line":"* Each leaf switch that hosts servers must dedicate a **local VLAN ID**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"b26ffc14_73669ed0","line":26,"in_reply_to":"baf13bd3_efaa3d15","updated":"2025-09-13 23:44:25.000000000","message":"@libosvar@redhat.com Yes there would absolutely need to be a mechanism that goes along with this. We\u0027ve got some reference work for this that we\u0027ve extracted the generic pieces from the Cisco, Arista, and Junpier mechanisms to create the dynamic VLAN segments on the VXLAN network. I would look to contribute that upstream to to networking-generic-switch.\n\n@ralonsoh@redhat.com So the hardware switch isn\u0027t really doing encapsulation here. This is how EVPN VXLAN works. You have a fabric of leaf switches and you define a VNI. For that VNI to be accessible on that leaf switch, it would be mapped to a VLAN on the switch. You can then make a port on the switch use that VLAN as an access VLAN (so untagged traffic from the connected device gets tagged automatically) or trunked (the connected device needs to tag the traffic). This is how node connected with OpenStack Ironic would need to use this.\n\n@skrobul@skrobul.com can you help me update this spec by putting some example switch configs for this in an update to the spec?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1430b73ad86190b035dbf8e9dfcb0f2230176ea9","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"08fa09cc_3910f638","line":35,"updated":"2025-09-02 15:28:26.000000000","message":"I don\u0027t think the type drivers have ability to detect when a port binds as that is the responsibility of the mechanism driver.\n\nIf we assume that somehow this mapping is actually up-to-date in the Neutron database - when and by who would this information be used? Is there gonna be a third party service that reads the mapping and then uses it somehow?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e590f8461b84f18131d0cb468da84b1ff68bfd55","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"e9350423_01b56736","line":35,"in_reply_to":"073b2336_7915bbb9","updated":"2025-09-16 21:32:50.000000000","message":"I\u0027ve got a spec for ironic which is an attempt to begin capturing the aspects as it relates, to help solidify/understanding, etc and which already calls out n-g-s use.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"803337595b47ac172d6bcdbe5179984e4f445e0b","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ad302620_ceb059b8","line":35,"in_reply_to":"08fa09cc_3910f638","updated":"2025-09-11 10:39:21.000000000","message":"^^ correct, that belongs to the mech driver, via agent (OVS, SRIOV), event (OVN), etc","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1e08fe5b5a995994994c3293058bcab31a2694af","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"97e69ce7_85b906b9","line":35,"in_reply_to":"2f17cea6_186cb605","updated":"2026-05-15 21:32:46.000000000","message":"Done","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b1586e79c01b130e4a318ed9010f107552c8d62","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"073b2336_7915bbb9","line":35,"in_reply_to":"ad302620_ceb059b8","updated":"2025-09-13 23:44:25.000000000","message":"Yes. networking-generic-switch would need to utilize this.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"7767971a333d4fc24c22ad71a75d6761feb27001","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  must be persisted and queryable."},{"line_number":33,"context_line":"* Allocation of leaf-local VLAN IDs must happen *dynamically* when the"},{"line_number":34,"context_line":"  first port binds to a host on that leaf and be reclaimed when the last"},{"line_number":35,"context_line":"  port departs."},{"line_number":36,"context_line":"* Operators may run **multiple fabrics**; networks should be able to"},{"line_number":37,"context_line":"  omit the fabric identifier when there is only one."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"2f17cea6_186cb605","line":35,"in_reply_to":"e9350423_01b56736","updated":"2025-10-29 20:28:10.000000000","message":"Here\u0027s an implementation https://review.opendev.org/c/openstack/neutron/+/965053","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b17c06876d0bea10f757f3a303f904dbc9fea1f6","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"This spec introduces a new ML2 TypeDriver named ``evpn-vxlan`` that"},{"line_number":40,"context_line":"satisfies those requirements while re-using Neutron’s existing segment"},{"line_number":41,"context_line":"range and dynamic-segment-allocation infrastructure."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed change"},{"line_number":44,"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":2,"id":"53e46895_567060b3","line":41,"updated":"2025-08-27 20:32:18.000000000","message":"I feel like it might make sense to expand upon this to provide a bit more widely applicable big picture context.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"803337595b47ac172d6bcdbe5179984e4f445e0b","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"This spec introduces a new ML2 TypeDriver named ``evpn-vxlan`` that"},{"line_number":40,"context_line":"satisfies those requirements while re-using Neutron’s existing segment"},{"line_number":41,"context_line":"range and dynamic-segment-allocation infrastructure."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proposed change"},{"line_number":44,"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":2,"id":"4d92e732_dfcce4d3","line":41,"in_reply_to":"53e46895_567060b3","updated":"2025-09-11 10:39:21.000000000","message":"agree with this","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":50,"context_line":"* **Provider attributes:**"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  + ``provider:network_type`` – must equal ``evpn-vxlan``.  "},{"line_number":53,"context_line":"  + ``provider:segmentation_id`` – *optional* VNI.  If omitted the"},{"line_number":54,"context_line":"    driver allocates one from the ``[evpn_vxlan] vni_ranges`` pool.  "},{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6ae48a3a_5614c156","line":54,"range":{"start_line":53,"start_character":34,"end_line":54,"end_character":69},"updated":"2025-06-13 14:01:58.000000000","message":"Please specify on top of this section that this is the API input. The segmentation ID is not an optional value for the model.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  + ``provider:segmentation_id`` – *optional* VNI.  If omitted the"},{"line_number":54,"context_line":"    driver allocates one from the ``[evpn_vxlan] vni_ranges`` pool.  "},{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* **Tenant networks:** same API as VXLAN; VNI allocated automatically.  "},{"line_number":59,"context_line":"* **Provider networks:** operator may supply a VNI and/or fabric physical_network."}],"source_content_type":"text/x-rst","patch_set":2,"id":"cf50e97a_8a8933cc","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":71},"updated":"2025-06-13 14:01:58.000000000","message":"Sorry, I would really want to understand this correctly. Why this is optional? Why if there is one fabric, NULL will be stored? What a \"fabric\" exactly in Neutron terms?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b17c06876d0bea10f757f3a303f904dbc9fea1f6","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  + ``provider:segmentation_id`` – *optional* VNI.  If omitted the"},{"line_number":54,"context_line":"    driver allocates one from the ``[evpn_vxlan] vni_ranges`` pool.  "},{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* **Tenant networks:** same API as VXLAN; VNI allocated automatically.  "},{"line_number":59,"context_line":"* **Provider networks:** operator may supply a VNI and/or fabric physical_network."}],"source_content_type":"text/x-rst","patch_set":2,"id":"50180bf7_c0d93a5d","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":71},"in_reply_to":"9cce2a2e_d31b8823","updated":"2025-08-27 20:32:18.000000000","message":"I guess I\u0027m reading this and sort of wondering if there is a need for more framing upfront. Maybe my thoughts and ideas are misplaced in this context, but I\u0027m entirely unsure by line 56 if this idea helps or hurts because of the further translation requirements which cannot be really articulated or tracked on the backend.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e38bd1c71e49294e1fb0c43ffe85a40368cd9e3c","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  + ``provider:segmentation_id`` – *optional* VNI.  If omitted the"},{"line_number":54,"context_line":"    driver allocates one from the ``[evpn_vxlan] vni_ranges`` pool.  "},{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* **Tenant networks:** same API as VXLAN; VNI allocated automatically.  "},{"line_number":59,"context_line":"* **Provider networks:** operator may supply a VNI and/or fabric physical_network."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9cce2a2e_d31b8823","line":56,"range":{"start_line":56,"start_character":4,"end_line":56,"end_character":71},"in_reply_to":"cf50e97a_8a8933cc","updated":"2025-07-13 21:20:07.000000000","message":"So I was treating it like VLAN has optional physical_network values. I\u0027m using the term \"fabric\" from the networking world which typically refer to a whole VXLAN mesh of interconnects as a fabric. I\u0027ve always heard it as one fabric is physically separate from another fabric in terms of networking. The goal was to not confuse with the physical_network value that the VLAN type provides which is riding on top of the physical_network of the underlay.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* **Tenant networks:** same API as VXLAN; VNI allocated automatically.  "},{"line_number":59,"context_line":"* **Provider networks:** operator may supply a VNI and/or fabric physical_network."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Example Use Case of Dynamic per-leaf VLAN endpoints"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c30793e7_b28215e8","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":70},"updated":"2025-06-13 14:01:58.000000000","message":"Why the VNI is allocated automatically? And admin can define it.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e38bd1c71e49294e1fb0c43ffe85a40368cd9e3c","unresolved":true,"context_lines":[{"line_number":55,"context_line":"  + ``provider:physical_network`` – *optional* fabric physical_network."},{"line_number":56,"context_line":"    * If **exactly one** fabric exists ``NULL`` is accepted and stored."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* **Tenant networks:** same API as VXLAN; VNI allocated automatically.  "},{"line_number":59,"context_line":"* **Provider networks:** operator may supply a VNI and/or fabric physical_network."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Example Use Case of Dynamic per-leaf VLAN endpoints"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2e055dbd_d8e54470","line":58,"range":{"start_line":58,"start_character":42,"end_line":58,"end_character":70},"in_reply_to":"c30793e7_b28215e8","updated":"2025-07-13 21:20:07.000000000","message":"Yes. I\u0027ll update this. I was more speaking from the terms of a user that doesn\u0027t provide the segmentation_id.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7eafd24e_83f105c1","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"updated":"2025-06-13 14:01:58.000000000","message":"I\u0027m struggling to understand this. So, the driver will, in this order:\n* Try to find a match first where exactly? What is ``lead physical_network``?\n* If that doesn\u0027t work, then it will use a new table ``network_segment_mappings``, that is mapping a physical network name with another physical network name???\n\nThe rest can be clarified after ^^ these two points.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b17c06876d0bea10f757f3a303f904dbc9fea1f6","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"bd45067b_54571bfc","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"in_reply_to":"0e256aaa_e403905c","updated":"2025-08-27 20:32:18.000000000","message":"I think if an set of acceptable vlans which can be articulated on the Neutron side is doable, then it would be easier to at least allocate, map and determine. The underlying challenge one of my customers has is that they simply have too many baremetal nodes and customers they want in a single environment and thus the only way to really get to that point is to begin to subdivide the network in the same way as what Doug is bringing up.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b1586e79c01b130e4a318ed9010f107552c8d62","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"17c9a688_21a7d0a9","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"in_reply_to":"21348202_8cc86f4f","updated":"2025-09-13 23:44:25.000000000","message":"The baremetal networks would need to be in here for this to work properly with Ironic allowing devices to be hooked up directly. But yes we would need some other mappings to be included to be able to hook this up to other VTEP devices.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e38bd1c71e49294e1fb0c43ffe85a40368cd9e3c","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f042d7e1_16bdb5f6","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"in_reply_to":"7eafd24e_83f105c1","updated":"2025-07-13 21:20:07.000000000","message":"So the goal of this is to model a leaf-spine based network model for bare metal nodes from Ironic. I\u0027m looking at the various networking-* drivers that have been moved in the opendev.org/x/ org as well as networking-* drivers that have been persisted by other vendors and trying to model something generic that they can get behind and not just another out of tree approach for my use case.\n\nSo in the doc I\u0027ve used fabric physical_network and leaf physical_network to clarify the two scopes here. You\u0027ve got a VXLAN underlay that\u0027s creating your fabric of all your switches. Your leaf switches then participate by bringing a VNI to a VLAN that\u0027s leaf local and then that VLAN is plumbed to the switch port that the Ironic server is plugged into either as an access port or a trunk port. Most drivers I\u0027ve seen (and my own driver) uses dynamic segment allocation to allocate a VLAN ID for a given leaf to attach the VXLAN VNI to.\n\nThe point of this mapping is to provide a way to say that the EVPN-VXLAN VNIs can allocate from VLAN segment ranges that match a given regex instead of all of them in Neutron.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"803337595b47ac172d6bcdbe5179984e4f445e0b","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"21348202_8cc86f4f","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"in_reply_to":"bd45067b_54571bfc","updated":"2025-09-11 10:39:21.000000000","message":"Right, as I commented before, I think we need to deal with several mappings here (baremetal networks, VNI, physnet in OpenStack). This driver should deal with the Neutron mappings only, that are the physnet associated to the VXLAN VNI.\n\nWe also need to know how publish the external VTEP IPs in Neutron (if that is needed, that will depend on the implementation).\n\nThe baremetal (VLAN) to VXLAN associations do not belong here","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1dbd56e82bf4e9825207f3b0adc1788ec3515825","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  #. Looks up the network and loads all available segments to attempt to find"},{"line_number":70,"context_line":"     a match using the ``leaf physical_network`` values on each segment."},{"line_number":71,"context_line":"  #. If no match can be found it will look up the ``fabric physical_network``"},{"line_number":72,"context_line":"     in the ``physical-network-mapping`` table. If there are no entries in"},{"line_number":73,"context_line":"     the table then all ``network-segment-ranges`` of type VLAN are available."},{"line_number":74,"context_line":"  #. A ``physical-network-mapping`` to a ``network-segment_range`` is treated"},{"line_number":75,"context_line":"     as a regex match to find all possible ``network-segment-ranges`` to assign"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0e256aaa_e403905c","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":38},"in_reply_to":"f042d7e1_16bdb5f6","updated":"2025-07-14 02:30:46.000000000","message":"We could have the relationships be explicit. You\u0027d have to add every VLAN segment range to be allowed to be used by the EVPN-VXLAN type instead of doing the regex.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":123,"context_line":"* **Uniqueness:** ``fabric`` is unique"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Migration script creates the table; no backfill required."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"},{"line_number":129,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"19986b10_ed7134cc","line":126,"updated":"2025-06-13 14:01:58.000000000","message":"Any tunnelled driver type requires a ``segment_model`` and a ``endpoint_model``: https://github.com/openstack/neutron/blob/9190d8988be1326ea44027fd63660dd4bd28c1ce/neutron/plugins/ml2/drivers/type_tunnel.py#L346","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e38bd1c71e49294e1fb0c43ffe85a40368cd9e3c","unresolved":true,"context_lines":[{"line_number":123,"context_line":"* **Uniqueness:** ``fabric`` is unique"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Migration script creates the table; no backfill required."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"},{"line_number":129,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1d74bc47_1a30f065","line":126,"in_reply_to":"19986b10_ed7134cc","updated":"2025-07-13 21:20:07.000000000","message":"Yes. Sorry. It would be something like VxlanWithPhysical for the `segment_model`.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5946d5d76150da37b13151c7b95546f1507940a","unresolved":true,"context_lines":[{"line_number":152,"context_line":"Configuration impact"},{"line_number":153,"context_line":"--------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"``ml2_conf.ini`` additions"},{"line_number":156,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5004a544_340c09b4","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":14},"updated":"2025-06-13 14:01:58.000000000","message":"There is a new driver type, a new section will be needed for sure, same as VLAN [ml2_type_vlan], VXLAN [ml2_type_vxlan], geneve [ml2_type_geneve], etc","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b17c06876d0bea10f757f3a303f904dbc9fea1f6","unresolved":true,"context_lines":[{"line_number":152,"context_line":"Configuration impact"},{"line_number":153,"context_line":"--------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"``ml2_conf.ini`` additions"},{"line_number":156,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":2,"id":"8cef376f_0b9adc25","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":14},"in_reply_to":"1ebf519e_d7f65d9e","updated":"2025-08-27 20:32:18.000000000","message":"That makes a TON of sense to just do it all via the API.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e38bd1c71e49294e1fb0c43ffe85a40368cd9e3c","unresolved":true,"context_lines":[{"line_number":152,"context_line":"Configuration impact"},{"line_number":153,"context_line":"--------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"``ml2_conf.ini`` additions"},{"line_number":156,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ebf519e_d7f65d9e","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":14},"in_reply_to":"5004a544_340c09b4","updated":"2025-07-13 21:20:07.000000000","message":"I wasn\u0027t using any config options because everything would happen via the API.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5c4d2657254a6f46f2c4bbfbcd15fed35d527d30","unresolved":true,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Operators must:"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"* Define EVPN-VXLAN pools in ``network-segment-ranges``."},{"line_number":198,"context_line":"* Define VLAN pools in ``network-segment-ranges``."},{"line_number":199,"context_line":"* Populate ``physical-network-mappings`` so the driver can translate leaf to fabric."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Developer impact"},{"line_number":202,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8d258395_fff2ee30","line":199,"range":{"start_line":197,"start_character":0,"end_line":199,"end_character":84},"updated":"2025-10-01 13:51:34.000000000","message":"this will happen via the API or you need cfg section like Rodolfo suggested (l155)?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5c4d2657254a6f46f2c4bbfbcd15fed35d527d30","unresolved":true,"context_lines":[{"line_number":220,"context_line":"#. DB migration + new API extension."},{"line_number":221,"context_line":"#. Implement ``evpn_vxlan`` TypeDriver."},{"line_number":222,"context_line":"#. Tempest and unit tests."},{"line_number":223,"context_line":"#. DevStack plugin updates."},{"line_number":224,"context_line":"#. OSC / Horizon support."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Testing and gating"},{"line_number":227,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0bec36a0_45d95407","line":224,"range":{"start_line":223,"start_character":0,"end_line":224,"end_character":25},"updated":"2025-10-01 13:51:34.000000000","message":"+1","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5c4d2657254a6f46f2c4bbfbcd15fed35d527d30","unresolved":true,"context_lines":[{"line_number":226,"context_line":"Testing and gating"},{"line_number":227,"context_line":"------------------"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"* Tempest coverage for create network, port binds, migration, exhausted"},{"line_number":230,"context_line":"  pool failure, mapping immutability."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Documentation impact"},{"line_number":233,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1bfff7a4_a3316171","line":230,"range":{"start_line":229,"start_character":0,"end_line":230,"end_character":37},"updated":"2025-10-01 13:51:34.000000000","message":"this must be some ironic job with the neutron Neutron driver am I right?","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"7767971a333d4fc24c22ad71a75d6761feb27001","unresolved":true,"context_lines":[{"line_number":226,"context_line":"Testing and gating"},{"line_number":227,"context_line":"------------------"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"* Tempest coverage for create network, port binds, migration, exhausted"},{"line_number":230,"context_line":"  pool failure, mapping immutability."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Documentation impact"},{"line_number":233,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5599448d_6da91b39","line":230,"range":{"start_line":229,"start_character":0,"end_line":230,"end_character":37},"in_reply_to":"1bfff7a4_a3316171","updated":"2025-10-29 20:28:10.000000000","message":"It will have to be.","commit_id":"515ef5758188f719b911d946a12c7ee619b8621e"}],"specs/2026.1/ml2-type-evpn-vxlan.rst":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6a9d6f495c5d4bcf88c240c321ae0d7f015392e4","unresolved":true,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"EVPN-VXLAN ML2 Type Driver"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"0775f35f_a59948ff","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":26},"updated":"2025-11-13 08:34:48.000000000","message":"nit: that needs to have the same size of the header or it will fail in the tox job","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1e08fe5b5a995994994c3293058bcab31a2694af","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"EVPN-VXLAN ML2 Type Driver"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"eb0644f0_608f6034","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":26},"in_reply_to":"0775f35f_a59948ff","updated":"2026-05-15 21:32:46.000000000","message":"Done","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6a9d6f495c5d4bcf88c240c321ae0d7f015392e4","unresolved":true,"context_lines":[{"line_number":48,"context_line":"satisfies those requirements while re-using Neutron’s existing segment"},{"line_number":49,"context_line":"range and dynamic-segment-allocation infrastructure."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"New network type"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2a188d42_8dea42b7","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":15},"updated":"2025-11-13 08:34:48.000000000","message":"It is needed to comment in this spec that this driver is a partial implementation of the https://bugs.launchpad.net/neutron/+bug/2105855 bug. Or at least comment that a EPVN driver is needed to handle this traffic in OVN.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"c7f287e5617d2bfdb91df860cb97fb83f8de334f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"satisfies those requirements while re-using Neutron’s existing segment"},{"line_number":49,"context_line":"range and dynamic-segment-allocation infrastructure."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"New network type"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a1d18f21_55f1626a","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":15},"in_reply_to":"2a188d42_8dea42b7","updated":"2026-04-22 06:15:36.000000000","message":"One user of this could be https://review.opendev.org/c/openstack/neutron-specs/+/982256 with its pools of VNIs separate from the VNIs used by the VXLAN type.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6a9d6f495c5d4bcf88c240c321ae0d7f015392e4","unresolved":true,"context_lines":[{"line_number":272,"context_line":"References"},{"line_number":273,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* `RFC 7432 — BGP MPLS‐based EVPN \u003chttps://datatracker.ietf.org/doc/html/rfc7432\u003e`_"},{"line_number":276,"context_line":"* `NetBox L2VPN support \u003chttps://netboxlabs.com/docs/netbox/en/stable/models/vpn/l2vpn/\u003e`_"},{"line_number":277,"context_line":"* `Routed Provider Networks \u003cRef: https://docs.openstack.org/neutron/latest/admin/config-routed-networks.html\u003e`_"},{"line_number":278,"context_line":"* Existing ML2 TypeDrivers: ``type_vxlan.py``, ``type_vlan.py``"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f49702c_90379d96","line":278,"range":{"start_line":275,"start_character":0,"end_line":278,"end_character":63},"updated":"2025-11-13 08:34:48.000000000","message":"These references should point to something in the upper document, not just mere documentation links.","commit_id":"23b02e631ce4674bf4f4050ad376d361f079b5dc"}]}
