[OOR-Users] [LISPmob-users] Modifying LISPMob Code

Albert López alopez at ac.upc.edu
Thu Mar 3 15:53:31 CET 2016


Hi Musab,

First I would like to let you know that we are now OpenOverlayRouter 
<http://www.openoverlayrouter.org/>. If possible use the new OOR mailing 
lists to contact us from now on :)

I will try to give you some answers inline:

On 01/03/16 18:40, MUSAB MUHAMMAD wrote:
> Hi all,
>
> I want to introduce a new network entity, Location Server (LS) for 
> some reason, and have MNs and PITRs interact with it as follows:
>
>   * When an MN detects its interface signal dropping (which is going
>     to be determined by an external program), /MN should issue
>     Map-Reply(LS) to PITR, and Map-Reply(NULL) to LS/.
>   * When an MN's interface comes back up after binding to a new
>     address RLOC, and the MN (eventually) issues Map-Reply(RLOC) to
>     PITR, /MN should also issue Map-Reply(RLOC) to LS/.
>
Are you trying to modify the SMR process to also send a Map Reply to the 
LS with the specified RLOCs of the previous point, or you are sending 
directly map replys?

> As we know, a Solicit-Map-Request (SMR) is sent to PITR at interface 
> up, and the PITR sends a Map-Request to the MN, which then sends a 
> Map-Reply with its new RLOC. tr_recv_map_request() in 
> control/lisp_xtr.c appears to handle the incoming Map-Request and 
> respond with a Map-Reply, so I intend to modify this function to deal 
> with both interaction, and supply it through the lisp_xtr_r structure 
> with a flag to distinguish the two behaviours, and the LS address.  
> The flag will be set if the signal drop has been detected, and cleared 
> if the interface has come back up.  There are two modifications:
>
>   * If the flag is set, Map-Reply(LS) will be sent to PITR instead of
>     Map-Reply(RLOC).
>   * An additional Map-Reply(flag ? NULL : RLOC) will be sent to LS.
>
The SMR process not only affects to the PiTR but also all the entries of 
the map cache.
> For the first change, can someone explain how the RLOC currently gets 
> set in the new message?  Is it uc->la, for example?  Or do I need to 
> build a new mapping_t?
uc is just used to indicate the IPs and the udp ports to be used to send 
the packet. You will probably have to generate a mapping with the new 
RLOCs you want to use
>
> For the second change, I don't strictly have to use a Map-Reply, as my 
> code will be talking to my LS, but it would be nice to re-use the 
> message type.  What could I do to express some sort of 
> Map-Reply(NULL)?  Use lisp_msg_put_neg_mapping, perhaps?  Or just an 
> all-zero IP address?
Yes, using a negative map reply (locator_count = 0) will be useful. 
Other possibilities could be to use priority 255 in order to indicate to 
not use the locators. When you create the mapping you also add a locator 
for the LS and then you change priority to 255 of the locators you don't 
want to be used.
>
>
> It looks like send_all_smr_and_reg() sends SMR, so that will result in 
> a later invocation of tr_recv_map_request().  It is only invoked from 
> send_all_smr_cb(), which appears to be invoked by a timer.  Is that 
> timer set as a result of a new binding, i.e., so that SMR will be sent 
> a short moment after the new binding is established?  IOW, does the 
> invocation of send_all_smr_cb() imply that the lisp_xtr object has 
> learned of the new binding?  If so, I intend to clear the flag inside 
> send_all_smr_cb(), so that the subsequent (indirect) invocation of 
> tr_recv_map_request() will behave normally to PITR (as well as send an 
> additional message to LS).  I will also add a non-static function to 
> set the flag, and then call send_all_smr_and_reg().  I will later 
> arrange to call this new function when the signal drop is detected.
We have a structure for each interface (iface_locators) which contain 
the changes produced in the interface. When we receive a netlink message 
we update this structure and we program the SMR timer. If we receive a 
new netlink message before the timer expires, we reprogram the timer 
again. When timer expires we call send_all_smr_cb where we check the 
iface_locators structures to decide if we have to do a SMR or if we had 
a flapping situation and we don't need to initiate the SMR.

I hope with this information you can proceed with your development.

Best regards

Albert
>
> Regards,
> Musab Isah
> Research Student,
> School of Computing and Communications,
> D29, InfoLab21
> Lancaster University


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openoverlayrouter.org/pipermail/users/attachments/20160303/9f419a1c/attachment.html>


More information about the Users mailing list