In truth I'm studing the state-of-the-art of multihoming in Android. Some years ago, in Finland, I worked on HIP. It was promising but now it seems deserted. Then -in Android- SCTP, but for some reasons I'm interested in non-root scenarii only, so LISP. My professor asked me to extend something of LISPmob, so the obvious ways seemed two: or multiple EIDs support (which may be considered as an implementation for the *end-host multihoming*); or enabling multiple interfaces with the same EID (*end-site multihoming*). Obviously, the second topic was more interesting, but -as far as I knew until this evening- again impossible without rooting... Hence I've tried the other way, but with the same bad results.
Nevertheless, I just read this on VpnService.Builder.estabilish()... "[...] it is rare but not impossible to have two interfaces while performing a seamless handover. In this case, the old interface will be deactivated when the new one is created successfully". So, it *is* possibile to configure two interfaces (each one with its own EID) for the same VPN just with these APIs! Or do I misunderstand it? Sorry for bothering you, in general and so close to Christmas, but since LISP is still quite new in Italy, I'm very interested in it π Luca ________________________________ Da: Alberto Rodriguez-Natal<mailto:[email protected]> Inviato: β23/β12/β2014 19.57 A: Luca Stornaiuolo<mailto:[email protected]> Cc: LISPmob<mailto:[email protected]> Oggetto: Re: [LISPmob-users] [Contactus-android] [Android] Beta network EID Hi again Luca, Forgot to mention that the fixed app is already in Google Play and the code in github in case you want to update or take a look at the sources. BTW, I didn't ask you but, what is the use case you are targeting? Having more than one EID in a MN is not the common use case :) Alberto On Tue, Dec 23, 2014 at 3:14 PM, Alberto Rodriguez-Natal <[email protected]<mailto:[email protected]>> wrote: Hi Luca, On Mon, Dec 22, 2014 at 3:32 PM, Luca Stornaiuolo <[email protected]<mailto:[email protected]>> wrote: Hi Alberto, With the last edits the noroot works good. Indeed the problem was the json-c only. [π] I suppose that my problems were caused by the DNS. Now browsing is all right. That's great to hear! Glad to see that you finally made it work :) Could you tell me some more about multiple EIDs support? I experienced that the same lispd.conf with more than one EID which works in Linux, is rejected by Android as "Wrong configuration" --as an IllegalArgumentException raised by the LISPmobVPNService's .configure(). Why (and where) is there the one EID limit? One of the things we noticed while doing multi-EID testing is that it is not well supported on the NAT traversal infrastructure of the beta-network. Since a MN will be likely behind a NAT, that is a strong drawback. However that is not an architecture flaw and the infrastructure could be easily update to support multiple EIDs while doing NAT traversal operation. Besides that, you need to be aware that LISPmob-Android-nonroot works slightly different from LISPmob-Andoid-root (or from the other versions of LISPmob for the rest of platforms). While the rest of LISPmob flavors handle system networking stack directly (they create TUN interfaces, modify routes and rules, etc), the nonroot version leverages on the VPN API service provided by Google [1], i.e. it has no direct access to the networking subsystem and relies on the VPN service to receive and forward the packets. That's the price to pay to have LISPmob without root ;). For fine-grain control of the networking system (and thus multi-EID support) you'd probably have to use the root version. We have little experience with Android's VPN service and multi-EIDs but if you are brave enough and nonroot is a must for you, then you can try to hack something playing with the VPN service API ;) Hope this helps, Alberto [1] https://developer.android.com/reference/android/net/VpnService.html Thanks, Luca ________________________________ Da: Alberto Rodriguez-Natal<mailto:[email protected]> Inviato: β19/β12/β2014 00.42 A: Luca Stornaiuolo<mailto:[email protected]> Cc: LISPmob<mailto:[email protected]> Oggetto: Re: [LISPmob-users] [Contactus-android] [Android] Beta network EID Hi Luca, On Thu, Dec 18, 2014 at 12:33 PM, Luca Stornaiuolo <[email protected]<mailto:[email protected]>> wrote: Thank you Alberto, I managed to fix that bug too editing the LISPmob_JNI.java adding: static { System.loadLibrary("json-c"); } before the lispd one, and renaming the call in lispd_jni.h as following: JNIEXPORT jintArray JNICALL Java_org_lispmob_noroot_LISPmob_JNI_startLispd (JNIEnv * env, jclass cl, jint vpn_tun_fd, jstring storage_path); or, at least, this way the daemon started... :-) May I get the sources of the last version (0.4.2)? Sure! We'll upload them ASAP to github. Note that the only difference from what is already on github is the fix for the bug you detected, the rest remains the same. Anyway, even with the apk that you kindly sent me, when I try to reach lispmon.net<http://lispmon.net> the browser just freeze :-( Actually, I believe that what Lori was suggesting was to try to ping some of the LISP sites that appear on the map in lispmon.net<http://lispmon.net>, not to ping the website itself :) If it could be of some relevance, looking the log [Android]: Map Notify confirms correct registration of the prefix 153.16.51.48/32<http://153.16.51.48/32> Great! That means that at least you are correctly registering into the MapServer. So where could be the problem? In router mode? Because right now on Linux (3G<->VirtualRouter<->WiFi<->Ubuntu) it works perfectly (I had troubles some days ago), but only if router mode = on. In router mode = off, I get only this [Linux]: get_rloc_from_balancing_locator_vec: Source and destination RLOCs have different AFI and nothing more :-( Could you give us a bit more of detail? If you can send us the complete level 3 logs (./lispd -d 3), your config (lispd.conf) and some info about your system (such what "ip address" and "ip route" commands show) we'll try to get into it. My project is to extend the LISPmob noroot version in order to enable multiple EIDs on the same interface in a MN scenario. Do you have some hints? We have looked into that in the past. I'll get back to you shortly with more details. Again, many thanks, No problem! We're glad to help :) Best, Alberto Luca ________________________________ Da: Alberto Rodriguez-Natal <[email protected]<mailto:[email protected]>> Inviato: lunedΓ¬ 15 dicembre 2014 15:40 A: Lori Jakab Cc: Luca Stornaiuolo; LISPmob Oggetto: Re: [LISPmob-users] [Contactus-android] [Android] Beta network EID Hi Luca, Regarding the Android issue, please see below. On Mon, Dec 15, 2014 at 2:51 PM, Lori Jakab <[email protected]<mailto:[email protected]>> wrote: Hi Luca, Adding the lispmob-users mailing list, since I'm not familiar with the Android build system of LISPmob. Answers to some of the other questions below. On 12/13/2014 05:55 PM, Luca Stornaiuolo wrote: > Hi Lori, > in these days I'm testing LISPmob noroot with no luck at all. > I tried the Play Store one and I tried to build it myself with the same > result: crash when I try to start the lispd. > On Sony Xperia ST27i, Android 4.1.2, I got the following: > > java.lang.ExceptionInInitializerError > > at org.lispmob.noroot.LISPmobVPNService.run(LISPmobVPNervice.java:123) > > at java.lang.Thread.run(Thread.java:856) > > Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: > link_image[1891]: 1416 could not load needed library 'libjson-c.so' for > 'liblispd.so' (load_library[1093]: Library 'libjson-c.so' not found) > > at java.lang.Runtime.loadLibrary(Runtime.java:370) > > at java.lang.System.loadLibrary(System.java: 535) > > at org.lispmob.noroot.LISPmob_JNI.<clinit>(LISPmob_JNI.java:12) > ... 2 more > > I'm quite new to Android but I think that the reason may be in > LISPmob_JNI.java (which shouldn't explicitly load libjson-c? I found > this > <http://stackoverflow.com/questions/21051486/java-lang-unsatisfiedlinkerror-cannot-load-library>). > > We have encountered this problem before, and fortunately for you it has been already fixed ;). However we are yet to upload the fixed app to Google Play. On the meantime you can use the attached .apk which should work fine. Keep us updated of your progress! Thanks, Alberto
