[Ns-developers] ipv6 plans for ns-3

Sébastien Vincent vincent at clarinet.u-strasbg.fr
Tue Jul 21 06:02:07 PDT 2009


Hi all,

Some notes about IPv6 progress.

I have ported many part of the initial IPv6 work : Ipv6Interface, 
Ipv6InterfaceAddress, Ipv6Route, NdiscCache, Icmpv6L4Protocol, ... and 
adapted other ones to fit work that has been done (IPv4 refactoring).

Now I have a working example that used IPv6 raw socket: ping6 (./waf 
--run ping6). This implementation is a work in progress, there are 
additionnal work in routing to manage special multicast address 
(all-nodes, all-routers, all-hosts) directly in Ipv6RoutingProtocol 
subclasses instead of Ipv6L3Protocol (especially to allow L4 protocol to 
send to these addresses).

You will find current work at https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd.

Files noted with (*) is a pure copy/paste/adapt from IPv4 ones.

Files added:
src/node/ipv6.cc,h (*)
src/node/ipv6-interface-address.cc,h
src/node/ipv6-raw-socket-factory.cc,h (*)
src/node/ipv6-route.cc,h
src/node/ipv6-routing-protocol.cc,h (*)

src/internet-stack/icmpv6-header.cc,h
src/internet-stack/icmpv6-l4-protocol.cc,h
src/internet-stack/ipv6-end-point.cc,h
src/internet-stack/ipv6-end-point-demux.cc,h
src/internet-stack/ipv6-interface.cc,h
src/internet-stack/ipv6-l3-protocol.cc,h
src/internet-stack/ipv6-l4-protocol.cc,h
src/internet-stack/ipv6-raw-socket-factory-impl.cc,h (*)
src/internet-stack/ipv6-raw-socket-impl.cc,h (*)
src/internet-stack/ndisc-cache.cc,h

src/routing/static-routing/ipv6-routing-table-entry.cc,h
src/routing/static-routing/ipv6-static-routing.cc,h (*)
src/routing/list-routing/ipv6-list-routing.cc,h (*)

src/helper/ipv6-address-helper.cc,h
src/helper/ipv6-interface-container.cc,h
src/helper/ipv6-list-routing-helper.cc,h (*)
src/helper/ipv6-routing-helper.cc,h (*)
src/helper/ipv6-static-routing-helper.cc,h (*)
src/helper/ping6-helper.cc,h

Files modified:
src/helper/internet-stack-helper.cc,h
=> add IPv6 stack directly with IPv4 ones (make dual stack node), I 
think about adding methods to enable/disable IPv4 or IPv6 stack in order 
to have IPv4 or IPv6 only node.

As you see many files have been copy/paste/adapt, but for the routing 
part I think it will have some changes.

Next steps are :
- handle link-local multicast in routing part;
- handle Router Advertisement (receive, parse, extract prefix and 
autoconfigured global address with it + timer);
- radvd application like;
- UDP and TCP protocol and implementation (need to be discussed here to 
avoid duplicate code);
- IPv6 global routing.

Feedbacks are welcome.

Regards,
--
Sebastien Vincent

Sébastien Vincent a écrit :
> Hi Tom,
>
> Tom Henderson a écrit :
>> Sebastien,
>> I'd like to put the IPv6 code back on track for merging into 
>> ns-3-dev.  Can
>> you please provide a status update on the repos that you or your 
>> group are
>> maintaining at https://svnet.u-strasbg.fr/hg/ and what you might suggest
>> for next steps?  Also, I'd like to know where the effort to refactor the
>> transport protocols and network layer to allow a common transport 
>> protocol
>> implementation to use IPv4 and IPv6 ended up-- I see that the current
>> ns-3-ipv6 repo has separate IPv4 and IPv6 implementations for TCP.
>>
>>   
>
> Currently,  https://svnet.u-strasbg.fr/hg/ns-3-ipv6 is very outdated. 
> Two day ago I begin to work with up-to-date ns-3-dev and port some of 
> the IPv6 components. It is located at 
> https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd (not publicly available 
> yet but I will unlock access tomorrow or next monday).
>
> For the next release, I really would like to have IPv6 routing, ICMPv6 
> (+ neighbor discovery protocol), UDP, IPv6 applications such as 
> UdpEcho, basic examples. If I had time radvd application to have IPv6 
> address autoconfiguration, multihoming.
> The features delayed will be TCP (if we can not find a good and easy 
> solution to integrate it nicely), IPv6 header extension 
> (fragmentation, loose routing, ...).
>
> As I have a lot of work for my job arround wireless sensor network, I 
> can not work as long as I want on ns-3. But I will do my best during 
> my spare time on my holidays (tomorrow) to propose a working IPv6 stack.
>
>
> For ns-3-ipv6-2nd repo I have also integrated Ipv6InterfaceAddress, 
> Ipv6Interface, NdiscCache. For routing code located in src/node, I 
> think it will be exactly the same for IPv6 (except changing Ipv4* to 
> Ipv6* ).
>
> For transport protocol, the main problem is (if I remember correctly) 
> that Tcp/UdpL4Protocol' and Tcp/UdpSocketImpl functions take 
> Ipv4Address arguments. We already have some discusses here with 
> Mathieu but we have not found a good solution to handle this. By the 
> way same problem for IPv4EndPoint / Ipv4EndPointDemux which majority 
> of code will be duplicated.
>
>
> To resume, I will open my private repository next couple of days. I 
> will continue to read code about recent IPv4 refactoring and implement 
> routing stuff (Ipv6L3Protocol), ICMPv6 (and neighbor discovery 
> protocol) and wait about transport protocol problem. Now all of us 
> interrested in IPv6 can begin to find a nice way to handle transport 
> protocol in both IPv4 and IPv6 without copy/paste code. And to finish 
> It will be really good if we can put great efforts on IPv6 integration 
> for ns-3.6 to bring ns-3 users the power of IPv6 ;)
>
> Regards,
> -- 
> Seb
>
>> Thanks,
>> Tom
>>
>>   
>
>



More information about the Ns-developers mailing list