[support] Destination unreachable from HA on BU???

Arnaud Ebalard arno at natisbad.org
Fri Mar 27 00:41:07 JST 2009


Hi,

Mattias Blomqvist <mattias.blomqvist at gmail.com> writes:

> I have tested 0.4-13 and it seems to work fine. No more segfaults atleast.
> Is there any other differences between 0.4-12 and 0.4-13 than the
> small fix in the tunnel patch?

Just an addition to have it compile with a 2.6.29 (explicit inclusion of
stddef.h).

> Since I've been able to do some more testing now that my setup works I
> have some additional questions and observations.
>
> 1)
> When mip6d is started in tunnel mode it immediately tries to do a BU.
> Since the tunnel I'm using is quite slow, the delay between the BU
> being sent and the BA from the HA being received is larger than the
> timeout before the next BU is sent.
> This will result in the MN receiving a BA that it thinks has the wrong
> seq no. Like this:
> mn_process_ha_ba: Got BA with incorrect sequence number 59164, the one
> sent in BU was 59165
> This will repeat a few times until the timeout between BU's have
> increased a little bit and a BA arrives that matches the last sent BU.
> My question is. Is there a way to configure mip6d to start with a
> larger timeout between BU's ?

It is not possible via the config file or a commandline option. umip
uses an exponential backoff alg (doubling the timeout every time it
resends the BU):

static void bu_resend(struct tq_elem *tqe)
{      
	pthread_rwlock_wrlock(&mn_lock);
	if (!task_interrupted()) {
		struct bulentry *bule = tq_data(tqe, struct bulentry, tqe);
		struct home_addr_info *hai = bule->home;
		int expired;

		MDBG("Bul resend [%p] type %d\n",  bule, bule->type);

		clock_gettime(CLOCK_REALTIME, &bule->lastsent);
		tsadd(bule->delay, bule->delay, bule->delay);		<<<<<<<<<<<< doubling the value 
		bule->delay = tsmin(bule->delay, MAX_BINDACK_TIMEOUT_TS);
		bule->consecutive_resends++;

		expired = bu_lft_check(bule);


You could recompile it with an higher value if you really need
that.

> 2)
> If mip6d is running when the tunnel interface comes up or is started
> before the tunnel has received a CoA by stateless autoconfig it will
> use the same address for HoA and CoA.

What do you mean by "use the same address for HoA and CoA"? Can you
clarify? 

> Since it is configured to use a tunnel interface (with tunnel set to
> enabled) it is always in a foreign net.
> Should it really use the same address for HoA and CoA when it is in a
> foreign net?
> The problem is that even if a RA is received within seconds after the
> tunnel interface is brought up, mip6d seems to ignore it and continues
> to use the same address for HoA and CoA.
> Any ideas?

I may be missing your point but did you specified different interfaces
with the lower preference value (i.e. higher priority) given to another
interface like the tunnel one. In the case below, eth0 will be preferred
over any tunnel interface because those have higher pref values:

Interface "eth0" {
	  MnIfPreference 1;
}

Interface "wlan0" {
	  MnIfPreference 2;
}

Interface "bnep0" {
	  MnIfPreference 3;
}

Interface "teredo" {
	  Tunnel enabled;
	  MnIfPreference 4;
}

Interface "teredo3G" {
	  Tunnel enabled;
	  MnIfPreference 5;
}

Cheers,

a+


More information about the Support mailing list