)]}'
{"specs/xena/multiple-external-gateways.rst":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9165a9e868114db545e0af96897903f36466528f","unresolved":true,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Below we describe one cloud design that required us to allow multiple"},{"line_number":23,"context_line":"external gateways on a single router.  However the feature proposed in"},{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6d0c6d71_be0c8498","line":23,"range":{"start_line":23,"start_character":37,"end_line":23,"end_character":39},"updated":"2021-03-12 10:18:58.000000000","message":"nit: too much spaces (there are more)","commit_id":"e859d241a0732f502cb749a40eae48a20d55d7a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9165a9e868114db545e0af96897903f36466528f","unresolved":true,"context_lines":[{"line_number":50,"context_line":"With only one external gateway - regarding packet forwarding - naturally"},{"line_number":51,"context_line":"only the internal-internal and internal-external directions exist."},{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible.  For the sake of simplicity this spec proposes to"},{"line_number":54,"context_line":"allow packet forwading from one external gateway to another.  If required,"},{"line_number":55,"context_line":"a follow-up spec may propose finer control of external-external packet"},{"line_number":56,"context_line":"forwarding."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":59,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fb5a662a_2760c606","line":56,"range":{"start_line":53,"start_character":24,"end_line":56,"end_character":11},"updated":"2021-03-12 10:18:58.000000000","message":"It should be highlighted perhaps as a note, or similar","commit_id":"e859d241a0732f502cb749a40eae48a20d55d7a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9165a9e868114db545e0af96897903f36466528f","unresolved":true,"context_lines":[{"line_number":112,"context_line":"keep the current scalar external gateway (or gateway port) attribute of"},{"line_number":113,"context_line":"a router as is.  But also add a new router attribute for the plural:"},{"line_number":114,"context_line":"external gateways or gateway ports which contain a list of (not just"},{"line_number":115,"context_line":"the rest but) all such objects.  So the object in the scalar attribute"},{"line_number":116,"context_line":"is present in this list too - preferably as the first element of the list."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"This is just a high level approach that aims to leave all code unchanged"},{"line_number":119,"context_line":"where we only need to keep backwards compatible behavior."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df90373d_f4d8ec42","line":116,"range":{"start_line":115,"start_character":33,"end_line":116,"end_character":73},"updated":"2021-03-12 10:18:58.000000000","message":"Not sure if ordered list is the best, perhaps a flag as nr1 gw port or similar would be better, and more strict for operators.","commit_id":"e859d241a0732f502cb749a40eae48a20d55d7a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9165a9e868114db545e0af96897903f36466528f","unresolved":true,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"The first element in the list is special:"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* It is always the same as the original ``external_gateway_info``."},{"line_number":167,"context_line":"* It is the one that sets the default route of the Neutron router."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"The order of the the rest of the list is irrelevant and ignored."}],"source_content_type":"text/x-rst","patch_set":2,"id":"c7bde9cf_80a88189","line":166,"range":{"start_line":166,"start_character":2,"end_line":166,"end_character":66},"updated":"2021-03-12 10:18:58.000000000","message":"So the workflow will be something like:\n* POST/PUT /v2.0/routers/\u003crouter_id\u003e {external_gateway_info: {\"network_id\": net1_id,....}}\n* PUT /v2.0/routers/\u003crouter_id\u003e/add-external-gateways {external_gateways: [{\"network_id\": net1_id, ...},\n                                                                                {\"network_id\": net2_id ...}]}\n?\nCan\u0027t we avoid such redundant operation?","commit_id":"e859d241a0732f502cb749a40eae48a20d55d7a5"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":51,"context_line":"only the internal-internal and internal-external directions exist."},{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible.  For the sake of simplicity this spec proposes to"},{"line_number":54,"context_line":"allow packet forwading from one external gateway to another.  If required,"},{"line_number":55,"context_line":"a follow-up spec may propose finer control of external-external packet"},{"line_number":56,"context_line":"forwarding."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"d32a022b_c981ae81","line":54,"range":{"start_line":54,"start_character":52,"end_line":54,"end_character":53},"updated":"2021-04-07 12:34:21.000000000","message":"We have a query here:\n\nIt is not clear what use-case we try to address by explicitly \"allowing external-to-external connectivity\".\n\nWe tend to believe that since by default, the neutron router will allow traffic to flow from one ext-gateway-port to another ext-gateway-port, we ought to state this as a supported premise?","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":51,"context_line":"only the internal-internal and internal-external directions exist."},{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible.  For the sake of simplicity this spec proposes to"},{"line_number":54,"context_line":"allow packet forwading from one external gateway to another.  If required,"},{"line_number":55,"context_line":"a follow-up spec may propose finer control of external-external packet"},{"line_number":56,"context_line":"forwarding."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"befcc334_48c3c05b","line":54,"range":{"start_line":54,"start_character":52,"end_line":54,"end_character":53},"in_reply_to":"d32a022b_c981ae81","updated":"2021-05-28 12:02:52.000000000","message":"Done","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":56,"context_line":"forwarding."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":59,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."},{"line_number":60,"context_line":"So for the sake of simplicity for each router we retain one external"},{"line_number":61,"context_line":"gateway as special.  The special one is used to set the default route of"},{"line_number":62,"context_line":"a router as before, while the other external gateways have no influence"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa814ca_155a3bc3","line":59,"updated":"2021-04-07 12:34:21.000000000","message":"We have a query here:\n\nisn\u0027t default route for a router usually a \u0027static-route\u0027 that has to be manually configured into the router through neutron extra-route APIs.\n\nOR\n\nis the default route for the router pre-setup by the L3Agent as part of enrolling a router-gateway-port onto the router?\n\nIn either case,  it is unclear to us why a default-route can\u0027t carry multiple nexthops each such nexthop representing one unique external-gateway-ip.\n\nOr is the decision to use one external-gateway-port as special is to do with NAT\u0027ing?","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":56,"context_line":"forwarding."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":59,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."},{"line_number":60,"context_line":"So for the sake of simplicity for each router we retain one external"},{"line_number":61,"context_line":"gateway as special.  The special one is used to set the default route of"},{"line_number":62,"context_line":"a router as before, while the other external gateways have no influence"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b5b18c42_4fb1f194","line":59,"in_reply_to":"3fa814ca_155a3bc3","updated":"2021-05-28 12:02:52.000000000","message":"\u003e is the default route for the router pre-setup by the L3Agent as part of enrolling a router-gateway-port onto the router?\n\nThis is the case today.\n\n\u003e In either case,  it is unclear to us why a default-route can\u0027t carry multiple nexthops each such nexthop representing one unique external-gateway-ip.\n\nPrimarily I\u0027m trying to avoid a dependency on the still work in progress ECMP patches.","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":65,"context_line":"NATting and reservation of floating IPs can be performed for each external"},{"line_number":66,"context_line":"gateway as usual, but please see the \u0027Out of Scope\u0027 section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The first implementation targets centralized routers on l3-agent."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Out of Scope"},{"line_number":71,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"aacdb67c_33ce5b50","line":68,"updated":"2021-04-07 12:34:21.000000000","message":"thanks !","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":65,"context_line":"NATting and reservation of floating IPs can be performed for each external"},{"line_number":66,"context_line":"gateway as usual, but please see the \u0027Out of Scope\u0027 section."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The first implementation targets centralized routers on l3-agent."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Out of Scope"},{"line_number":71,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"57599d1c_d2b30c2b","line":68,"in_reply_to":"aacdb67c_33ce5b50","updated":"2021-05-28 12:02:52.000000000","message":"Ack","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":71,"context_line":"------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"First of all, overall support for active-active HA routers is not"},{"line_number":74,"context_line":"targeted here."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The usual set of implicitly managed routes in a Neutron router are:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"e0b5ff75_492464c3","line":74,"updated":"2021-04-07 12:34:21.000000000","message":"It will be good to state that ACTIVE-ACTIVE HA Routers are not realized by \"Openstack Neutron\" Reference L3 backends and will neither be supported via this spec.","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":71,"context_line":"------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"First of all, overall support for active-active HA routers is not"},{"line_number":74,"context_line":"targeted here."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The usual set of implicitly managed routes in a Neutron router are:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"f1f1efad_3519fcee","line":74,"in_reply_to":"e0b5ff75_492464c3","updated":"2021-05-28 12:02:52.000000000","message":"Done","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Managing additional routes via the extraroutes API."},{"line_number":92,"context_line":"* Future improvements to neutron-dynamic-routing so a Neutron router"},{"line_number":93,"context_line":"  can also receive (not just advertise) additional routes."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Since the extraroutes API is already available, we believe that some"},{"line_number":96,"context_line":"use of the multiple external gateways can be realized as soon as this"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2f142117_1e7dc8d4","line":93,"updated":"2021-04-07 12:34:21.000000000","message":"The ability to both receive (and continue to advertise) is driven through the BGPaaS Enhancement here:\nhttps://review.opendev.org/c/openstack/neutron-specs/+/783791\n\ncan we please add it to references?","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Managing additional routes via the extraroutes API."},{"line_number":92,"context_line":"* Future improvements to neutron-dynamic-routing so a Neutron router"},{"line_number":93,"context_line":"  can also receive (not just advertise) additional routes."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Since the extraroutes API is already available, we believe that some"},{"line_number":96,"context_line":"use of the multiple external gateways can be realized as soon as this"}],"source_content_type":"text/x-rst","patch_set":3,"id":"89590570_b3bf0edd","line":93,"in_reply_to":"2f142117_1e7dc8d4","updated":"2021-05-28 12:02:52.000000000","message":"Done","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"798c274986a620202aab8d1c11a53b2deb6aca3f","unresolved":true,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The ``external_gateways`` attribute cannot be set in"},{"line_number":179,"context_line":"``POST /v2.0/routers`` or ``PUT /v2.0/routers/{router_id}`` requests,"},{"line_number":180,"context_line":"instead it can be managed via sub-methods:"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"* ``PUT /v2.0/routers/{router_id}/add_external_gateways``"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"116daf8b_693a94b8","line":180,"updated":"2021-04-07 12:34:21.000000000","message":"this is a good approach, as it will avoid breaking a lot of scripts that might use PUT /routers to setup external-gateway-info","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"d4c0f74ff441ec441a3bfb25a29fa3ab3a4270ab","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The ``external_gateways`` attribute cannot be set in"},{"line_number":179,"context_line":"``POST /v2.0/routers`` or ``PUT /v2.0/routers/{router_id}`` requests,"},{"line_number":180,"context_line":"instead it can be managed via sub-methods:"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"* ``PUT /v2.0/routers/{router_id}/add_external_gateways``"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1cf329b5_50897ad0","line":180,"in_reply_to":"116daf8b_693a94b8","updated":"2021-05-28 12:02:52.000000000","message":"Ack","commit_id":"57bd75b7d6bd2c8d2b8bdf927d516f5481adb732"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da47dc72_0e682296","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":38},"updated":"2021-06-03 08:12:14.000000000","message":"active-standby ?\n\nor \"will be an active-active HA router\"?","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8e10339b_618ef286","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":38},"in_reply_to":"da47dc72_0e682296","updated":"2021-06-03 15:39:02.000000000","message":"Intentionally wrote \"active-active\". Please see the \"Out of scope\" section from line 74.\n\nIn short: This wants to be a step to allow active-active routers, but it does not go all the way to fully support active-active in l3-agent.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"},{"line_number":31,"context_line":"here on: datacenter gateway) which is also an active-active HA router."},{"line_number":32,"context_line":"The Neutron router and the datacenter gateway are interconnected by 2x2"},{"line_number":33,"context_line":"point-to-point links (from each side to each side).  The Neutron router"},{"line_number":34,"context_line":"in this setup has 4 links towards the external world."},{"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":"19b997a3_67205d6e","line":34,"range":{"start_line":27,"start_character":50,"end_line":34,"end_character":53},"updated":"2021-06-03 08:12:14.000000000","message":"It\u0027s better to add an ascii chart here to indicate the toplogy.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"},{"line_number":31,"context_line":"here on: datacenter gateway) which is also an active-active HA router."},{"line_number":32,"context_line":"The Neutron router and the datacenter gateway are interconnected by 2x2"},{"line_number":33,"context_line":"point-to-point links (from each side to each side).  The Neutron router"},{"line_number":34,"context_line":"in this setup has 4 links towards the external world."},{"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":"afd5617f_58050197","line":34,"range":{"start_line":27,"start_character":50,"end_line":34,"end_character":53},"in_reply_to":"19b997a3_67205d6e","updated":"2021-06-03 15:39:02.000000000","message":"Done","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The information in an ``external_gateway_info`` structure is used to"},{"line_number":43,"context_line":"create a gateway port.  A gateway port is a router leg, where beyond"},{"line_number":44,"context_line":"packet forwarding, we perform SNAT (if enabled) and DNAT (for floating"},{"line_number":45,"context_line":"IPs) and which influences the default route of that router.  Given"},{"line_number":46,"context_line":"multiple ``external_gateway_info`` structures we can straightforwardly"},{"line_number":47,"context_line":"create multiple gateway ports.  We can also straightforwardly install"},{"line_number":48,"context_line":"the directly connected routes of the additional external gateways."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3b5bf486_cfb38e3c","line":45,"range":{"start_line":44,"start_character":58,"end_line":45,"end_character":3},"updated":"2021-06-03 08:12:14.000000000","message":"and port forwardings.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The information in an ``external_gateway_info`` structure is used to"},{"line_number":43,"context_line":"create a gateway port.  A gateway port is a router leg, where beyond"},{"line_number":44,"context_line":"packet forwarding, we perform SNAT (if enabled) and DNAT (for floating"},{"line_number":45,"context_line":"IPs) and which influences the default route of that router.  Given"},{"line_number":46,"context_line":"multiple ``external_gateway_info`` structures we can straightforwardly"},{"line_number":47,"context_line":"create multiple gateway ports.  We can also straightforwardly install"},{"line_number":48,"context_line":"the directly connected routes of the additional external gateways."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d513b75b_506d13e0","line":45,"range":{"start_line":44,"start_character":58,"end_line":45,"end_character":3},"in_reply_to":"3b5bf486_cfb38e3c","updated":"2021-06-03 15:39:02.000000000","message":"Done","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":50,"context_line":"With only one external gateway - regarding packet forwarding - naturally"},{"line_number":51,"context_line":"only the internal-internal and internal-external directions exist."},{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."}],"source_content_type":"text/x-rst","patch_set":4,"id":"868af27a_c2e0791b","line":54,"range":{"start_line":53,"start_character":23,"end_line":54,"end_character":11},"updated":"2021-06-03 08:12:14.000000000","message":"So, this case or possiblity should be removed from this spec to avoid misunderstanding.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"With only one external gateway - regarding packet forwarding - naturally"},{"line_number":51,"context_line":"only the internal-internal and internal-external directions exist."},{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."}],"source_content_type":"text/x-rst","patch_set":4,"id":"e12d5b83_c903863f","line":54,"range":{"start_line":53,"start_character":23,"end_line":54,"end_character":11},"in_reply_to":"868af27a_c2e0791b","updated":"2021-06-03 15:39:02.000000000","message":"Please see my answer in line 56.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6227175c9686c93ba6a40d6850112b6d7582517e","unresolved":true,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"977ee83c_c4704fde","line":55,"range":{"start_line":55,"start_character":17,"end_line":55,"end_character":37},"updated":"2021-06-01 13:54:21.000000000","message":"nit: perhaps: \"... support that, to allow....\" ?","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"09df364a_f2c84fa1","line":55,"range":{"start_line":55,"start_character":17,"end_line":55,"end_character":37},"in_reply_to":"977ee83c_c4704fde","updated":"2021-06-03 15:39:02.000000000","message":"Done","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bfe289dd_aa714db8","line":56,"range":{"start_line":55,"start_character":61,"end_line":56,"end_character":28},"updated":"2021-06-03 08:12:14.000000000","message":"This means \"external-to-external\" case? If so, I\u0027m confused. In line 53-54, you said \"don\u0027t have a use case\", so why we implement this?\n\nOr this means \"internal-to-multiple-external\" or \"multiple-external-to-internal\"?","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7fd5a1b37969319c23935b6735d73026549b773d","unresolved":true,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8732a9a0_5646f788","line":56,"range":{"start_line":55,"start_character":61,"end_line":56,"end_character":28},"in_reply_to":"43c458c1_ea307e40","updated":"2021-06-09 07:25:18.000000000","message":"+1 for simpler approach. We can always improve it if that will be needed in the future :)","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1e202e4c674dc4d8843cb148455eb616baa080b9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"}],"source_content_type":"text/x-rst","patch_set":4,"id":"20c8adf8_4767036c","line":56,"range":{"start_line":55,"start_character":61,"end_line":56,"end_character":28},"in_reply_to":"8732a9a0_5646f788","updated":"2021-06-16 13:24:26.000000000","message":"Ack","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":true,"context_lines":[{"line_number":52,"context_line":"However with multiple external gateways the external-external direction"},{"line_number":53,"context_line":"also becomes possible. We don\u0027t have a use case for external-external"},{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"}],"source_content_type":"text/x-rst","patch_set":4,"id":"43c458c1_ea307e40","line":56,"range":{"start_line":55,"start_character":61,"end_line":56,"end_character":28},"in_reply_to":"bfe289dd_aa714db8","updated":"2021-06-03 15:39:02.000000000","message":"Let me try to answer these comments together:\n\nWe need to decide if we allow packet forwarding from one external gw port to another external gw port (\"external-external traffic\" for short). A router by default forwards packets between all of its ports. Including external-external traffic. So if we add multiple external ports and do nothing else, then we allowed external-external traffic. I don\u0027t need external-external traffic. But I also don\u0027t see a problem in allowing external-external traffic. So I\u0027m okay with both.\n\nIf we have a reason to prohibit external-external traffic, that needs additional work (rules to drop that traffic). And I\u0027m not sure that additional work is worth doing. If you see a reason to prohibit external-external traffic, please let me know and I will change the spec. However if we don\u0027t have a reason to prohibit external-external traffic, then I propose to do the simpler thing: let the external-external traffic flow.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2cf60971a7f48e9caf5a8812de5050fb341b82a2","unresolved":true,"context_lines":[{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":60,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"11ac52cd_140143e3","line":57,"range":{"start_line":57,"start_character":17,"end_line":57,"end_character":53},"updated":"2021-06-03 08:12:14.000000000","message":"Sorry, I\u0027m lost again.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":54,"context_line":"forwarding. However for the sake of simplicity of implementation this"},{"line_number":55,"context_line":"spec proposes to support that that is allow packet forwading from one"},{"line_number":56,"context_line":"external gateway to another.  If required, a follow-up spec may propose"},{"line_number":57,"context_line":"finer control of external-external packet forwarding."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":60,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"124ec4a3_18b14362","line":57,"range":{"start_line":57,"start_character":17,"end_line":57,"end_character":53},"in_reply_to":"11ac52cd_140143e3","updated":"2021-06-03 15:39:02.000000000","message":"Please see my answer in line 56.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":33273,"name":"Manu B","display_name":"Manu B","email":"manu.b@est.tech","username":"eceghkl"},"change_message_id":"417a0cd5b634d689a4344faf7914fc9ff2706c8a","unresolved":true,"context_lines":[{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":60,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."},{"line_number":61,"context_line":"So for the sake of simplicity for each router we retain one external"},{"line_number":62,"context_line":"gateway as special.  The special one is used to set the default route of"},{"line_number":63,"context_line":"a router as before, while the other external gateways have no influence"},{"line_number":64,"context_line":"on the default route."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"a4eb232d_1f2a7b9f","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":18},"updated":"2021-06-02 05:43:24.000000000","message":"Will there be any criteria for selecting the special one?\nAlso, since we support the update_external_gateways operation, will there be reselection of the special, after update operation?","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"However the default route of a router cannot be multiplied without"},{"line_number":60,"context_line":"complex consequences (e.g. load balancing between multiple nexthops)."},{"line_number":61,"context_line":"So for the sake of simplicity for each router we retain one external"},{"line_number":62,"context_line":"gateway as special.  The special one is used to set the default route of"},{"line_number":63,"context_line":"a router as before, while the other external gateways have no influence"},{"line_number":64,"context_line":"on the default route."},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"68bbe190_6a82b090","line":62,"range":{"start_line":62,"start_character":11,"end_line":62,"end_character":18},"in_reply_to":"a4eb232d_1f2a7b9f","updated":"2021-06-03 15:39:02.000000000","message":"Kind of. Not like a pointer though.\n\nIn the proposal a router has:\n\n* an external_gateway_info attribute which contains a single external gw\n* an external_gateways attribute which contains a list of external gws\n\nThe one external gw that is in the external_gateway_info is always duplicated as the first element of the external_gateways list.\n\nThis element (which is in the external_gateway_info and in external_gateways[0]) is the special one. So the API user can decide which one is the special. And also can send updates that change which one is special.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4a9a2e809e1a10e23f6bf6663489c4ee25e3d71c","unresolved":true,"context_lines":[{"line_number":114,"context_line":"a router as is.  But also add a new router attribute for the plural:"},{"line_number":115,"context_line":"external gateways or gateway ports which contain a list of (not just"},{"line_number":116,"context_line":"the rest but) all such objects.  So the object in the scalar attribute"},{"line_number":117,"context_line":"is present in this list too - preferably as the first element of the list."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"This is just a high level approach that aims to leave all code unchanged"},{"line_number":120,"context_line":"where we only need to keep backwards compatible behavior."}],"source_content_type":"text/x-rst","patch_set":4,"id":"51c1e891_71d60c07","line":117,"updated":"2021-06-01 07:46:37.000000000","message":"I like that as this will make our api 100% backward compatible so we will not break anything 😊","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":114,"context_line":"a router as is.  But also add a new router attribute for the plural:"},{"line_number":115,"context_line":"external gateways or gateway ports which contain a list of (not just"},{"line_number":116,"context_line":"the rest but) all such objects.  So the object in the scalar attribute"},{"line_number":117,"context_line":"is present in this list too - preferably as the first element of the list."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"This is just a high level approach that aims to leave all code unchanged"},{"line_number":120,"context_line":"where we only need to keep backwards compatible behavior."}],"source_content_type":"text/x-rst","patch_set":4,"id":"41aba36a_463483fe","line":117,"in_reply_to":"51c1e891_71d60c07","updated":"2021-06-03 15:39:02.000000000","message":"That\u0027s the plan at least. 😊","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"4a9a2e809e1a10e23f6bf6663489c4ee25e3d71c","unresolved":true,"context_lines":[{"line_number":143,"context_line":"  both in the ``routerports`` table and in ``routers.gw_port_id``)."},{"line_number":144,"context_line":"* To extend the ``neutron.db.models.l3.Router`` class with new attribute"},{"line_number":145,"context_line":"  ``gw_ports`` that map to all relevant ``network:router_gateway`` ports"},{"line_number":146,"context_line":"  stored in the ``routerports`` table."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"REST API Impact"},{"line_number":149,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dceae7c5_5009e8f9","line":146,"updated":"2021-06-01 07:46:37.000000000","message":"good, so we don\u0027t really need any db schema changes, right?","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"96aa0f8f8397e3ff6afbe9a29c13cce19bc5dba1","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  both in the ``routerports`` table and in ``routers.gw_port_id``)."},{"line_number":144,"context_line":"* To extend the ``neutron.db.models.l3.Router`` class with new attribute"},{"line_number":145,"context_line":"  ``gw_ports`` that map to all relevant ``network:router_gateway`` ports"},{"line_number":146,"context_line":"  stored in the ``routerports`` table."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"REST API Impact"},{"line_number":149,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1fb142c6_7db6ed33","line":146,"in_reply_to":"dceae7c5_5009e8f9","updated":"2021-06-03 15:39:02.000000000","message":"Yep.","commit_id":"2a53aa9171413055cde2b320b3e5e1a3b2f09091"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7fd5a1b37969319c23935b6735d73026549b773d","unresolved":true,"context_lines":[{"line_number":236,"context_line":"---------------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"TODO I still need to cover this, but I believe the API proposal already"},{"line_number":239,"context_line":"makes sense and can be reviewed."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Upgrade Impact"},{"line_number":242,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d830bcc8_849c8e98","line":239,"updated":"2021-06-09 07:25:18.000000000","message":"Are You planning to update this section in that spec? Or some follow up patch later?","commit_id":"88d010dba81aef990e4ea68db4d62edfa767a35b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9aca20258c49bb01bb7cb9b077a130a48939b18c","unresolved":true,"context_lines":[{"line_number":236,"context_line":"---------------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"TODO I still need to cover this, but I believe the API proposal already"},{"line_number":239,"context_line":"makes sense and can be reviewed."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Upgrade Impact"},{"line_number":242,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"8c5fd7ed_d3a10522","line":239,"in_reply_to":"6b28d79d_f1b610bb","updated":"2021-07-05 12:27:47.000000000","message":"+1","commit_id":"88d010dba81aef990e4ea68db4d62edfa767a35b"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1e202e4c674dc4d8843cb148455eb616baa080b9","unresolved":true,"context_lines":[{"line_number":236,"context_line":"---------------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"TODO I still need to cover this, but I believe the API proposal already"},{"line_number":239,"context_line":"makes sense and can be reviewed."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Upgrade Impact"},{"line_number":242,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6b28d79d_f1b610bb","line":239,"in_reply_to":"d830bcc8_849c8e98","updated":"2021-06-16 13:24:26.000000000","message":"Sorry for the slow reaction.\n\nThe more I look at the l3-agent code, the less sure I am I have a grand plan other than making the necessary changes here and there. So maybe I\u0027ll just remove this section, so it does not block the API review. I don\u0027t think anything we change in the agent could have an effect on the API proposal.","commit_id":"88d010dba81aef990e4ea68db4d62edfa767a35b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"51f83f5cbd1be8f9d39c4cdac46f28f34b66b33c","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"}],"source_content_type":"text/x-rst","patch_set":7,"id":"88552e50_9b884052","line":27,"range":{"start_line":27,"start_character":38,"end_line":27,"end_character":48},"updated":"2021-06-22 17:06:33.000000000","message":"To be honest, I see this description a bit misleading. This is talking about active-active HA routers but then the implementation will modify only centralized routers; HA routers are out of scope in this spec. Right?","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6bae4e01bceebd5fa3470b2ff31ae9c9ddf258fb","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a1cb516c_26b748d8","line":27,"range":{"start_line":27,"start_character":38,"end_line":27,"end_character":48},"in_reply_to":"88552e50_9b884052","updated":"2021-06-25 13:58:50.000000000","message":"Sorry for that, it wasn\u0027t my intention to mislead.\n\nWe are in a discussion with a vendor that wants to use this API to actually support active-active routers. However I don\u0027t have control over whether that implementation gets open sourced or not.\n\nHere I was trying to find the smallest possible upstream change, that makes sense in itself and at the same time enables that vendor (and of course any other future vendor) to support active-active routers (at least if interconnected like pictured below).\n\nThat\u0027s why my use case is about active-active routers, but then the implementation is not. Does that make sense? Is it okay?","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"308cde6a22d5e7c8523a297ec5e6ed8f287f6ad9","unresolved":true,"context_lines":[{"line_number":24,"context_line":"this spec is in no way specific to this design, this spec only strives"},{"line_number":25,"context_line":"to allow multiple external gateways for any design that needs it."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The Neutron router is an active-active HA router.  Compute hosts are"},{"line_number":28,"context_line":"connected to the Neutron router via an MLAG, the two sides of the router"},{"line_number":29,"context_line":"present a single IP to the computes.  There is a single logical router"},{"line_number":30,"context_line":"one hop away from the Neutron router towards the external world (from"}],"source_content_type":"text/x-rst","patch_set":7,"id":"faa11245_f4dcc80f","line":27,"range":{"start_line":27,"start_character":38,"end_line":27,"end_character":48},"in_reply_to":"a1cb516c_26b748d8","updated":"2021-06-29 14:17:44.000000000","message":"Yes, I was trying to be clear on the concepts.","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"51f83f5cbd1be8f9d39c4cdac46f28f34b66b33c","unresolved":true,"context_lines":[{"line_number":90,"context_line":"gateway as usual, but please see the \u0027Out of Scope\u0027 section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The first implementation targets centralized routers on l3-agent."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Out of Scope"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"877ea9be_6abf0510","line":93,"updated":"2021-06-22 17:06:33.000000000","message":"Can you describe the routing table with more than one GW?","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"308cde6a22d5e7c8523a297ec5e6ed8f287f6ad9","unresolved":true,"context_lines":[{"line_number":90,"context_line":"gateway as usual, but please see the \u0027Out of Scope\u0027 section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The first implementation targets centralized routers on l3-agent."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Out of Scope"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ca27dffa_b2acc15d","line":93,"in_reply_to":"2c5d5bba_aedb2209","updated":"2021-06-29 14:17:44.000000000","message":"Yeah, I saw it but I wanted to see how you will deal with this multiple GW in the routing table. I\u0027ll wait for the implementation.","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6bae4e01bceebd5fa3470b2ff31ae9c9ddf258fb","unresolved":true,"context_lines":[{"line_number":90,"context_line":"gateway as usual, but please see the \u0027Out of Scope\u0027 section."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The first implementation targets centralized routers on l3-agent."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Out of Scope"},{"line_number":95,"context_line":"------------"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"2c5d5bba_aedb2209","line":93,"in_reply_to":"877ea9be_6abf0510","updated":"2021-06-25 13:58:50.000000000","message":"I made the paragraphs below more precise. Also reorganized a bit so the description is not totally in the \u0027Out of Scope\u0027 section. Please let me know if that describes the routing table as you would like to see or please tell me what you find unclear.","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"51f83f5cbd1be8f9d39c4cdac46f28f34b66b33c","unresolved":true,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Updating ``external_gateway_info`` also updates the first element of"},{"line_number":198,"context_line":"``external_gateways`` and it leaves the rest of ``external_gateways``"},{"line_number":199,"context_line":"unchanged.  Setting ``external_gateway_info`` to an empty value also"},{"line_number":200,"context_line":"resets ``external_gateways`` to the empty list."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"The ``external_gateways`` attribute cannot be set in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5adaaa2a_456c5464","line":199,"range":{"start_line":199,"start_character":22,"end_line":199,"end_character":43},"updated":"2021-06-22 17:06:33.000000000","message":"So if \"external_gateway_info\" is deleted (main GW interface), the other external GWs in this router will be automatically deleted too.","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6bae4e01bceebd5fa3470b2ff31ae9c9ddf258fb","unresolved":true,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Updating ``external_gateway_info`` also updates the first element of"},{"line_number":198,"context_line":"``external_gateways`` and it leaves the rest of ``external_gateways``"},{"line_number":199,"context_line":"unchanged.  Setting ``external_gateway_info`` to an empty value also"},{"line_number":200,"context_line":"resets ``external_gateways`` to the empty list."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"The ``external_gateways`` attribute cannot be set in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9ba15f42_0bd8e586","line":199,"range":{"start_line":199,"start_character":22,"end_line":199,"end_character":43},"in_reply_to":"5adaaa2a_456c5464","updated":"2021-06-25 13:58:50.000000000","message":"Yes, exactly.","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"308cde6a22d5e7c8523a297ec5e6ed8f287f6ad9","unresolved":true,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Updating ``external_gateway_info`` also updates the first element of"},{"line_number":198,"context_line":"``external_gateways`` and it leaves the rest of ``external_gateways``"},{"line_number":199,"context_line":"unchanged.  Setting ``external_gateway_info`` to an empty value also"},{"line_number":200,"context_line":"resets ``external_gateways`` to the empty list."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"The ``external_gateways`` attribute cannot be set in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"845b05a7_ba007bf3","line":199,"range":{"start_line":199,"start_character":22,"end_line":199,"end_character":43},"in_reply_to":"9ba15f42_0bd8e586","updated":"2021-06-29 14:17:44.000000000","message":"Thanks","commit_id":"9f57eeb8a5ac9748a5f6df3da540cd2249d25cc6"}]}
