<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-indent:21.0pt;
        font-size:10.5pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:12651902;
        mso-list-type:hybrid;
        mso-list-template-ids:-663693256 -17531288 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:18.0pt;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%2\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:42.0pt;
        text-indent:-21.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:63.0pt;
        text-indent:-21.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:84.0pt;
        text-indent:-21.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%5\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:105.0pt;
        text-indent:-21.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:126.0pt;
        text-indent:-21.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:147.0pt;
        text-indent:-21.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%8\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:168.0pt;
        text-indent:-21.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:189.0pt;
        text-indent:-21.0pt;}
@list l1
        {mso-list-id:1898203119;
        mso-list-type:hybrid;
        mso-list-template-ids:-1217103558 252576066 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:18.0pt;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%2\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:42.0pt;
        text-indent:-21.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:63.0pt;
        text-indent:-21.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:84.0pt;
        text-indent:-21.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%5\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:105.0pt;
        text-indent:-21.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:126.0pt;
        text-indent:-21.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:147.0pt;
        text-indent:-21.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-text:"%8\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:168.0pt;
        text-indent:-21.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:189.0pt;
        text-indent:-21.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="#0563C1" vlink="#954F72" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi Allain,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">During the OpenStack driver meeting on last Friday, the community asked me to provide some examples of l2pop RPC payloads with this extension to this RFE. Could you please help review the example?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The link for RFE: <a href="https://bugs.launchpad.net/neutron/+bug/1793653">
https://bugs.launchpad.net/neutron/+bug/1793653</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The patch ID: 4ae5a58<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Example:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">L2pop driver on server side:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">===============================<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1) when port binding or status or ip_address(or mac) is updated, notify this port's FDB(i.e port's ip address, mac, hosting agent's tunnel ip) to all agents<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2) also checks if it is the first or last port on the hosting agent's network, if so<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">   a) notifies all agents to create/delete tunnels and flood flows to hosting agent<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">   b) notifies hosting agent about all the existing network ports on other agents(so that hosting agent can create tunnels, flood and unicast flows to these ports).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">For subproject networking-bgpvpn to extend l2pop fdbs:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">===============================<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1) when port binding or status or ip_address(or mac) is updated, notify this port's FDB(i.e port's ip address, mac, hosting agent's tunnel ip) to all agents<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">  No action<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2) also checks if it is the first or last port on the hosting agent's network, if so<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">   a) notifies all agents to create/delete tunnels and flood flows to hosting agent<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     No action<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">   b) notifies hosting agent about all the existing network ports on other agents(so that hosting agent can create tunnels, flood and unicast flows to these ports).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     Insert the ports information from BGPVPN to the FDB<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     The network_id, segment_id and network_type are all from neutron. Becaue the network_id, segment_id and network_type relate to the port which triggers l2pop.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_id: comes from the port's network<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        segment_id: comes from the segment which the port bounds to.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_type: comes from the port's network<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     Thus networking-bgpvpn only needs to insert information into 'ports' as following:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        {75b21e39-15b9-4f12-8a60-1375a4dbdbef:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">          {'segment_id': '12',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'network_type': 'vxlan',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'ports': {'12.66.1.1': [('fa:16:3e:d2:70:92', '168.177.1.23'),('fa:16:3e:f3:a4:21', '168.177.1.5')],<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">                  '13.96.1.1': [('fa:16:3e:f9:cc:77', '169.177.1.16'),(</span><span lang="EN-US">
<span style="color:#0070C0">'fa:16:3e:a5:ee:f1', '169.177.1.12')]}}}<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">3) Update the BGPVPN gateway<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   a) add a new gateway
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:26.25pt"><span lang="EN-US" style="color:#0070C0">Use the L2populationAgentNotifyAPI in neutron\plugins\ml2\drivers\l2pop\rpc.py. For simplicity, we call L2populationAgentNotifyAPI as l2pop_notifier.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">add_fdb_entries()<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network: the network associated with the BGPVPN<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_id: network’s id<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        segment_id: network’s “provider:segmentation_id”.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_type: network’s “provider:network_type”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     Thus networking-bgpvpn needs to call add_fdb_entries() to add the following fdb:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        {75b21e39-15b9-4f12-8a60-1375a4dbdbef:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">          {'segment_id': '100',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'network_type': 'vxlan',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'ports': {'12.66.1.1': [('00:00:00:00:00:00', '0.0.0.0')]}}}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   b) withdraw an existing gateway<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">remove_fdb_entries()<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network: the network associated with the BGPVPN<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_id: network’s id<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        segment_id: network’s “provider:segmentation_id”.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        network_type: network’s “provider:network_type”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">     Thus networking-bgpvpn needs to call add remove_fdb_entries() to remove the following fdb:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">        {75b21e39-15b9-4f12-8a60-1375a4dbdbef:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">          {'segment_id': '100',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'network_type': 'vxlan',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">           'ports': {'12.66.1.1': [('00:00:00:00:00:00', '0.0.0.0')]}}}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">4) Delete BGPVPN<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">remove_fdb_entries()<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   Similar to 3b but will remove all the fdbs belonging to the BGPVPN(including the gateway and all the devices in the BGPVPN)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">5) Update BGPVPN device<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:15.75pt"><span lang="EN-US" style="color:#0070C0">a) add new devices
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">add_fdb_entries()       <o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      Similar to 3a but add new device’s fdb information.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   b) withdraw existing devices<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">add_fdb_entries()<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      Similar to 3b but remove the fdb information belonging to the devices which are withdrawn
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">6) BGP agent updates<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:15.75pt"><span lang="EN-US" style="color:#0070C0">a) agent up<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">add_fdb_entries()       Similar to 3a but add new device’s fdb information<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">remove_fdb_entries()   Similar to 3a but remove the fdb information belonging to the stale device<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">   b) agent down<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      Similar to 3b but remove all the fdbs belonging to the agent(including the gateway and all the devices)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">7) disassociated a VPN from a BGP speaker<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      l2pop_notifier.</span><span lang="EN-US">
<span style="color:#0070C0">remove_fdb_entries()<o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#0070C0">      Similar to 3b but remove the fdb information belonging to the BGPVPN whose association with a BGP speaker has been dropped.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">What’s more, I have several questions:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1. it seems that the bgpvpn in stx-networking-bgpvpn can only be l2vpn according to the docstring in function _get_network_id. To support this RFE, whether it can be l3vpn or a bgpvpn can associate more than one network?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2. Could you please provide the network flow between a vm in neutron network and a device in bgpvpn? Suppose the fdb of the device in bgpvpn has been prepopulated.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Best Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Xu, Chenjie<o:p></o:p></span></p>
</div>
</body>
</html>