<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=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        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.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
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="FR" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">Very nice one! Thanks!<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">I was able to reproduce and confirm that with the proper sequence, the LNET connections will be initiated from server to client 988 port.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">Thanks all!<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US"><o:p>&nbsp;</o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="margin-left:35.4pt"><b><span style="font-size:12.0pt;color:black">De&nbsp;:
</span></b><span style="font-size:12.0pt;color:black">Steve Crusan &lt;stevec@dug.com&gt;<br>
<b>Date&nbsp;: </b>vendredi 21 février 2020 à 03:53<br>
<b>À&nbsp;: </b>NeilBrown &lt;neilb@suse.com&gt;<br>
<b>Cc&nbsp;: </b>&quot;Degremont, Aurelien&quot; &lt;degremoa@amazon.com&gt;, &quot;lustre-discuss@lists.lustre.org&quot; &lt;lustre-discuss@lists.lustre.org&gt;<br>
<b>Objet&nbsp;: </b>Re: [lustre-discuss] LNET ports and connections<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">Can\u2019t you also use tcpkill to kill the connections? I\u2019ve used it to kill \u201cstuck\u201d NFS connections before due to MTU related issues, etc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">It\u2019s distributed normally with the dsniff package if you are using an rpm based distribution.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">-Steve<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-left:35.4pt">On Thu, Feb 20, 2020 at 20:39 NeilBrown &lt;<a href="mailto:neilb@suse.com">neilb@suse.com</a>&gt; wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="margin-left:35.4pt"><br>
I haven't tried this, but you might be able to close a socket by:<br>
<br>
1/ decrease&nbsp; /proc/sys/net/ipv4/tcp_keepalive_time<br>
&nbsp; so that keep-alives get sent sooner.&nbsp; Maybe set to 60,<br>
&nbsp; set ..._intvl to 5, and _probes to 3.<br>
<br>
2/ create a rule with iptables to drop all messages sent<br>
&nbsp; on the particular connection.<br>
&nbsp; &nbsp;iptables -A OUTPUT -m multiport --dports ... -sports .. -j DROP<br>
<br>
<br>
Given the suggested keep alive settings, you should only have to wait 75<br>
seconds after creating the IP tables rule before the connection is<br>
broken.<br>
<br>
NeilBrown<br>
<br>
<br>
On Thu, Feb 20 2020, Degremont, Aurelien wrote:<br>
<br>
&gt; Thanks. It feels like the theory is valid.<br>
&gt; Ideally to confirm I would need a way to manually force close the socklnd socket to force the other peer to re-established it.<br>
&gt; Could not find a way to do it for socket opened by kernel threads.<br>
&gt;<br>
&gt; Le 19/02/2020 23:12, « NeilBrown » &lt;<a href="mailto:neilb@suse.com" target="_blank">neilb@suse.com</a>&gt; a écrit :<br>
&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;When LNet wants to send a message over a SOCKLND interface,<br>
&gt;&nbsp; &nbsp; &nbsp;ksocknal_launch_packet() is called.<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;This calls ksocknal_launch_all_connections_locked()<br>
&gt;&nbsp; &nbsp; &nbsp;This loops over all &quot;routes&quot; to the &quot;peer&quot; to make sure they all have<br>
&gt;&nbsp; &nbsp; &nbsp;&quot;connections&quot;.<br>
&gt;&nbsp; &nbsp; &nbsp;If it finds a route without a connection (returned by<br>
&gt;&nbsp; &nbsp; &nbsp;ksocknal_find_connectable_route_locked()) it calls<br>
&gt;&nbsp; &nbsp; &nbsp;ksocknal_launch_connection_locked() which adds the connection request to<br>
&gt;&nbsp; &nbsp; &nbsp;ksnd_connd_routes, and wakes up the connd.&nbsp; The connd thread will then<br>
&gt;&nbsp; &nbsp; &nbsp;make the connection.<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;Hope that helps.<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;NeilBrown<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;On Wed, Feb 19 2020, Degremont, Aurelien wrote:<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt; Thanks! That's really interesting.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt; Do you have a code pointer that could show where the code will establish this connection if missing?<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt; Le 18/02/2020 23:34, « NeilBrown » &lt;<a href="mailto:neilb@suse.com" target="_blank">neilb@suse.com</a>&gt; a écrit :<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;It is not true that:<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp; &nbsp; LNET will established connections only if asked for by upper layers.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;or at least, not in the sense that the upper layers ask for a<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;connection.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;Lustre knows nothing about connections.&nbsp; Even LNet doesn't really know<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;about connections. It is only at the socklnd level that connections mean<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;much.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;Lustre and LNet are message-passing protocols.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;Lustre asks LNet to send a message to a given peer, and gives some<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;details of the sort of reply to expect.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;LNet chooses a route and thus a network interface, and asked the LND to<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;send the message.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;The socklnd LND will see if it already has a TCP connection.&nbsp; If it<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;does, it will use it.&nbsp; If not, it will create one.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;So yes : it is exactly:<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp; &nbsp;possible that the server in this case opens the connection itself<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp; &nbsp;without waiting for the client to reconnect?<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;NeilBrown<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;On Tue, Feb 18 2020, Aurelien Degremont wrote:<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Thanks for your reply.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; I think I have a good enough understanding of LNET itself. My question was more about how LNET is being used by Lustre itself.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; LNET will established connections only if asked for by upper layers.
<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; When I was talking about client and server, I was talking about how Lustre was using it.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; As far as I understood, Lustre server only contact clients when they need to send LDLM callbacks.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; They do so through the socket already opened by the client (reverse import).<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; What happened if the socket is closed is what I'm not sure. I though the server is rather waiting for the client to reconnect and if not, is more or less evicting it.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Could it be possible that the server in this case opens the connection itself without waiting for the client to reconnect?<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Aurélien<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Le 18/02/2020 05:42, « NeilBrown » &lt;<a href="mailto:neilb@suse.com" target="_blank">neilb@suse.com</a>&gt; a écrit :<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;LNet is a peer-to-peer protocol, it has no concept of client and server.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;If one host needs to send a message to another but doesn't already have<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;a connection, it creates a new connection.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;I don't yet know enough specifics of the lustre protocol to be certain<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;of the circumstances when a lustre server will need to initiate a message<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;to a client, but I imagine that recalling a lock might be one.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;I think you should assume that any LNet node might receive a connection<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;from any other LNet node (for which they share an LNet network), and<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;that the connection could come from any port between 512 and 1023<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;(LNET_ACCEPTOR_MIN_PORT to LNET_ACCEPTOR_MAX_PORT).<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;NeilBrown<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;On Mon, Feb 17 2020, Degremont, Aurelien wrote:<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Hi all,<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; From what I've understood so far, LNET listens on port 988 by default and peers connect to it using 1021-1023 TCP ports as source ports.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; At Lustre level, servers listen on 988 and clients connect to them using the same source ports 1021-1023.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; So only accepting connections to port 988 on server side sounded pretty safe to me. However, I've seen connections from 1021-1023 to 988, from server hosts to client hosts sometimes.<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; I can't understand what mechanism could trigger these connections. Did I miss something?<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Thanks<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; Aurélien<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; _______________________________________________<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; lustre-discuss mailing list<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; <a href="mailto:lustre-discuss@lists.lustre.org" target="_blank">
lustre-discuss@lists.lustre.org</a><br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt; <a href="http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org" target="_blank">
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org</a><br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;&gt;&nbsp; &nbsp; &nbsp;<br>
&gt;&nbsp; &nbsp; &nbsp;<br>
_______________________________________________<br>
lustre-discuss mailing list<br>
<a href="mailto:lustre-discuss@lists.lustre.org" target="_blank">lustre-discuss@lists.lustre.org</a><br>
<a href="http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org" target="_blank">http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org</a><o:p></o:p></p>
</blockquote>
</div>
</div>
<p class="MsoNormal" style="margin-left:35.4pt">-- <o:p></o:p></p>
<div>
<div>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<b><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:black">Steve Crusan</span></b><o:p></o:p></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:black">Storage Specialist</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif">&nbsp;<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif">&nbsp;<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<b><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:black;border:solid windowtext 1.0pt;padding:0cm"><img border="0" width="118" height="73" style="width:1.2291in;height:.7604in" id="_x0000_i1025" src="cid:~WRD0000.jpg" alt="Image supprimée par l'expéditeur."></span></b><span style="font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif">&nbsp;<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<b><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:#666666">DownUnder GeoSolutions</span></b><span style="font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif">&nbsp;<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:#666666">16200 Park Row Drive, Suite 100</span><span style="font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:#666666">Houston TX 77084, USA</span><span style="font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<b><i><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:#666666">tel
</span></i></b><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:#666666">&#43;1 832 582 3221</span><span style="font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif"><a href="mailto:stevec@dug.com" target="_blank"><b><span style="font-size:10.0pt;color:#1155CC">stevec@dug.com</span></b></a><o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:0cm;margin-left:35.4pt;margin-bottom:.0001pt">
<span style="font-family:&quot;Arial&quot;,sans-serif"><a href="http://www.dug.com/" target="_blank"><b><span style="font-size:10.0pt;color:#1155CC">www.dug.com</span></b></a><o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>