[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