[Ns-developers] Design Review of ns-3-ipv6-1st (ns-3.3 new feature)

Mathieu Lacage mathieu.lacage at sophia.inria.fr
Mon Oct 27 09:09:47 PDT 2008


hi all,


I apologize very much for this _very_ late review: it's all my fault,
etc. A couple of comments:


a) In src/node/ipv6-header.h, you certainly did not intend to create a
member variable named nextHeader of type "enum NextHeader_e"

class Ipv6Header : public Header
{
  [snip]
    enum NextHeader_e
    {
  [snip]
    }nextHeader;

b) In src/node/ipv6-header.cc, 

void Ipv6Header::Serialize(Buffer::Iterator start) const
{
  Buffer::Iterator i = start;
  uint8_t src[16];
  uint8_t dst[16];

  [snip]

  m_sourceAddress.Serialize(src);
  m_destinationAddress.Serialize(dst);
  i.Write(src, 16);
  i.Write(dst, 16);
}

It would be nice to match the ipv4 code and:
1) define and implement WriteTo and ReadFrom in
src/node/address-utils.h/cc
2) use them here instead of using a temporary buffer of raw 16 bytes 
3) The same goes for Deserialize

c) What is the purpose of an icmp socket ? In the normal socket API,
icmp messages are delivered to each protocol-specific sockets through
ancillary messages while icmp messages are sent over raw ip sockets

d) I see that you added GetMulticast6 and MakeMulticast6Address in
NetDevice to mirror GetMulticast and MakeMulticast. I have to confess
that I still don't understand the purpose of the unused GetMulticast/6
(see bug 294) so, it's hard to feel excited about this addition. i.e., I
understand the purpose of MakeMulticastAddress and I understand the
desire to mirror the GetBroadcast method but I really don't understand
why MakeMulticastAddress could not be renamed to GetMulticast and why we
could not get rid of the never-used current-GetMulticast method.
Basically, I support the merging of NetDevice::MakeMulticastAddress into
the method named NetDevice::GetMulticast or the removal of the
currently-unused GetMulticast method (which, I have to confess, I can't
imagine useful at all: is there a use-case where it could be useful in
its current form ?).

e) It would be helpful to move the code in
CsmaNetDevice::MakeMulticast6Address to Mac48Address::GetMulticast
(Ipv6Prefix); to mirror the ipv4 implementation and improve code reuse
across multiple device implementations.


On Thu, 2008-10-09 at 11:06 -0700, craigdo at ee.washington.edu wrote:
> Hi all,
> 
> We have received a request to merge a new feature into ns-3.3 (the upcoming
> stable release of ns-3 scheduled for release in December).  Based on our
> recently updated release process, we have to do a design review of the
> feature addition, and the current maintainers of the ns-3 codebase have to
> sign off on it, before we merge it into ns-3-dev and then into ns-3.3.
> 
> I sent the below email to the maintainers yesterday requesting an "official"
> design review for Sebastien Vincent's ns-3-ipv6-1st feature.  The
> maintainers are in general agreement that they want to do the review in a
> public setting and also solicit input from people on the ns-developers
> mailing list.  This means some technical emails will probably start flying
> around regarding possibly abstract questions of IPv6 support in ns-3.  I
> wanted to provide some context before that happens.
> 
> So, this email is an introduction to the design review thread for the first
> piece of the IPv6 support in ns-3.  As far as timing goes, this all needs to
> be wrapped up by about the end of the month.  Anyone reading should feel
> free to take a look at the submitted code and voice opinions.
> 
> Regards,
> 
> -- Craig
> 
> > You are receiving this email because you are a maintainer of 
> > ns-3 and a new
> > feature addition is being considered for ns-3.3.
> > 
> > We have a submission of "ns-3-ipv6-1st" to be considered as a 
> > new feature
> > addition for ns-3.3.  As indicated in our release process, 
> > this submission
> > crosses maintainer responsibilities and so a design review 
> > should be done.
> > Also this could be a fairly significant change in terms of 
> > usability and API
> > that could be very visible in the future.
> > 
> > Before proceeding I'll need some kind of positive 
> > acknowledgement from each
> > of you that you don't have any issues and that we should go 
> > ahead and merge
> > this patch.
> > 
> > If there are any discussions about the change, it would 
> > probably be good to
> > copy everyone.
> > 
> > The following is the email from Sebastien 
> > 
> > > -----Original Message-----
> > > From: Sébastien Vincent [mailto:vincent at clarinet.u-strasbg.fr] 
> > > Sent: Wednesday, October 08, 2008 2:30 AM
> > > To: craigdo at u.washington.edu
> > > Cc: 'Tom Henderson'; 'Mathieu Lacage'; 'Craig Dowell'
> > > Subject: ns-3-ipv6-1st 
> > > 
> > > Hi Craig,
> > > 
> > > Code :
> > > ====
> > > 
> > > The repository that contains the first chunk of IPv6 is located at 
> > > http://code.nsnam.org/vincent/ns-3-ipv6-1st/ and it is 
> > > synchronized with 
> > > ns-3-dev. The corresponding patch file is attached.
> > > 
> > > Summary of changes :
> > > ==============
> > > 
> > > The features of this first chunk of IPv6 provide the addresses, the 
> > > routes, the IPv6 header and some changes in *NetDevice to 
> > > allow specific 
> > > ethernet multicast addresses to be forward up to layer 3.
> > > 
> > > Files added : 
> > > - src/node/ipv6-route.cc/h;
> > > - src/node/ipv6-address.cc/h;
> > > - src/node/inet6-socket-address.cc,h;
> > > - src/node/ipv6-header.cc,h;
> > > - src/node/icmp-socket.cc,h;
> > > - example/test-ipv6.cc.
> > > 
> > > Changes on existing code :
> > > - Add virtual method GetMulticast6 and MakeMulticast6Address  in 
> > > NetDevice and all of its subclasses (CsmaNetDevice, ...);
> > > - In CsmaNetDevice, we declare some ethernet representation of 
> > > well-known IPv6 multicast address, and forward up all packet 
> > > (that match 
> > > these addresses) to layer 3.
> > > 
> > > This first chunk is not sufficient to do IPv6 simulations, 
> > it is just 
> > > the addresses and the changes in NetDevice. In very old 
> > > previous mail, 
> > > we planned to include the layer 3 (Ipv6L3Protocol, ...) in 
> > > the second chunk.
> > > 
> > > Maybe it will be good to have IPv6 layer 3 protocol, ICMPv6 / 
> > > Neighbor 
> > > Discovery protocol and a Ping6 application & example. What do 
> > > you think ?
> > > 
> > > Regards,
> > > --
> > > Sebastien Vincent
> > > Network and Research team -  University of Strasbourg
> > > 
> > > 
> > 
> 
> 
> 



More information about the Ns-developers mailing list