RFC 3542 or RFC 2292 - Advanced Sockets Application Program Interface (API) for IPv6

cormac mullally cormac.mullally at gmail.com
Thu Nov 22 05:17:08 PST 2007


Hello all,

I'm working on a project at the moment that needs's access to the
"type 0 routing header" in an IPv6 packet. RFC 2292 describes a nice
API, which allows you access to the routing header, see
http://tools.ietf.org/html/rfc2292#section-8.9

I see that JavaSE supports RFC 2553 Basic Socket Interface Extensions
for IPv6, and from looking around it seems that Sun has no interest in
implementing RFC 3542 or RFC 2292(RFC 3542 Obsoletes 2292).

My first question is:
Is there any one working on implementing RFC 3542 or RFC 2292 in the
openJDK project?

My second question:
What are my options going forward?


I am pretty new to working on such low level stuff so any advice on
how I should proceed is welcome.

I've done a bit of researching and here is a bit of a summary. I'm
developing on windows XP, so its mostly around how I would provide
this functionality on a windows enviornment, but in the end my
application would have to work on other major platforms.

Firstly as some of you may know "type 0 routing header" has caused a
bit of controversy (see http://www.natisbad.org/ especially this
presentation http://www.secdev.org/conf/IPv6_RH_security-csw07.pdf)
and it seems that there is some security concerns. Does anyone have
any comment on this? I see some people are not happy as applications
have already been developed using this feature. Do you think "type 0
routing header" will be disabled by default in routers and hosts? Do
you think a new method will be created to provide this routing
functionality but more securly?

So imagining that all is well with "type 0 routing header" and I will
use it for my project, here are some of the solutions I have been
looking at for implementing this on windows.
1. WinSock
2. Raw Socket on top Winsock
3. Winpcap 4.0 beta 3 supports IPv6


1. Winsock
Winsock does not seem to support RFC 3542 or RFC 2292. As in there is
no nice methods for adding routing headers as far as I can see.
http://msdn2.microsoft.com/en-us/library/ms738649.aspx and
http://msdn2.microsoft.com/en-us/library/ms738649.aspx

2. Raw Socket with Winsock
Raw Socket as far as I can see gives you acess to the header and data
parts of the packet. From my research this in theory seems to be
possible with winsock
see http://msdn2.microsoft.com/en-us/library/ms740506.aspx especially
the IPV6_HDRINCL section.
Windows XP SP2 seems to have limited the raw socket, see
http://blogs.msdn.com/michael_howard/archive/2004/08/12/213611.aspx,
but I think I should be sill OK as I'm working with UDP and I'm not
trying to change the source address of anything.
Does anyone have any advice on starting with raw socket programming? I
have downloaded and am looking at Rock Saw at the
moment(http://www.savarese.org/software/rocksaw/). Any other advice
welcome.
Does JavaSE or OpenJDK use raw sockets for its functionality, or does
it do something else? I am going to start looking into this next.

3. Winpcap 4.0 beta 3
Haven't investigated much here. Does this run on top of winsock? Does
anyone know can I send packets using winpcap? Network Packet generator
(http://www.wikistc.org/wiki/Network_packet_generator) is built on
winpcap, has anyone used this on windows?

Thats my research for the moment. If you have any questions please get
back to me.

Thanks for reading,
Cormac



More information about the net-dev mailing list