<div dir="ltr">For the past eight months I have been working on a version of ndnSIM for wireless mobile ad-hoc networks, so maybe it will be useful to share some experience. (Unfortunately I don't think the sponsoring agency will let me share the actual code.) <div>
<br></div><div>The biggest problem I had to deal with is that the Face abstraction is implicitly a point-to-point link to a single neighbor node, and wireless links are inherently broadcast. I considered a scheme in which each node maintains separate faces for every other node in the network, but that didn't seem like a good solution for a network with hundreds of nodes, with neighbors appearing and disappearing and reappearing unpredictably based on mobility. What I use instead is a Neighbor structure consisting of a Face and a MAC address; this Neighbor structure becomes the addressing unit for the network.</div>
<div><br></div><div>The Face <=> (one neighbor node) equivalence is a central feature of  the CCN architecture, so replacing the Face with something else required changes to the rest of ndnSIM. (To be clear, I still use Faces to represent different network devices; the nodes in my network may have multiple wireless interfaces, each of which is a separate Face.) Most of the work went into changing the FIB and PIT. I ended up creating parallel wireless versions of each, called WFIB and WPIT. The entries in these tables store next-hop information using the Neighbor structure rather than the Face.</div>
<div><br></div><div>I also had to change the Interest packet to include a FromNode MAC address so that I could construct the Neighbor information when I received an Interest. Again I created a parallel wireless version, called WInterest. And that meant that I had to add an OnWInterest( ) method to my Forwarding Strategy, so I ended up writing a parallel Wireless Forwarding Strategy class, WFW.</div>
<div><br></div><div>I added a SendTo( ) method to the Face class so that I can send packets to a specific MAC address. I should have done this in a child class (AdHocNetDeviceFace or something) but I was in a hurry.</div>
<div><br></div><div>Lastly, I created a rudimentary routing protocol  using broadcast flooding with a new message type, called Announcement. Producers send Announcements for their prefixes periodically, and these Announcements are used to populate and refresh the WFIBs. Like the WInterest, the Announcement contains a FromNode field that lets each node construct a path to the Producer. When a node propagates an Announcement it places its own MAC address into the FromNode field and then broadcasts it. </div>
<div><br></div><div>I haven't finished with this; I don't have funding to keep working on it right now, and I know of many ways it can be improved. But it does work.</div><div><br></div><div>I hope this is useful to anyone who is trying to do CCN/Named Data Networking in a mobile wireless environment. It's my impression that the CCN architecture has some built-in biases in favor of stable enterprise-scale networks, so making it work in a wireless MANET will require breaking a few eggs.</div>
<div><br></div><div>John</div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jul 14, 2013 at 6:54 PM, Alex Afanasyev <span dir="ltr"><<a href="mailto:alexander.afanasyev@ucla.edu" target="_blank">alexander.afanasyev@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 Milad,<div><br></div><div>Sorry for my delayed reply.  Currently, there are no strategies that implement smart wireless-aware forwarding are implemented in ndnSIM.  I think I already pointed you to an extension that does some wireless-based forwarding in vehicular environments (<a href="https://github.com/cawka/ndnSIM-nom-rapid-car2car" target="_blank">https://github.com/cawka/ndnSIM-nom-rapid-car2car</a>), but it is not exactly what are you looking for.</div>
<div><br></div><div>As for the implementation, you may want to start with creating a new custom strategy class that is derived from ndn::ForwardingStrategy and overload a couple of methods, including SatisfyPendingInterest, CanSendOutInterest, DoPropagateInterest and may be some others.  The key point is that you should enable "forwarding" to the incoming face (since in wifi scenarios this is an intended behavior).  Also, you should be careful to terminate such "relaying" at some point.</div>
<div><br></div><div>As for multipath routing.  It is NDN feature (nonce in interests effectively prevent any looping, so it is supported by ndnSIM). Another question is how exactly this multipath is implemented in the forwarding strategy.</div>
<div><br></div><div>---</div><div>Alex</div><div><br><div><div><div class="h5"><div>On Jul 14, 2013, at 1:28 PM, Milad Mahdian <<a href="mailto:mahdian.m@husky.neu.edu" target="_blank">mahdian.m@husky.neu.edu</a>> wrote:</div>
<br></div></div><blockquote type="cite"><div><div class="h5"><div dir="ltr">Hi Alex,<div><br></div><div>Assuming one node is trying to send a packet to another node over a wireless channel, I was wondering how I can simulate this communication in ndnSIM. in another word, as in ndnSIM nodes are communicating through interfaces, how one can simulate a wireless communication over a wireless channel.</div>

<div><br></div><div>Regards,</div><div>Milad Mahdian<br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Milad Mahdian</b> <span dir="ltr"><<a href="mailto:mahdian.m@husky.neu.edu" target="_blank">mahdian.m@husky.neu.edu</a>></span><br>

Date: Sun, Jul 14, 2013 at 12:33 AM<br>Subject: Forwarding strategy for wireless network<br>To: <a href="mailto:ndnsim@lists.cs.ucla.edu" target="_blank">ndnsim@lists.cs.ucla.edu</a><br>Cc: Edmund Yeh <<a href="mailto:eyeh@ece.neu.edu" target="_blank">eyeh@ece.neu.edu</a>>, melis yetkinler <<a href="mailto:melisyetkinler@gmail.com" target="_blank">melisyetkinler@gmail.com</a>><br>

<br><br><div dir="ltr">Hi Alex,<div><br></div><div>We are working on a wireless scenario in which nodes are chosen randomly as a relay. I was wondering if there is such a forwarding strategy that relays are chosen randomly. Also, is there any support for multipath routing in ndnSIM?</div>


<div><br></div><div>Regards,</div><div>Milad </div></div>
</div><br></div></div></div></div>
_______________________________________________<br>ndnSIM mailing list<br><a href="mailto:ndnSIM@lists.cs.ucla.edu" target="_blank">ndnSIM@lists.cs.ucla.edu</a><br><a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a><br>
</blockquote></div><br></div></div><br>_______________________________________________<br>
ndnSIM mailing list<br>
<a href="mailto:ndnSIM@lists.cs.ucla.edu">ndnSIM@lists.cs.ucla.edu</a><br>
<a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim</a><br>
<br></blockquote></div><br></div></div>