Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Dec 2008 12:33:18 +0100
From:      <ajassal.ext@orange-ftgroup.com>
To:        <freebsd-net@freebsd.org>
Cc:        khadija.daoud@orange-ftgroup.com
Subject:   SCTP : problems in sending ASCONF chunks
Message-ID:  <3418F3471F1CA4409901547349FFAE2E0910679F@ftrdmel2>

next in thread | raw e-mail | index | archive | help
Hi all,

I have been working with SCTP and more specifically with the mobility
features of SCTP at my work. Basically, I have been trying to use SCTP
to perform handover tests between 2 separate Wifi networks. I use IPv6
for all my tests.

I have a local LAN (wired-network), on which I have 3 machines, one of
them is the machine I use to communicate with for the tests (I'll call
it T to make things simple), and the other two are used as Wifi Access
Points (say Wifi1 and Wifi2 respectively). Since I work with IPv6, I set
up both Access Points to send Router Advertisement messages periodically
(minimum of 3 seconds, maximum of 4 seconds). That way I can have
automatic address reconfiguration when I connect to either of the access
points.

The aim of my tests is to use a PC, connect to Wifi1 (for example),
launch an SCTP association with T (T sends data to my PC), and then
perform a handover on Wifi2. I do make address reconfiguration during
the handover process. The important point is that I work with only ONE
address on my network interface. Before I start my tests, I set the
following sysctl parameters :

# sysctl -w net.inet.sctp.mobility_base=3D1
# sysctl -w net.inet.sctp.mobility_fasthandoff=3D1
# sysctl -w net.inet.sctp.debug=3D0x00f301f0		(that is to dump
messages in /var/log/messages)

net.inet.sctp.auto_asconf is set to 1 by default.

I use FreeBSD 7.0 on my PC, I don't know if that is extremely useful but
I'm trying to be thorough. This is the script I use to perform handover
:

ifconfig rum0 inet6 <my old address> delete
ifconfig rum0 ssid <the target access point>
route del -inet6 default <my old gateway>
rtsol rum0

If I'm not mistaken, the PC should have sent an ASCONF chunk to perform
dynamic address reconfiguration. However what I observed is that nothing
happens. No ASCONF chunks are sent, and therefore, T doesn't ever know
that it should send data on the PC's newly acquired address.

I tried to investigate the problem myself, by adding some debug logs in
the sctp source code (to see which functions are called during the
handover process), and it seems as if the kernel doesn't ever add an
ASCONF chunk to send in its queue... But that's just my understanding of
the problem...

I looked up in the CVS repository for answers, and to see the various
changes that were gradually brought on the code. There, I noticed that
on the revision dating 24th July 2007, changes were made for dynamic
address reconfiguration : "Change behaviour so that when the last
address is deleted (auto-asconf on a boudall endpoint) no action is
taken until an address is added ; at that time an ASCONF add+delete is
sent (if the asoc is still up)"

In my humble opinion, this is exactly the case that corresponds to my
handover scenario. But I just haven't been able to successfully perform
it because I don't seem to send any ASCONF chunk. I'm struggling to
understand why I do not see any ASCONF chunk sent.

If it can help, I'm also attaching links to the kind of debug logs I got
when performing a handover test. This is the kind of debug logs that I
got :=20

http://www.divshare.com/download/6200509-560

This is another debug logfile, but with my own debug logs added in the
sctp source code :

http://www.divshare.com/download/6200504-2e9


Many thanks for your work, and I hope someone will be able to help and
shed some light on this problem :-)


Aman Jassal




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3418F3471F1CA4409901547349FFAE2E0910679F>