<div dir="ltr">To be clear my scenario isn't pure Ad-Hoc wireless network it is infrastructure  one, with wireless mobile nodes connected to Access Points APs and APs are interconnected by a grid of routers.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 21, 2017 at 12:55 PM, Amir Ibrahim <span dir="ltr"><<a href="mailto:a.ibrahim@fci-cu.edu.eg" target="_blank">a.ibrahim@fci-cu.edu.eg</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Spyros,<div>                 I did the modifications you suggested and still interests aren't forwarded. </div><div>I think the problem is in net-devices connecting WiFi APs to routers via P2P links, is there anything I can do to net-devices installed at the P2P link ends to force forwarding. </div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 20, 2017 at 10:44 PM, Spyridon (Spyros) Mastorakis <span dir="ltr"><<a href="mailto:mastorakis@cs.ucla.edu" target="_blank">mastorakis@cs.ucla.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi,<div><br></div><div>probably you need a pure broadcast strategy and some changes in the NetDeviceTransport class. Please take a look here:</div><div><br></div><div><a href="https://github.com/4th-ndn-hackathon/ndnSIM-Mobile-Simulation-Package/commit/d6bce17032111bdf8c170b9c694dced7f0796b14" target="_blank">https://github.com/4th-ndn-hac<wbr>kathon/ndnSIM-Mobile-Simulatio<wbr>n-Package/commit/d6bce17032111<wbr>bdf8c170b9c694dced7f0796b14</a></div><div><br></div><div>You might also need to allow NFD to forward a Data packet through the face that it was received:</div><div><br></div><div><a href="https://github.com/4th-ndn-hackathon/ndnSIM-Mobile-Simulation-Package/commit/cadcfc41ff1b6bed617f700f822507c4dcd0f63c" target="_blank">https://github.com/4th-ndn-hac<wbr>kathon/ndnSIM-Mobile-Simulatio<wbr>n-Package/commit/cadcfc41ff1b6<wbr>bed617f700f822507c4dcd0f63c</a></div><div><br></div><div>Thanks,</div><div> <br><div>
<div><div><div><span style="float:none;display:inline!important">Spyridon (Spyros) Mastorakis</span><br><span style="float:none;display:inline!important">Personal Website: </span><a href="http://cs.ucla.edu/~mastorakis/" target="_blank">http://cs.ucla.edu/~m<wbr>astorakis/</a><br><span style="float:none;display:inline!important">Internet Research Laboratory</span><br><span style="float:none;display:inline!important">Computer Science Department</span><br><span style="float:none;display:inline!important">UCLA</span></div><div><br></div></div></div></div><div><div class="m_-2287561700722359961h5"><div><blockquote type="cite"><div>On Apr 20, 2017, at 9:33 AM, Amir Ibrahim <<a href="mailto:a.ibrahim@fci-cu.edu.eg" target="_blank">a.ibrahim@fci-cu.edu.eg</a>> wrote:</div><br class="m_-2287561700722359961m_-2445344120906894369Apple-interchange-newline"><div><div dir="ltr">Hi,<div>   I modified one of the examples to simulate the mobility impact on caching.</div><div>My scenario is:</div><div>1. a grid of routers (4*4)</div><div>2. 8 WiFi access points </div><div>3. 25 mobile wifi consumers</div><div><br></div><div>- both routers and APs are cache enabled, WiFi consumers are unable to cache.</div><div>- scenario code attached</div><div><br></div><div>When I run the scenario, I get lot of NACKs with no route reason (when I use Best-route forwarding), and re-transmission trials when I use (multicast) forwarding strategy.</div><div><br></div><div>as below:</div><div><br></div><div>Any clue why nodes aren't forwarding interest packets</div><div><br></div><div>ns3@ubuntu:~/ndnSIM/ns-3$ NS_LOG=ndn.Consumer:ndn.Produc<wbr>er ./waf --run scratch/project-simulation --vis</div><div>Waf: Entering directory `/home/ns3/ndnSIM/ns-3/build'</div><div>Waf: Leaving directory `/home/ns3/ndnSIM/ns-3/build'</div><div>Build commands will be stored in build/compile_commands.json</div><div>'build' finished successfully (3.637s)</div><div>0s -1 ndn.Consumer:Consumer()<br></div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Consumer:Consumer()</div><div>0s -1 ndn.Producer:Producer()</div><div>0s 24 ndn.Producer:StartApplication(<wbr>)<br></div><div>0s 33 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 34 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 35 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 36 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 37 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 38 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 39 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 40 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 41 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 42 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 43 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 44 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 45 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 46 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 47 ndn.Consumer:StartApplication(<wbr>)</div><div>0s 33 ndn.Consumer:SendPacket()</div><div>0s 33 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 33 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 34 ndn.Consumer:SendPacket()</div><div>0s 34 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 34 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 35 ndn.Consumer:SendPacket()</div><div>0s 35 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 35 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 36 ndn.Consumer:SendPacket()</div><div>0s 36 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 36 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 37 ndn.Consumer:SendPacket()</div><div>0s 37 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 37 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 38 ndn.Consumer:SendPacket()</div><div>0s 38 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 38 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 39 ndn.Consumer:SendPacket()</div><div>0s 39 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 39 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 40 ndn.Consumer:SendPacket()</div><div>0s 40 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 40 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 41 ndn.Consumer:SendPacket()</div><div>0s 41 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 41 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 42 ndn.Consumer:SendPacket()</div><div>0s 42 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 42 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 43 ndn.Consumer:SendPacket()</div><div>0s 43 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 43 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 44 ndn.Consumer:SendPacket()</div><div>0s 44 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 44 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 45 ndn.Consumer:SendPacket()</div><div>0s 45 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 45 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 46 ndn.Consumer:SendPacket()</div><div>0s 46 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 46 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0s 47 ndn.Consumer:SendPacket()</div><div>0s 47 ndn.Consumer:SendPacket(): [INFO ] > Interest for 0</div><div>0s 47 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 0 with +0.0ns. already 0 items</div><div>0.5s 33 ndn.Consumer:SendPacket()</div><div>0.5s 33 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 33 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 34 ndn.Consumer:SendPacket()</div><div>0.5s 34 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 34 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 35 ndn.Consumer:SendPacket()</div><div>0.5s 35 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 35 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 36 ndn.Consumer:SendPacket()</div><div>0.5s 36 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 36 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 37 ndn.Consumer:SendPacket()</div><div>0.5s 37 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 37 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 38 ndn.Consumer:SendPacket()</div><div>0.5s 38 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 38 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 39 ndn.Consumer:SendPacket()</div><div>0.5s 39 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 39 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 40 ndn.Consumer:SendPacket()</div><div>0.5s 40 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 40 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 41 ndn.Consumer:SendPacket()</div><div>0.5s 41 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 41 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 42 ndn.Consumer:SendPacket()</div><div>0.5s 42 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 42 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 43 ndn.Consumer:SendPacket()</div><div>0.5s 43 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 43 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 44 ndn.Consumer:SendPacket()</div><div>0.5s 44 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 44 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 45 ndn.Consumer:SendPacket()</div><div>0.5s 45 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 45 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 46 ndn.Consumer:SendPacket()</div><div>0.5s 46 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 46 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.5s 47 ndn.Consumer:SendPacket()</div><div>0.5s 47 ndn.Consumer:SendPacket(): [INFO ] > Interest for 1</div><div>0.5s 47 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 1 with +500000000.0ns. already 1 items</div><div>0.500489s 37 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>0.500498s 43 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>0.501802s 39 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>0.502403s 41 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>0.502652s 38 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>0.503541s 35 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%01, reason: NoRoute</div><div>1s 33 ndn.Consumer:SendPacket()</div><div>1s 33 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 33 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 34 ndn.Consumer:SendPacket()</div><div>1s 34 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 34 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 35 ndn.Consumer:SendPacket()</div><div>1s 35 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 35 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 36 ndn.Consumer:SendPacket()</div><div>1s 36 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 36 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 37 ndn.Consumer:SendPacket()</div><div>1s 37 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 37 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 38 ndn.Consumer:SendPacket()</div><div>1s 38 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 38 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 39 ndn.Consumer:SendPacket()</div><div>1s 39 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 39 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 40 ndn.Consumer:SendPacket()</div><div>1s 40 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 40 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 41 ndn.Consumer:SendPacket()</div><div>1s 41 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 41 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 42 ndn.Consumer:SendPacket()</div><div>1s 42 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 42 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 43 ndn.Consumer:SendPacket()</div><div>1s 43 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 43 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 44 ndn.Consumer:SendPacket()</div><div>1s 44 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 44 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 45 ndn.Consumer:SendPacket()</div><div>1s 45 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 45 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 46 ndn.Consumer:SendPacket()</div><div>1s 46 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 46 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s 47 ndn.Consumer:SendPacket()</div><div>1s 47 ndn.Consumer:SendPacket(): [INFO ] > Interest for 2</div><div>1s 47 ndn.Consumer:WillSendOutIntere<wbr>st(): [DEBUG] Trying to add 2 with +1000000000.0ns. already 2 items</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div>1s -1 ndn.Consumer:OnTimeout(0)</div><div><b>1.0005s 37 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.00056s 43 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.00178s 41 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.00196s 38 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.00229s 39 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.00395s 35 ndn.Consumer:OnNack(): [INFO ] NACK received for: /prefix/%FE%02, reason: NoRoute</b></div><div><b>1.5s 33 ndn.Consumer:SendPacket()</b></div><div>   <br clear="all"><div><br></div>-- <br><div class="m_-2287561700722359961m_-2445344120906894369gmail_signature"><div dir="ltr">   Regards<br>Amir I. Mohamad<br>Assistant Lecturer <br>Faculty of Computers & Information<br>IT Dept. Cairo University</div></div>
</div></div>

<br></div></blockquote></div><br></div></div></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="m_-2287561700722359961gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">   Regards<br>Amir I. Mohamad<br>Assistant Lecturer <br>Faculty of Computers & Information<br>IT Dept. Cairo University</div></div>
</div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">   Regards<br>Amir I. Mohamad<br>Assistant Lecturer <br>Faculty of Computers & Information<br>IT Dept. Cairo University</div></div>
</div>

<br>
<br>