[OpenAFS-devel] IPv6 support

Simon Wilkinson sxw@inf.ed.ac.uk
Sat, 12 Feb 2011 16:41:01 +0000


On 12 Feb 2011, at 05:20, ambarisha b <b.ambarisha@gmail.com> wrote:
> I found most of the IP version dependent calls to the Sockets API
> spread over the entire code.

The majority of OpenAFS's network activity is done through the RX library. R=
X is a remote procedure call protocol which is implemented on top of UDP. Ne=
twork calls are initiated by calling functions within our RX API which repre=
sents addressees as afs_uint32, a 32 bit wide unsigned integer type.

On top of RX, AFS operations are performed by making remote procedure calls.=
 Many of these calls contain address information, again represented by 32bit=
 integers,

AFS uses a number of central databases, controlled by a protocol named Ubik.=
 Both Ubik, and the databases it maintains, would have to be extended to sup=
port IPv6 addresses. Configuration sources, such as the CellServDB, would ha=
ve to be extended to handle the longer addresses,

Finally, all of the internal structures which track hosts by IPv4 addresses w=
ould have to be extended to use IPv6 addresses.

As AFS is a protocol with a number of implementors, we have a standardisatio=
n process which controls changes to things that are visible on the wire. In a=
ddition, we are committed to maintaining a stable API for applications inclu=
ding our libraries. This means that we can't just modify existing interfaces=
, but instead have to create new versions of all affected APIs and RPCs.

Our standardisation process is currently rather long winded. Changes requiri=
ng standardisation are unlikely to be achievable within the Summer of Code t=
imeframe. However, I do think you could create a reasonable project around:

* Reimplement the RX API to support an abstract address type, and add an IPv=
6 implementation to RX.
* Audit the code base for int32 use to internally hold addresses. Produce a l=
ist of all of these locations.
* Add IPv6 support to selected code modules, with the ordering to be determi=
ned following the audit.

If you are interested in work extending beyond Summer of Code, then writing d=
ocuments describing the extension of AFS RPCs to support longer addresses, a=
nd specifying extensions for Ubik and CellServDB would all be useful work - b=
ut work that would be likely to extend into next year before any implementat=
ion could be performed.

Cheers,

Simon.