-
Notifications
You must be signed in to change notification settings - Fork 6
Node Architecture
The NS3 node has the following classes aggregated to it:
- CCNxL3Protocol (the main layer 3 interface)
- A forwarder (derived from CCNxForwarder)
- A routing protocol (derived from CCNxRoutingProtocol)
- CCNxMessagePortalFactory (implementation class of CCNxPortalFactory)
The CCNxL3Protocol is the core of the system. It expects to have a CCNxForwarder and CCNxRoutingProtocol
added to it. This differs from the NS3 Internet model, where the routing protocol serves as both forwarder
and routing protocol. In our model, the CCNxForwarder handles the RouteIn() and RouteOut() calls, as
well as table management via AddRoute(), RemoveRoute(), PrintRoutes(). The routing protocol has no
special interface to the forwarder, it sits on top of a standard CCNxPortal for I/O. It uses the CCNxForwarder
API to manage the forwarder's tables.
The CCNxPortal abstraction is the layer 4 protocol from the applications's point of view. It has functions to Send(), SendTo(), Recv(), and RecvFrom() using a CCNxMessage. We provide one implementation class, CCNxMessagePortal, which is a simple 1-for-1 protocol without any transport features (like a UDP). The CCNxMessage class is the base for CCNxInterest and CCNxContentObject. The class CCNxL4Protocol is the layer 4 abstraction form the layer 3 point of view. An implementation class like CCNxMessagePortal inherits from both CCNxPortal and CCNxL4Protocol.
One can run CCNxL3Protocol over Point-to-point and CSMA NetDevices. We have also used it over VirtualNetDevice in our unit tests, so one could use CCNx over IP tunnels (e.g. UDP tunnels), though we have not provided a template or example for such a VirtualNetDevice yet.
+-----------------------+ +-----------------------+ +---------------------------+
| CCNxStandardForwarder | -| NfpRoutingProtocol | | CCNxMessagePortal |
+-----------------------+ / +-----------------------+ +---------------------------+
| CCNxForwarder |- | CCNxRoutingProtocol | | CCNxPortal (abstract) |
| (abstract) | | (abstract) | | CCNxL4Protocol (abstract) |
+-----------------------+ +-----------------------+ +---------------------------+
RouteInput()/RouteOutput() | CCNxMessagePortal | Receive() / SendCallback()
+---------------------------+-----------------------+-------------------------------+
| CCNxL3Protocol |
+-----------------------------------------------------------------------------------+
Receive() / Send()
+---------------+
| NetDevice |
+---------------+
[1] Included: CCNxStaticRouting, NfpRoutingProtocol
Copyright (c) 2016, Xerox Corporation (Xerox) and Palo Alto Research Center (PARC). All rights reserved.