Re: IPV6, Fedora and apps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2006-05-31 at 07:55 -0700, Douglas Phillipson wrote:
> Do network applications written for Fedora, or any Linux distro for that 
> matter, require any modification to work with IPv6?  or is that a 
> "TRANSPARENT" change in the protocol stack under the application layer? 
>   Is there a different API for IPv6 for network apps, socket servers, etc?

	That's a great big "it depends".  Most should not.  But coders (even
ones who should know better) do have a way of dicking it up, all the
time...

	There is the older API which was, essentially, IPv4-Only, and the newer
(but still around for ages) AF Independent API which supports both IPv6
and IPv4 (and others) through address family transparency (the address
family and size are part of the structures that are passed back and
forth as opposed to a simple unsigned 32 bit address).  So, if they use
the network APIs, it depends on which API they coded to.

	If one is coding a new application, here is some general "how to" stuff
for AF Independent coding:

	http://www.kame.net/newsletter/19980604/

	If you DON'T code it AF Independent, then you will eventually have to
fix your bugs when your app doesn't work any longer.

	LOTS of modern applications need no changes at all.

	Many many servers that fork out of xinetd are this way.  All you do is
add "flags = IPv6" to the config file and away you go.  I'm the author
of a whitepaper up at VMWare on doing this for VMWare GSX Server (now
just server).  GSX server and the VMware client were some of the tougher
nuts to adapt and they were fairly trivial (took longer to write the
paper than solve the problem).  Just requires one kludge using xinetd
binds and redirects on the client side and the addition of the said
flags on the server side.

	Servers and clients that handle their own networking and directly
manipulate addresses (say for access control lists) MIGHT need updating
(but most already are) to use the more modern AF Independent API's
rather than the old IPv4-only API's.  I find that there are relatively
few apps on Fedora (or other Linux distros) that are not already IPv6
aware and ready.  Some, such as Squid and Samba, which are deeply
involved in network protocols may be more difficult (AFAIK, Squid has
IPv6 patches available and in CVS while Samba does not).  Most clients,
it's a pretty trivial change.

	Most of the big, open source, servers (Apache 2.x, Sendmail, Bind,
Postgres, Dovecot, TCPWrappers) are all well covered.  Some (Squid,
Samba, mysql) still need work.  Mysql is promising it RSN.  Squid has
patches.  Samba, we're kinda waiting to see what Windows has for SMB on
IPv6, but it shouldn't be a real problem and some patches DO exist for
an older version of Samba.

	Many/most of the clients (Mozilla, Firefox, Thunderbird, Evolution,
ftp, fetchmail, the list goes on an on) are already adapted.  Some, may
still need work.  Most newer applications SHOULD be written with the
newer API and then they will just work out of the box.  There SHOULD be
no excuse for a modern application to be coded IPv4 only.

	There is definitely a problem with proprietary vendors, however.  They
are typically ignoring IPv6 (which is crazy - there is no such thing as
an IPv4-only network any more, AFAICT, and I have LOOKED) and not coding
to the state of the art (still coding to the older API's and acting as
if IPv6 didn't exist) and their code can't be readily fixed by us
commoners.  A good example is the VMware Client.  They know what they
have to do to fix it (cause I've told them).  I can't fix it, because
it's closed source.  All they have to do is correctly call
"gethostbyname()" for the server's host name and use one of the
structures returned in the call to "connect()".  But they're still
coding back in the stone age where all addresses were a 32 bit unsigned
int.  Oracle just recently added IPv6 support (I think to Oracle 10, but
I haven't tested it to verify this, so I could be wrong).

	If you're worried about some arbitrary proprietary package that was
coded for Linux and is closed source and the vendor has not specified
that they are IPv6 compatible, then the answer to your question is
probably going to be that they need to modify their product or you will
have to "shim it" using some of the tools I used with VMware.  There are
some "bump in the wire" tricks which you can play but we don't have a
"bump in the API" where IPv4-Only applications will transparently see
IPv6 peers as IPv4 (we have it the other way around were IPv6 clients on
and IPv6 network can still see IPv4 networks but not vice versa for IPv6
only servers).

	So, the answer is, properly coded applications should require no
changes (depending on the extent to which they want to tinker with
addresses).  Older applications using older APIs or ones which have not
been upgraded to address independent functions, may require work.  But
this is no different on Linux than Unix than Mac than Windows and it's
been know about for years.

	You can find a lot more information about apps which are IPv6 ready and
some that aren't up at the DeepSpace6 web site (which is on both IPv4
and IPv6) here:

	http://www.deepspace6.net/docs/ipv6_status_page_apps.html

	There are very few "red faces" any more.

	Even still, that list isn't complete and is somewhat out of date.  It
still shows Miredo (Teredo IPv6 over UDP for Linux) as version 0.1.0 and
it's now at 0.8.5 (0.9.1 for development).  So the situation is even
better than whats shown there.

> Thanks

> Doug P

	Regards,
	Mike
-- 
Michael H. Warfield (AI4NB) | (770) 985-6132 |  mhw@xxxxxxxxxxxx
   /\/\|=mhw=|\/\/          | (678) 463-0932 |  http://www.wittsend.com/mhw/
   NIC whois: MHW9          | An optimist believes we live in the best of all
 PGP Key: 0xDF1DD471        | possible worlds.  A pessimist is sure of it!

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux