[Ns-developers] ns-3-ip routing review request

Tom Henderson tomh at tomh.org
Mon May 11 23:44:41 PDT 2009


I'd like to ask for review of the latest phase of the proposed Ipv4 
rework, staged at http://code.nsnam.org/tomh/ns-3-ip-routing/

In summary, this tree implements the following main changes:
1) split out existing Ipv4 routing from class Ipv4 (and also from 
implementation class Ipv4L3Protocol) into a public Ipv4StaticRouting class

2) make the current Ipv4 routing behavior (a prioritized list of routing 
protocols) an instance of an Ipv4RoutingProtocol called an 
Ipv4ListRouting object (which remains the default ns-3 routing protocol)

3) change the function signatures in abstract base class 
Ipv4RoutingProtocol to better match Linux equivalents ip_route_input() 
and ip_route_output()

4) introduce new reference-counted classes Ipv4Route and 
Ipv4MulticastRoute that align with similar Linux routing structures

There isn't much helper API-visible change from all of this, except that 
I created a new helper object Ipv4StaticRoutingHelper that subsumes the 
previous StaticMulticastRoutingHelper.

code review location:
-----------------
http://codereview.appspot.com/65047/show

Documentation:
--------------
I tried to capture the main API issues with this patch in the 
CHANGES.html that is currently viewable here:
http://code.nsnam.org/tomh/ns-3-ip-routing/raw-file/68dc18d9ece4/CHANGES.html

Some recent big-picture documentation on these changes was previously 
posted at:
http://www.nsnam.org/~tomh/manual/manual.html#SEC1
although it is slightly stale now.

Status and caveats:
----------------
Regression will fail on one test (simple-point-to-point-olsr) because I 
fixed a bug in generating Ipv4 header ID field that changed the traces 
slightly.  Otherwise, all the regression tests pass (except for python 
one that was not tested).

Python bindings not refreshed or tested yet.

The implementation in src/internet-stack has a few XXX that need some 
cleanup.

No new test code is written for this new code yet; existing regression 
tests were used to test this code.

File changes:
-----------

-- Main new public API-related changes

M src/node/ipv4-route.cc
M src/node/ipv4-route.h
M src/node/ipv4.cc
M src/node/ipv4.h

-- New files

A src/helper/ipv4-static-routing-helper.cc
A src/helper/ipv4-static-routing-helper.h
A src/internet-stack/ipv4-list-routing-impl.cc
A src/internet-stack/ipv4-list-routing-impl.h
A src/internet-stack/ipv4-static-routing-impl.cc
A src/internet-stack/ipv4-static-routing-impl.h
A src/node/ipv4-list-routing.cc
A src/node/ipv4-list-routing.h
A src/node/ipv4-routing-protocol.cc
A src/node/ipv4-routing-protocol.h
A src/node/ipv4-routing-table-entry.cc
A src/node/ipv4-routing-table-entry.h
A src/node/ipv4-static-routing.cc
A src/node/ipv4-static-routing.h

-- Deleted files

R src/helper/static-multicast-route-helper.cc
R src/helper/static-multicast-route-helper.h
R src/internet-stack/ipv4-static-routing.cc
R src/internet-stack/ipv4-static-routing.h

-- Other touched files (mostly for alignment with the above)

M examples/csma-multicast.cc
M examples/emu-ping.cc
M examples/static-routing-slash32.cc
M src/applications/packet-sink/packet-sink.cc
M src/applications/udp-echo/udp-echo-server.cc
M src/devices/tap-bridge/tap-bridge.cc
M src/helper/internet-stack-helper.cc
M src/helper/internet-stack-helper.h
M src/helper/ipv4-address-helper.cc
M src/helper/ipv4-interface-container.h
M src/helper/olsr-helper.cc
M src/helper/packet-sink-helper.cc
M src/helper/wscript
M src/internet-stack/icmpv4-l4-protocol.cc
M src/internet-stack/icmpv4-l4-protocol.h
M src/internet-stack/internet-stack.cc
M src/internet-stack/internet-stack.h
M src/internet-stack/ipv4-global-routing.cc
M src/internet-stack/ipv4-global-routing.h
M src/internet-stack/ipv4-interface.cc
M src/internet-stack/ipv4-interface.h
M src/internet-stack/ipv4-l3-protocol.cc
M src/internet-stack/ipv4-l3-protocol.h
M src/internet-stack/ipv4-raw-socket-impl.cc
M src/internet-stack/ipv4-raw-socket-impl.h
M src/internet-stack/nsc-tcp-l4-protocol.cc
M src/internet-stack/tcp-l4-protocol.cc
M src/internet-stack/tcp-socket-impl.cc
M src/internet-stack/udp-l4-protocol.cc
M src/internet-stack/udp-l4-protocol.h
M src/internet-stack/udp-socket-impl.cc
M src/internet-stack/udp-socket-impl.h
M src/internet-stack/wscript
M src/node/address-utils.cc
M src/node/address-utils.h
M src/node/ipv4-address.cc
M src/node/udp-socket.cc
M src/node/udp-socket.h
M src/node/wscript
M src/routing/global-routing/global-route-manager-impl.cc
M src/routing/global-routing/global-route-manager-impl.h
M src/routing/olsr/olsr-routing-protocol.cc
M src/routing/olsr/olsr-routing-protocol.h


More information about the Ns-developers mailing list