<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 14 (filtered medium)">
<style><!--
/* Font Definitions */
@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:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Hi Ramy,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">There is quite a bit of difference between FC and iSCSI (e.g. iqn vs WWN ..)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">While iSER is just an alternative iSCSI transport, and use the exact same tools on the initiator and target like iSCSI/TCP<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Most iSER capable iSCSI targets don’t even have a separate configuration for TCP or RDMA, and would accept both transports options on a given logical iSCSI target (why we don’t need a different plug-ins for targets
 with exception of STGT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">On the initiator side the only difference between TCP and RDMA is in the interface flag (--interface=[iface])<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">e.g. "iscsiadm -m discoverydb -t st -p ip:port
<b>-I iser</b> --discover"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">so we don’t need a full new class to propagate a simple flag, and rather make this a simple parameter<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">we also though of modifying the operation that “default_rdma” would mean try RDMA and if it fails fall back to TCP, to simplify operations.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Shlomi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Asselin, Ramy [mailto:ramy.asselin@hp.com]
<br>
<b>Sent:</b> Tuesday, March 25, 2014 17:55<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [nova][cinder] Refactor ISCSIDriver to support other iSCSI transports besides TCP<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Shlomi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Another solution to consider is to create a subclass per transport (iSCSI, iSER) which reference the same shared common code.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">This is the solution used for the 3PAR iSCSI & FC transports. See these for reference:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">cinder/volume/drivers/san/hp/hp_3par_common.py<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">cinder/volume/drivers/san/hp/hp_3par_fc.py<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">cinder/volume/drivers/san/hp/hp_3par_iscsi.py<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Hope this helps.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Ramy<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Shlomi Sasson [<a href="mailto:shlomis@mellanox.com">mailto:shlomis@mellanox.com</a>]
<br>
<b>Sent:</b> Tuesday, March 25, 2014 8:07 AM<br>
<b>To:</b> <a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a><br>
<b>Subject:</b> [openstack-dev] [nova][cinder] Refactor ISCSIDriver to support other iSCSI transports besides TCP<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I want to share with the community the following challenge:<o:p></o:p></p>
<p class="MsoNormal">Currently, Vendors who have their iSCSI driver, and want to add RDMA transport (iSER), cannot leverage their existing plug-in which inherit from iSCSI<o:p></o:p></p>
<p class="MsoNormal">And must modify their driver or create an additional plug-in driver which inherit from iSER, and copy the exact same code.<o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">Instead I believe a simpler approach is to add a new attribute to ISCSIDriver to support other iSCSI transports besides TCP, which will allow minimal changes to support iSER.<o:p></o:p></p>
<p class="MsoNormal">The existing ISERDriver code will be removed, this will eliminate significant code and class duplication, and will work with all the iSCSI vendors who supports both TCP and RDMA without the need to modify their plug-in drivers.<o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">To achieve that both cinder & nova requires slight changes:<o:p></o:p></p>
<p class="MsoNormal">For cinder, I wish to add a  parameter called “transport” (default to iscsi) to distinguish between the transports and use the existing “iscsi_ip_address” parameter for any transport type connection.<o:p></o:p></p>
<p class="MsoNormal">For nova, I wish to add a parameter called “default_rdma” (default to false) to enable initiator side.<o:p></o:p></p>
<p class="MsoNormal">The outcome will avoid code duplication and the need to add more classes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am not sure what will be the right approach to handle this, I already have the code, should I open a bug or blueprint to track this issue?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best Regards,<o:p></o:p></p>
<p class="MsoNormal">Shlomi<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>