)]}'
{"specs/version1.1/udp_support.rst":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Problem description"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"Currently, the default driver of Octavia haproxy only support TCP, HTTP, HTTPS,"},{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_09d589b9","line":15,"updated":"2017-11-14 19:10:51.000000000","message":"support FOR the load balanceR on THE UDP","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Problem description"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":"Currently, the default driver of Octavia haproxy only support TCP, HTTP, HTTPS,"},{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_ca8635dc","line":15,"in_reply_to":"1f485f77_09d589b9","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Currently, the default driver of Octavia haproxy only support TCP, HTTP, HTTPS,"},{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_c98411b4","line":17,"updated":"2017-11-14 19:10:51.000000000","message":"For some public cloud cases the requirement for UDP support is useful..","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Currently, the default driver of Octavia haproxy only support TCP, HTTP, HTTPS,"},{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_aa6d3933","line":17,"in_reply_to":"1f485f77_c98411b4","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_296e0501","line":18,"updated":"2017-11-14 19:10:51.000000000","message":"I don\u0027t understand what this means: \"applications which own real-time characteristics\" -- you can achieve the same with web sockets, etc.  -- UDP is mostly used to keep the protocol overhead low and improve latency.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":15,"context_line":"TERMINATED_HTTPS. We need support the load balance based on UDP protocol."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For some cases, also in the public cloud, the requirement of UDP protocol"},{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_6a50615e","line":18,"in_reply_to":"1f485f77_296e0501","updated":"2017-11-15 03:33:19.000000000","message":"Thanks very much, German. Here I want to say the applications like real-time video/chat which based on some real-time protocols. I will reword here.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"},{"line_number":22,"context_line":"UDP as their transmission protocol. Such as CoAP(Constrained Application"},{"line_number":23,"context_line":"Protocol), DDS(Data Distribution Service) for Real-Time systems, also the"},{"line_number":24,"context_line":"introduction protocol Thread for IoT."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_49502133","line":21,"updated":"2017-11-14 19:10:51.000000000","message":"applications THAT use; remove \"the\"","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":18,"context_line":"support is eager, such as the applications which own the real-time"},{"line_number":19,"context_line":"characteristics."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"},{"line_number":22,"context_line":"UDP as their transmission protocol. Such as CoAP(Constrained Application"},{"line_number":23,"context_line":"Protocol), DDS(Data Distribution Service) for Real-Time systems, also the"},{"line_number":24,"context_line":"introduction protocol Thread for IoT."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_0acb2d1e","line":21,"in_reply_to":"1f485f77_49502133","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"},{"line_number":22,"context_line":"UDP as their transmission protocol. Such as CoAP(Constrained Application"},{"line_number":23,"context_line":"Protocol), DDS(Data Distribution Service) for Real-Time systems, also the"},{"line_number":24,"context_line":"introduction protocol Thread for IoT."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"For the applications of high requests for Real-Time, video chatting, run on"},{"line_number":27,"context_line":"RDUP(Reliable User Datagram Protocol), RTP(RealTime Protocol) and UDT(UDP-based"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_a92f959f","line":24,"updated":"2017-11-14 19:10:51.000000000","message":"please add references for those protocols to the reference sections since many readers might be unfamiliar with them","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":21,"context_line":"For IoT(Internet of Things), there are many services or applications use the"},{"line_number":22,"context_line":"UDP as their transmission protocol. Such as CoAP(Constrained Application"},{"line_number":23,"context_line":"Protocol), DDS(Data Distribution Service) for Real-Time systems, also the"},{"line_number":24,"context_line":"introduction protocol Thread for IoT."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"For the applications of high requests for Real-Time, video chatting, run on"},{"line_number":27,"context_line":"RDUP(Reliable User Datagram Protocol), RTP(RealTime Protocol) and UDT(UDP-based"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_aa04194b","line":24,"in_reply_to":"1f485f77_a92f959f","updated":"2017-11-15 03:33:19.000000000","message":"OK. I will add them in the next patch.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This may need a new load balance engine for support this feature, as current"},{"line_number":41,"context_line":"haproxy support the complex L7 layer HTTP load balance, which running on TCP."},{"line_number":42,"context_line":"If user want a load balancer which both support TCP and UDP, it can not meet"},{"line_number":43,"context_line":"by launching haproxy-based amphorae instances. It\u0027s the good time to extend"},{"line_number":44,"context_line":"octavia to support more load balance scenarios. Then this spec will introduce"},{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_a908b52b","line":42,"updated":"2017-11-14 19:10:51.000000000","message":"userS want a load balancer  which supports both, TCP and UDP, this need cannot be met","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This may need a new load balance engine for support this feature, as current"},{"line_number":41,"context_line":"haproxy support the complex L7 layer HTTP load balance, which running on TCP."},{"line_number":42,"context_line":"If user want a load balancer which both support TCP and UDP, it can not meet"},{"line_number":43,"context_line":"by launching haproxy-based amphorae instances. It\u0027s the good time to extend"},{"line_number":44,"context_line":"octavia to support more load balance scenarios. Then this spec will introduce"},{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_6afe2138","line":42,"in_reply_to":"1f485f77_a908b52b","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"If user want a load balancer which both support TCP and UDP, it can not meet"},{"line_number":43,"context_line":"by launching haproxy-based amphorae instances. It\u0027s the good time to extend"},{"line_number":44,"context_line":"octavia to support more load balance scenarios. Then this spec will introduce"},{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_442c8898","line":45,"updated":"2017-11-14 19:10:51.000000000","message":"you mean LVS works alongside haproxy or do you need both at the same time?\n\nAlso why are we choosing LVS?","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":42,"context_line":"If user want a load balancer which both support TCP and UDP, it can not meet"},{"line_number":43,"context_line":"by launching haproxy-based amphorae instances. It\u0027s the good time to extend"},{"line_number":44,"context_line":"octavia to support more load balance scenarios. Then this spec will introduce"},{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_9504de4b","line":45,"in_reply_to":"1f485f77_442c8898","updated":"2017-11-15 03:33:19.000000000","message":"Yeah, we can support tcp and udp in the same loadbalancer. For the second question, I think it may cause that LVS contains high performance and stable in L4 layer. And we can integrate it with exist keepalived.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"},{"line_number":49,"context_line":"``ipvsadm`` into the same namespace for UDP cases. They can work as wish in the"},{"line_number":50,"context_line":"simple deployment mode, such as STANDALONE or ACTIVE/STANDBY topologies."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_4451280e","line":48,"updated":"2017-11-14 19:10:51.000000000","message":"in an amphora instance","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":45,"context_line":"how the LVS can work with haproxy for UDP loadbalancer."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"},{"line_number":49,"context_line":"``ipvsadm`` into the same namespace for UDP cases. They can work as wish in the"},{"line_number":50,"context_line":"simple deployment mode, such as STANDALONE or ACTIVE/STANDBY topologies."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_1596aef1","line":48,"in_reply_to":"1f485f77_4451280e","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"},{"line_number":49,"context_line":"``ipvsadm`` into the same namespace for UDP cases. They can work as wish in the"},{"line_number":50,"context_line":"simple deployment mode, such as STANDALONE or ACTIVE/STANDBY topologies."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The workflow about this feature contains:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_e441343b","line":49,"updated":"2017-11-14 19:10:51.000000000","message":"please reference the corresponding patch we have in development","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For the currently service VM driver implementation, the haproxy runs in the"},{"line_number":48,"context_line":"loadbalancer namespace in amp instance. So we also need to intro the"},{"line_number":49,"context_line":"``ipvsadm`` into the same namespace for UDP cases. They can work as wish in the"},{"line_number":50,"context_line":"simple deployment mode, such as STANDALONE or ACTIVE/STANDBY topologies."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The workflow about this feature contains:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_95897ecb","line":49,"in_reply_to":"1f485f77_e441343b","updated":"2017-11-15 03:33:19.000000000","message":"OK, I will add them in the end of spec.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The workflow about this feature contains:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"1. Extend the ``ipvsadm`` into exist amphora image."},{"line_number":55,"context_line":"2. Extend the ability of amphora agent to run the LVS CLI in amphora instances."},{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_649c24c0","line":54,"updated":"2017-11-14 19:10:51.000000000","message":"see patch  https://review.openstack.org/#/c/499807/\n\nthough my understanding is that you cna control lvs through keepalived and don\u0027t need ipvsadm...","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The workflow about this feature contains:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"1. Extend the ``ipvsadm`` into exist amphora image."},{"line_number":55,"context_line":"2. Extend the ability of amphora agent to run the LVS CLI in amphora instances."},{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_7584c2b1","line":54,"in_reply_to":"1f485f77_649c24c0","updated":"2017-11-15 03:33:19.000000000","message":"Yeah, this is my fault. will update.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"The workflow about this feature contains:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"1. Extend the ``ipvsadm`` into exist amphora image."},{"line_number":55,"context_line":"2. Extend the ability of amphora agent to run the LVS CLI in amphora instances."},{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."},{"line_number":58,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_04821050","line":55,"updated":"2017-11-14 19:10:51.000000000","message":"Please explain why we can\u0027t use the keepalived template. See for instance https://review.openstack.org/#/c/505770/ how ipvsadm is solely used to gather diagnostic info / for debugging","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":52,"context_line":"The workflow about this feature contains:"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"1. Extend the ``ipvsadm`` into exist amphora image."},{"line_number":55,"context_line":"2. Extend the ability of amphora agent to run the LVS CLI in amphora instances."},{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."},{"line_number":58,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_95773ed5","line":55,"in_reply_to":"1f485f77_04821050","updated":"2017-11-15 03:33:19.000000000","message":"sorry, will update point 1\u00262. I had wrote a simple keepalived jinja template for LVS. It\u0027s my fault.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."},{"line_number":58,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":59,"context_line":"   particular topologies."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"For [1], that is the main idea for this feature, use ``keepalived`` to manage"},{"line_number":62,"context_line":"the LVS and its configuration, so there is a difference with general"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_848de07c","line":59,"updated":"2017-11-14 19:10:51.000000000","message":"Please break this more down.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":56,"context_line":"3. Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":57,"context_line":"   resource."},{"line_number":58,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":59,"context_line":"   particular topologies."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"For [1], that is the main idea for this feature, use ``keepalived`` to manage"},{"line_number":62,"context_line":"the LVS and its configuration, so there is a difference with general"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_d546d67c","line":59,"in_reply_to":"1f485f77_848de07c","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"------------"},{"line_number":69,"context_line":"Intro a new UDP driver based on LVS or other Loadbalancer engines. Then find a"},{"line_number":70,"context_line":"way to fix the gap of the current Octavia data models which have a strong"},{"line_number":71,"context_line":"relationship with haproxy in Lay 7."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Provide a new driver provider framework to change the amphorae backends from"},{"line_number":74,"context_line":"haproxy to LVS, but we just can support the simple L7 functions with LVS, it\u0027s"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_e4c6d49a","line":71,"updated":"2017-11-14 19:10:51.000000000","message":"The at a models also support other (non-)haproxy load balancers like F5, etc. -- please revise.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":68,"context_line":"------------"},{"line_number":69,"context_line":"Intro a new UDP driver based on LVS or other Loadbalancer engines. Then find a"},{"line_number":70,"context_line":"way to fix the gap of the current Octavia data models which have a strong"},{"line_number":71,"context_line":"relationship with haproxy in Lay 7."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Provide a new driver provider framework to change the amphorae backends from"},{"line_number":74,"context_line":"haproxy to LVS, but we just can support the simple L7 functions with LVS, it\u0027s"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_b5491a8c","line":71,"in_reply_to":"1f485f77_e4c6d49a","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"ones. So if possible, we need limit the API for not support fields/resources if"},{"line_number":77,"context_line":"the backend driver is LVS, such as \"insert_headers\" in Listener, L7Policies,"},{"line_number":78,"context_line":"L7Rules and etc, a series fields/resources of related to L7 layer."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Combine with the 2 load balance engines, LVS only support the L4 layer LB, and"},{"line_number":81,"context_line":"haproxy/f5/nginx provide the L7 layer LB which is more specific and detailed."},{"line_number":82,"context_line":"Then Octavia may support more powerful and complex solution about LoadBalancer"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_245bccf7","line":79,"updated":"2017-11-14 19:10:51.000000000","message":"This would be the case for any UDP load balancer -- please generalize this since we might support other load balancers than LVS for UDP.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":76,"context_line":"ones. So if possible, we need limit the API for not support fields/resources if"},{"line_number":77,"context_line":"the backend driver is LVS, such as \"insert_headers\" in Listener, L7Policies,"},{"line_number":78,"context_line":"L7Rules and etc, a series fields/resources of related to L7 layer."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Combine with the 2 load balance engines, LVS only support the L4 layer LB, and"},{"line_number":81,"context_line":"haproxy/f5/nginx provide the L7 layer LB which is more specific and detailed."},{"line_number":82,"context_line":"Then Octavia may support more powerful and complex solution about LoadBalancer"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_552f86a0","line":79,"in_reply_to":"1f485f77_245bccf7","updated":"2017-11-15 03:33:19.000000000","message":"Done","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"L7Rules and etc, a series fields/resources of related to L7 layer."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Combine with the 2 load balance engines, LVS only support the L4 layer LB, and"},{"line_number":81,"context_line":"haproxy/f5/nginx provide the L7 layer LB which is more specific and detailed."},{"line_number":82,"context_line":"Then Octavia may support more powerful and complex solution about LoadBalancer"},{"line_number":83,"context_line":"Services."},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_a46e9c92","line":81,"updated":"2017-11-14 19:10:51.000000000","message":"f5, nginx both also support UDP","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":78,"context_line":"L7Rules and etc, a series fields/resources of related to L7 layer."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Combine with the 2 load balance engines, LVS only support the L4 layer LB, and"},{"line_number":81,"context_line":"haproxy/f5/nginx provide the L7 layer LB which is more specific and detailed."},{"line_number":82,"context_line":"Then Octavia may support more powerful and complex solution about LoadBalancer"},{"line_number":83,"context_line":"Services."},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_f53432fd","line":81,"in_reply_to":"1f485f77_a46e9c92","updated":"2017-11-15 03:33:19.000000000","message":"Yeah, but it is necessary to intro nginx, it\u0027s a very \u0027big\u0027 software.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"},{"line_number":135,"context_line":"The security should be affected by the UDP server, we need to open anther"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_e4e7f411","line":132,"updated":"2017-11-14 19:10:51.000000000","message":"I would expect the validation part to make sure that only UDP specific fields can be set and make sense. So please add this as a Note.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"},{"line_number":135,"context_line":"The security should be affected by the UDP server, we need to open anther"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_f51d5273","line":132,"in_reply_to":"1f485f77_e4e7f411","updated":"2017-11-15 03:33:19.000000000","message":"Yeah, thanks for suggest. I will add it.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"ecd17113c558b00ebafd7ba3e9c20f3ef5ed5bd1","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"},{"line_number":135,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":136,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_c479982f","line":135,"updated":"2017-11-14 19:10:51.000000000","message":"We already do that for TCP...\n\nWhat about the security impact of running LVS which runs in the kernel and I am not sure if we can scope that to the namespace...","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"76473cd37e0bc610a30a827ef564b4368d1ff651","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Security impact"},{"line_number":134,"context_line":"---------------"},{"line_number":135,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":136,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Notifications impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f485f77_50e79441","line":135,"in_reply_to":"1f485f77_c479982f","updated":"2017-11-15 03:33:19.000000000","message":"Yeah, the exist lb-sg contains the TCP part. Here I mean need extend the lb-sg to let UDP traffic can arrive in the amp instances. Don\u0027t we run the keepalive into the haproxy namespace? Currently, I have no idea about this security impact. I can try to find and share if I find something.","commit_id":"b2e86c3dc194de1f4c32b32772d285ac0baecc89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":55,"context_line":"configured by ``keepalived`` could work as wish."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"For [1], that is the main idea for this feature, use ``keepalived`` to manage"},{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_3da0b6f4","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":10},"updated":"2017-11-22 00:33:22.000000000","message":"We should talk about the supported LVS mode here too.  I think initially we should only support the NAT mode.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"configured by ``keepalived`` could work as wish."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"For [1], that is the main idea for this feature, use ``keepalived`` to manage"},{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_94fb1f45","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":10},"in_reply_to":"ff82abbf_269cde68","updated":"2017-11-30 05:38:52.000000000","message":"Mostly I want to call out here that we are only supporting NAT mode and not the other options.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"configured by ``keepalived`` could work as wish."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"For [1], that is the main idea for this feature, use ``keepalived`` to manage"},{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_269cde68","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":10},"in_reply_to":"ff82abbf_3da0b6f4","updated":"2017-11-24 10:55:12.000000000","message":"OK, will add the correspond contents here. Micheal, do you mean that we could support more mode after finish ACTIVE-ACTIVE mode integrate with LVS?","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. note:: Currently, Octavia guys willing to intro LVS into ACTIVE-ACTIVE"},{"line_number":64,"context_line":"          topology, this spec described may be difference, just for the simple"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_7d515ed8","line":61,"updated":"2017-11-22 00:33:22.000000000","message":"Please add that each listener will have it\u0027s own keepalived instance/process.  This minimizes the impact of reconfiguration to the listener being updated. We also need to be mindful of the keepalived sync port when running multiple instances and with the active/standby implementation.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. note:: Currently, Octavia guys willing to intro LVS into ACTIVE-ACTIVE"},{"line_number":64,"context_line":"          topology, this spec described may be difference, just for the simple"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_d48a07bd","line":61,"in_reply_to":"ff82abbf_017d047e","updated":"2017-11-30 05:38:52.000000000","message":"The issue is if you update the configuration of one UDP load balancer you do not want restart the other UDP load balancers.  We can only restart one keepalived per UDP load balancer.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"the LVS and its configuration, so there is a difference with general"},{"line_number":59,"context_line":"``haproxy`` case, as we need to check the real servers status with"},{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. note:: Currently, Octavia guys willing to intro LVS into ACTIVE-ACTIVE"},{"line_number":64,"context_line":"          topology, this spec described may be difference, just for the simple"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_017d047e","line":61,"in_reply_to":"ff82abbf_7d515ed8","updated":"2017-11-24 10:55:12.000000000","message":"Agree with mini impact the listener reconfiguration update. But I\u0027m not sure whether keepalived process for each udp listener may bring the performance issue.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. note:: Currently, Octavia guys willing to intro LVS into ACTIVE-ACTIVE"},{"line_number":64,"context_line":"          topology, this spec described may be difference, just for the simple"},{"line_number":65,"context_line":"          topologies, SINGLE and ACTIVE-STANDBY. So there may be some conflicts"},{"line_number":66,"context_line":"          with Octavia team does. Like the patch [8][9][10]."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The workflow about this feature contains:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_02ef8d84","line":66,"range":{"start_line":63,"start_character":0,"end_line":66,"end_character":60},"updated":"2017-11-22 00:33:22.000000000","message":"Let\u0027s not bring the act/act into this.  I would remove this note and the references","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":".. note:: Currently, Octavia guys willing to intro LVS into ACTIVE-ACTIVE"},{"line_number":64,"context_line":"          topology, this spec described may be difference, just for the simple"},{"line_number":65,"context_line":"          topologies, SINGLE and ACTIVE-STANDBY. So there may be some conflicts"},{"line_number":66,"context_line":"          with Octavia team does. Like the patch [8][9][10]."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The workflow about this feature contains:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_616bb0b6","line":66,"range":{"start_line":63,"start_character":0,"end_line":66,"end_character":60},"in_reply_to":"ff82abbf_02ef8d84","updated":"2017-11-24 10:55:12.000000000","message":"Will remove. Thanks","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":74,"context_line":"   resource."},{"line_number":75,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":76,"context_line":"   particular topologies."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"},{"line_number":79,"context_line":"------------"},{"line_number":80,"context_line":"Intro a new UDP driver based on LVS or other Loadbalancer engines. Then find a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_822b9d92","line":77,"updated":"2017-11-22 00:33:22.000000000","message":"We also need to update the database to allow listeners to support both tcp and udp on the same port.\nAdd UDP as a valid protocol in the database.\nEnhance the session persistence to work with UDP and enabled/disable the \u0027One-Packet-Scheduling\u0027 setting.\nSetup validation code for supported features of UDP load balancing (types of session persistence, types of health monitors, load balancing algorithms, no l7 policies, etc.)","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"   resource."},{"line_number":75,"context_line":"4. Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":76,"context_line":"   particular topologies."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"},{"line_number":79,"context_line":"------------"},{"line_number":80,"context_line":"Intro a new UDP driver based on LVS or other Loadbalancer engines. Then find a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_2c1fdfb7","line":77,"in_reply_to":"ff82abbf_822b9d92","updated":"2017-11-24 10:55:12.000000000","message":"Thanks for suggestion. Yeah, I can add \u0027ops\u0027 in keepalived conf. Health check here, i want to use MISC_CHECK which based on \u0027nc\u0027 command for check the real sever port is open. I will try to rich the contents and details about you mentioned.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                       PROTOCOL_TERMINATED_HTTPS, PROTOCOL_PROXY, PROTOCOL_UDP)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Also add a record into the table ``protocol`` for ``PROTOCOL_UDP``."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"},{"line_number":114,"context_line":"---------------"},{"line_number":115,"context_line":"No new field introduced, just extend the ``protocol`` field to accept ``udp``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_c20a0525","line":112,"updated":"2017-11-22 00:33:22.000000000","message":"Session persistence will need adjustment.  Maybe health monitor if you add a DNS specific health check.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                       PROTOCOL_TERMINATED_HTTPS, PROTOCOL_PROXY, PROTOCOL_UDP)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Also add a record into the table ``protocol`` for ``PROTOCOL_UDP``."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"REST API impact"},{"line_number":114,"context_line":"---------------"},{"line_number":115,"context_line":"No new field introduced, just extend the ``protocol`` field to accept ``udp``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_e73830a1","line":112,"in_reply_to":"ff82abbf_c20a0525","updated":"2017-11-24 10:55:12.000000000","message":"True, add option:\npersistence_timeout \npersistence_granularity\n\nThank you","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":".. note:: There is a limitation about ``listener`` resource, in current"},{"line_number":133,"context_line":"          Octavia 1 ``listener`` can associate several ``pool`` resources."},{"line_number":134,"context_line":"          But for this spec, the ``keepalived`` only support 1 ``pool`` during"},{"line_number":135,"context_line":"          configure LVS staff. So if a ``listener`` listen UDP, just support 1"},{"line_number":136,"context_line":"          ``pool`` resource."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Create/Update Pool Request::"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_fd824e4f","line":136,"range":{"start_line":132,"start_character":0,"end_line":136,"end_character":28},"updated":"2017-11-22 00:33:22.000000000","message":"No, a listener in octavia can have zero or one pool.  There is no support of multiple pools on a listener.  You can create multiple pools on a load balancer that would be used for l7policies.  This would not be allowed as l7policies are not allowed with UDP.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        }"},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":".. note:: There is a limitation about ``listener`` resource, in current"},{"line_number":133,"context_line":"          Octavia 1 ``listener`` can associate several ``pool`` resources."},{"line_number":134,"context_line":"          But for this spec, the ``keepalived`` only support 1 ``pool`` during"},{"line_number":135,"context_line":"          configure LVS staff. So if a ``listener`` listen UDP, just support 1"},{"line_number":136,"context_line":"          ``pool`` resource."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Create/Update Pool Request::"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_a725485e","line":136,"range":{"start_line":132,"start_character":0,"end_line":136,"end_character":28},"in_reply_to":"ff82abbf_fd824e4f","updated":"2017-11-24 10:55:12.000000000","message":"Thanks for correct. I will add it, after next patch, please help to check as I\u0027m not sure about that. Thank you","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            \"lb_algorithm\": \"ROUND_ROBIN\","},{"line_number":147,"context_line":"            \"name\": \"my-pool\","},{"line_number":148,"context_line":"            \"protocol\": \"UDP\","},{"line_number":149,"context_line":"            \"subnet_id\": \"e301aed0-d9e7-498a-977c-1bbfaf14ed5d\""},{"line_number":150,"context_line":"            \"listener_id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\","},{"line_number":151,"context_line":"        }"},{"line_number":152,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_ddf2ea06","line":149,"range":{"start_line":149,"start_character":0,"end_line":149,"end_character":63},"updated":"2017-11-22 00:33:22.000000000","message":"Pools do not have subnets. Please see the API reference:\nhttps://developer.openstack.org/api-ref/load-balancer/v2/index.html#show-pool-details","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            \"lb_algorithm\": \"ROUND_ROBIN\","},{"line_number":147,"context_line":"            \"name\": \"my-pool\","},{"line_number":148,"context_line":"            \"protocol\": \"UDP\","},{"line_number":149,"context_line":"            \"subnet_id\": \"e301aed0-d9e7-498a-977c-1bbfaf14ed5d\""},{"line_number":150,"context_line":"            \"listener_id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\","},{"line_number":151,"context_line":"        }"},{"line_number":152,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_27193821","line":149,"range":{"start_line":149,"start_character":0,"end_line":149,"end_character":63},"in_reply_to":"ff82abbf_ddf2ea06","updated":"2017-11-24 10:55:12.000000000","message":"Sorry, it\u0027s my mistake. Will update.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":160,"context_line":"---------------"},{"line_number":161,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":162,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":163,"context_line":"Security impact about the LVS which runs in the kernel: TBD."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Notifications impact"},{"line_number":166,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_7dbcfe04","line":163,"updated":"2017-11-22 00:33:22.000000000","message":"I would also mention here that the security impact is minimal as the keepalived/LVS will be running in the tenant traffic network namespace","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":160,"context_line":"---------------"},{"line_number":161,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":162,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":163,"context_line":"Security impact about the LVS which runs in the kernel: TBD."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Notifications impact"},{"line_number":166,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_47eb1cdb","line":163,"in_reply_to":"ff82abbf_7dbcfe04","updated":"2017-11-24 10:55:12.000000000","message":"Thanks for answering the question we not sure.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Work Items"},{"line_number":200,"context_line":"----------"},{"line_number":201,"context_line":"* Intro a new ``keepalived`` jinja template for LVS."},{"line_number":202,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":203,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":204,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_5d6d7a96","line":201,"range":{"start_line":201,"start_character":2,"end_line":201,"end_character":52},"updated":"2017-11-22 00:33:22.000000000","message":"Add/extend startup script templates for keepalived processes.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Work Items"},{"line_number":200,"context_line":"----------"},{"line_number":201,"context_line":"* Intro a new ``keepalived`` jinja template for LVS."},{"line_number":202,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":203,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":204,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_a7b3080a","line":201,"range":{"start_line":201,"start_character":2,"end_line":201,"end_character":52},"in_reply_to":"ff82abbf_5d6d7a96","updated":"2017-11-24 10:55:12.000000000","message":"Done","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":201,"context_line":"* Intro a new ``keepalived`` jinja template for LVS."},{"line_number":202,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":203,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":204,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":205,"context_line":"  resource."},{"line_number":206,"context_line":"* Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":207,"context_line":"  particular topologies."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_1d6052a5","line":204,"range":{"start_line":204,"start_character":66,"end_line":204,"end_character":77},"updated":"2017-11-22 00:33:22.000000000","message":"And pool","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":201,"context_line":"* Intro a new ``keepalived`` jinja template for LVS."},{"line_number":202,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":203,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":204,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":205,"context_line":"  resource."},{"line_number":206,"context_line":"* Extend the Loadbalancer/Listener workflow to support udp loadbalancer in the"},{"line_number":207,"context_line":"  particular topologies."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_67d18023","line":204,"range":{"start_line":204,"start_character":66,"end_line":204,"end_character":77},"in_reply_to":"ff82abbf_1d6052a5","updated":"2017-11-24 10:55:12.000000000","message":"Done","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":211,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":212,"context_line":"* Add UTs to Octavia."},{"line_number":213,"context_line":"* Add API tests."},{"line_number":214,"context_line":"* Update CLI to support UDP fields input."},{"line_number":215,"context_line":"* Documentation work."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_3d6516b6","line":214,"range":{"start_line":214,"start_character":2,"end_line":214,"end_character":14},"updated":"2017-11-22 00:33:22.000000000","message":"And octavia-dashboard (horizon GUI)","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":212,"context_line":"* Add UTs to Octavia."},{"line_number":213,"context_line":"* Add API tests."},{"line_number":214,"context_line":"* Update CLI to support UDP fields input."},{"line_number":215,"context_line":"* Documentation work."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_87ce0480","line":214,"range":{"start_line":214,"start_character":2,"end_line":214,"end_character":14},"in_reply_to":"ff82abbf_3d6516b6","updated":"2017-11-24 10:55:12.000000000","message":"Done","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e92149b3c866b5d29e738ee1814063a1c9feb474","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Documentation Impact"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":227,"context_line":"The description of Octavia API reference will need to be updated."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"References"},{"line_number":230,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_1d05b2c2","line":227,"range":{"start_line":227,"start_character":57,"end_line":227,"end_character":65},"updated":"2017-11-22 00:33:22.000000000","message":"The load balancing cookbook should also be updated.","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"9dd39fff3748cb9be4f8c98452289d28668769b2","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Documentation Impact"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":227,"context_line":"The description of Octavia API reference will need to be updated."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"References"},{"line_number":230,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_47c47c5f","line":227,"range":{"start_line":227,"start_character":57,"end_line":227,"end_character":65},"in_reply_to":"ff82abbf_1d05b2c2","updated":"2017-11-24 10:55:12.000000000","message":"Done","commit_id":"f738f6dcb2ea9ade73429a57e224566773c5bf03"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies. Also we can configure LVS with NAT"},{"line_number":62,"context_line":"mode, for simple implementation, we just support this mode, if possible will"},{"line_number":63,"context_line":"add other modes in the future for SINGLE and ACTIVE-STANDBY topologies."},{"line_number":64,"context_line":"Currently, a single ``keepalived`` instance can support mutil virtual server"},{"line_number":65,"context_line":"configuration, but for the minimal impact of reconfiguration to the exist"},{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_cf4cb043","line":63,"range":{"start_line":63,"start_character":30,"end_line":63,"end_character":71},"updated":"2017-11-30 05:38:52.000000000","message":"These topologies don\u0027t matter with this setting.  Just delete this part.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow in"},{"line_number":61,"context_line":"Octavia resources and deployment topologies. Also we can configure LVS with NAT"},{"line_number":62,"context_line":"mode, for simple implementation, we just support this mode, if possible will"},{"line_number":63,"context_line":"add other modes in the future for SINGLE and ACTIVE-STANDBY topologies."},{"line_number":64,"context_line":"Currently, a single ``keepalived`` instance can support mutil virtual server"},{"line_number":65,"context_line":"configuration, but for the minimal impact of reconfiguration to the exist"},{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8abd3603","line":63,"range":{"start_line":63,"start_character":30,"end_line":63,"end_character":71},"in_reply_to":"ff82abbf_cf4cb043","updated":"2017-11-30 07:11:12.000000000","message":"Done","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"mode, for simple implementation, we just support this mode, if possible will"},{"line_number":63,"context_line":"add other modes in the future for SINGLE and ACTIVE-STANDBY topologies."},{"line_number":64,"context_line":"Currently, a single ``keepalived`` instance can support mutil virtual server"},{"line_number":65,"context_line":"configuration, but for the minimal impact of reconfiguration to the exist"},{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8f5228dd","line":65,"range":{"start_line":65,"start_character":68,"end_line":65,"end_character":73},"updated":"2017-11-30 05:38:52.000000000","message":"existing","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"mode, for simple implementation, we just support this mode, if possible will"},{"line_number":63,"context_line":"add other modes in the future for SINGLE and ACTIVE-STANDBY topologies."},{"line_number":64,"context_line":"Currently, a single ``keepalived`` instance can support mutil virtual server"},{"line_number":65,"context_line":"configuration, but for the minimal impact of reconfiguration to the exist"},{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_4a396ea1","line":65,"range":{"start_line":65,"start_character":68,"end_line":65,"end_character":73},"in_reply_to":"ff82abbf_8f5228dd","updated":"2017-11-30 07:11:12.000000000","message":"Done","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"},{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"},{"line_number":70,"context_line":"process won\u0027t contain VRRP instance, just the configuration of virtual server"},{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_af4dac3b","line":70,"range":{"start_line":69,"start_character":69,"end_line":70,"end_character":35},"updated":"2017-11-30 05:38:52.000000000","message":"It will for active/standby topology.\nWe should support active/standby HA for UDP as well.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"99deeab8cf5c1d986f36f306265d9322a11c9885","unresolved":false,"context_lines":[{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"},{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"},{"line_number":70,"context_line":"process won\u0027t contain VRRP instance, just the configuration of virtual server"},{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_bf7ce5eb","line":70,"range":{"start_line":69,"start_character":69,"end_line":70,"end_character":35},"in_reply_to":"ff82abbf_8ac3f637","updated":"2017-11-30 22:25:10.000000000","message":"Right, I was thinking about this wrong.  I follow now.\n\nWe should add that each UDP keepalived will add it\u0027s check script to the main VRRP keepalived check script directory (https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/util.py#L100)\nThis way if the UDP keepalived fails, it means the VIP has a shared fate with the UDP load balancers.\nThis is not the UDP health check of the member, but a health check of the UDP keepalived process.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"},{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"},{"line_number":70,"context_line":"process won\u0027t contain VRRP instance, just the configuration of virtual server"},{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8ac3f637","line":70,"range":{"start_line":69,"start_character":69,"end_line":70,"end_character":35},"in_reply_to":"ff82abbf_af4dac3b","updated":"2017-11-30 07:11:12.000000000","message":"Yeah. what I mentioned here is that the new keepalived lvs jinja template just care about the virtual server part, for active/standby topology, it could be multiple listener about UDP, each listener(and pool) keepalived configuration like:\n\nGlobal configuration\n\n\n  virtual server XX XX{\n     real server YY YY{}\n     real server ZZ ZZ{}\n}\n\neach keepalived process for a listener not contain vrrp configuration part. For the HA we should setup 1 keepalived process to maintain the role of amphorae instances, so I think the exist keepalived process should work for UDP either. So the whole counts of keepalived process should be N(UDP listener counts) + 1(the current Keepalived process for HA). \n\nwhy use the exist keepalived process? \nI think that the most part configuration is same as haproxy case. So it may be in trouble if config multiple keepalived processes in a ACTIVE/STANDBY case, because each of them can send garp to the whole Lay 2, and it is possible to send different mac for the same VIP IP address if I kill one keepalived process even though the vrrp group/instance is different. This should be risk for refreshing the ToR FDB.\nSo I think a single keepalived process for HA, that\u0027s the exist one.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"7005810c2fc9c6ff8af34359744ebb4b0ac4774c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration file"},{"line_number":67,"context_line":"and restart the instances, that means all listener traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"},{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"},{"line_number":70,"context_line":"process won\u0027t contain VRRP instance, just the configuration of virtual server"},{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_cd933c00","line":70,"range":{"start_line":69,"start_character":69,"end_line":70,"end_character":35},"in_reply_to":"ff82abbf_bf7ce5eb","updated":"2017-12-01 03:04:50.000000000","message":"Thanks, micheal. I\u0027m not sure I understood correct. And I think it\u0027s better to hold from moving forward right now. So I describe you have mentioned in my mind. Did you suggest that still 1:1 UDP vrrp instance keepalived: UDP listener? If you are agree that a single keepalived process for HA, then I understood your thought is writing a script for each UDP listener to check whether the launched keepalived process is alived in the single HA keepalived process, if one of UDP keepalived process dead, we move the whole AMP instance from MASTER to BACKUP. What we should to do is that how to write the check script for each UDP keepalived process alive or not when launch a UDP listener. Also the each listener keepalived configuration doesn\u0027t contain VRRP part. Is it right?","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"},{"line_number":74,"context_line":"plus a VRRP instance."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The workflow about this feature contains:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_0f5858f7","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":21},"updated":"2017-11-30 05:38:52.000000000","message":"No, I think it will be a 1:1 for listener and keepalived","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"},{"line_number":74,"context_line":"plus a VRRP instance."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The workflow about this feature contains:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_2a474a79","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":21},"in_reply_to":"ff82abbf_0f5858f7","updated":"2017-11-30 07:11:12.000000000","message":"Like the comments in L70.\nFor example, in ACTIVE/STANDBY topology case.\n\nAMP A BACKUP\nAMP B BACKUP\nThere are 2 listeners for UDP. If both of them contain vrrp instances configuration with different vrrp instance/group and the same vip address. \nAMP A   listener1 (keepalived process X_A)  listener2 y(keepalived process Y_A)\nAMP B   listener1 (keepalived process X_B)  listener2 y(keepalived process Y_B).\nThen the vrrp instance will decide which one is the master role. We can make a assumption that both vrrp instance of the listener decide the AMP A is the master role. So the X_A and Y_A will broadcast the garp in the whole Layer 2 in vip subnet/network. If I kill Y_A process on AMP A, then the Y_B process on AMP B will take over the master role for listener 2, and Y_B will also broadcast the garp to the same broadcast domain. It will bring the LB into risky. So I change to a single VRRP instance.\n\nIf my thought is wrong, could u suggest another way for the solution? haha. Thanks.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"99deeab8cf5c1d986f36f306265d9322a11c9885","unresolved":false,"context_lines":[{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer server running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running the same counts"},{"line_number":73,"context_line":"``keepalived`` instances as the counts of ``Listeners`` in a ``LoadBalancer``"},{"line_number":74,"context_line":"plus a VRRP instance."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The workflow about this feature contains:"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_7f865dde","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":21},"in_reply_to":"ff82abbf_2a474a79","updated":"2017-11-30 22:25:10.000000000","message":"Nope, you are right.  Ignore this comment.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Also add a record into the table ``protocol`` for ``PROTOCOL_UDP``."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"As LVS is a good player in Lay 4, so there are some conflicts with current"},{"line_number":129,"context_line":"Octavia data models. There are some limitation below:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"1. No L7 policies allowed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_b400a303","line":128,"range":{"start_line":128,"start_character":27,"end_line":128,"end_character":30},"updated":"2017-11-30 05:38:52.000000000","message":"Layer","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Also add a record into the table ``protocol`` for ``PROTOCOL_UDP``."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"As LVS is a good player in Lay 4, so there are some conflicts with current"},{"line_number":129,"context_line":"Octavia data models. There are some limitation below:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"1. No L7 policies allowed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_ea3ba234","line":128,"range":{"start_line":128,"start_character":27,"end_line":128,"end_character":30},"in_reply_to":"ff82abbf_b400a303","updated":"2017-11-30 07:11:12.000000000","message":"Done","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"Octavia data models. There are some limitation below:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"1. No L7 policies allowed."},{"line_number":132,"context_line":"2. Only support \"One-Packet-Scheduling\" setting for UDP support, will"},{"line_number":133,"context_line":"   introduced a new optional for UDP in ``pools`` resource."},{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_cf14b046","line":133,"range":{"start_line":132,"start_character":3,"end_line":133,"end_character":59},"updated":"2017-11-30 05:38:52.000000000","message":"Would this not be a session persistence setting?","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":129,"context_line":"Octavia data models. There are some limitation below:"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"1. No L7 policies allowed."},{"line_number":132,"context_line":"2. Only support \"One-Packet-Scheduling\" setting for UDP support, will"},{"line_number":133,"context_line":"   introduced a new optional for UDP in ``pools`` resource."},{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8a053616","line":133,"range":{"start_line":132,"start_character":3,"end_line":133,"end_character":59},"in_reply_to":"ff82abbf_cf14b046","updated":"2017-11-30 07:11:12.000000000","message":"Oh, yeah. My mistake, it should be a session persistence setting. I will add the example in the next patch.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8f61c8d5","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":23},"updated":"2017-11-30 05:38:52.000000000","message":"We should make sure that the user facing term for this type of health monitor is more specific.  \"UDP connect\" or something similar.  MISC CHECK is too vague, though it is how it is implemented in keepalived.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"7005810c2fc9c6ff8af34359744ebb4b0ac4774c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_6d8470b2","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":23},"in_reply_to":"ff82abbf_3fd695c5","updated":"2017-12-01 03:04:50.000000000","message":"Thank you.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_e53d13bb","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":23},"in_reply_to":"ff82abbf_8f61c8d5","updated":"2017-11-30 07:11:12.000000000","message":"OK, thanks for suggestion. That means we should hide the health check detail towards users, just provider some options for it, though the inside implementation looks like.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"99deeab8cf5c1d986f36f306265d9322a11c9885","unresolved":false,"context_lines":[{"line_number":134,"context_line":"3. For session persistence, this spec will intro \u0027persistence_timeout\u0027 and"},{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_3fd695c5","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":23},"in_reply_to":"ff82abbf_e53d13bb","updated":"2017-11-30 22:25:10.000000000","message":"Yeah, \"MISC_CHECK\" is a coding detail that doesn\u0027t communicate what it is doing.\nI would anticipate \"UDP_CONNECT\" and maybe \"DNS_QUERY\" with a hostname option.  However, DNS_QUERY health check can be a later patch and excluded from this spec.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_4f78a08e","line":140,"range":{"start_line":138,"start_character":49,"end_line":140,"end_character":10},"updated":"2017-11-30 05:38:52.000000000","message":"I don\u0027t understand this, can you clarify?","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"99deeab8cf5c1d986f36f306265d9322a11c9885","unresolved":false,"context_lines":[{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_1f2391c0","line":140,"range":{"start_line":138,"start_character":49,"end_line":140,"end_character":10},"in_reply_to":"ff82abbf_08684b1f","updated":"2017-11-30 22:25:10.000000000","message":"I think the mapping from Octavia API to LVS would be:\n\ndelay \u003d\u003d delay_loop\nmax_retries_down \u003d\u003d retry\ntimeout \u003d\u003d delay_before_retry","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"7005810c2fc9c6ff8af34359744ebb4b0ac4774c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_8db6948a","line":140,"range":{"start_line":138,"start_character":49,"end_line":140,"end_character":10},"in_reply_to":"ff82abbf_1f2391c0","updated":"2017-12-01 03:04:50.000000000","message":"OK, I will adjust it in the prepared patch. :) Thank you","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_65a023f5","line":140,"range":{"start_line":138,"start_character":49,"end_line":140,"end_character":10},"in_reply_to":"ff82abbf_4f78a08e","updated":"2017-11-30 07:11:12.000000000","message":"Oh, this must be not allowed to set \u0027retries\u0027 and any related L7 protocols fields if the associated listener resource support UDP and check type is for UDP connect. There is not a same concept in keepalived LVS concept. I will make it clear here.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"696d56c9fe26ed83cacd33674f4527d8d4259de0","unresolved":false,"context_lines":[{"line_number":135,"context_line":"   \u0027persistence_granularity\u0027 in the virtual server configuration. The function"},{"line_number":136,"context_line":"   will be based on the LVS. So new type \u0027LVS_persistence\u0027 will be introduced."},{"line_number":137,"context_line":"4. Intro a \u0027MISC_CHECK\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":138,"context_line":"   check the UDP port is open by ``nc`` command. So current ``healthmonitor``"},{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_08684b1f","line":140,"range":{"start_line":138,"start_character":49,"end_line":140,"end_character":10},"in_reply_to":"ff82abbf_65a023f5","updated":"2017-11-30 11:19:41.000000000","message":"By contrasting the concepts between the LVS and Haproxy config option. I found there is only 2 or 3 maybe parameter could match the current Healthmonitor parameters concept. Like:\nwarmup X -\u003e healthmonitor.timeout or we could add \"delay\" default X+1.\nretry Y -\u003e healthmonitor.max_retries_down.\n\nThere is no concepts towards current healthmonitor.max_retires which means successful check before the member to ONLINE.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"REST API impact"},{"line_number":145,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_4f9d00ba","line":142,"range":{"start_line":142,"start_character":3,"end_line":142,"end_character":11},"updated":"2017-11-30 05:38:52.000000000","message":"We should spell these out for clarity.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"   resource will be allowed to set \u0027retries\u0027 and any related L7 protocols"},{"line_number":140,"context_line":"   fields."},{"line_number":141,"context_line":"5. For UDP load balancing, we can support the same algorithms at first. Such as"},{"line_number":142,"context_line":"   rr|lc|sh."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"REST API impact"},{"line_number":145,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_05a35701","line":142,"range":{"start_line":142,"start_character":3,"end_line":142,"end_character":11},"in_reply_to":"ff82abbf_4f9d00ba","updated":"2017-11-30 07:11:12.000000000","message":"Thanks, I will update.","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"48a8c5a72d244c11622bced1d2c97c625fef162b","unresolved":false,"context_lines":[{"line_number":267,"context_line":"[5] https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol"},{"line_number":268,"context_line":"[6] https://de.wikipedia.org/wiki/Real-Time_Transport_Protocol"},{"line_number":269,"context_line":"[7] https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol"},{"line_number":270,"context_line":"[8] https://www.tqhosting.com/kb/563/How-to-set-up-LVS-TUN-with-ipvsadm-and-keepalived-on-Ubuntu-1604.html"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_afb84c10","line":270,"updated":"2017-11-30 05:38:52.000000000","message":"This might be a better link:\nhttps://github.com/acassen/keepalived/blob/master/doc/keepalived.conf.SYNOPSIS#L559","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a0cebc2c6283ec9b815c145b2ffe96efb52df3a4","unresolved":false,"context_lines":[{"line_number":267,"context_line":"[5] https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol"},{"line_number":268,"context_line":"[6] https://de.wikipedia.org/wiki/Real-Time_Transport_Protocol"},{"line_number":269,"context_line":"[7] https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol"},{"line_number":270,"context_line":"[8] https://www.tqhosting.com/kb/563/How-to-set-up-LVS-TUN-with-ipvsadm-and-keepalived-on-Ubuntu-1604.html"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff82abbf_e5abd3d2","line":270,"in_reply_to":"ff82abbf_afb84c10","updated":"2017-11-30 07:11:12.000000000","message":"Thank you for link. :)","commit_id":"0b60a4ab9fe3ddb20b041d245089959204dc0a74"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"b6c2cea24733243e346ca37805d46ae7de20aed3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"add other modes in the future."},{"line_number":64,"context_line":"Currently, a single ``keepalived`` instance can support multiple virtual server"},{"line_number":65,"context_line":"configuration, but for the minimal impact of reconfiguration to the existing"},{"line_number":66,"context_line":"listeners, we\u0027d better not to refresh all the ``keepalived`` configuration files"},{"line_number":67,"context_line":"and restart the instances, that means all listeners traffic will be blocked if"},{"line_number":68,"context_line":"the LVS configuration maintained by ``keepalived`` is removed. So this spec"},{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff82abbf_25fc313d","line":66,"updated":"2017-12-01 13:43:16.000000000","message":"\u003e79","commit_id":"c98e89dc1329c20df2db54f4f5e3b71bca08b8e4"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"b6c2cea24733243e346ca37805d46ae7de20aed3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"propose that each listener will have its own ``keepalived`` process, the"},{"line_number":70,"context_line":"process won\u0027t contain VRRP instance, just the configuration of virtual server"},{"line_number":71,"context_line":"and real servers. That means if the Loadbalancer service running in"},{"line_number":72,"context_line":"ACTIVE-STANDBY topology, each amphorae instance will running multiple keepalived"},{"line_number":73,"context_line":"instance and the counts is N(associated UDP ``Listeners`` counts) + 1(For VRRP"},{"line_number":74,"context_line":"instance for HA, here we call it \"Main VRRP instance keepalived process\"). The"},{"line_number":75,"context_line":"existing ``keepalived`` will be used, but for each UDP keepalived process which"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff82abbf_e593a9ff","line":72,"updated":"2017-12-01 13:43:16.000000000","message":"\u003e79","commit_id":"c98e89dc1329c20df2db54f4f5e3b71bca08b8e4"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"b6c2cea24733243e346ca37805d46ae7de20aed3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"instance for HA, here we call it \"Main VRRP instance keepalived process\"). The"},{"line_number":75,"context_line":"existing ``keepalived`` will be used, but for each UDP keepalived process which"},{"line_number":76,"context_line":"associated with the UDP Listeners need to be controlled by health check of the"},{"line_number":77,"context_line":"Main VRRP keepalived process. Then the VIP could be moved to the BACKUP amphorae"},{"line_number":78,"context_line":"instance in ACTIVE/STANDBY topology if there is any issue about these UDP"},{"line_number":79,"context_line":"keepalived processes. The health check will aim at whether the keepalived"},{"line_number":80,"context_line":"process is alive."}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff82abbf_0599ed1d","line":77,"updated":"2017-12-01 13:43:16.000000000","message":"\u003e79","commit_id":"c98e89dc1329c20df2db54f4f5e3b71bca08b8e4"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"b6c2cea24733243e346ca37805d46ae7de20aed3","unresolved":false,"context_lines":[{"line_number":140,"context_line":"   will be based on the LVS. So new type \u0027UDP_PERSISTENCE\u0027 will be introduced."},{"line_number":141,"context_line":"   Also for UDP specified, a new option \u0027One-Packet-Scheduling\u0027 would be"},{"line_number":142,"context_line":"   introduced into sesstion persistence field."},{"line_number":143,"context_line":"3. Intro a \u0027UDP_CONNECT\u0027 type for UDP in ``healthmonitor``, for the simple, only"},{"line_number":144,"context_line":"   check the UDP port is open by ``nc`` command. And for current API of"},{"line_number":145,"context_line":"   ``healthmonitor``, we need to make clear for the meaning of LVS and current"},{"line_number":146,"context_line":"   ``healthmonitor`` API like the mapping below::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff82abbf_45e05597","line":143,"updated":"2017-12-01 13:43:16.000000000","message":"A few lines are exceeding 79 line characters","commit_id":"c98e89dc1329c20df2db54f4f5e3b71bca08b8e4"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a2c3078a3c24dcb9cf6ac84fea4c2659a8f37445","unresolved":false,"context_lines":[{"line_number":141,"context_line":"1. No L7 policies allowed."},{"line_number":142,"context_line":"2. For session persistence, this spec will intro \u0027persistence_timeout\u0027 (sec)"},{"line_number":143,"context_line":"   and \u0027persistence_granularity\u0027 (subnet mask) in the virtual server"},{"line_number":144,"context_line":"   configuration. The function will be based on the LVS. With no session"},{"line_number":145,"context_line":"   persistence specified, LVS will be configured with a persistence_timeout"},{"line_number":146,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"},{"line_number":147,"context_line":"   persistence is specified), ``SOURCE_IP`` and ``ONE_PACKET_SCHEDULING``."},{"line_number":148,"context_line":"3. Intro a \u0027UDP_CONNECT\u0027 type for UDP in ``healthmonitor``, for the simple,"},{"line_number":149,"context_line":"   only check the UDP port is open by ``nc`` command. And for current API of"}],"source_content_type":"text/x-rst","patch_set":12,"id":"df87a7cf_ea1cf6c2","line":146,"range":{"start_line":144,"start_character":57,"end_line":146,"end_character":7},"updated":"2017-12-13 04:14:04.000000000","message":"make sense to me. :)","commit_id":"04434ea2dc9b61be42b5e3b255bbb886d4a435d5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a2c3078a3c24dcb9cf6ac84fea4c2659a8f37445","unresolved":false,"context_lines":[{"line_number":144,"context_line":"   configuration. The function will be based on the LVS. With no session"},{"line_number":145,"context_line":"   persistence specified, LVS will be configured with a persistence_timeout"},{"line_number":146,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"},{"line_number":147,"context_line":"   persistence is specified), ``SOURCE_IP`` and ``ONE_PACKET_SCHEDULING``."},{"line_number":148,"context_line":"3. Intro a \u0027UDP_CONNECT\u0027 type for UDP in ``healthmonitor``, for the simple,"},{"line_number":149,"context_line":"   only check the UDP port is open by ``nc`` command. And for current API of"},{"line_number":150,"context_line":"   ``healthmonitor``, we need to make clear the meaning of LVS with the current"}],"source_content_type":"text/x-rst","patch_set":12,"id":"df87a7cf_8a60ca37","line":147,"range":{"start_line":147,"start_character":50,"end_line":147,"end_character":71},"updated":"2017-12-13 04:14:04.000000000","message":"also I think I need to add the example for this option. :)","commit_id":"04434ea2dc9b61be42b5e3b255bbb886d4a435d5"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"a2c3078a3c24dcb9cf6ac84fea4c2659a8f37445","unresolved":false,"context_lines":[{"line_number":179,"context_line":"---------------"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":182,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":183,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Create/Update Listener Request::"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"df87a7cf_c08f9373","line":183,"range":{"start_line":182,"start_character":0,"end_line":183,"end_character":70},"updated":"2017-12-13 04:14:04.000000000","message":"thanks for add this part, I miss them here.","commit_id":"04434ea2dc9b61be42b5e3b255bbb886d4a435d5"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instanace of ``keepalived`` must be bound in the namespace, along with"},{"line_number":57,"context_line":"the LVS instance it configures."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The main idea is to use ``keepalived`` to configure and manage LVS [#foot9]_"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_8f60d437","line":56,"updated":"2017-12-13 08:58:20.000000000","message":"instanace -\u003e instance","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instanace of ``keepalived`` must be bound in the namespace, along with"},{"line_number":57,"context_line":"the LVS instance it configures."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The main idea is to use ``keepalived`` to configure and manage LVS [#foot9]_"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_cf87bb61","line":56,"in_reply_to":"df87a7cf_8f60d437","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":60,"context_line":"and its configuration. We also need to check the members\u0027 statuses with"},{"line_number":61,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow"},{"line_number":62,"context_line":"in Octavia resources and deployment topologies. The simplest implementation is"},{"line_number":63,"context_line":"LVS with in NAT mode, so we will only support this mode to start. If possible"},{"line_number":64,"context_line":"we will add other modes in the future."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Currently, a single ``keepalived`` instance can support multiple virtual server"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_2fd668c5","line":63,"updated":"2017-12-13 08:58:20.000000000","message":"with in -\u003e within\nHow about\nso initially we will only support this mode?","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":60,"context_line":"and its configuration. We also need to check the members\u0027 statuses with"},{"line_number":61,"context_line":"``keepalived`` instead of ``haproxy``, so there must be a different workflow"},{"line_number":62,"context_line":"in Octavia resources and deployment topologies. The simplest implementation is"},{"line_number":63,"context_line":"LVS with in NAT mode, so we will only support this mode to start. If possible"},{"line_number":64,"context_line":"we will add other modes in the future."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Currently, a single ``keepalived`` instance can support multiple virtual server"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_4f93aba4","line":63,"in_reply_to":"df87a7cf_2fd668c5","updated":"2017-12-13 09:09:36.000000000","message":"Yeah, for the first implementation, we only support this mode.","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Currently, a single ``keepalived`` instance can support multiple virtual server"},{"line_number":67,"context_line":"configurations, but for minimal impact of reconfiguration to the existing"},{"line_number":68,"context_line":"listeners, we\u0027d do better not to refresh all the ``keepalived`` configuration"},{"line_number":69,"context_line":"files and restart the instances, because that would cause all listeners traffic"},{"line_number":70,"context_line":"to be blocked if the LVS configuration maintained by ``keepalived`` is removed."},{"line_number":71,"context_line":"This spec proposes that each listener will have its own ``keepalived`` process,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_2f8428b1","line":68,"updated":"2017-12-13 08:58:20.000000000","message":"do better not to -\u003e better not","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Currently, a single ``keepalived`` instance can support multiple virtual server"},{"line_number":67,"context_line":"configurations, but for minimal impact of reconfiguration to the existing"},{"line_number":68,"context_line":"listeners, we\u0027d do better not to refresh all the ``keepalived`` configuration"},{"line_number":69,"context_line":"files and restart the instances, because that would cause all listeners traffic"},{"line_number":70,"context_line":"to be blocked if the LVS configuration maintained by ``keepalived`` is removed."},{"line_number":71,"context_line":"This spec proposes that each listener will have its own ``keepalived`` process,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_0f8da37a","line":68,"in_reply_to":"df87a7cf_2f8428b1","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"will be used, but each \"UDP Listener keepalived process\" will need to be"},{"line_number":78,"context_line":"controlled by health check of the Main VRRP keepalived process. Then the VIP"},{"line_number":79,"context_line":"could be moved to the BACKUP amphorae instance in ACTIVE/STANDBY topology if"},{"line_number":80,"context_line":"there is any issue about these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_6fbb1072","line":80,"updated":"2017-12-13 08:58:20.000000000","message":"issue about -\u003e issue with","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":77,"context_line":"will be used, but each \"UDP Listener keepalived process\" will need to be"},{"line_number":78,"context_line":"controlled by health check of the Main VRRP keepalived process. Then the VIP"},{"line_number":79,"context_line":"could be moved to the BACKUP amphorae instance in ACTIVE/STANDBY topology if"},{"line_number":80,"context_line":"there is any issue about these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_cfec9b2b","line":80,"in_reply_to":"df87a7cf_6fbb1072","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"controlled by health check of the Main VRRP keepalived process. Then the VIP"},{"line_number":79,"context_line":"could be moved to the BACKUP amphorae instance in ACTIVE/STANDBY topology if"},{"line_number":80,"context_line":"there is any issue about these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_cfa9fc24","line":81,"updated":"2017-12-13 08:58:20.000000000","message":"reflect -\u003e test or examine?","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"90a8e1b3c51f2c11cb619c7c5ba29993f690a222","unresolved":false,"context_lines":[{"line_number":78,"context_line":"controlled by health check of the Main VRRP keepalived process. Then the VIP"},{"line_number":79,"context_line":"could be moved to the BACKUP amphorae instance in ACTIVE/STANDBY topology if"},{"line_number":80,"context_line":"there is any issue about these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_4f796b2d","line":81,"in_reply_to":"df87a7cf_2fc42792","updated":"2017-12-13 09:17:51.000000000","message":"Oh, sorry for misleading. This is for check the keepalived process alive for moving the whole amp instance VIP from ACTIVE TO BACKUP in ACTIVE/STANDBY topology. :)","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":78,"context_line":"controlled by health check of the Main VRRP keepalived process. Then the VIP"},{"line_number":79,"context_line":"could be moved to the BACKUP amphorae instance in ACTIVE/STANDBY topology if"},{"line_number":80,"context_line":"there is any issue about these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_2fc42792","line":81,"in_reply_to":"df87a7cf_cfa9fc24","updated":"2017-12-13 09:09:36.000000000","message":"examine, cause we need the keepalived for helping the members\u0027 health.","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"haproxy to some other load balancer engines, for example, if we introduce LVS"},{"line_number":110,"context_line":"driver, we may just support the simple L7 functions with LVS, as it\u0027s a risk to"},{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_ef7ba0bb","line":112,"updated":"2017-12-13 08:58:20.000000000","message":"need -\u003e need to","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":109,"context_line":"haproxy to some other load balancer engines, for example, if we introduce LVS"},{"line_number":110,"context_line":"driver, we may just support the simple L7 functions with LVS, as it\u0027s a risk to"},{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_efbddf02","line":112,"in_reply_to":"df87a7cf_ef7ba0bb","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"},{"line_number":116,"context_line":"support UDP, such as f5/nginx, we may also need to do this."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_2f5bc854","line":114,"updated":"2017-12-13 08:58:20.000000000","message":"of related to -\u003e that related to","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"},{"line_number":116,"context_line":"support UDP, such as f5/nginx, we may also need to do this."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_0fbb630e","line":114,"in_reply_to":"df87a7cf_2f5bc854","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"},{"line_number":116,"context_line":"support UDP, such as f5/nginx, we may also need to do this."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Combining the 2 load balancer engines for a simple reference implementation,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_6f3eb0db","line":115,"range":{"start_line":114,"start_character":55,"end_line":115,"end_character":35},"updated":"2017-12-13 08:58:20.000000000","message":"I don\u0027t really catch this.","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":111,"context_line":"change provider from existing haproxy-based amphora instances to LVS ones. If"},{"line_number":112,"context_line":"possible, we need limit the API to not support fields/resources if the backend"},{"line_number":113,"context_line":"driver is LVS, such as \"insert_headers\" in Listener, L7Policies, L7Rules and"},{"line_number":114,"context_line":"etc, a series fields/resources of related to L7 layer. The all things are to"},{"line_number":115,"context_line":"match the real ability of backend. For other load balancer engines which"},{"line_number":116,"context_line":"support UDP, such as f5/nginx, we may also need to do this."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Combining the 2 load balancer engines for a simple reference implementation,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_cf633bb1","line":115,"range":{"start_line":114,"start_character":55,"end_line":115,"end_character":35},"in_reply_to":"df87a7cf_6f3eb0db","updated":"2017-12-13 09:09:36.000000000","message":"means all the configuration of L7resources if the backend is LVS, it will be ignored/different translate to LVS configration.","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"0cfec8f249b24c51ca4f370cc911cd8b49ba653f","unresolved":false,"context_lines":[{"line_number":324,"context_line":"  and ``pools`` resources."},{"line_number":325,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"},{"line_number":326,"context_line":"  particular topologies."},{"line_number":327,"context_line":"* Extending Octavia V2 API to accept UDP fields."},{"line_number":328,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":329,"context_line":"  resource workflow in Octavia."},{"line_number":330,"context_line":"* Add API validation code to validate the fields of UDP cases."}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_6f20ef9c","line":327,"updated":"2017-12-13 08:58:20.000000000","message":"Extending -\u003e Extend","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"44e400fc0fa115c88e4363644c5ed0c2fbb66136","unresolved":false,"context_lines":[{"line_number":324,"context_line":"  and ``pools`` resources."},{"line_number":325,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"},{"line_number":326,"context_line":"  particular topologies."},{"line_number":327,"context_line":"* Extending Octavia V2 API to accept UDP fields."},{"line_number":328,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":329,"context_line":"  resource workflow in Octavia."},{"line_number":330,"context_line":"* Add API validation code to validate the fields of UDP cases."}],"source_content_type":"text/x-rst","patch_set":13,"id":"df87a7cf_8f5d33eb","line":327,"in_reply_to":"df87a7cf_6f20ef9c","updated":"2017-12-13 09:09:36.000000000","message":"Done","commit_id":"21415368cc371344f1db5410362213da240c9cbe"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":43,"context_line":"current haproxy engine only supports TCP based protocols. If users want a load"},{"line_number":44,"context_line":"balancer which supports both TCP and UDP, this need cannot be met by launching"},{"line_number":45,"context_line":"haproxy-based amphora instances. It\u0027s the good time to extend octavia to"},{"line_number":46,"context_line":"support more load balancing scenarios. This spec will introduce how LVS can"},{"line_number":47,"context_line":"work with haproxy for UDP loadbalancing. The reason for choosing LVS is that"},{"line_number":48,"context_line":"we can easily integrate it with the existing ``keepalived`` service."},{"line_number":49,"context_line":"That means we can configure LVS via ``keepalived``, and check member health as"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_38ceaf83","line":46,"range":{"start_line":46,"start_character":68,"end_line":46,"end_character":71},"updated":"2017-12-13 11:53:21.000000000","message":"First appearance of \"LVS\" acronym. Please explicitly extend it (Linux Virtual Server (LVS)) and link it to http://www.linuxvirtualserver.org/","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"current haproxy engine only supports TCP based protocols. If users want a load"},{"line_number":44,"context_line":"balancer which supports both TCP and UDP, this need cannot be met by launching"},{"line_number":45,"context_line":"haproxy-based amphora instances. It\u0027s the good time to extend octavia to"},{"line_number":46,"context_line":"support more load balancing scenarios. This spec will introduce how LVS can"},{"line_number":47,"context_line":"work with haproxy for UDP loadbalancing. The reason for choosing LVS is that"},{"line_number":48,"context_line":"we can easily integrate it with the existing ``keepalived`` service."},{"line_number":49,"context_line":"That means we can configure LVS via ``keepalived``, and check member health as"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_a6a92b91","line":46,"range":{"start_line":46,"start_character":68,"end_line":46,"end_character":71},"in_reply_to":"df87a7cf_38ceaf83","updated":"2017-12-14 02:07:02.000000000","message":"Thanks, will add ita as a reference link.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":50,"context_line":"well."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For the current service VM driver implementation, haproxy runs in the"},{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instance of ``keepalived`` must be bound in the namespace, along with"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_52c11480","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":25},"updated":"2017-12-13 09:48:51.000000000","message":"perhaps we\u0027d want to change the namespace same not to specifically mention haproxy.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"well."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For the current service VM driver implementation, haproxy runs in the"},{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instance of ``keepalived`` must be bound in the namespace, along with"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_78a9978e","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":25},"in_reply_to":"df87a7cf_52c11480","updated":"2017-12-13 11:53:21.000000000","message":"+1","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":50,"context_line":"well."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For the current service VM driver implementation, haproxy runs in the"},{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instance of ``keepalived`` must be bound in the namespace, along with"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d5f3ce72","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":25},"in_reply_to":"df87a7cf_52c11480","updated":"2017-12-13 10:49:41.000000000","message":"But the plan of this spec is to work with haproxy, the ns name is that currently. Hmmm. I think not to change is better, it just a name. :)","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"well."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For the current service VM driver implementation, haproxy runs in the"},{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instance of ``keepalived`` must be bound in the namespace, along with"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_bdbaa4de","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":25},"in_reply_to":"df87a7cf_52c11480","updated":"2017-12-13 18:21:35.000000000","message":"This is still the haproxy based amphora, so I\u0027m not so worried with the naming of the namespace, etc. It\u0027s hidden from users anyway.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"well."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For the current service VM driver implementation, haproxy runs in the"},{"line_number":53,"context_line":"amphora-haproxy namespace in an amphora instance. So we also need to configure"},{"line_number":54,"context_line":"``keeplived`` in the same namespace for UDP cases even in SINGLE topology."},{"line_number":55,"context_line":"For ACTIVE_STANDBY, ``keepalived`` will serve two purposes: UDP and VRRP."},{"line_number":56,"context_line":"So, one instance of ``keepalived`` must be bound in the namespace, along with"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_a697eb3a","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":25},"in_reply_to":"df87a7cf_bdbaa4de","updated":"2017-12-14 02:07:02.000000000","message":"Right. Michael, it still a haproxy based amphorae.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_7258d8f9","line":83,"updated":"2017-12-13 09:48:51.000000000","message":"we might also want to add dib-elements for:\n1. LVS\n2. nc\n\nnot all distros ship this by default (for example RHEL and CentOS base cloud images won\u0027t ship with nc, I didn\u0027t check if that is the case for LVS).","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_66cfa357","line":83,"in_reply_to":"df87a7cf_3de5340b","updated":"2017-12-14 02:07:02.000000000","message":"Thanks for clear here, Michael. I will mention the \u0027nc\u0027 will add into the DIB","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"50a6b4358a0275300b9d4f9ad84caf77705ad6b5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_bfcfe555","line":83,"in_reply_to":"df87a7cf_3de5340b","updated":"2017-12-14 13:00:05.000000000","message":"re LVS running in kernel space, we have to consider the possible implications it may bring to the deployer/operator (operation and documentation-wise )specially if running on containers.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_3de5340b","line":83,"in_reply_to":"df87a7cf_7258d8f9","updated":"2017-12-13 18:21:35.000000000","message":"LVS is in the kernel, so should not be an issue unless they disable it.\nipvsadm though not needed might be handy to have for debugging\nnc/netcat is not included in ubuntu either and will need to be added.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_953ea6d8","line":83,"in_reply_to":"df87a7cf_7258d8f9","updated":"2017-12-13 10:49:41.000000000","message":"Yeah, but I think it will be done in ACTIVE/ACTIVE work. Also german had already post some patch for LVS. For nc, I just test on ubuntu. I\u0027m not sure whether other distros ship this by default, then I will add it if possible.\nhttps://review.openstack.org/#/c/499807/","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3f828f4237772ede163beb5fdcdde661b0c4d82f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"there is any issue with these UDP keepalived processes. The health check will"},{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_bf911749","line":83,"in_reply_to":"df87a7cf_bfcfe555","updated":"2017-12-14 21:04:59.000000000","message":"This is inside our amphora instance, so should have no impact on deployer or operators.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"},{"line_number":87,"context_line":"   configuration in amphora instances."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_12694c8a","line":84,"updated":"2017-12-13 09:48:51.000000000","message":"There are also systemd implications we might need to list here, for reference: https://review.openstack.org/#/c/520629/\n\nI\u0027ve listed Bernard Cafarelli for some inputs we might want to include.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":81,"context_line":"simply reflect whether the keepalived processes are alive."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The workflow for this feature contains:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. Add a new ``keepalived`` jinja template to support LVS configuration."},{"line_number":86,"context_line":"2. Extend the ability of amphora agent to run ``keepalived`` with LVS"},{"line_number":87,"context_line":"   configuration in amphora instances."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_55201eb1","line":84,"in_reply_to":"df87a7cf_12694c8a","updated":"2017-12-13 10:49:41.000000000","message":"Correct. I think we need that.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"1. No L7 policies allowed."},{"line_number":146,"context_line":"2. For session persistence, this spec will intro \u0027persistence_timeout\u0027 (sec)"},{"line_number":147,"context_line":"   and \u0027persistence_granularity\u0027 (subnet mask) in the virtual server"},{"line_number":148,"context_line":"   configuration. The function will be based on the LVS. With no session"},{"line_number":149,"context_line":"   persistence specified, LVS will be configured with a persistence_timeout"},{"line_number":150,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_32f7b0d7","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":31},"updated":"2017-12-13 09:48:51.000000000","message":"suggestion: since this is new to Octavia, might be worth to slightly elaborate what this is about. perhaps we can use some info from here: http://www.linuxvirtualserver.org/docs/persistence.html","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"1. No L7 policies allowed."},{"line_number":146,"context_line":"2. For session persistence, this spec will intro \u0027persistence_timeout\u0027 (sec)"},{"line_number":147,"context_line":"   and \u0027persistence_granularity\u0027 (subnet mask) in the virtual server"},{"line_number":148,"context_line":"   configuration. The function will be based on the LVS. With no session"},{"line_number":149,"context_line":"   persistence specified, LVS will be configured with a persistence_timeout"},{"line_number":150,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_95178652","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":31},"in_reply_to":"df87a7cf_32f7b0d7","updated":"2017-12-13 10:49:41.000000000","message":"correct, Thanks. will add the reference link","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":150,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"},{"line_number":151,"context_line":"   persistence is specified), ``SOURCE_IP`` and ``ONE_PACKET_SCHEDULING``."},{"line_number":152,"context_line":"3. Intro a \u0027UDP_CONNECT\u0027 type for UDP in ``healthmonitor``, for the simple,"},{"line_number":153,"context_line":"   only check the UDP port is open by ``nc`` command. And for current API of"},{"line_number":154,"context_line":"   ``healthmonitor``, we need to make clear the meaning of LVS with the current"},{"line_number":155,"context_line":"   ``healthmonitor`` API like the mapping below"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_b22c204b","line":153,"range":{"start_line":153,"start_character":38,"end_line":153,"end_character":44},"updated":"2017-12-13 09:48:51.000000000","message":"ditto: needs dib-element.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":150,"context_line":"   of 0. There are two valid session persistence options for UDP (if session"},{"line_number":151,"context_line":"   persistence is specified), ``SOURCE_IP`` and ``ONE_PACKET_SCHEDULING``."},{"line_number":152,"context_line":"3. Intro a \u0027UDP_CONNECT\u0027 type for UDP in ``healthmonitor``, for the simple,"},{"line_number":153,"context_line":"   only check the UDP port is open by ``nc`` command. And for current API of"},{"line_number":154,"context_line":"   ``healthmonitor``, we need to make clear the meaning of LVS with the current"},{"line_number":155,"context_line":"   ``healthmonitor`` API like the mapping below"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_e6bad3df","line":153,"range":{"start_line":153,"start_character":38,"end_line":153,"end_character":44},"in_reply_to":"df87a7cf_b22c204b","updated":"2017-12-14 02:07:02.000000000","message":"Yes, will mention it.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":186,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":187,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Create/Update Listener Request::"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_03d6dcf2","line":187,"range":{"start_line":187,"start_character":2,"end_line":187,"end_character":44},"updated":"2017-12-13 11:53:21.000000000","message":"Could you please list all possible fields you think at this stage would be needed and their (anti-)affinity/mutual exclusivity? Looking at your examples below, I get that there would be some.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":186,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":187,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Create/Update Listener Request::"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_c3bf94ce","line":187,"range":{"start_line":187,"start_character":54,"end_line":187,"end_character":69},"updated":"2017-12-13 11:53:21.000000000","message":"a note to keep when implementing: only accept session_persistence if protocol\u003d\u003dudp","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":186,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":187,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Create/Update Listener Request::"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_e62973f2","line":187,"range":{"start_line":187,"start_character":54,"end_line":187,"end_character":69},"in_reply_to":"df87a7cf_7d973c3c","updated":"2017-12-14 02:07:02.000000000","message":"Based on L214 - L228, Is that means if update a UDP pool pass the other fields instead of \"persistence_timeout\" or \"persistence_granularity\", we need to ignore them for the haproxy/lvs backend? This is just my thought, I\u0027m not sure that the new fields we need to let it concerned by haproxy","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"50a6b4358a0275300b9d4f9ad84caf77705ad6b5","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":186,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":187,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Create/Update Listener Request::"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_bf6b651d","line":187,"range":{"start_line":187,"start_character":54,"end_line":187,"end_character":69},"in_reply_to":"df87a7cf_7d973c3c","updated":"2017-12-14 13:00:05.000000000","message":"Right, we do have it already. My bad.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"* Allow the ``protocol`` fields to accept ``udp``."},{"line_number":186,"context_line":"* Allow the ``healthmonitor.type`` field to accept UDP type values."},{"line_number":187,"context_line":"* Add some fields to ``session_persistence`` that are specific to UDP."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Create/Update Listener Request::"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_7d973c3c","line":187,"range":{"start_line":187,"start_character":54,"end_line":187,"end_character":69},"in_reply_to":"df87a7cf_c3bf94ce","updated":"2017-12-13 18:21:35.000000000","message":"I don\u0027t understand this, we currently have session_persistence with our TCP pools. My read of this is we are expanding that capability for some UDP specific (though SOURCE_IP is shareD) settings.\nhttps://developer.openstack.org/api-ref/load-balancer/v2/index.html#pool-session-persistence","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Create/Update Pool Request"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"``Source_IP`` type case::"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    POST/PUT /v2.0/lbaas/pools"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_4390644f","line":210,"range":{"start_line":210,"start_character":2,"end_line":210,"end_character":11},"updated":"2017-12-13 11:53:21.000000000","message":"SOURCE_IP","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Create/Update Pool Request"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"``Source_IP`` type case::"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    POST/PUT /v2.0/lbaas/pools"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_06d7b725","line":210,"range":{"start_line":210,"start_character":2,"end_line":210,"end_character":11},"in_reply_to":"df87a7cf_4390644f","updated":"2017-12-14 02:07:02.000000000","message":"my bad, will fix. Thanks","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            \"protocol\": \"UDP\","},{"line_number":241,"context_line":"            \"session_persistence\": {"},{"line_number":242,"context_line":"                \"type\": \"ONE_PACKET_SCHEDULING\","},{"line_number":243,"context_line":"                \"enable\": true"},{"line_number":244,"context_line":"            }"},{"line_number":245,"context_line":"            \"listener_id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\","},{"line_number":246,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_e375f833","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":23},"updated":"2017-12-13 11:53:21.000000000","message":"Why \u0027enable\u0027 is required and applies only when type\u003d\u003dONE_PACKET_SCHEDULING?","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            \"protocol\": \"UDP\","},{"line_number":241,"context_line":"            \"session_persistence\": {"},{"line_number":242,"context_line":"                \"type\": \"ONE_PACKET_SCHEDULING\","},{"line_number":243,"context_line":"                \"enable\": true"},{"line_number":244,"context_line":"            }"},{"line_number":245,"context_line":"            \"listener_id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\","},{"line_number":246,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_261afb16","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":23},"in_reply_to":"df87a7cf_ddbbe8c1","updated":"2017-12-14 02:07:02.000000000","message":"OK, aha, will remove. I just want to raise the example about this, this is clear now for the new type. :)","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            \"protocol\": \"UDP\","},{"line_number":241,"context_line":"            \"session_persistence\": {"},{"line_number":242,"context_line":"                \"type\": \"ONE_PACKET_SCHEDULING\","},{"line_number":243,"context_line":"                \"enable\": true"},{"line_number":244,"context_line":"            }"},{"line_number":245,"context_line":"            \"listener_id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\","},{"line_number":246,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_ddbbe8c1","line":243,"range":{"start_line":243,"start_character":17,"end_line":243,"end_character":23},"in_reply_to":"df87a7cf_e375f833","updated":"2017-12-13 18:21:35.000000000","message":"Missed that, the \"enable\" line should be removed.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Security impact"},{"line_number":279,"context_line":"---------------"},{"line_number":280,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":281,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":282,"context_line":"Security impact is minimal as the keepalived/LVS will be running in the tenant"},{"line_number":283,"context_line":"traffic network namespace."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_433aa434","line":280,"range":{"start_line":280,"start_character":67,"end_line":280,"end_character":73},"updated":"2017-12-13 11:53:21.000000000","message":"typo: another","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Security impact"},{"line_number":279,"context_line":"---------------"},{"line_number":280,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":281,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":282,"context_line":"Security impact is minimal as the keepalived/LVS will be running in the tenant"},{"line_number":283,"context_line":"traffic network namespace."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_a60dabe9","line":280,"range":{"start_line":280,"start_character":67,"end_line":280,"end_character":73},"in_reply_to":"df87a7cf_433aa434","updated":"2017-12-14 02:07:02.000000000","message":"Done","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":278,"context_line":"Security impact"},{"line_number":279,"context_line":"---------------"},{"line_number":280,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":281,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":282,"context_line":"Security impact is minimal as the keepalived/LVS will be running in the tenant"},{"line_number":283,"context_line":"traffic network namespace."},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d231a4a4","line":281,"range":{"start_line":281,"start_character":8,"end_line":281,"end_character":27},"updated":"2017-12-13 09:48:51.000000000","message":"Do we plan to incorporate those into the existing security group or creating an additional one and attach it to the amphora(s)?\n\nPlease elaborate.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":278,"context_line":"Security impact"},{"line_number":279,"context_line":"---------------"},{"line_number":280,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":281,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":282,"context_line":"Security impact is minimal as the keepalived/LVS will be running in the tenant"},{"line_number":283,"context_line":"traffic network namespace."},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d850e30d","line":281,"range":{"start_line":281,"start_character":8,"end_line":281,"end_character":27},"in_reply_to":"df87a7cf_d231a4a4","updated":"2017-12-13 10:49:41.000000000","message":"This means create another UDP support sg_rule to existing lb security group, and apply on the amphora instances.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":278,"context_line":"Security impact"},{"line_number":279,"context_line":"---------------"},{"line_number":280,"context_line":"The security should be affected by the UDP server, we need to open anther"},{"line_number":281,"context_line":"neutron security group rule to allow UDP traffic in ingress direction."},{"line_number":282,"context_line":"Security impact is minimal as the keepalived/LVS will be running in the tenant"},{"line_number":283,"context_line":"traffic network namespace."},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_9d032074","line":281,"range":{"start_line":281,"start_character":8,"end_line":281,"end_character":27},"in_reply_to":"df87a7cf_d850e30d","updated":"2017-12-13 18:21:35.000000000","message":"Right, this is just adding rules to the existing security group to support UDP ports.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d22e84f9","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"updated":"2017-12-13 09:48:51.000000000","message":"Since the intention is to have a process for each listener, we might want to consider to update the nova flavor we currently use, mostly RAM-wise.\nI\u0027m not saying we *must* update it, I\u0027m just saying we should specify that and check if it\u0027s needed.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_a6a36b00","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_7d0c1c94","updated":"2017-12-14 02:07:02.000000000","message":"Thanks for suggestion, micheal, I will test today, and if success I will refresh all the related part that we change to 2 keepalived processes, 1 for vrrp, 1 for lvs.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7b41f05bdf7cd1d014ad3b979ee4056a0b358070","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9f91af0f_335c7224","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_85987d6a","updated":"2018-01-02 22:35:28.000000000","message":"I\u0027m not sure I fully understand these last two comments.\nI think before you tested and found that updating the configuration of one UDP LB caused another to have an interruption in traffic flow. This would mean it would be best to have separate processes. Is this correct?","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"3f828f4237772ede163beb5fdcdde661b0c4d82f","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_ffbf9fa7","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_94ef68e8","updated":"2017-12-14 21:04:59.000000000","message":"Perfect, thank you for running the test.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_7d0c1c94","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_98733bb2","updated":"2017-12-13 18:21:35.000000000","message":"Yeah, I hope we don\u0027t, but we can characterized the impact from the additional monitoring keepalived processes.  We may be able to use one process as was discussed in the IRC channel since LVS in the kernel is actually handling the flows.  This needs to be tested if a restart/reload to keepalived impacts existing flows. Also, since it is UDP, that may not matter.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"0d8ba053c5f86d8195e050bdb8e155e1407a6e79","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"bf8cb3f7_4d1dc10d","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_a6a36b00","updated":"2017-12-26 03:32:27.000000000","message":"Hi Michael, I test in a simple env, and","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"0d8ba053c5f86d8195e050bdb8e155e1407a6e79","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_85987d6a","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_a6a36b00","updated":"2017-12-26 03:32:27.000000000","message":"Hi Michael, I\u0027m very sad to say that the test is fail. \nhttps://github.com/acassen/keepalived/blob/v1.2.19/doc/keepalived.conf.SYNOPSIS","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"585fdf8b9aa4d0e98d89dfca5350f0f5824890fc","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_94ef68e8","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_a6a36b00","updated":"2017-12-14 12:09:16.000000000","message":"Hi, micheal. I\u0027m so sad to say that the test is failed. will show you some details about it.\nhttps://github.com/acassen/keepalived/blob/v1.2.19/doc/keepalived.conf.SYNOPSIS\nThis doc is for version 1.2.19, and I didn\u0027t find any option can hold the LVS config when keepalived restart/reload. That means the LVS configuration by keepalived will be refresh/remove during keepalived process restart/reload.\n\nI setup the keepalived by systemd, this is my systemd configuration for the keepalived.\nhttp://paste.openstack.org/show/628934/\n\nAnd keepalived configuration for LVS is:\nhttp://paste.openstack.org/show/628936/\n\nI restart/reload keepalived with \"systemctl restart/reload keep001\", then I will see the ns \u0027lb\u0027 had configured some lvs rules like:\nhttp://paste.openstack.org/show/628937/\n\nAnd there are 3 UDP real servers, I use iperf for server, also iperf for client.\nCLIENT: ip netns exec client iperf -c 1.1.1.3 -u -p 1111 -b 10M\nSERVER: ip netns exec s2 iperf -s -p 1111 -u\n\nThis is the test detail for 2 scenarios:\n\nI run the test as the below step:\n1. ip netns exec client iperf -c 1.1.1.3 -u -p 1111 -b 100M  request from client side with VIP:port(1.1.1.3:1111)\n2. During the traffic not over, I run \"systemctl restart/reload keep001\" to restart/reload keepalived process.\n3. Get the result in client side iperf.\n\n1. reload keepalived\nhttp://paste.openstack.org/show/628939/\n2. restart keepalived\nhttp://paste.openstack.org/show/628940/\n3. keep keepalived alive.\nhttp://paste.openstack.org/show/628938/\n\nYou could see 1,2. The client side report the server side lost some packets. So I think the multiple keepalived process may be the right direction, or if I miss some keepalived configuration for hold the LVS not change during restart/reload keepalived.\n\nAfter this, I think we\u0027d better to stay here to re-decide the implementaion way. :)","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Users will be able to pass \"UDP\" to create/update Listener/Pool resources for"},{"line_number":292,"context_line":"UDP load balancer."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"Performance Impact"},{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_98733bb2","line":294,"range":{"start_line":294,"start_character":0,"end_line":294,"end_character":18},"in_reply_to":"df87a7cf_d22e84f9","updated":"2017-12-13 10:49:41.000000000","message":"you are correct. Thanks for this. This is true that need to be concerned.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."},{"line_number":298,"context_line":"* As this spec introduces LVS and Haproxy working together, if users update the"},{"line_number":299,"context_line":"  ``Listener`` or ``Pool`` resources in a ``LoadBalancer`` instance frequently,"},{"line_number":300,"context_line":"  the loadbalancer functionality may be delayed for a while as the refresh of"},{"line_number":301,"context_line":"  UDP related LVS configuration."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_83a2ec4a","line":298,"updated":"2017-12-13 11:53:21.000000000","message":"What would happen if one tries to update the protocol from udp to tcp and vice-versa? Is that even possible? If so, window time for updating all resources would be significant, leading to potentially considerable traffic drop.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."},{"line_number":298,"context_line":"* As this spec introduces LVS and Haproxy working together, if users update the"},{"line_number":299,"context_line":"  ``Listener`` or ``Pool`` resources in a ``LoadBalancer`` instance frequently,"},{"line_number":300,"context_line":"  the loadbalancer functionality may be delayed for a while as the refresh of"},{"line_number":301,"context_line":"  UDP related LVS configuration."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_e65e53e8","line":298,"in_reply_to":"df87a7cf_5d511862","updated":"2017-12-14 02:07:02.000000000","message":"That\u0027s correct as Michael said.\nhttps://developer.openstack.org/api-ref/load-balancer/v2/index.html#update-a-pool\nhttps://developer.openstack.org/api-ref/load-balancer/v2/index.html#update-a-listener","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":295,"context_line":"------------------"},{"line_number":296,"context_line":"* If enabled driver is LVS, it will have a good performance for L4 load"},{"line_number":297,"context_line":"  balancing, but lack the any functionality in L7."},{"line_number":298,"context_line":"* As this spec introduces LVS and Haproxy working together, if users update the"},{"line_number":299,"context_line":"  ``Listener`` or ``Pool`` resources in a ``LoadBalancer`` instance frequently,"},{"line_number":300,"context_line":"  the loadbalancer functionality may be delayed for a while as the refresh of"},{"line_number":301,"context_line":"  UDP related LVS configuration."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_5d511862","line":298,"in_reply_to":"df87a7cf_83a2ec4a","updated":"2017-12-13 18:21:35.000000000","message":"We do not allow listeners or pools to change protocols after creation. This would not change.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e9b2d9db22a98f415108b26bb80e7e433d5a7cb3","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_a3bcd06c","line":323,"range":{"start_line":323,"start_character":41,"end_line":323,"end_character":49},"updated":"2017-12-13 11:53:21.000000000","message":"typo: generate","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_86aae7cf","line":323,"range":{"start_line":323,"start_character":41,"end_line":323,"end_character":49},"in_reply_to":"df87a7cf_a3bcd06c","updated":"2017-12-14 02:07:02.000000000","message":"Done","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."},{"line_number":327,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d292044c","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":38},"updated":"2017-12-13 09:48:51.000000000","message":"that includes both adding a driver to:\nhttps://github.com/openstack/octavia/tree/master/octavia/amphorae/drivers\n\nand expanding the api server:\nhttps://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/server.py","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."},{"line_number":327,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_5dffd833","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":38},"in_reply_to":"df87a7cf_18bbab0e","updated":"2017-12-13 18:21:35.000000000","message":"This should not require a new driver, it is an extension of the existing driver and agent.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."},{"line_number":327,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_e6d09356","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":38},"in_reply_to":"df87a7cf_5dffd833","updated":"2017-12-14 02:07:02.000000000","message":"Yes, Micheal, I mean not a totally new, looks like a new subdriver which support both. :) I mean not coupling so much with current haproxy driver.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":320,"context_line":"----------"},{"line_number":321,"context_line":"* Add/extend startup script templates for keepalived processes, including"},{"line_number":322,"context_line":"  configuration."},{"line_number":323,"context_line":"* Extend the ability of amphora agent to genarate and control LVS by"},{"line_number":324,"context_line":"  ``keepalived`` in amphora instances."},{"line_number":325,"context_line":"* Extend the exist Octavia V2 API to access ``udp`` parameter in ``Listener``"},{"line_number":326,"context_line":"  and ``pools`` resources."},{"line_number":327,"context_line":"* Extend the Loadbalancer/Listener flows to support udp loadbalancer in the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_18bbab0e","line":324,"range":{"start_line":323,"start_character":0,"end_line":324,"end_character":38},"in_reply_to":"df87a7cf_d292044c","updated":"2017-12-13 10:49:41.000000000","message":"Correct, both amphora driver (maybe reuse many existing code, but for simplest, just overwrite the different part)and api server(try to no affect the current haproxy part in amp API).","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a1408f7cb5461aea49466bc87150ee3aee0320ea","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":331,"context_line":"  resource workflow in Octavia."},{"line_number":332,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":333,"context_line":"* Add Unit Tests to Octavia."},{"line_number":334,"context_line":"* Add API functional tests."},{"line_number":335,"context_line":"* Update CLI and Octavia-dashboard to support UDP fields input."},{"line_number":336,"context_line":"* Documentation work."},{"line_number":337,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_d2e0c4cf","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":27},"updated":"2017-12-13 09:48:51.000000000","message":"what about scenario tests that we should add the octavia tempest plugin?","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"2fb2819305d959c8147387eac3f3b216830b41c9","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":331,"context_line":"  resource workflow in Octavia."},{"line_number":332,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":333,"context_line":"* Add Unit Tests to Octavia."},{"line_number":334,"context_line":"* Add API functional tests."},{"line_number":335,"context_line":"* Update CLI and Octavia-dashboard to support UDP fields input."},{"line_number":336,"context_line":"* Documentation work."},{"line_number":337,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_c6730fb1","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":27},"in_reply_to":"df87a7cf_bd938400","updated":"2017-12-14 02:07:02.000000000","message":"Thanks for kind review, will add today. :)","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dcfd450ce0e67cbcdeae25dea4e548b93a2782a5","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":331,"context_line":"  resource workflow in Octavia."},{"line_number":332,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":333,"context_line":"* Add Unit Tests to Octavia."},{"line_number":334,"context_line":"* Add API functional tests."},{"line_number":335,"context_line":"* Update CLI and Octavia-dashboard to support UDP fields input."},{"line_number":336,"context_line":"* Documentation work."},{"line_number":337,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_bd938400","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":27},"in_reply_to":"df87a7cf_d2e0c4cf","updated":"2017-12-13 18:21:35.000000000","message":"+1 Scenario tests should be listed here.  They are in the testing section below.","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"b4c393c120d9ece0a5d8d33a7d66c54de6b19497","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* Add the specified logic which involved into haproxy agent and the affected"},{"line_number":331,"context_line":"  resource workflow in Octavia."},{"line_number":332,"context_line":"* Add API validation code to validate the fields of UDP cases."},{"line_number":333,"context_line":"* Add Unit Tests to Octavia."},{"line_number":334,"context_line":"* Add API functional tests."},{"line_number":335,"context_line":"* Update CLI and Octavia-dashboard to support UDP fields input."},{"line_number":336,"context_line":"* Documentation work."},{"line_number":337,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"df87a7cf_18508bd4","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":27},"in_reply_to":"df87a7cf_d2e0c4cf","updated":"2017-12-13 10:49:41.000000000","message":"Yeah. I wish the functional test into our tempest plugin repo. But the UTs, I think they will still in octavia. :)","commit_id":"79f5a4bdd9afef3b5af6f5c0464248a02f8d7e8e"},{"author":{"_account_id":2245,"name":"Jacky Hu","email":"hudayou@hotmail.com","username":"hudayou"},"change_message_id":"b93d829be75466c1041c8d730db0d7e279272c29","unresolved":false,"context_lines":[{"line_number":43,"context_line":"current haproxy engine only supports TCP based protocols. If users want a load"},{"line_number":44,"context_line":"balancer which supports both TCP and UDP, this need cannot be met by launching"},{"line_number":45,"context_line":"haproxy-based amphora instances. It\u0027s the good time to extend octavia to"},{"line_number":46,"context_line":"support more load balancing scenarios. This spec will introduce how LVS [#foot9]_"},{"line_number":47,"context_line":"can work with haproxy for UDP loadbalancing. The reason for choosing LVS is"},{"line_number":48,"context_line":"that we can easily integrate it with the existing ``keepalived`` service."},{"line_number":49,"context_line":"That means we can configure LVS via ``keepalived``, and check member health as"}],"source_content_type":"text/x-rst","patch_set":15,"id":"df87a7cf_f63021a1","line":46,"updated":"2017-12-15 08:05:19.000000000","message":"This line is exceeding 79 characters which is causing zuul to fail","commit_id":"503b9429d81cd8dd46c580f8ce90e2aab5ab7b3e"}]}
