)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"ba29e236a0be6e6cc2e5bfbddb3083f1ccc554f7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2016-11-27 17:47:01 +0200"},{"line_number":4,"context_line":"Commit:     Igor Shafran \u003cigor.shafran@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-27 18:09:56 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add flow diagrams and detailed flow description"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I140bb5c03d06bc4d462e53fecf31b82f386fe18c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a74a57a_7df0cb91","line":6,"updated":"2016-11-28 01:14:41.000000000","message":"Need a spec title, like \u0027Spec: Distributed SNAT\u0027","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Igor Shafran \u003cigor.shafran@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-27 18:09:56 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add flow diagrams and detailed flow description"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I140bb5c03d06bc4d462e53fecf31b82f386fe18c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a74a57a_9da84779","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":47},"updated":"2016-11-28 01:30:16.000000000","message":"I think this is not something you want to use as commit title :)","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"}],"doc/source/specs/distributed_snat.rst":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"User reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_a9cde986","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":4},"updated":"2016-11-17 01:51:15.000000000","message":"user","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"User reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_860f2f87","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":4},"in_reply_to":"7a77a97e_a9cde986","updated":"2016-11-23 07:40:11.000000000","message":"cloud admin ?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"User reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_09bc1ddb","line":19,"range":{"start_line":19,"start_character":50,"end_line":19,"end_character":65},"updated":"2016-11-17 01:51:15.000000000","message":"External IP for shared NAT might not be for per user. Possible case will be that all users shared one external IP address.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"User reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_26b81bc8","line":19,"range":{"start_line":19,"start_character":50,"end_line":19,"end_character":65},"in_reply_to":"7a77a97e_09bc1ddb","updated":"2016-11-23 07:40:11.000000000","message":"should be: \u0027of the same tenant\u0027","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP  of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c9ab0574","line":25,"range":{"start_line":22,"start_character":0,"end_line":25,"end_character":53},"updated":"2016-11-17 01:51:15.000000000","message":"Are you suggesting add an external ip to each compute node(10 ips for 10 compute node) here?\n\nAccording to below spec, it seems true, right?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP  of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_2f51d936","line":25,"range":{"start_line":25,"start_character":28,"end_line":25,"end_character":29},"updated":"2016-11-17 03:49:36.000000000","message":"nit: remove the additional space in the last line.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP  of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_26be5b65","line":25,"in_reply_to":"7a77a97e_2f51d936","updated":"2016-11-23 07:40:11.000000000","message":"Done","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same user"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the User reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP  of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_e6d9c323","line":25,"range":{"start_line":22,"start_character":0,"end_line":25,"end_character":53},"in_reply_to":"7a77a97e_c9ab0574","updated":"2016-11-23 07:40:11.000000000","message":"yes. Such allocation is still better for SNAT traffic only compared to DNAT allocation of one IP per VM","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":40,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The downside of DNAT is that the number of external IP addresses is very"},{"line_number":43,"context_line":"limited, and therefore it requires that the User either \"switch\""},{"line_number":44,"context_line":"floating IPs between VMs (complicated), or obtain enough external IPs"},{"line_number":45,"context_line":"(expensive)."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_09b89dc7","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":48},"updated":"2016-11-17 01:51:15.000000000","message":"user?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":40,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The downside of DNAT is that the number of external IP addresses is very"},{"line_number":43,"context_line":"limited, and therefore it requires that the User either \"switch\""},{"line_number":44,"context_line":"floating IPs between VMs (complicated), or obtain enough external IPs"},{"line_number":45,"context_line":"(expensive)."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_e6a8e322","line":43,"in_reply_to":"7a77a97e_09b89dc7","updated":"2016-11-23 07:40:11.000000000","message":"cloud admin","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"This spec outlines an additional SNAT model that places the NAT/PAT on"},{"line_number":57,"context_line":"each Compute Node. In order for this design to work in a real world"},{"line_number":58,"context_line":"deployment, the underlying networking infrastructure needs to allow Compute"},{"line_number":59,"context_line":"Nodes to access the external network (e.g. WWW)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"},{"line_number":62,"context_line":"not need to be routed through the Network Node. Instead, they will be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_092dfdfd","line":59,"range":{"start_line":58,"start_character":62,"end_line":59,"end_character":36},"updated":"2016-11-17 01:51:15.000000000","message":"The compute nodes already have such access in DNAT/floatingIP scenarios.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":56,"context_line":"This spec outlines an additional SNAT model that places the NAT/PAT on"},{"line_number":57,"context_line":"each Compute Node. In order for this design to work in a real world"},{"line_number":58,"context_line":"deployment, the underlying networking infrastructure needs to allow Compute"},{"line_number":59,"context_line":"Nodes to access the external network (e.g. WWW)."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"},{"line_number":62,"context_line":"not need to be routed through the Network Node. Instead, they will be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c65da748","line":59,"in_reply_to":"7a77a97e_092dfdfd","updated":"2016-11-23 07:40:11.000000000","message":"This use case id relevant when DNAT is not defined or defined not for all VMs on compute node","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":65,"context_line":"In order to achieve dragonflow pipeline flow change for north-south traffic"},{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_698671dc","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":72},"updated":"2016-11-17 01:51:15.000000000","message":"If I understand correctly, it is similar to the fg in DVR. It is actually consumes lots of external IPs(one for per pair of (compute node, router)), right?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_a185f507","line":70,"in_reply_to":"7a77a97e_1a761da4","updated":"2016-11-23 07:40:11.000000000","message":"In order to handle high availability DF controller should monitor external connectivity periodically and re-wire SNAT traffic via network node if connectivity problem detetcted.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":65,"context_line":"In order to achieve dragonflow pipeline flow change for north-south traffic"},{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_1a761da4","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":72},"in_reply_to":"7a77a97e_698671dc","updated":"2016-11-17 03:49:36.000000000","message":"It is a good solution for private/corporate cloud, without much cares for high availability of network nodes, but it is not suitable for public cloud.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_a17175aa","line":70,"in_reply_to":"7a77a97e_698671dc","updated":"2016-11-23 07:40:11.000000000","message":"it consumes external IPs but significantly less then in a DNAT solution where IP per VM is allocated","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":85,"context_line":"New Dragonflow application should handle north-south traffic on each Compute"},{"line_number":86,"context_line":"Node."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":89,"context_line":"itself as the controller for this bridge."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_09c97d26","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":41},"updated":"2016-11-17 01:51:15.000000000","message":"Are you going to plug a qg device in the br-ex?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Node."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":89,"context_line":"itself as the controller for this bridge."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_81a399ff","line":89,"in_reply_to":"7a77a97e_09c97d26","updated":"2016-11-23 07:40:11.000000000","message":"yes","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":89,"context_line":"itself as the controller for this bridge."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c9fa2543","line":91,"range":{"start_line":91,"start_character":58,"end_line":91,"end_character":69},"updated":"2016-11-17 01:51:15.000000000","message":"The external IP will be one for every compute node, or multiple for every compute node(10 external ips if 10 routers in compute node.)?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":89,"context_line":"itself as the controller for this bridge."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_4184215d","line":91,"in_reply_to":"7a77a97e_c9fa2543","updated":"2016-11-23 07:40:11.000000000","message":"correct","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_35bdaab7","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":19},"updated":"2016-11-17 03:49:36.000000000","message":"df-local-gateway-port","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_61891d75","line":94,"in_reply_to":"7a77a97e_35bdaab7","updated":"2016-11-23 07:40:11.000000000","message":"Done","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":91,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":92,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":98,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f5bfb2a7","line":96,"range":{"start_line":94,"start_character":22,"end_line":96,"end_character":35},"updated":"2016-11-17 03:49:36.000000000","message":"how to enable/disable D-SNAT? by conf?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":98,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dragon flow controller should have proper installed rules priorities to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_7538023e","line":97,"range":{"start_line":96,"start_character":36,"end_line":97,"end_character":55},"updated":"2016-11-17 03:49:36.000000000","message":"i don\u0027t suggest to delete all the ports in neutron database. it seems a little bit scary when someone enable/disable d-snat by accident. we could remove the flows associated with these auto-generated ports and when d-snat is active again, we can just make these ports work.","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":94,"context_line":"\u0027local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":98,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dragon flow controller should have proper installed rules priorities to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_815639cc","line":97,"in_reply_to":"7a77a97e_7538023e","updated":"2016-11-23 07:40:11.000000000","message":"this is make sence. The downside as I see it - neutron will report extra information of actually unused ports","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a06766aa4479a4d88a710535199a26426c112624","unresolved":false,"context_lines":[{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":98,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dragon flow controller should have proper installed rules priorities to"},{"line_number":101,"context_line":"prioritize DNAT over SNAT"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Flow"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_3a3e798c","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":11},"updated":"2016-11-17 03:49:36.000000000","message":"Dragonflow","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":97,"context_line":"\u0027local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":98,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dragon flow controller should have proper installed rules priorities to"},{"line_number":101,"context_line":"prioritize DNAT over SNAT"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Flow"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_e1952d87","line":100,"in_reply_to":"7a77a97e_3a3e798c","updated":"2016-11-23 07:40:11.000000000","message":"Done","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a3abb4ab8bb63571fe2338d65aafb1c7a83baa19","unresolved":false,"context_lines":[{"line_number":134,"context_line":"- Outgoing traffic passes filter for north-south traffic first and then routed"},{"line_number":135,"context_line":"  towards br-ex bridge"},{"line_number":136,"context_line":"- SNAT dragonflow flow application finishes the pipeline"},{"line_number":137,"context_line":"- Traffic passes netflter NAT rule/dedicated OVS NAT flow"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Configuration"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c99145f3","line":137,"range":{"start_line":137,"start_character":17,"end_line":137,"end_character":25},"updated":"2016-11-17 01:51:15.000000000","message":"netfilter?","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":134,"context_line":"- Outgoing traffic passes filter for north-south traffic first and then routed"},{"line_number":135,"context_line":"  towards br-ex bridge"},{"line_number":136,"context_line":"- SNAT dragonflow flow application finishes the pipeline"},{"line_number":137,"context_line":"- Traffic passes netflter NAT rule/dedicated OVS NAT flow"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Configuration"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_e171ad77","line":137,"in_reply_to":"7a77a97e_c99145f3","updated":"2016-11-23 07:40:11.000000000","message":"Done","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"1875d29edfc781168b79e033b2049999ecc7e8c3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Configuration"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"\u0027enable-local-nat\u0027 - a boolean value that enables/disables automated IP"},{"line_number":143,"context_line":"address acquiring for every Compute node. This setting should be part of"},{"line_number":144,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":145,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f6ac2e37","line":142,"updated":"2016-11-16 18:46:55.000000000","message":"I don\u0027t understand where this variabel is configured. Is it in the Neutron API? You said the API doesn\u0027t change. Is it configuration?\n\nWhy not continue use enable-snat, and if the compute node is configured to use this snat implementation (because this snat application is loaded in configuration), then this will be the implementation used? If another implementation is desired, there will be another distinct snat application, which will be loaded instead of this one (at most 1 snat application will be loaded at any given time)","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"12890e5638b6a9039890eb72d644a37e966d6027","unresolved":false,"context_lines":[{"line_number":139,"context_line":"Configuration"},{"line_number":140,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"\u0027enable-local-nat\u0027 - a boolean value that enables/disables automated IP"},{"line_number":143,"context_line":"address acquiring for every Compute node. This setting should be part of"},{"line_number":144,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":145,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_c1d03122","line":142,"in_reply_to":"7a77a97e_f6ac2e37","updated":"2016-11-23 07:40:11.000000000","message":"the variable should be part of dragonflow.ini configuration file. Another option is to define/undefine snat-app in apps_list to determine \"Distibuted SNAT\u0027 usage as you stated","commit_id":"d200ae9d7b2c862dae839c4fec3eeda6a684f1dd"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"cloud admin reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same tenant"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_913ad6e5","line":19,"range":{"start_line":19,"start_character":56,"end_line":19,"end_character":67},"updated":"2016-11-18 07:20:28.000000000","message":"actually here should be for all tenants, as we create a shared router with SNAT fip for all tenants\u0027s VM to get access to internet in neutron","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"cloud admin reserves a single external IP address (from a limited pre-allocated"},{"line_number":19,"context_line":"pool), which is used to masquerade multiple VMs of that same tenant"},{"line_number":20,"context_line":"(therefore, sharing the same external IP)."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a74a57a_b8869563","line":19,"range":{"start_line":19,"start_character":56,"end_line":19,"end_character":67},"in_reply_to":"7a77a97e_913ad6e5","updated":"2016-11-23 07:43:15.000000000","message":"not sure I understand your comment. While network in Devstack might be defined as shared, distributed router (dvr) is still created per tenant. SNAT namespace (per router ID) on Network node holds corresponding external IP","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d10fee34","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":16},"updated":"2016-11-18 07:20:28.000000000","message":"delete via or with","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [Compute"},{"line_number":24,"context_line":"Node, router] pair. This way north-south traffic of every VM will be routed out"},{"line_number":25,"context_line":"locally via with external IP of hosting Compute node"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":28,"context_line":"function to the Compute Nodes, bypassing the Network Node."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_f557e4c7","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":16},"in_reply_to":"7a77a97e_d10fee34","updated":"2016-11-23 07:43:15.000000000","message":"Done","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Currently, when the cloud admin wants to allow multiple VMs to access external"},{"line_number":38,"context_line":"networks (e.g. internet), she can either assign a floating IP to each VM"},{"line_number":39,"context_line":"(DNAT), or assign just one floating IP to the router that she uses as a"},{"line_number":40,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_b40b4023","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":29},"updated":"2016-11-18 07:20:28.000000000","message":"nit: he/she or something else","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Currently, when the cloud admin wants to allow multiple VMs to access external"},{"line_number":38,"context_line":"networks (e.g. internet), she can either assign a floating IP to each VM"},{"line_number":39,"context_line":"(DNAT), or assign just one floating IP to the router that she uses as a"},{"line_number":40,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d52d88fe","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":29},"in_reply_to":"7a77a97e_b40b4023","updated":"2016-11-23 07:43:15.000000000","message":"Done","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"routed locally from the Compute Node."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In order to achieve Dragonflow pipeline flow change for north-south traffic"},{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_91af367c","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":15},"updated":"2016-11-18 07:20:28.000000000","message":"dragonflow","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":63,"context_line":"routed locally from the Compute Node."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In order to achieve Dragonflow pipeline flow change for north-south traffic"},{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d5d2e85a","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":15},"in_reply_to":"7a77a97e_91af367c","updated":"2016-11-23 07:43:15.000000000","message":"Done","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"41332356d71193319f9f28103e32571591f1f6c9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"To enable the behavior change in this proposal, the Admin shall define"},{"line_number":76,"context_line":"some configuration parameters (listed in the Configuration section"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_90728c48","line":73,"range":{"start_line":69,"start_character":53,"end_line":73,"end_character":25},"updated":"2016-11-21 09:28:11.000000000","message":"Does this mean that each router on the compute node will need its one IP?\n\nWhat if we have 1 compute node, 10 tenants, and each tenant has a VM, do we need 10 IP addresses?","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":66,"context_line":"new dragon flow application is required."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":69,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":70,"context_line":"definition of separate neutron port per pair of (Computer node, router)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":73,"context_line":"address per Compute Node."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"To enable the behavior change in this proposal, the Admin shall define"},{"line_number":76,"context_line":"some configuration parameters (listed in the Configuration section"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a74a57a_d80b517c","line":73,"range":{"start_line":69,"start_character":53,"end_line":73,"end_character":25},"in_reply_to":"7a77a97e_90728c48","updated":"2016-11-23 07:43:15.000000000","message":"This is implementation depended. I modified this sentence and added clarifying paragraph to Flow section","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Setup"},{"line_number":87,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"New Dragonflow application should handle north-south traffic on each Compute"},{"line_number":90,"context_line":"Node."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":93,"context_line":"itself as the controller for this bridge."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_945724c9","line":90,"range":{"start_line":89,"start_character":0,"end_line":90,"end_character":5},"updated":"2016-11-18 07:20:28.000000000","message":"could you explain more about what the app does?","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"aec13e3fdd35784b224cfd2fa90f6d712b410d87","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Setup"},{"line_number":87,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"New Dragonflow application should handle north-south traffic on each Compute"},{"line_number":90,"context_line":"Node."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":93,"context_line":"itself as the controller for this bridge."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a74a57a_3809a532","line":90,"range":{"start_line":89,"start_character":0,"end_line":90,"end_character":5},"in_reply_to":"7a77a97e_945724c9","updated":"2016-11-23 07:43:15.000000000","message":"providing more details here requires a preliminary decision of what implementation to have: linux Netfilter of native OVS.\n- Native OVS application should install/uninstall NAT flows on VM create/delete. \n- Application in conjunction with linux Netfilter should install flows that route SNAT traffic to dedicated linux namespace. NAT rules are applied there.","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7060a7ebc0f9f0f9925ce17dded504865ad07f2b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":102,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Dragon flow controller should have proper installed rules priorities to"},{"line_number":105,"context_line":"prioritize DNAT over SNAT"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Flow"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_14beb4fe","line":104,"updated":"2016-11-18 07:20:28.000000000","message":"Dragonflow","commit_id":"110b860009cd535048bdfea9a1ce109b892a520f"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"All references to IP in this spec refer to IPv4 addressing scheme (IPv6 is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_3dcc9369","line":10,"range":{"start_line":9,"start_character":56,"end_line":10,"end_character":13},"updated":"2016-11-28 01:30:16.000000000","message":"Which functionalities do you want to trade off for D-SNAT?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"All references to IP in this spec refer to IPv4 addressing scheme (IPv6 is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_fa2773b3","line":10,"range":{"start_line":9,"start_character":56,"end_line":10,"end_character":13},"in_reply_to":"5a74a57a_3dcc9369","updated":"2016-11-28 14:25:01.000000000","message":"This feature is changing the concept of legacy router where single gateway port is present. Even neutron DVR implementation follows legacy concept in terms of single gateway port and same internal router port (in terms of MAC/IP addressing) copied across compute nodes.\n\nHowever this feature redefines single gateway port concept actively defining more then one gateway port on single router. For instance I have no idea yet how it would be presented graphically in Horizon.\n\nPart of this description will be added in a new patch set to \u0027Proposed change\u0027 session","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Currently, when the cloud admin wants to allow multiple VMs to access external"},{"line_number":39,"context_line":"networks (e.g. internet), he/she can either assign a floating IP to each VM"},{"line_number":40,"context_line":"(DNAT), or assign just one floating IP to the router that she uses as a"},{"line_number":41,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_e65523c2","line":39,"range":{"start_line":39,"start_character":53,"end_line":39,"end_character":64},"updated":"2016-11-28 08:46:44.000000000","message":"floating ips are usually used to allow access from external network to VMs","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Currently, when the cloud admin wants to allow multiple VMs to access external"},{"line_number":39,"context_line":"networks (e.g. internet), he/she can either assign a floating IP to each VM"},{"line_number":40,"context_line":"(DNAT), or assign just one floating IP to the router that she uses as a"},{"line_number":41,"context_line":"default gateway for all the VMs (SNAT)."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_7a28c3e2","line":39,"range":{"start_line":39,"start_character":53,"end_line":39,"end_character":64},"in_reply_to":"5a74a57a_e65523c2","updated":"2016-11-28 14:25:01.000000000","message":"This is correct, it is listed here as \u0027expensive\u0027 alternative (in terms of external IP address consumption) that still solves a VMs originated traffic.","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":66,"context_line":"In order to achieve Dragonflow pipeline flow change for north-south traffic"},{"line_number":67,"context_line":"new dragonflow application is required."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":70,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":71,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":72,"context_line":"[Compute node, tenant] (see Flow section for implementation alternatives)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":75,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_3d2813e2","line":72,"range":{"start_line":69,"start_character":0,"end_line":72,"end_character":74},"updated":"2016-11-28 01:30:16.000000000","message":"What will happen when compute nodes come and go?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":66,"context_line":"In order to achieve Dragonflow pipeline flow change for north-south traffic"},{"line_number":67,"context_line":"new dragonflow application is required."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":70,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":71,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":72,"context_line":"[Compute node, tenant] (see Flow section for implementation alternatives)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":75,"context_line":"address per Compute Node."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_f7bb0ee3","line":72,"range":{"start_line":69,"start_character":0,"end_line":72,"end_character":74},"in_reply_to":"5a74a57a_3d2813e2","updated":"2016-11-28 14:25:01.000000000","message":"By persistence I mean that port management could not be just in-memory allocation but should be reflected in database. New compute node deployment/removal should definitely alter in-memory and database port layout","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":75,"context_line":"address per Compute Node."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To enable the behavior change in this proposal, the Admin shall define"},{"line_number":78,"context_line":"some configuration parameters (listed in the Configuration section"},{"line_number":79,"context_line":"below). Neutron API is not a subject of change due to automated local"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_86c38f56","line":76,"updated":"2016-11-28 08:46:44.000000000","message":"Can you please show the virtual topology view with the change you propose?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"In this proposal the router gateway port shall have a separate IP/MAC"},{"line_number":75,"context_line":"address per Compute Node."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To enable the behavior change in this proposal, the Admin shall define"},{"line_number":78,"context_line":"some configuration parameters (listed in the Configuration section"},{"line_number":79,"context_line":"below). Neutron API is not a subject of change due to automated local"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_aac3dc55","line":76,"in_reply_to":"5a74a57a_86c38f56","updated":"2016-11-28 14:25:01.000000000","message":"Are below diagrams reflects the topology view?\nIf not, can you please elaborate about missing part.","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":80,"context_line":"gateway port add/delete operations according to provided configuration"},{"line_number":81,"context_line":"switch"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"In order to handle high availability Dragonflow controller may monitor"},{"line_number":84,"context_line":"external connectivity periodically and re-wire SNAT traffic via network node"},{"line_number":85,"context_line":"if connectivity problem detected."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Setup"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_069cdf5b","line":85,"range":{"start_line":83,"start_character":0,"end_line":85,"end_character":33},"updated":"2016-11-28 08:46:44.000000000","message":"It is just fallback to the old behavior. do you plan to advise to keep both in the same deployment?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":80,"context_line":"gateway port add/delete operations according to provided configuration"},{"line_number":81,"context_line":"switch"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"In order to handle high availability Dragonflow controller may monitor"},{"line_number":84,"context_line":"external connectivity periodically and re-wire SNAT traffic via network node"},{"line_number":85,"context_line":"if connectivity problem detected."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Setup"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_5115aa46","line":85,"range":{"start_line":83,"start_character":0,"end_line":85,"end_character":33},"in_reply_to":"5a74a57a_069cdf5b","updated":"2016-11-28 14:25:01.000000000","message":"Technically it is possible to have both implementation but it means that DF implementation should follow all Neutron SNAT related bugs/updates. Abandoning Neutron legacy/DVR scheme for SNAT have its benefits - no more need for Network Node probably except VPNaaS. VPNaaS kind of collides with this distributed SNAT model","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"New Dragonflow application should handle north-south traffic on each Compute"},{"line_number":92,"context_line":"Node. Application should handle tenant add/remove events and install/uninstall"},{"line_number":93,"context_line":"appropiate NAT flows as described in Ingress/Egress sections below."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_a6decb0e","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":56},"updated":"2016-11-28 08:46:44.000000000","message":"what are these events?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"New Dragonflow application should handle north-south traffic on each Compute"},{"line_number":92,"context_line":"Node. Application should handle tenant add/remove events and install/uninstall"},{"line_number":93,"context_line":"appropiate NAT flows as described in Ingress/Egress sections below."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_39cd70b7","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":56},"in_reply_to":"5a74a57a_a6decb0e","updated":"2016-11-28 14:25:01.000000000","message":"The correct term should be (tenant) gateway add/remove events","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":96,"context_line":"itself as the controller for this bridge."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_7d47ebbb","line":98,"range":{"start_line":98,"start_character":34,"end_line":98,"end_character":35},"updated":"2016-11-28 01:30:16.000000000","message":",","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":96,"context_line":"itself as the controller for this bridge."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_86e0ef97","line":98,"range":{"start_line":98,"start_character":35,"end_line":98,"end_character":49},"updated":"2016-11-28 08:46:44.000000000","message":"do you mean DF L3 service?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":96,"context_line":"itself as the controller for this bridge."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_01b92979","line":98,"range":{"start_line":98,"start_character":34,"end_line":98,"end_character":35},"in_reply_to":"5a74a57a_7d47ebbb","updated":"2016-11-28 14:25:01.000000000","message":"Done","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":96,"context_line":"itself as the controller for this bridge."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_8ab70039","line":98,"range":{"start_line":98,"start_character":35,"end_line":98,"end_character":49},"in_reply_to":"5a74a57a_86e0ef97","updated":"2016-11-28 14:25:01.000000000","message":"I would leave it as \u0027appropriate service\u0027 instead","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_3d41f3a9","line":101,"range":{"start_line":101,"start_character":25,"end_line":101,"end_character":63},"updated":"2016-11-28 01:30:16.000000000","message":"Is this sentence redundant?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":98,"context_line":"When \"Distributed SNAT\" is enabled neutron server assigns external IP from"},{"line_number":99,"context_line":"predefined pool to br-ex. New neutron ports are updated in neutron database."},{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_7701bf05","line":101,"range":{"start_line":101,"start_character":25,"end_line":101,"end_character":63},"in_reply_to":"5a74a57a_3d41f3a9","updated":"2016-11-28 14:25:01.000000000","message":"It depends on chosen configuration alternative. If dragonflow SNAT application deployment itself enables Distributed SNAT this sentence is redundant. If extra configuration item turn on/off the feature than it is relevant :)","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_7d1e0bbc","line":103,"range":{"start_line":103,"start_character":35,"end_line":103,"end_character":36},"updated":"2016-11-28 01:30:16.000000000","message":",","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Port type for such created neutron ports should be a new type:"},{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_c1c2d1e8","line":103,"range":{"start_line":103,"start_character":35,"end_line":103,"end_character":36},"in_reply_to":"5a74a57a_7d1e0bbc","updated":"2016-11-28 14:25:01.000000000","message":"Done","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Dragonflow controller should have proper installed rules priorities to"},{"line_number":108,"context_line":"prioritize DNAT over SNAT"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_26563b5c","line":105,"range":{"start_line":104,"start_character":60,"end_line":105,"end_character":66},"updated":"2016-11-28 08:46:44.000000000","message":"Can you please rephrase?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\u0027df-local-gateway-port\u0027. SNAT dragonflow application is enabled"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When \"Distributed SNAT\" is disabled all neutron ports with type:"},{"line_number":104,"context_line":"\u0027df-local-gateway-port\u0027 are deleted from neutron database. SNAT dragonflow"},{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Dragonflow controller should have proper installed rules priorities to"},{"line_number":108,"context_line":"prioritize DNAT over SNAT"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_6ad0e4f6","line":105,"range":{"start_line":104,"start_character":60,"end_line":105,"end_character":66},"in_reply_to":"5a74a57a_26563b5c","updated":"2016-11-28 14:25:01.000000000","message":"Done","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Dragonflow controller should have proper installed rules priorities to"},{"line_number":108,"context_line":"prioritize DNAT over SNAT"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Flow"},{"line_number":111,"context_line":"\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_66e3d3a4","line":108,"range":{"start_line":108,"start_character":11,"end_line":108,"end_character":25},"updated":"2016-11-28 08:46:44.000000000","message":"if by DNAT you mean distributed snat, it is confusing. DNAT is usually used for destination NAT","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":105,"context_line":"application is disabled. Legacy centralized SNAT model is enforced"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Dragonflow controller should have proper installed rules priorities to"},{"line_number":108,"context_line":"prioritize DNAT over SNAT"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Flow"},{"line_number":111,"context_line":"\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_ec3899a2","line":108,"range":{"start_line":108,"start_character":11,"end_line":108,"end_character":25},"in_reply_to":"5a74a57a_66e3d3a4","updated":"2016-11-28 14:25:01.000000000","message":"I meant destination NAT (regular meaning). I would like to emphasize that floating IP rules has a priority over SNAT","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Flow"},{"line_number":111,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"This section describe all the handling in the pipeline for north-south"},{"line_number":114,"context_line":"traffic."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_268b9bc4","line":113,"range":{"start_line":113,"start_character":59,"end_line":113,"end_character":70},"updated":"2016-11-28 08:46:44.000000000","message":"this can be also E-W between different tenants","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Flow"},{"line_number":111,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"This section describe all the handling in the pipeline for north-south"},{"line_number":114,"context_line":"traffic."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_4a9888c0","line":113,"range":{"start_line":113,"start_character":59,"end_line":113,"end_character":70},"in_reply_to":"5a74a57a_268b9bc4","updated":"2016-11-28 14:25:01.000000000","message":"Agree. I added the extra sentence that clarifies it","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Alternative #1: (diagram outlines single compute node)"},{"line_number":122,"context_line":"External IP address per [Compute node, tenant] pair"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_462417c4","line":121,"range":{"start_line":121,"start_character":12,"end_line":121,"end_character":15},"updated":"2016-11-28 08:46:44.000000000","message":"please provide a name for this alternative","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Alternative #1: (diagram outlines single compute node)"},{"line_number":122,"context_line":"External IP address per [Compute node, tenant] pair"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_aae2fc2c","line":121,"range":{"start_line":121,"start_character":12,"end_line":121,"end_character":15},"in_reply_to":"5a74a57a_462417c4","updated":"2016-11-28 14:25:01.000000000","message":"Done","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                 |                           |"},{"line_number":138,"context_line":"                 v                           v"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Different external IP address per tenant is required to distinguish between"},{"line_number":141,"context_line":"possible private networks address overlapping across multiple tenants. Single"},{"line_number":142,"context_line":"extenal IP may result hash ambiguity in NAT feature on returning traffic."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Alternative #2: (diagram outlines single compute node)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_3ddd73e0","line":142,"range":{"start_line":140,"start_character":0,"end_line":142,"end_character":73},"updated":"2016-11-28 01:30:16.000000000","message":"From neutron api, there is no guarantee that the ip in one tenant will not overlap. The guarantee is in network/router. So, maybe you want to change tenant to router.","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                 |                           |"},{"line_number":138,"context_line":"                 v                           v"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Different external IP address per tenant is required to distinguish between"},{"line_number":141,"context_line":"possible private networks address overlapping across multiple tenants. Single"},{"line_number":142,"context_line":"extenal IP may result hash ambiguity in NAT feature on returning traffic."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Alternative #2: (diagram outlines single compute node)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_e19c2d10","line":142,"range":{"start_line":140,"start_character":0,"end_line":142,"end_character":73},"in_reply_to":"5a74a57a_3ddd73e0","updated":"2016-11-28 14:25:01.000000000","message":"Agree. The more correct term would be a tenant gateway","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                 v"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Shared private network serves as an intermidiate step to translate single"},{"line_number":167,"context_line":"external IP to private IP of specfic tenant. Shared private network requires"},{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_e1542dff","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":68},"updated":"2016-11-28 08:46:44.000000000","message":"who defines this network, is this host specific or deployment specific?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                 v"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Shared private network serves as an intermidiate step to translate single"},{"line_number":167,"context_line":"external IP to private IP of specfic tenant. Shared private network requires"},{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_055683cd","line":167,"range":{"start_line":167,"start_character":45,"end_line":167,"end_character":68},"in_reply_to":"5a74a57a_e1542dff","updated":"2016-11-28 14:25:01.000000000","message":"such network can be deployment specific. This will ease IP address lease management","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":167,"context_line":"external IP to private IP of specfic tenant. Shared private network requires"},{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"},{"line_number":171,"context_line":"acquire address when new tenant is introduced. While alternative #2 is more"},{"line_number":172,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":173,"context_line":"power for connection tracking and extra NAT."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_015a092a","line":170,"range":{"start_line":170,"start_character":18,"end_line":170,"end_character":26},"updated":"2016-11-28 08:46:44.000000000","message":"require","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":167,"context_line":"external IP to private IP of specfic tenant. Shared private network requires"},{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"},{"line_number":171,"context_line":"acquire address when new tenant is introduced. While alternative #2 is more"},{"line_number":172,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":173,"context_line":"power for connection tracking and extra NAT."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_3acf2b2a","line":170,"range":{"start_line":170,"start_character":18,"end_line":170,"end_character":26},"in_reply_to":"5a74a57a_015a092a","updated":"2016-11-28 14:25:01.000000000","message":"Done","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"},{"line_number":171,"context_line":"acquire address when new tenant is introduced. While alternative #2 is more"},{"line_number":172,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":173,"context_line":"power for connection tracking and extra NAT."},{"line_number":174,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_8146194d","line":171,"range":{"start_line":171,"start_character":25,"end_line":171,"end_character":31},"updated":"2016-11-28 08:46:44.000000000","message":"router?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":168,"context_line":"neutron database update."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Both alternatives requires management of network adress pool and"},{"line_number":171,"context_line":"acquire address when new tenant is introduced. While alternative #2 is more"},{"line_number":172,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":173,"context_line":"power for connection tracking and extra NAT."},{"line_number":174,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_baa89b21","line":171,"range":{"start_line":171,"start_character":25,"end_line":171,"end_character":31},"in_reply_to":"5a74a57a_8146194d","updated":"2016-11-28 14:25:01.000000000","message":"Should be tenant gateway. I am adding more details in \u0027Proposed change\u0027 section","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":179,"context_line":"-----------------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"- Incoming traffic arrives to br-ex bridge."},{"line_number":182,"context_line":"- Packet passes reverse NAT to shared private network and routed to br-int"},{"line_number":183,"context_line":"- Tenant connection zone is identified"},{"line_number":184,"context_line":"- Packet pass another connection tracking (specific zone conntrack table)"},{"line_number":185,"context_line":"- Packet passes another reverse NAT and routed to regular dragonflow pipeline"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_9d7cc7b6","line":182,"range":{"start_line":182,"start_character":0,"end_line":182,"end_character":74},"updated":"2016-11-28 01:30:16.000000000","message":"I haven\u0027t looked into the nat in ovs. Is there a port on br-ex to accept the packet, or it is done by OpenFlow match?","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":179,"context_line":"-----------------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"- Incoming traffic arrives to br-ex bridge."},{"line_number":182,"context_line":"- Packet passes reverse NAT to shared private network and routed to br-int"},{"line_number":183,"context_line":"- Tenant connection zone is identified"},{"line_number":184,"context_line":"- Packet pass another connection tracking (specific zone conntrack table)"},{"line_number":185,"context_line":"- Packet passes another reverse NAT and routed to regular dragonflow pipeline"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_2b0b642b","line":182,"range":{"start_line":182,"start_character":0,"end_line":182,"end_character":74},"in_reply_to":"5a74a57a_9d7cc7b6","updated":"2016-11-28 14:25:01.000000000","message":"Current intention is to use OpenFlow match on br-ex bridge","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee3fc349a637668355cba80eb31e64a3367ecf27","unresolved":false,"context_lines":[{"line_number":208,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":209,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Alternative option to enable/disable \"Distributed SNAT\" feature is a"},{"line_number":212,"context_line":"presense of SNATApp application in the application list of Dragonflow"},{"line_number":213,"context_line":"configuration file."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_1db99779","line":213,"range":{"start_line":211,"start_character":0,"end_line":213,"end_character":19},"updated":"2016-11-28 01:30:16.000000000","message":"I would vote for this one","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6d7bee1baab646e9eeeb1d94241c2feb8c004742","unresolved":false,"context_lines":[{"line_number":208,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":209,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Alternative option to enable/disable \"Distributed SNAT\" feature is a"},{"line_number":212,"context_line":"presense of SNATApp application in the application list of Dragonflow"},{"line_number":213,"context_line":"configuration file."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_c13d7190","line":213,"range":{"start_line":211,"start_character":0,"end_line":213,"end_character":19},"in_reply_to":"5a74a57a_1db99779","updated":"2016-11-28 08:46:44.000000000","message":"+1 given that neutron enable-snat is set to true","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":208,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":209,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Alternative option to enable/disable \"Distributed SNAT\" feature is a"},{"line_number":212,"context_line":"presense of SNATApp application in the application list of Dragonflow"},{"line_number":213,"context_line":"configuration file."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_5a7147a7","line":213,"range":{"start_line":211,"start_character":0,"end_line":213,"end_character":19},"in_reply_to":"5a74a57a_1db99779","updated":"2016-11-28 14:25:01.000000000","message":"Your vote is counted :)","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"fa9bac9ea6cbe537cf08c4c7569a8d451eceb478","unresolved":false,"context_lines":[{"line_number":208,"context_line":"router configuration structure. Existing \u0027enable-snat\u0027 with value \u0027false\u0027"},{"line_number":209,"context_line":"setting will effectively limit \u0027enable-local-snat\u0027 to prevent ambiguity."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Alternative option to enable/disable \"Distributed SNAT\" feature is a"},{"line_number":212,"context_line":"presense of SNATApp application in the application list of Dragonflow"},{"line_number":213,"context_line":"configuration file."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a74a57a_ca5f38e3","line":213,"range":{"start_line":211,"start_character":0,"end_line":213,"end_character":19},"in_reply_to":"5a74a57a_c13d7190","updated":"2016-11-28 14:25:01.000000000","message":"OK","commit_id":"f746ac804790e75020a14b7a3c9d9e8477f588cb"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9feb8e705c9fb8fa4883b533f41de7d3d825c6ee","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_a843b1ad","line":8,"range":{"start_line":8,"start_character":57,"end_line":8,"end_character":67},"updated":"2016-11-30 09:31:02.000000000","message":"DragonFlow ?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"b4d295affdcb4b4221f04a527fa0af0c8fa622b6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_887b237b","line":8,"range":{"start_line":8,"start_character":60,"end_line":8,"end_character":67},"updated":"2016-11-30 09:26:11.000000000","message":"This document is  as spec for DragonFlow and not for neutron in general","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_aeb56bd1","line":8,"range":{"start_line":8,"start_character":60,"end_line":8,"end_character":67},"in_reply_to":"5a74a57a_887b237b","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to Neutron (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_2ea31ba0","line":8,"range":{"start_line":8,"start_character":57,"end_line":8,"end_character":67},"in_reply_to":"5a74a57a_a843b1ad","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"b4d295affdcb4b4221f04a527fa0af0c8fa622b6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"All references to IP in this spec refer to IPv4 addressing scheme (IPv6 is"},{"line_number":14,"context_line":"out of scope for this spec)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_e8c0177f","line":16,"range":{"start_line":16,"start_character":46,"end_line":16,"end_character":53},"updated":"2016-11-30 09:26:11.000000000","message":"omit Neutron","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":13,"context_line":"All references to IP in this spec refer to IPv4 addressing scheme (IPv6 is"},{"line_number":14,"context_line":"out of scope for this spec)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the Neutron reference"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with Neutron SNAT the"},{"line_number":18,"context_line":"cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_0e9e5f56","line":16,"range":{"start_line":16,"start_character":46,"end_line":16,"end_character":53},"in_reply_to":"5a74a57a_e8c0177f","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"b4d295affdcb4b4221f04a527fa0af0c8fa622b6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"locally via external IP of hosting Compute node"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":29,"context_line":"function to the Compute Nodes, bypassing the Network Node."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The requirement of having dedicated Network node will be more flimsy with"},{"line_number":32,"context_line":"\"Distributed SNAT\" probably apart from VPNaaS deployment"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_a85c5fee","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":11},"updated":"2016-11-30 09:26:11.000000000","message":"among","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":26,"context_line":"locally via external IP of hosting Compute node"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The main advantage of \"Distributed SNAT\" is the distribution of the NAT/PAT"},{"line_number":29,"context_line":"function to the Compute Nodes, bypassing the Network Node."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The requirement of having dedicated Network node will be more flimsy with"},{"line_number":32,"context_line":"\"Distributed SNAT\" probably apart from VPNaaS deployment"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_2e3f9b26","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":11},"in_reply_to":"5a74a57a_a85c5fee","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9feb8e705c9fb8fa4883b533f41de7d3d825c6ee","unresolved":false,"context_lines":[{"line_number":29,"context_line":"function to the Compute Nodes, bypassing the Network Node."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The requirement of having dedicated Network node will be more flimsy with"},{"line_number":32,"context_line":"\"Distributed SNAT\" probably apart from VPNaaS deployment"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Problem Description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_68aef92e","line":32,"range":{"start_line":32,"start_character":38,"end_line":32,"end_character":56},"updated":"2016-11-30 09:31:02.000000000","message":"Can you elaborate on this?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":29,"context_line":"function to the Compute Nodes, bypassing the Network Node."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The requirement of having dedicated Network node will be more flimsy with"},{"line_number":32,"context_line":"\"Distributed SNAT\" probably apart from VPNaaS deployment"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Problem Description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_a0e2cf9d","line":32,"range":{"start_line":32,"start_character":38,"end_line":32,"end_character":56},"in_reply_to":"5a74a57a_68aef92e","updated":"2016-12-01 14:57:11.000000000","message":"VPN collocates perfectly with concept of single gateway port where tunnel end is defined. In contrary this spec distributes access to internal network.","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"9feb8e705c9fb8fa4883b533f41de7d3d825c6ee","unresolved":false,"context_lines":[{"line_number":46,"context_line":"(expensive)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The downside of SNAT is that all outbound traffic from the VMs that use"},{"line_number":49,"context_line":"it as default gateway will go through the Network node that hosts the router,"},{"line_number":50,"context_line":"effectively creating a network bottleneck and single point of failure for"},{"line_number":51,"context_line":"multiple VMs."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_738fce74","line":49,"range":{"start_line":49,"start_character":38,"end_line":49,"end_character":54},"updated":"2016-11-30 09:31:02.000000000","message":"this is correct for the current reference implementation, there are neutron backend controllers that may support SNAT in the distributed manner","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":46,"context_line":"(expensive)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The downside of SNAT is that all outbound traffic from the VMs that use"},{"line_number":49,"context_line":"it as default gateway will go through the Network node that hosts the router,"},{"line_number":50,"context_line":"effectively creating a network bottleneck and single point of failure for"},{"line_number":51,"context_line":"multiple VMs."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_69550dc5","line":49,"range":{"start_line":49,"start_character":38,"end_line":49,"end_character":54},"in_reply_to":"5a74a57a_738fce74","updated":"2016-12-01 14:57:11.000000000","message":"The comparison is based on reference implementation so I don\u0027t think there is a contradiction here","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The downside of SNAT is that all outbound traffic from the VMs that use"},{"line_number":49,"context_line":"it as default gateway will go through the Network node that hosts the router,"},{"line_number":50,"context_line":"effectively creating a network bottleneck and single point of failure for"},{"line_number":51,"context_line":"multiple VMs."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_855d9c17","line":50,"range":{"start_line":50,"start_character":46,"end_line":50,"end_character":69},"updated":"2016-12-01 03:37:38.000000000","message":"this may not exist if L3 HA is enabled.","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The downside of SNAT is that all outbound traffic from the VMs that use"},{"line_number":49,"context_line":"it as default gateway will go through the Network node that hosts the router,"},{"line_number":50,"context_line":"effectively creating a network bottleneck and single point of failure for"},{"line_number":51,"context_line":"multiple VMs."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_7bdb101c","line":50,"range":{"start_line":50,"start_character":46,"end_line":50,"end_character":69},"in_reply_to":"5a74a57a_855d9c17","updated":"2016-12-01 14:57:11.000000000","message":"correct. I will change the spec to reflect this","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":18347,"name":"Itamar Ofek","email":"itamofek@netscape.net","username":"itamaro"},"change_message_id":"b4d295affdcb4b4221f04a527fa0af0c8fa622b6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Nodes to access the external network (e.g. WWW)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Such SNAT model is changing the concept of legacy router where single gateway"},{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_c8943b46","line":63,"range":{"start_line":63,"start_character":22,"end_line":63,"end_character":29},"updated":"2016-11-30 09:26:11.000000000","message":"True for Dragon Flow too. A general note, make this spec specfic for DF","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Nodes to access the external network (e.g. WWW)."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Such SNAT model is changing the concept of legacy router where single gateway"},{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_e90e7de4","line":63,"range":{"start_line":63,"start_character":22,"end_line":63,"end_character":29},"in_reply_to":"5a74a57a_c8943b46","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"},{"line_number":67,"context_line":"distributed router."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_057fcc66","line":66,"range":{"start_line":66,"start_character":20,"end_line":66,"end_character":21},"updated":"2016-12-01 03:37:38.000000000","message":"by","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"},{"line_number":67,"context_line":"distributed router."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_858bdc67","line":66,"range":{"start_line":66,"start_character":61,"end_line":66,"end_character":65},"updated":"2016-12-01 03:37:38.000000000","message":"ports","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"},{"line_number":67,"context_line":"distributed router."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_a5e8d817","line":66,"range":{"start_line":66,"start_character":44,"end_line":66,"end_character":48},"updated":"2016-12-01 03:37:38.000000000","message":"than","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":63,"context_line":"port is present. Even neutron DVR implementation follows legacy concept in"},{"line_number":64,"context_line":"terms of single gateway port and same internal router port (in terms of MAC/IP"},{"line_number":65,"context_line":"addressing) copied across compute nodes. However this model redefines single"},{"line_number":66,"context_line":"gateway port concept actively defining more then one gateway port on single"},{"line_number":67,"context_line":"distributed router."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"When the Compute Node can route outbound traffic, VMs hosted on it do"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_a0f9ef4f","line":66,"range":{"start_line":66,"start_character":44,"end_line":66,"end_character":48},"in_reply_to":"5a74a57a_a5e8d817","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":77,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":78,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":79,"context_line":"[Compute node, tenant gateway] (see Flow section for implementation"},{"line_number":80,"context_line":"alternatives)."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_65aa401b","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":52},"updated":"2016-12-01 03:37:38.000000000","message":"Compute node/Network Node, suggest you using consistent format(all lowercase).","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":77,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":78,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":79,"context_line":"[Compute node, tenant gateway] (see Flow section for implementation"},{"line_number":80,"context_line":"alternatives)."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_1e03ea74","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":52},"in_reply_to":"5a74a57a_65aa401b","updated":"2016-12-01 14:57:11.000000000","message":"Done","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":76,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":77,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":78,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":79,"context_line":"[Compute node, tenant gateway] (see Flow section for implementation"},{"line_number":80,"context_line":"alternatives)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"From tenant point of view external network is usually accessed via single"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_4507041d","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":31},"updated":"2016-12-01 03:37:38.000000000","message":"In general, VMs of one tenant scatter in different hosts. I\u0027m afraid that the Distributed SNAT can\u0027t save too much public IP address.","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":76,"context_line":"\"Distributed SNAT\" should be reflected in Neutron database, as it affects"},{"line_number":77,"context_line":"router ports configuration and should be persistent. This model requires"},{"line_number":78,"context_line":"definition of separate neutron port per Compute node or per pair of"},{"line_number":79,"context_line":"[Compute node, tenant gateway] (see Flow section for implementation"},{"line_number":80,"context_line":"alternatives)."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"From tenant point of view external network is usually accessed via single"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_911a8b6d","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":31},"in_reply_to":"5a74a57a_4507041d","updated":"2016-12-01 14:57:11.000000000","message":"I share your concern for implementation alternative #1. The the worst case requires [#compute nodes] * [#tenants] public IP addresses.\nHowever implementation alternative #2 requires only [#compute nodes] public IPs, that is much more affordable","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":94,"context_line":"switch"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"In order to handle high availability Dragonflow controller may monitor"},{"line_number":97,"context_line":"external connectivity periodically and perform a fallback to Neutron SNAT."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Setup"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_6034eedd","line":97,"range":{"start_line":97,"start_character":72,"end_line":97,"end_character":74},"updated":"2016-12-01 03:37:38.000000000","message":"when?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":94,"context_line":"switch"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"In order to handle high availability Dragonflow controller may monitor"},{"line_number":97,"context_line":"external connectivity periodically and perform a fallback to Neutron SNAT."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Setup"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_e67300b3","line":97,"range":{"start_line":97,"start_character":72,"end_line":97,"end_character":74},"in_reply_to":"5a74a57a_6034eedd","updated":"2016-12-01 14:57:11.000000000","message":"when local node external connectivity outage is detected.\nThis is probably \u0027nice to have\u0027 feature that should not affect whole model","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":107,"context_line":"as described in Ingress/Egress sections below."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":110,"context_line":"itself as the controller for this bridge."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When \"Distributed SNAT\" is enabled, appropriate service assigns external IP"},{"line_number":113,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_a09a86c3","line":110,"range":{"start_line":110,"start_character":23,"end_line":110,"end_character":25},"updated":"2016-12-01 03:37:38.000000000","message":"Is there a openflow channel between br-ex and Local controller?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":107,"context_line":"as described in Ingress/Egress sections below."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":110,"context_line":"itself as the controller for this bridge."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When \"Distributed SNAT\" is enabled, appropriate service assigns external IP"},{"line_number":113,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_49e20705","line":110,"range":{"start_line":110,"start_character":23,"end_line":110,"end_character":25},"in_reply_to":"5a74a57a_a09a86c3","updated":"2016-12-01 14:57:11.000000000","message":"As far as I am working to solidify this solution I think that all openFlow NAT operation should remain at br-int. \nAlternative #1 requires single NAT on br-int. In alternative #2 ports on newly defined private shared network sit on br-int as well therefore all openFlow operation will take place on br-int. OS will continue to handle normal routing on br-ex.\nI will change alternative #2 diagram accordingly","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"54fbaaa4a0a728bca3b968a586096eefbe238380","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":110,"context_line":"itself as the controller for this bridge."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When \"Distributed SNAT\" is enabled, appropriate service assigns external IP"},{"line_number":113,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":114,"context_line":"gateway ports to neutron database. New ports should have type: "},{"line_number":115,"context_line":"\u0027df-local-gateway-port\u0027."}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_4091b299","line":112,"range":{"start_line":112,"start_character":36,"end_line":112,"end_character":55},"updated":"2016-12-01 03:37:38.000000000","message":"when on startup? on creating vm ports? which service?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Dragonflow controller creates br-ex bridge at every compute node and register"},{"line_number":110,"context_line":"itself as the controller for this bridge."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"When \"Distributed SNAT\" is enabled, appropriate service assigns external IP"},{"line_number":113,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":114,"context_line":"gateway ports to neutron database. New ports should have type: "},{"line_number":115,"context_line":"\u0027df-local-gateway-port\u0027."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_49b5a7cb","line":112,"range":{"start_line":112,"start_character":36,"end_line":112,"end_character":55},"in_reply_to":"5a74a57a_4091b299","updated":"2016-12-01 14:57:11.000000000","message":"br-ex address can be defined at startup in both implementation alternatives. \nappropriate service: df-controller","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"7f71e3c22b8498bff3f3f7e0cc9f62fc91dcf5b1","unresolved":false,"context_lines":[{"line_number":190,"context_line":"acquire address when new tenant gateway is introduced. While alternative #2 is more"},{"line_number":191,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":192,"context_line":"power for connection tracking and extra NAT."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"When DNAT is defined, DNAT rule have precedence over \"Distributed SNAT\"."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Ingress (alternative #2)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a74a57a_5a76033f","line":193,"updated":"2016-12-01 02:30:14.000000000","message":"both implementation will require CN to have at least one public ip which has access to internet?","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"bd9992eb96af5f845b250c049ba8ec6b1ddcff60","unresolved":false,"context_lines":[{"line_number":190,"context_line":"acquire address when new tenant gateway is introduced. While alternative #2 is more"},{"line_number":191,"context_line":"efficient in terms of external IP address use it may require extra compute"},{"line_number":192,"context_line":"power for connection tracking and extra NAT."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"When DNAT is defined, DNAT rule have precedence over \"Distributed SNAT\"."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Ingress (alternative #2)"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_69c42d40","line":193,"in_reply_to":"5a74a57a_5a76033f","updated":"2016-12-01 14:57:11.000000000","message":"correct","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2cfe37197439bb0f3eba406b028ee0aeafe91100","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Proposed Change"},{"line_number":55,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This spec outlines an additional SNAT model that places the NAT/PAT on"},{"line_number":58,"context_line":"each compute node. In order for this design to work in a real world"},{"line_number":59,"context_line":"deployment, the underlying networking infrastructure needs to allow compute"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_1ac0d229","line":56,"updated":"2016-12-05 12:50:32.000000000","message":"worth to mention that each CN must be attached to external network","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Proposed Change"},{"line_number":55,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This spec outlines an additional SNAT model that places the NAT/PAT on"},{"line_number":58,"context_line":"each compute node. In order for this design to work in a real world"},{"line_number":59,"context_line":"deployment, the underlying networking infrastructure needs to allow compute"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_cffca9ba","line":56,"in_reply_to":"3a71b18c_1ac0d229","updated":"2016-12-07 08:47:00.000000000","message":"I will rephrase second sentence in this section to emphasize this","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5a5ec4e575320797f13391048913356c189bdcb0","unresolved":false,"context_lines":[{"line_number":96,"context_line":"In order to handle high availability DragonFlow controller may monitor"},{"line_number":97,"context_line":"external connectivity periodically and perform a fallback to Neutron SNAT"},{"line_number":98,"context_line":"when external connectivity outage is detected."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Setup"},{"line_number":102,"context_line":"\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_08aebb97","line":99,"updated":"2016-12-05 16:27:51.000000000","message":"I am missing the option where the external underlay gateway can further NAT the connection to a single IP.\n\nIn this case, if you assign a private underlay IP per \u003ccompute node, tenant\u003e, then the external gateway can be configured to NAT on a per-tenant basis (i.e. a different IP per tenant). Some smart external gateways can be configured with NAT/PAT rules which can support this.","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"In order to handle high availability DragonFlow controller may monitor"},{"line_number":97,"context_line":"external connectivity periodically and perform a fallback to Neutron SNAT"},{"line_number":98,"context_line":"when external connectivity outage is detected."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Setup"},{"line_number":102,"context_line":"\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_d5fb5677","line":99,"in_reply_to":"3a71b18c_08aebb97","updated":"2016-12-07 08:47:00.000000000","message":"this is not mentioned indeed. This configuration lays somewhere on border line between cloud infrastructure and external gateway. I guess you are looking for option similar to segmentation ID ...","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2cfe37197439bb0f3eba406b028ee0aeafe91100","unresolved":false,"context_lines":[{"line_number":108,"context_line":"as described in Ingress/Egress sections below."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"When \"Distributed SNAT\" is enabled, DragonFlow controller assigns external IP"},{"line_number":111,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_aaeb0977","line":112,"range":{"start_line":111,"start_character":52,"end_line":112,"end_character":33},"updated":"2016-12-05 12:50:32.000000000","message":"it should add ports to the DF nDB as well","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2cfe37197439bb0f3eba406b028ee0aeafe91100","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"When \"Distributed SNAT\" is enabled, DragonFlow controller assigns external IP"},{"line_number":111,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_4a14359f","line":112,"range":{"start_line":112,"start_character":62,"end_line":112,"end_character":63},"updated":"2016-12-05 12:50:32.000000000","message":"whitespace","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"as described in Ingress/Egress sections below."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"When \"Distributed SNAT\" is enabled, DragonFlow controller assigns external IP"},{"line_number":111,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_a0569a03","line":112,"range":{"start_line":111,"start_character":52,"end_line":112,"end_character":33},"in_reply_to":"3a71b18c_aaeb0977","updated":"2016-12-07 08:47:00.000000000","message":"I am going to alter design for this part in next spec update. The main reason for the change is to preserve Neutron implementation and store information required for correct SNAT management in DragonFlow database locally on compute node. One implication from such change is to manage local cross-tenant network ( per compute node) instead of cloud wide one in solution alternative #2","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"548cef1e5158812e6a0fa242d8def513d13a07b7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"When \"Distributed SNAT\" is enabled, DragonFlow controller assigns external IP"},{"line_number":111,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"},{"line_number":116,"context_line":"ports with type: \u0027df-local-gateway-port\u0027 from Neutron database. SNAT traffic"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_86537de1","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":24},"updated":"2016-12-06 07:41:46.000000000","message":"I am not sure I understand why this is needed.\n\nAdditionally, we don\u0027t want to pollute Neutron\u0027s db with implementation-specific objects. If there are Neutron objects already specified for this task, or if you would like to propose a change to Neutron so it will display sNAT objects, then it can also be added here.","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"When \"Distributed SNAT\" is enabled, DragonFlow controller assigns external IP"},{"line_number":111,"context_line":"from predefined pool to br-ex of each compute node. This change adds router"},{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"},{"line_number":116,"context_line":"ports with type: \u0027df-local-gateway-port\u0027 from Neutron database. SNAT traffic"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_e06b32b5","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":24},"in_reply_to":"3a71b18c_86537de1","updated":"2016-12-07 08:47:00.000000000","message":"See my previous answer to Irena, I think it answers this as well","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2cfe37197439bb0f3eba406b028ee0aeafe91100","unresolved":false,"context_lines":[{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"},{"line_number":116,"context_line":"ports with type: \u0027df-local-gateway-port\u0027 from Neutron database. SNAT traffic"},{"line_number":117,"context_line":"will follow legacy centralized SNAT model."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_2a8ff9cc","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":51},"updated":"2016-12-05 12:50:32.000000000","message":"What do you mean by implementation? DF L3 plugin?","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"gateway ports to Neutron database. New ports should have type: "},{"line_number":113,"context_line":"\u0027df-local-gateway-port\u0027."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"When \"Distributed SNAT\" is disabled, implementation should remove all Neutron"},{"line_number":116,"context_line":"ports with type: \u0027df-local-gateway-port\u0027 from Neutron database. SNAT traffic"},{"line_number":117,"context_line":"will follow legacy centralized SNAT model."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_5b63f741","line":115,"range":{"start_line":115,"start_character":37,"end_line":115,"end_character":51},"in_reply_to":"3a71b18c_2a8ff9cc","updated":"2016-12-07 08:47:00.000000000","message":"yes I meant DFplugin. However following planned change the extra tenant ports may not be required even locally on compute node.","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5a5ec4e575320797f13391048913356c189bdcb0","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Different external IP address per tenant gateway is required to distinguish"},{"line_number":154,"context_line":"between possible private networks address overlapping across multiple tenants."},{"line_number":155,"context_line":"Single external IP may result hash ambiguity in NAT feature on returning"},{"line_number":156,"context_line":"traffic."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Alternative #2 - Single external IP per compute node"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_08b31bea","line":156,"range":{"start_line":155,"start_character":19,"end_line":156,"end_character":8},"updated":"2016-12-05 16:27:51.000000000","message":"I don\u0027t understand why this is true. Can\u0027t you also save the metadata, segmentation id, or tenant id, on the new 5-tuple to be able to do reverse nat? In case of OVS ct, maybe use ct_mark, zone, or label?","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Different external IP address per tenant gateway is required to distinguish"},{"line_number":154,"context_line":"between possible private networks address overlapping across multiple tenants."},{"line_number":155,"context_line":"Single external IP may result hash ambiguity in NAT feature on returning"},{"line_number":156,"context_line":"traffic."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Alternative #2 - Single external IP per compute node"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_e698aa7a","line":156,"range":{"start_line":155,"start_character":19,"end_line":156,"end_character":8},"in_reply_to":"3a71b18c_08b31bea","updated":"2016-12-07 08:47:00.000000000","message":"The basic example for such ambiguity: \ntenant 1: IP X1, port Y1 connects to IP X2, port Y2\ntenant 2: IP X1, port Y1 connects to IP X2, port Y2\nReverse packet will hit same segmentation ID if any.\nReverse packet has no metadata attached yet when 4 tuple connection tracking takes place. There is no 5-tuple tracking at this first tracking attempt","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"2cfe37197439bb0f3eba406b028ee0aeafe91100","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   +-----------------------------|----------------------------+"},{"line_number":182,"context_line":"   |                             |                    br-ex   |"},{"line_number":183,"context_line":"   +-----------------------------|----------------------------+"},{"line_number":184,"context_line":"                                 v           "},{"line_number":185,"context_line":"                                            "},{"line_number":186,"context_line":"Shared private network serves as an intermediate step to translate single"},{"line_number":187,"context_line":"external IP to private IP of specific tenant. Shared private network requires"},{"line_number":188,"context_line":"Neutron database update. Ports connected to this shared network"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_85555efb","line":185,"range":{"start_line":184,"start_character":34,"end_line":185,"end_character":44},"updated":"2016-12-05 12:50:32.000000000","message":"white spaces","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"84871e3a66c2dffa8d7716c066dee5b6a8bba8f7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   +-----------------------------|----------------------------+"},{"line_number":182,"context_line":"   |                             |                    br-ex   |"},{"line_number":183,"context_line":"   +-----------------------------|----------------------------+"},{"line_number":184,"context_line":"                                 v           "},{"line_number":185,"context_line":"                                            "},{"line_number":186,"context_line":"Shared private network serves as an intermediate step to translate single"},{"line_number":187,"context_line":"external IP to private IP of specific tenant. Shared private network requires"},{"line_number":188,"context_line":"Neutron database update. Ports connected to this shared network"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_c6848e0c","line":185,"range":{"start_line":184,"start_character":34,"end_line":185,"end_character":44},"in_reply_to":"3a71b18c_85555efb","updated":"2016-12-07 08:47:00.000000000","message":"Done","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"a01b7ab31e96d3d66145ef1e2a487eb661b22b6e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                                            "},{"line_number":186,"context_line":"Shared private network serves as an intermediate step to translate single"},{"line_number":187,"context_line":"external IP to private IP of specific tenant. Shared private network requires"},{"line_number":188,"context_line":"Neutron database update. Ports connected to this shared network"},{"line_number":189,"context_line":"are part of OVS br-int."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Both alternatives require management of network address pool and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_4560a6a5","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":23},"updated":"2016-12-05 12:34:43.000000000","message":"This alternative requires Neutron project change. Every time VM is added/removed neutron server should handle ports on shared private network to reflect ongoing change:\n\n\u003dwhen VM is a first VM of this tenant on chosen host:\n1) new port on private shared network is created.\n2) port allocated with IP on private shared network\n3) new table of tenant ports with columns:\n- tenant ID\n- host\n- port ID\n- (IP address)\nis populated with new entry\n4) send update notification to host\n\n\u003dwhen last VM of this tenant removed  from host:\n1) remove entry from tenant port table \n2) delete tenant ports from port table\n3) send update notification to host","commit_id":"672fddb73cd60c347af242fa438220399126f689"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f1957c5a068a57e092231ee34c0774c05f830e64","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Flow"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"This section describe all the handling in the pipeline for north/south"},{"line_number":110,"context_line":"traffic."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_7fda984c","line":109,"range":{"start_line":109,"start_character":13,"end_line":109,"end_character":21},"updated":"2016-12-10 03:28:36.000000000","message":"describes","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"8d33f72f6c1ea11f2ad4ce090db6d23dd4a356b9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Flow"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"This section describe all the handling in the pipeline for north/south"},{"line_number":110,"context_line":"traffic."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a6eadb0_6c462d7c","line":109,"range":{"start_line":109,"start_character":13,"end_line":109,"end_character":21},"in_reply_to":"3a71b18c_7fda984c","updated":"2016-12-18 14:01:15.000000000","message":"Done","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f1957c5a068a57e092231ee34c0774c05f830e64","unresolved":false,"context_lines":[{"line_number":112,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"},{"line_number":113,"context_line":"starting from version 2.6.x."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. Such"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_7f237858","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":57},"updated":"2016-12-10 03:28:36.000000000","message":"I cannot get it. What\u0027s the meaning of \u0027clean implementation\u0027 here?","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"8d33f72f6c1ea11f2ad4ce090db6d23dd4a356b9","unresolved":false,"context_lines":[{"line_number":112,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"},{"line_number":113,"context_line":"starting from version 2.6.x."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. Such"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a6eadb0_d7b8aa2c","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":57},"in_reply_to":"3a71b18c_7f237858","updated":"2016-12-18 14:01:15.000000000","message":"I mean that such implementation will remove the need of router namespaces. A mix routing scheme (OVS flows on br-int and linux routing on br-ex) is still required","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f1957c5a068a57e092231ee34c0774c05f830e64","unresolved":false,"context_lines":[{"line_number":115,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. Such"},{"line_number":119,"context_line":"solution requires intermediate NAT from compute node to local cross-tenant"},{"line_number":120,"context_line":"network and then NAT to public external IP."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_3fbbc0e6","line":118,"range":{"start_line":118,"start_character":27,"end_line":118,"end_character":47},"updated":"2016-12-10 03:28:36.000000000","message":"The description of preserving external IPs from Neutron ipallocation is lost in the context. Or you just manually set up a selected IP to br-ex. If so, we need to reserve this set of IPs from the beginning and tell the end-users to make it work. It should be a section to describe this part.","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"8d33f72f6c1ea11f2ad4ce090db6d23dd4a356b9","unresolved":false,"context_lines":[{"line_number":115,"context_line":"OVS native NAT support allows a clean SDN implementation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. Such"},{"line_number":119,"context_line":"solution requires intermediate NAT from compute node to local cross-tenant"},{"line_number":120,"context_line":"network and then NAT to public external IP."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a6eadb0_9770f20c","line":118,"range":{"start_line":118,"start_character":27,"end_line":118,"end_character":47},"in_reply_to":"3a71b18c_3fbbc0e6","updated":"2016-12-18 14:01:15.000000000","message":"I will elaborate regarding external resource consumption in next version of spec","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"f1957c5a068a57e092231ee34c0774c05f830e64","unresolved":false,"context_lines":[{"line_number":180,"context_line":"Not found tenant entry should result:"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"1. internal OVS port that refer to newly added VM is created"},{"line_number":183,"context_line":"2. \u0027lsnat\u0027 table update with new tenant id and random IP in cross-tenant"},{"line_number":184,"context_line":"   network range"},{"line_number":185,"context_line":"3. DF controller \u0027local port added\u0027 event is processed"},{"line_number":186,"context_line":"4. DF-controller SNAT application adds OVS flows relevant for newly added VM"},{"line_number":187,"context_line":"   SNAT traffic"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_bf7d101e","line":184,"range":{"start_line":183,"start_character":60,"end_line":184,"end_character":10},"updated":"2016-12-10 03:28:36.000000000","message":"how to manage the allocated IPs from this cross-tenant network? it seems that we also need to do a simple IPAM for this internal df network.","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"8d33f72f6c1ea11f2ad4ce090db6d23dd4a356b9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"Not found tenant entry should result:"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"1. internal OVS port that refer to newly added VM is created"},{"line_number":183,"context_line":"2. \u0027lsnat\u0027 table update with new tenant id and random IP in cross-tenant"},{"line_number":184,"context_line":"   network range"},{"line_number":185,"context_line":"3. DF controller \u0027local port added\u0027 event is processed"},{"line_number":186,"context_line":"4. DF-controller SNAT application adds OVS flows relevant for newly added VM"},{"line_number":187,"context_line":"   SNAT traffic"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a6eadb0_5711fa5b","line":184,"range":{"start_line":183,"start_character":60,"end_line":184,"end_character":10},"in_reply_to":"3a71b18c_bf7d101e","updated":"2016-12-18 14:01:15.000000000","message":"Current intention is to manage internal network addresses in local file (at least for the POC impemenetation), since these IPs are bound to specific host","commit_id":"cbfa7a46e2cb5940d2c97c090cb44a3474d50bf4"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Distributed SNAT"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_fc39d8f3","line":3,"range":{"start_line":3,"start_character":15,"end_line":3,"end_character":17},"updated":"2016-12-18 15:28:10.000000000","message":"notice format","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Distributed SNAT"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_e6a04693","line":3,"range":{"start_line":3,"start_character":15,"end_line":3,"end_character":17},"in_reply_to":"1a6eadb0_fc39d8f3","updated":"2017-01-01 12:50:31.000000000","message":"This a correct title format:\nhttp://docutils.sourceforge.net/docs/user/rst/quickref.html","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to DragonFlow (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_5c21ecb3","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":5},"updated":"2016-12-18 15:28:10.000000000","message":"ditto","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to DragonFlow (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_7c2ea8a6","line":8,"range":{"start_line":8,"start_character":10,"end_line":8,"end_character":15},"updated":"2016-12-18 15:28:10.000000000","message":"focuses","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Scope"},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"This spec focus on a new, additional SNAT implementation to DragonFlow (which"},{"line_number":9,"context_line":"we will henceforth refer to as \"Distributed SNAT\") that trades off some"},{"line_number":10,"context_line":"functionality in favor of scale, performance and ease of use (all"},{"line_number":11,"context_line":"highlighted in \"Problem Description\" section)."}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_211b1874","line":8,"range":{"start_line":8,"start_character":10,"end_line":8,"end_character":15},"in_reply_to":"1a6eadb0_7c2ea8a6","updated":"2017-01-01 12:50:31.000000000","message":"Done","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":71,"context_line":"routed locally from the compute node."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Our goal is to preserve Neutron reference implementation and concentrate on"},{"line_number":74,"context_line":"DragonFlow plugin update. Therefore \"Distributed SNAT\" should NOT be reflected"},{"line_number":75,"context_line":"in Neutron database. DragonFlow plugin should manage additional data on"},{"line_number":76,"context_line":"compute node locally. New model not requires extra Neutron ports on compute"},{"line_number":77,"context_line":"nodes, but it does require every compute node to have IP address on external"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_7f33faf6","line":74,"range":{"start_line":74,"start_character":62,"end_line":74,"end_character":65},"updated":"2016-12-18 15:28:10.000000000","message":"not","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"routed locally from the compute node."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Our goal is to preserve Neutron reference implementation and concentrate on"},{"line_number":74,"context_line":"DragonFlow plugin update. Therefore \"Distributed SNAT\" should NOT be reflected"},{"line_number":75,"context_line":"in Neutron database. DragonFlow plugin should manage additional data on"},{"line_number":76,"context_line":"compute node locally. New model not requires extra Neutron ports on compute"},{"line_number":77,"context_line":"nodes, but it does require every compute node to have IP address on external"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_41265cbb","line":74,"range":{"start_line":74,"start_character":62,"end_line":74,"end_character":65},"in_reply_to":"1a6eadb0_7f33faf6","updated":"2017-01-01 12:50:31.000000000","message":"Done","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Setup"},{"line_number":95,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"New DragonFlow application should handle north/south traffic on each compute"},{"line_number":98,"context_line":"node. East/west traffic between VMs of different tenants deployed on different"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_df508e0d","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":5},"updated":"2016-12-18 15:28:10.000000000","message":"format","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":108,"context_line":"Model alternatives"},{"line_number":109,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"There are number of solutions to achieve \"Distributed SNAT\". Every solution"},{"line_number":112,"context_line":"has its advantages and weak points."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"[1] Single external IP per compute node solution requires double NAT."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_7f4a1a57","line":111,"range":{"start_line":111,"start_character":10,"end_line":111,"end_character":16},"updated":"2016-12-18 15:28:10.000000000","message":"numbers","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    port range. Limited number of tenants on compute host. Divide L4 port"},{"line_number":130,"context_line":"    range [1024-65535] between these tenants."},{"line_number":131,"context_line":"Pros:"},{"line_number":132,"context_line":"    - easy to implement"},{"line_number":133,"context_line":"    - requires single external IP address in manual configuration"},{"line_number":134,"context_line":"    - solution consumes #[compute host] external IPs"},{"line_number":135,"context_line":"Cons:"},{"line_number":136,"context_line":"    - all deployed VMs of different tenants have single source IP that is"},{"line_number":137,"context_line":"      reflected outside. If this IP is blacklisted than all tenants VMs on"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_5fab9ed6","line":134,"range":{"start_line":132,"start_character":4,"end_line":134,"end_character":52},"updated":"2016-12-18 15:28:10.000000000","message":"you could just mention it same to solution 1","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Flow"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"This section describe all the handling in the pipeline for north/south"},{"line_number":174,"context_line":"traffic."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_1f804646","line":173,"range":{"start_line":173,"start_character":13,"end_line":173,"end_character":21},"updated":"2016-12-18 15:28:10.000000000","message":"describes","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Flow"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"This section describe all the handling in the pipeline for north/south"},{"line_number":174,"context_line":"traffic."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"NAT translation can take place natively in OVS that supports NAT feature"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_612b6083","line":173,"range":{"start_line":173,"start_character":13,"end_line":173,"end_character":21},"in_reply_to":"1a6eadb0_1f804646","updated":"2017-01-01 12:50:31.000000000","message":"Done","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":195,"context_line":"   |    \\--------\\ /------/                   |      br-int   |"},{"line_number":196,"context_line":"   |              v                           v               |"},{"line_number":197,"context_line":"   | cross-tenant | NAT:                      |  NAT          |"},{"line_number":198,"context_line":"   |  private net | 182.0.0.1                 |  182.0.0.2    |"},{"line_number":199,"context_line":"   |              v                           v               |"},{"line_number":200,"context_line":"   |              \\-------------\\ /-----------/               |"},{"line_number":201,"context_line":"   +-----------------------------v----------------------------+"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_9f51b6db","line":198,"range":{"start_line":198,"start_character":20,"end_line":198,"end_character":29},"updated":"2016-12-18 15:28:10.000000000","message":"When and how to assign this ip for the tenant, could you pls add it into spec?","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"   |    \\--------\\ /------/                   |      br-int   |"},{"line_number":196,"context_line":"   |              v                           v               |"},{"line_number":197,"context_line":"   | cross-tenant | NAT:                      |  NAT          |"},{"line_number":198,"context_line":"   |  private net | 182.0.0.1                 |  182.0.0.2    |"},{"line_number":199,"context_line":"   |              v                           v               |"},{"line_number":200,"context_line":"   |              \\-------------\\ /-----------/               |"},{"line_number":201,"context_line":"   +-----------------------------v----------------------------+"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_8120449d","line":198,"range":{"start_line":198,"start_character":20,"end_line":198,"end_character":29},"in_reply_to":"1a6eadb0_9f51b6db","updated":"2017-01-01 12:50:31.000000000","message":"Running IP number + local configuration","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":220,"context_line":"require extra compute power for connection tracking and extra NAT."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"--------------------"},{"line_number":224,"context_line":"VM create/delete operations should update new \u0027lsnat\u0027 table with columns:"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_5fd9de82","line":223,"range":{"start_line":223,"start_character":17,"end_line":223,"end_character":20},"updated":"2016-12-18 15:28:10.000000000","message":"format","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_7fe69a45","line":229,"range":{"start_line":229,"start_character":11,"end_line":229,"end_character":21},"updated":"2016-12-18 15:28:10.000000000","message":"we could consider to make it unique in all chassis","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_26ab2e76","line":229,"range":{"start_line":229,"start_character":11,"end_line":229,"end_character":21},"in_reply_to":"1a6eadb0_7fe69a45","updated":"2017-01-01 12:50:31.000000000","message":"It is possible but not required since OVS flows are deployed locally - same tenant may have different cross-tenant IP on different compute nodes","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":239,"context_line":"intermediate phase of VM to single external IP NAT translation. Neutron tenant"},{"line_number":240,"context_line":"id field links this local table entry and Neutron database."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"When new VM is created, compute node gets relevant router update notification"},{"line_number":243,"context_line":"that includes added VM full port information. Local compute node DF plugin"},{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_dfd32e5e","line":242,"range":{"start_line":242,"start_character":0,"end_line":242,"end_character":77},"updated":"2016-12-18 15:28:10.000000000","message":"why add a new vm will cause a router update event??","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":239,"context_line":"intermediate phase of VM to single external IP NAT translation. Neutron tenant"},{"line_number":240,"context_line":"id field links this local table entry and Neutron database."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"When new VM is created, compute node gets relevant router update notification"},{"line_number":243,"context_line":"that includes added VM full port information. Local compute node DF plugin"},{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_66bb76c5","line":242,"range":{"start_line":242,"start_character":0,"end_line":242,"end_character":77},"in_reply_to":"1a6eadb0_dfd32e5e","updated":"2017-01-01 12:50:31.000000000","message":"VM create event causes neutron port creation which in turn causes router local port update event","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"  1. internal OVS port that refer to newly added VM is created"},{"line_number":248,"context_line":"  2. DF controller \u0027local port added\u0027 event is processed"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Not found tenant entry should result (3) and (4):"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_9fe37633","line":247,"range":{"start_line":247,"start_character":28,"end_line":247,"end_character":33},"updated":"2016-12-18 15:28:10.000000000","message":"refers","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"d06322a956439e3cbd81f8b50ab5e811934738b9","unresolved":false,"context_lines":[{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"  1. internal OVS port that refer to newly added VM is created"},{"line_number":248,"context_line":"  2. DF controller \u0027local port added\u0027 event is processed"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Not found tenant entry should result (3) and (4):"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ba5201f7_a12548ac","line":247,"range":{"start_line":247,"start_character":28,"end_line":247,"end_character":33},"in_reply_to":"1a6eadb0_9fe37633","updated":"2017-01-01 12:50:31.000000000","message":"Done","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":255,"context_line":"  5. Increase VM count in table entry anyway"},{"line_number":256,"context_line":"  6. Save updated \u0027lsnat\u0027 table"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"When VM is deleted, compute node gets relevant router notification that"},{"line_number":259,"context_line":"includes removed VM full port information. DF plugin searches for correct"},{"line_number":260,"context_line":"entry in \u0027lsnat\u0027 table according to tenant id."},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_ffc8eaaa","line":258,"range":{"start_line":258,"start_character":0,"end_line":258,"end_character":71},"updated":"2016-12-18 15:28:10.000000000","message":"ditto","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"  TABLE\u003d0 (INGRESS_CLASSIFICATION_DISPATCH_TABLE)"},{"line_number":293,"context_line":"  table\u003d0, priority\u003d50,ct_state\u003d-new+rel-inv+trk,ip,in_port\u003d1"},{"line_number":294,"context_line":"\tactions\u003dct(table\u003d0,nat),"},{"line_number":295,"context_line":"                move:NXM_NX_CT_MARK[]-\u003eOXM_OF_METADATA[0..31],"},{"line_number":296,"context_line":"                resubmit(,15)"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_bf3592a9","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":1},"updated":"2016-12-18 15:28:10.000000000","message":"tab??","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":297,"context_line":""},{"line_number":298,"context_line":"  TABLE\u003d15 (INGRESS_NAT_TABLE)"},{"line_number":299,"context_line":"  table\u003d15, priority\u003d50,ct_state\u003d-new+rel-inv+trk,ip"},{"line_number":300,"context_line":"\tactions\u003dct(table\u003d16,zone\u003dOXM_OF_METADATA[0..15],nat),"},{"line_number":301,"context_line":"                   move:NXM_NX_CT_MARK[]-\u003eNXM_NX_REG7[0..31]"},{"line_number":302,"context_line":"                   resubmit(,72)"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_df3a4e98","line":300,"range":{"start_line":300,"start_character":0,"end_line":300,"end_character":1},"updated":"2016-12-18 15:28:10.000000000","message":"ditto","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"  TABLE\u003d30 (EGRESS_NAT_TABLE)"},{"line_number":323,"context_line":"  table\u003d30, priority\u003d50, ip"},{"line_number":324,"context_line":"\tactions\u003dct(commit,table\u003d30,zone\u003dOXM_OF_METADATA[0..15],"},{"line_number":325,"context_line":"                   exec(move:\u003eNXM_NX_REG7[]-\u003eNXM_NX_CT_MARK[],"},{"line_number":326,"context_line":"                   nat(src\u003d182.0.0.1))),resubmit(,31)"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_ff3f0a85","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":1},"updated":"2016-12-18 15:28:10.000000000","message":"ditto","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"bc4ec3a0cf6e9408d5c3fbbcbb55695c4948c8da","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"  TABLE\u003d31 (ENGRESS_TENANT_NAT_TABLE)"},{"line_number":329,"context_line":"  table\u003d31, priority\u003d50,ip"},{"line_number":330,"context_line":"\tactions\u003dct(commit,table\u003d31,"},{"line_number":331,"context_line":"                   exec(move:OXM_OF_METADATA[0..31]-\u003eNXM_NX_CT_MARK[],"},{"line_number":332,"context_line":"                   nat(src\u003d172.24.4.1))),resubmit(,66)"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a6eadb0_1f45a616","line":330,"range":{"start_line":330,"start_character":0,"end_line":330,"end_character":1},"updated":"2016-12-18 15:28:10.000000000","message":"ditto","commit_id":"7a6be870113f470be5b9787823eef548a9c531e6"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":14,"context_line":"out of scope for this spec)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the current DragonFlow"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with DragonFlow SNAT"},{"line_number":18,"context_line":"the cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"},{"line_number":20,"context_line":"tenant therefore, sharing the same external IP."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_9e786191","line":17,"range":{"start_line":17,"start_character":55,"end_line":17,"end_character":59},"updated":"2017-01-04 08:03:50.000000000","message":"without?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"out of scope for this spec)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The main functionality difference between the current DragonFlow"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with DragonFlow SNAT"},{"line_number":18,"context_line":"the cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"},{"line_number":20,"context_line":"tenant therefore, sharing the same external IP."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_a12a652a","line":17,"range":{"start_line":17,"start_character":55,"end_line":17,"end_character":59},"in_reply_to":"ba5201f7_9e786191","updated":"2017-01-04 14:27:17.000000000","message":"The sentence is correct. I show difference between current DragonFlow SNAT and planned \u0027Distributed SNAT\u0027. Next paragraph describes \u0027Distributed SNAT\u0027","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Our goal is to preserve Neutron reference implementation and concentrate on"},{"line_number":74,"context_line":"DragonFlow plugin update. Therefore \"Distributed SNAT\" should not be reflected"},{"line_number":75,"context_line":"in Neutron database. DragonFlow plugin should manage additional data on"},{"line_number":76,"context_line":"compute node locally. New model not requires extra Neutron ports on compute"},{"line_number":77,"context_line":"nodes, but it does require every compute node to have IP address on external"},{"line_number":78,"context_line":"network."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_7e2d7d45","line":76,"range":{"start_line":76,"start_character":32,"end_line":76,"end_character":44},"updated":"2017-01-04 08:03:50.000000000","message":"does not require","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"739fc620694d5f486a2e20dee36d1fb79123f7bf","unresolved":false,"context_lines":[{"line_number":125,"context_line":"(*) This solution is chosen as first phase implementation and below"},{"line_number":126,"context_line":"    sections provide details to this solution"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[2] Single external IP per compute node solution requires with single NAT and"},{"line_number":129,"context_line":"    port range. Limited number of tenants on compute host. Divide L4 port"},{"line_number":130,"context_line":"    range [1024-65535] between these tenants."},{"line_number":131,"context_line":"Pros:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_810cc495","line":128,"range":{"start_line":128,"start_character":1,"end_line":128,"end_character":2},"updated":"2017-01-01 15:02:07.000000000","message":"I don\u0027t think I like this solution very much when compared with solution [3]. Once [1] is complete, let\u0027s continue with solution [3], and leave this implementation as backup (e.g. if a client requests it).","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4c380011a3f29ba4784c29f2cb8320d8f2c3761c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"(*) This solution is chosen as first phase implementation and below"},{"line_number":126,"context_line":"    sections provide details to this solution"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[2] Single external IP per compute node solution requires with single NAT and"},{"line_number":129,"context_line":"    port range. Limited number of tenants on compute host. Divide L4 port"},{"line_number":130,"context_line":"    range [1024-65535] between these tenants."},{"line_number":131,"context_line":"Pros:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_2204f37c","line":128,"range":{"start_line":128,"start_character":58,"end_line":128,"end_character":62},"updated":"2017-01-02 11:20:06.000000000","message":"remove with for readability","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"(*) This solution is chosen as first phase implementation and below"},{"line_number":126,"context_line":"    sections provide details to this solution"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[2] Single external IP per compute node solution requires with single NAT and"},{"line_number":129,"context_line":"    port range. Limited number of tenants on compute host. Divide L4 port"},{"line_number":130,"context_line":"    range [1024-65535] between these tenants."},{"line_number":131,"context_line":"Pros:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_6ed4ec46","line":128,"range":{"start_line":128,"start_character":58,"end_line":128,"end_character":62},"in_reply_to":"ba5201f7_2204f37c","updated":"2017-01-04 14:27:17.000000000","message":"Solution alternative [2] is removed due to built-in limitations","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"(*) This solution is chosen as first phase implementation and below"},{"line_number":126,"context_line":"    sections provide details to this solution"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"[2] Single external IP per compute node solution requires with single NAT and"},{"line_number":129,"context_line":"    port range. Limited number of tenants on compute host. Divide L4 port"},{"line_number":130,"context_line":"    range [1024-65535] between these tenants."},{"line_number":131,"context_line":"Pros:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_e1e38d03","line":128,"range":{"start_line":128,"start_character":1,"end_line":128,"end_character":2},"in_reply_to":"ba5201f7_810cc495","updated":"2017-01-04 14:27:17.000000000","message":"Solution [2] is removed due to built-in limitations","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"739fc620694d5f486a2e20dee36d1fb79123f7bf","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      [1-10] otherwise port range consumed by every tenants in NAT operation"},{"line_number":141,"context_line":"      would be too small"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"[3] External IP address per [compute node, tenant gateway] pair"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Pros:"},{"line_number":146,"context_line":"    - generic solution similar to Neutron in terms of tenants separation"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_a111c8ae","line":143,"range":{"start_line":143,"start_character":1,"end_line":143,"end_character":2},"updated":"2017-01-01 15:02:07.000000000","message":"You can also add here that a second NAT (e.g. done at the external gateway) can \u0027merge\u0027 \u003ccompute node, tenant\u003e IPs to tenant IPs. This way, externally, the solution is the same as the Neutron reference implementation. Interanlly, a specific network configuration is needed.","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      [1-10] otherwise port range consumed by every tenants in NAT operation"},{"line_number":141,"context_line":"      would be too small"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"[3] External IP address per [compute node, tenant gateway] pair"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Pros:"},{"line_number":146,"context_line":"    - generic solution similar to Neutron in terms of tenants separation"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_e1ab8dd4","line":143,"range":{"start_line":143,"start_character":1,"end_line":143,"end_character":2},"in_reply_to":"ba5201f7_a111c8ae","updated":"2017-01-04 14:27:17.000000000","message":"Added as notes","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4c380011a3f29ba4784c29f2cb8320d8f2c3761c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Neutron SNAT implementation consumes number of external IPs equivalent to"},{"line_number":157,"context_line":"number of tenants + single address reserved for gateway on network node."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"We want to achieve a reasonably small external IP addresses use and at the"},{"line_number":160,"context_line":"same effort solve a connectivity bottleneck problem. Unfortunately it seems"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_c2f5e783","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":16},"updated":"2017-01-02 11:20:06.000000000","message":"multiply number of CN","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Neutron SNAT implementation consumes number of external IPs equivalent to"},{"line_number":157,"context_line":"number of tenants + single address reserved for gateway on network node."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"We want to achieve a reasonably small external IP addresses use and at the"},{"line_number":160,"context_line":"same effort solve a connectivity bottleneck problem. Unfortunately it seems"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_01a171a3","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":16},"in_reply_to":"ba5201f7_c2f5e783","updated":"2017-01-04 14:27:17.000000000","message":"I gave here reference to legacy Neutron implementation where external IP per tenant is consumed on network node","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"739fc620694d5f486a2e20dee36d1fb79123f7bf","unresolved":false,"context_lines":[{"line_number":195,"context_line":"   |    \\--------\\ /------/                   |      br-int   |"},{"line_number":196,"context_line":"   |              v                           v               |"},{"line_number":197,"context_line":"   | cross-tenant | NAT:                      |  NAT          |"},{"line_number":198,"context_line":"   |  private net | 182.0.0.1                 |  182.0.0.2    |"},{"line_number":199,"context_line":"   |              v                           v               |"},{"line_number":200,"context_line":"   |              \\-------------\\ /-----------/               |"},{"line_number":201,"context_line":"   +-----------------------------v----------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_010454be","line":198,"range":{"start_line":198,"start_character":0,"end_line":198,"end_character":63},"updated":"2017-01-01 15:02:07.000000000","message":"The cross-tenant private net is still not needed. This should be done with some tagging mechanism e.g. metadata (for OVS-bridge internal solution e.g. OVS NAT) or vlan tags (for external solutions e.g. iptables)","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":212,"context_line":"distributed nature of DragonFlow on one hand and allows to preserve Neutron"},{"line_number":213,"context_line":"core implementation unchanged."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This cross-tenant network is used only in terms of separate IP address range"},{"line_number":216,"context_line":"There is no real OVS ports plugged into it. It requires management of tenant"},{"line_number":217,"context_line":"addresses on this network in extra database table on compute node."},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_3995cfdd","line":215,"updated":"2017-01-04 08:03:50.000000000","message":"need a period","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":212,"context_line":"distributed nature of DragonFlow on one hand and allows to preserve Neutron"},{"line_number":213,"context_line":"core implementation unchanged."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This cross-tenant network is used only in terms of separate IP address range"},{"line_number":216,"context_line":"There is no real OVS ports plugged into it. It requires management of tenant"},{"line_number":217,"context_line":"addresses on this network in extra database table on compute node."},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ce4cf844","line":215,"in_reply_to":"ba5201f7_3995cfdd","updated":"2017-01-04 14:27:17.000000000","message":"Done","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"--------------------"},{"line_number":224,"context_line":"VM create/delete operations should update new \u0027lsnat\u0027 table with columns:"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_191d6b0f","line":224,"range":{"start_line":224,"start_character":47,"end_line":224,"end_character":52},"updated":"2017-01-04 08:03:50.000000000","message":"lsnat ? what does \u0027l\u0027 stand for?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Data model impact"},{"line_number":223,"context_line":"--------------------"},{"line_number":224,"context_line":"VM create/delete operations should update new \u0027lsnat\u0027 table with columns:"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_cefa38bd","line":224,"range":{"start_line":224,"start_character":47,"end_line":224,"end_character":52},"in_reply_to":"ba5201f7_191d6b0f","updated":"2017-01-04 14:27:17.000000000","message":"local snat","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_99a5dbb6","line":229,"range":{"start_line":229,"start_character":11,"end_line":229,"end_character":21},"updated":"2017-01-04 08:03:50.000000000","message":"Is it a unique key generated by tenant id？ If yes, maybe it could be renamed to \u0027tenant key\u0027","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4c380011a3f29ba4784c29f2cb8320d8f2c3761c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_22eeb38b","line":229,"range":{"start_line":229,"start_character":6,"end_line":229,"end_character":9},"updated":"2017-01-02 11:20:06.000000000","message":"shouldn\u0027t chassis/host be another field in the table?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ae2a542a","line":229,"range":{"start_line":229,"start_character":6,"end_line":229,"end_character":9},"in_reply_to":"ba5201f7_22eeb38b","updated":"2017-01-04 14:27:17.000000000","message":"Since this is a compute node local table, chassis field is not required.","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":227,"context_line":"  | No   |   field           |  Description                                  |"},{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_6ed78c23","line":229,"range":{"start_line":229,"start_character":11,"end_line":229,"end_character":21},"in_reply_to":"ba5201f7_99a5dbb6","updated":"2017-01-04 14:27:17.000000000","message":"it is unique to this chassis","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_39f30fd8","line":231,"range":{"start_line":231,"start_character":41,"end_line":231,"end_character":43},"updated":"2017-01-04 08:03:50.000000000","message":"and?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_b9845fd4","line":231,"range":{"start_line":231,"start_character":47,"end_line":231,"end_character":53},"updated":"2017-01-04 08:03:50.000000000","message":"appears?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":228,"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\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":229,"context_line":"  | 1.   | tenant id         | unique id to be used in OVS flows             |"},{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_0eca806d","line":231,"range":{"start_line":231,"start_character":41,"end_line":231,"end_character":43},"in_reply_to":"ba5201f7_39f30fd8","updated":"2017-01-04 14:27:17.000000000","message":"Fixed: as it appears","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"10318c506b4266bc930bbaca89c4edd162a199a2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":235,"context_line":"  | 4.   | VM count          | counts VMs of this tenant on local host       |"},{"line_number":236,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_2cd86c53","line":233,"range":{"start_line":233,"start_character":0,"end_line":233,"end_character":78},"updated":"2017-01-02 08:20:44.000000000","message":"I think this column is unnecessary.\n\nWithout this column, is there really a need for this table to be in the north-bound database, rather than locally on each compute node? (e.g. held within the application, or in the Topology model?)","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4c380011a3f29ba4784c29f2cb8320d8f2c3761c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":235,"context_line":"  | 4.   | VM count          | counts VMs of this tenant on local host       |"},{"line_number":236,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_82d67fc3","line":233,"range":{"start_line":233,"start_character":0,"end_line":233,"end_character":78},"in_reply_to":"ba5201f7_2cd86c53","updated":"2017-01-02 11:20:06.000000000","message":"Is this IP global?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":231,"context_line":"  | 2.   | neutron tenant id | tenant id ad it appers in neutron DB          |"},{"line_number":232,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":233,"context_line":"  | 3.   | unique tenant IP  | IP address in cross-tenant local network      |"},{"line_number":234,"context_line":"  +------+-------------------+-----------------------------------------------+"},{"line_number":235,"context_line":"  | 4.   | VM count          | counts VMs of this tenant on local host       |"},{"line_number":236,"context_line":"  +------+-------------------+-----------------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_4eb728d8","line":233,"range":{"start_line":233,"start_character":0,"end_line":233,"end_character":78},"in_reply_to":"ba5201f7_82d67fc3","updated":"2017-01-04 14:27:17.000000000","message":"chassis local address that serves to differentiate between tenants","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"10318c506b4266bc930bbaca89c4edd162a199a2","unresolved":false,"context_lines":[{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"  1. internal OVS port that refers to newly added VM is created"},{"line_number":248,"context_line":"  2. DF controller \u0027local port added\u0027 event is processed"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Not found tenant entry should result (3) and (4):"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ace45c0d","line":247,"updated":"2017-01-02 08:20:44.000000000","message":"Why is this port needed?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":244,"context_line":"should search local \u0027lsnat\u0027 DragonFlow table for tenant id that"},{"line_number":245,"context_line":"refers to subject of notification port tenant id."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"  1. internal OVS port that refers to newly added VM is created"},{"line_number":248,"context_line":"  2. DF controller \u0027local port added\u0027 event is processed"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Not found tenant entry should result (3) and (4):"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ae02546d","line":247,"in_reply_to":"ba5201f7_ace45c0d","updated":"2017-01-04 14:27:17.000000000","message":"This refers to port VM is attached to. No extra OVS port is required","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"10318c506b4266bc930bbaca89c4edd162a199a2","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Below is sample implementation of (*) marked step in OVS flows."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"::"},{"line_number":290,"context_line":"   table\u003d20, priority\u003d100,ip,metadata\u003d0x3,nw_src\u003d10.0.0.5"},{"line_number":291,"context_line":"      actions\u003dresubmit(,30)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_2cbf8cd1","line":289,"updated":"2017-01-02 08:20:44.000000000","message":"Missing newline","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"Below is sample implementation of (*) marked step in OVS flows."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"::"},{"line_number":290,"context_line":"   table\u003d20, priority\u003d100,ip,metadata\u003d0x3,nw_src\u003d10.0.0.5"},{"line_number":291,"context_line":"      actions\u003dresubmit(,30)"},{"line_number":292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_816f21c4","line":289,"in_reply_to":"ba5201f7_2cbf8cd1","updated":"2017-01-04 14:27:17.000000000","message":"Done","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":323,"context_line":"  table\u003d16, priority\u003d50,ip"},{"line_number":324,"context_line":"     actions\u003dmod_dl_src:91:92:93:94:95:96,mod_dl_dst:fa:16:3e:95:bf:e9,"},{"line_number":325,"context_line":"     move:NXM_NX_CT_MARK[]-\u003eOXM_OF_METADATA[0..31],resubmit(,72)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Configuration"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ab0de638","line":328,"range":{"start_line":326,"start_character":0,"end_line":328,"end_character":0},"updated":"2017-01-04 08:03:50.000000000","message":"too many blank lines?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"4c380011a3f29ba4784c29f2cb8320d8f2c3761c","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Configuration"},{"line_number":332,"context_line":"-------------"},{"line_number":333,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":334,"context_line":"- lsnat_file_path  - location of \u0027lsnat\u0027 table on compute host file system"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_426817f6","line":331,"range":{"start_line":331,"start_character":0,"end_line":331,"end_character":13},"updated":"2017-01-02 11:20:06.000000000","message":"worth to mention that this is for the local controller","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Configuration"},{"line_number":332,"context_line":"-------------"},{"line_number":333,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":334,"context_line":"- lsnat_file_path  - location of \u0027lsnat\u0027 table on compute host file system"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ee21bcb5","line":331,"range":{"start_line":331,"start_character":0,"end_line":331,"end_character":13},"in_reply_to":"ba5201f7_426817f6","updated":"2017-01-04 14:27:17.000000000","message":"Done","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"636cd0a8f61c13ed453e043ef33405e2bb400186","unresolved":false,"context_lines":[{"line_number":331,"context_line":"Configuration"},{"line_number":332,"context_line":"-------------"},{"line_number":333,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":334,"context_line":"- lsnat_file_path  - location of \u0027lsnat\u0027 table on compute host file system"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"Workaround flow"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_cb3b0ad0","line":334,"range":{"start_line":334,"start_character":0,"end_line":334,"end_character":74},"updated":"2017-01-04 08:03:50.000000000","message":"Isn\u0027t the lsnat table in NB DB ?","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"68a7b1d70f3a420fc104636d33fa503d6b53b5a5","unresolved":false,"context_lines":[{"line_number":331,"context_line":"Configuration"},{"line_number":332,"context_line":"-------------"},{"line_number":333,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":334,"context_line":"- lsnat_file_path  - location of \u0027lsnat\u0027 table on compute host file system"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"Workaround flow"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba5201f7_ce6eb82e","line":334,"range":{"start_line":334,"start_character":0,"end_line":334,"end_character":74},"in_reply_to":"ba5201f7_cb3b0ad0","updated":"2017-01-04 14:27:17.000000000","message":"No. the table is local and should not be populated to NB-DB","commit_id":"f0893606a0d5674f411ea14bef3f583cf263ab7b"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee7ed98714d57bef46e7e05162c7327ac4a13365","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the current DragonFlow"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with DragonFlow SNAT"},{"line_number":18,"context_line":"the cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"},{"line_number":20,"context_line":"tenant therefore, sharing the same external IP."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [compute"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_83ae7683","line":20,"range":{"start_line":19,"start_character":61,"end_line":20,"end_character":16},"updated":"2017-02-05 10:04:53.000000000","message":"I believe the router gateway(i.e. the external IP address) can be shared among multiple tenants.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b3df4aa2879ff8d3ad12fa461ceb6ad3c19eda99","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the current DragonFlow"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with DragonFlow SNAT"},{"line_number":18,"context_line":"the cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"},{"line_number":20,"context_line":"tenant therefore, sharing the same external IP."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [compute"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_e02ea741","line":20,"range":{"start_line":19,"start_character":61,"end_line":20,"end_character":16},"in_reply_to":"1a430d35_495f4d41","updated":"2017-02-09 02:21:44.000000000","message":"I still think it is better to change the description here. The OpenStack Neutron is still the main use case. And Dragonflow is under the OpenStack big tent. We should avoid description that is obvious not right for openstack.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"e2e2eeaff3d7ed371a1205c8e307a0ea63f75dd2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The main functionality difference between the current DragonFlow"},{"line_number":17,"context_line":"implementation of SNAT and \"Distributed SNAT\", is that with DragonFlow SNAT"},{"line_number":18,"context_line":"the cloud admin reserves a single external IP address (from a limited"},{"line_number":19,"context_line":"pre-allocated pool), which is used to masquerade multiple VMs of that same"},{"line_number":20,"context_line":"tenant therefore, sharing the same external IP."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"With the \"Distributed SNAT\" solution, in contrast, the cloud admin reserves an"},{"line_number":23,"context_line":"external IP address (from a limited pre-allocated pool) for every [compute"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_495f4d41","line":20,"range":{"start_line":19,"start_character":61,"end_line":20,"end_character":16},"in_reply_to":"1a430d35_83ae7683","updated":"2017-02-05 14:49:53.000000000","message":"Though your use case is correct technically, tenant separation is a more general deployment case which prevents blacklisting number of tenants that are hiding behind single external IP","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee7ed98714d57bef46e7e05162c7327ac4a13365","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Resources consumption"},{"line_number":144,"context_line":"---------------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Neutron SNAT implementation consumes number of external IPs equivalent to"},{"line_number":147,"context_line":"number of tenants + single address reserved for gateway on network node."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"We want to achieve a reasonably small external IP addresses use and at the"},{"line_number":150,"context_line":"same effort solve a connectivity bottleneck problem. Unfortunately it seems"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_c304fe7f","line":147,"range":{"start_line":146,"start_character":0,"end_line":147,"end_character":72},"updated":"2017-02-05 10:04:53.000000000","message":"Unlike the VPC concept, Neutron router can connect networks in multipile tenants, which means multiple tenants can share one address for router gateway port. Neutron router will prevent overlap cidr being added.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"b3df4aa2879ff8d3ad12fa461ceb6ad3c19eda99","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Resources consumption"},{"line_number":144,"context_line":"---------------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Neutron SNAT implementation consumes number of external IPs equivalent to"},{"line_number":147,"context_line":"number of tenants + single address reserved for gateway on network node."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"We want to achieve a reasonably small external IP addresses use and at the"},{"line_number":150,"context_line":"same effort solve a connectivity bottleneck problem. Unfortunately it seems"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_c0144bea","line":147,"range":{"start_line":146,"start_character":0,"end_line":147,"end_character":72},"in_reply_to":"1a430d35_0ca63310","updated":"2017-02-09 02:21:44.000000000","message":"sounds good","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"e2e2eeaff3d7ed371a1205c8e307a0ea63f75dd2","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Resources consumption"},{"line_number":144,"context_line":"---------------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Neutron SNAT implementation consumes number of external IPs equivalent to"},{"line_number":147,"context_line":"number of tenants + single address reserved for gateway on network node."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"We want to achieve a reasonably small external IP addresses use and at the"},{"line_number":150,"context_line":"same effort solve a connectivity bottleneck problem. Unfortunately it seems"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_0ca63310","line":147,"range":{"start_line":146,"start_character":0,"end_line":147,"end_character":72},"in_reply_to":"1a430d35_c304fe7f","updated":"2017-02-05 14:49:53.000000000","message":"I am describing here a maximal resource consumption. Mentioned case will indeed use less external IP addresses. So I will rephrase it to emphasize a maximum resource consumption analysis","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee7ed98714d57bef46e7e05162c7327ac4a13365","unresolved":false,"context_lines":[{"line_number":172,"context_line":"Single SNAT problem and workaround"},{"line_number":173,"context_line":"----------------------------------"},{"line_number":174,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. We want to"},{"line_number":175,"context_line":"achieve this with a single address translation. However general deployment"},{"line_number":176,"context_line":"scenario where different tenant may have same private subnets leave us a"},{"line_number":177,"context_line":"tangible possibility of exactly same 4-tuple (IP1, port1, IP2, port2)"},{"line_number":178,"context_line":"produced by different tenant VMs. 4-tuple collision makes it impossible"},{"line_number":179,"context_line":"to pass single zone connection tracking correcly."},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_83f3d69d","line":177,"range":{"start_line":175,"start_character":48,"end_line":177,"end_character":69},"updated":"2017-02-05 10:04:53.000000000","message":"The same problem may happen within one tenant. You can define 2 networks with same cidr in one tenant.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"e2e2eeaff3d7ed371a1205c8e307a0ea63f75dd2","unresolved":false,"context_lines":[{"line_number":172,"context_line":"Single SNAT problem and workaround"},{"line_number":173,"context_line":"----------------------------------"},{"line_number":174,"context_line":"\"Distributed SNAT\" results a single external IP per compute node. We want to"},{"line_number":175,"context_line":"achieve this with a single address translation. However general deployment"},{"line_number":176,"context_line":"scenario where different tenant may have same private subnets leave us a"},{"line_number":177,"context_line":"tangible possibility of exactly same 4-tuple (IP1, port1, IP2, port2)"},{"line_number":178,"context_line":"produced by different tenant VMs. 4-tuple collision makes it impossible"},{"line_number":179,"context_line":"to pass single zone connection tracking correcly."},{"line_number":180,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_ec856759","line":177,"range":{"start_line":175,"start_character":48,"end_line":177,"end_character":69},"in_reply_to":"1a430d35_83f3d69d","updated":"2017-02-05 14:49:53.000000000","message":"Agree","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0c95b80e5e524551250249dbb838e40643ba62a0","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Compute node local configuration"},{"line_number":279,"context_line":"--------------------------------"},{"line_number":280,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":15,"id":"5a3905b3_88c9d428","line":280,"range":{"start_line":280,"start_character":2,"end_line":280,"end_character":9},"updated":"2017-01-23 03:16:17.000000000","message":"suggest using snat_ip or external_ip.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":24229,"name":"Igor Shafran","email":"igor.shafran@toganetworks.com","username":"ishafran"},"change_message_id":"e2e2eeaff3d7ed371a1205c8e307a0ea63f75dd2","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Compute node local configuration"},{"line_number":279,"context_line":"--------------------------------"},{"line_number":280,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_ac8c3f80","line":280,"range":{"start_line":280,"start_character":2,"end_line":280,"end_character":9},"in_reply_to":"1a430d35_03360652","updated":"2017-02-05 14:49:53.000000000","message":"agree. \nBTW latest implementation is using \u0027external_host_ip\u0027 name","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"ee7ed98714d57bef46e7e05162c7327ac4a13365","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Compute node local configuration"},{"line_number":279,"context_line":"--------------------------------"},{"line_number":280,"context_line":"- host_ip          - static external IP to be used by \"Distributed SNAT\""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a430d35_03360652","line":280,"range":{"start_line":280,"start_character":2,"end_line":280,"end_character":9},"in_reply_to":"5a3905b3_88c9d428","updated":"2017-02-05 10:04:53.000000000","message":"I would suggest using external_ip, as it designates an ip address in the \"external\" network.","commit_id":"33b4dee4f698576e2f51280e21c46d2fba0162db"}],"doc/source/specs/index.rst":[{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"bd7f3a765a14f8149ae37fbcb2911c3fdd26c526","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":"    distributed_snat"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e 216d048... Distributed SNAT spec"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Templates"},{"line_number":66,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a71b18c_68550bc5","line":63,"updated":"2016-12-01 09:02:19.000000000","message":"not delete conflict code","commit_id":"6930ca25a642fc41f1be111f7adab1943544c2b5"}]}
