Version 3 (modified by 11 years ago) ( diff ) | ,
---|
Click-based MobilityFirst Router
Contents
0. Requirements
- Software prototype with reference implementations of dynamic GNRS resolution, hop-by-hop block transfer, storage aware routing (GSTAR)
- Reference implementation/handling of network layer header with service identifier, 160-bit src/dst GUID, src/dst NA(s) and extensible headers for service options processing
- Multicast and anycast forwarding implemented using GNRS maintained membership and routing state from GSTAR
- Configuration and parameter tuning for router roles: core, access
1. System architecture
Figure below outlines the packet-processing pipeline architecture. The pipeline shows two main paths: data and control. The control path implements GSTAR intra-domain routing control protocol including: neighbor discovery, link quality estimation, link-state flooding, and pair-wise DTN state exchange (TBC). The control path also computes the forwarding table entries using a hybrid periodic and on-demand basis. The data path handles the forwarding functions for MobilityFirst data packets, and includes transit buffers, network-address resolution, service classification, packet cloning (in multicast, for example), compute-plane hand off, and hold buffers for temporary storage of data blocks. Functions are implemented as modular Click elements for easy construction of custom router roles such as a that of a core router (or an access router. The architecture supports variable number of input and output ports/interfaces (as long as the processing hardware resources are scaled appropriately) that can be easily aggregated for data/control path processing through elements available with the core distribution of the Click modular router.
PKT PROCESSING OVERVIEW +++++++++++++++++++++++ ___________ | | -->| Routing X |--- / |___________| \ / | \ / _________|_ \ ctrl. pkt / | | | \ ctrl. pkt -------------- ->| GSTAR | |-------------- / |_________|_| \ in / | | \ out _________ __________ / _________v__v__ \ ___________ _________ | | | | / | | \ -->| | | | |Device(s)| -> |Classifier| -> | Forward LUT | | Scheduler | -> |Device(s)| |_________| |__________| \ |_______________| / -->|___________| |_________| \ ^ | / \ ________|__v______ / \ | | / ----------> | Data pkt proc. | ----------- data pkt |__________________| data pkt
Separation of data and control paths simplifies resource allocation (threads, scheduling policy) and prioritization of packet flows. For example, a scheduler element currently prioritizes outbound control packets over data packets, to limit queuing delays in the control plane. The design can also easily accommodate control protocols implemented outside of Click. Such protocol implementations can currently use IP networking to build routing state, and utilize the API exported by the forwarding table module in Click (TBF) to install and manage forwarding entries. Future work may export a messaging API allowing applications to transmit payloads as MobilityFirst packets on the wire.
1.1 Data Path
DATA PATH +++++++++ _ _ _ _ ( ) ______________ ( GNRS ) | | ( _ _ _ _ ) | Forward LUT | ^ | |______________| GUID lookup | | ^ | ____________ ____|_v__ ______|__v___ ___________ | | | | | |forward| | data pkt | Hop |chunk | Network | | Next-Hop |-----> | Hop | data pkt ----->| Aggregator | --> | Binder | -> | Lookup | | Segmentor | -----> to out port |____________| |_________| |_____________|----. |___________| ^ | | |store | ____v______ | rebind after timeout | | . ---------------------- |Chunk Store| |___________|
Hop Block Transfer
Routeable data blocks (complete with an L3 header) are progressed towards the destination in a hop by hop manner. This Hop block transfer is achieved through a Segmentor module that fragments and transmits the block as MTU-sized packets, and a corresponding Aggregator module for reassembly. A simple bit-array based ACK mechanism (a bit for each fragment of the block) ensures reliable transmission. For back pressure, downstream nodes omit ACKs to initial SYN sent by upstream node. Hop by hop transport is ideal for wireless links esp. under variable link quality and packet loss conditions. For reliable segments of the network, MF proposes a L3 bypass that allows a hop to be a consolidation of two or more physical links (TBC).
Relevant Elements:
- Aggregator: click/elements/gstar/MF_Aggregator.cc
- Segmentor: click/elements/gstar/MF_Segmentor.cc
Name Resolution
When deployed in a single domain, the routers can work without external name resolution - at the cost of propagating all end point GUIDs through the network. For a scalable control plane and limiting the forwarding table size, however, an external service such as the GNRS can be accessed to retrieve end point network addresses (NA). No resolution is required for a packet (routeable data block) with a previously established NA, until and unless a forwarding failure occurs. For packets that have only a dest. GUID, a resolution (i.e., an address lookup for the GUID) is initiated at the NetBinder module. This request is asynchronous and the packet is buffered while awaiting a response. Later, NAs from the response are used to populate the packet before progressing it to the forwarding stage. The implementation supports a GNRS client module that should be configured with the address (IP, port) of a GNRS server. The server itself may reside either on the router (this is common deployment scenario for our software router) or on a separate node on the network.
Relevant Elements:
- Network Binder: click/elements/gstar/MF_NetworkBinder.cc
- GNRS Message Handler: click/elements/gnrs/GNRS_ReqRespHandler.cc
Buffer Management
Relevant Elements:
- Chunk Store: click/elements/gstar/MF_CacheManager.cc
1.2 Control path (GSTAR)
GSTAR CONTROL PATH ++++++++++++++++++ lnk. prb ____________ lnk prb + ack | | + ack ------->| Link Est. |------ / |____________| \ / ____________ \ ctrl. pkt / lsa pkt | | lsa pkt \ ctrl. pkt ----------------------------->| LS Rtg. |-----------------------> to out port \ |____________| / \ ____________ / \ | | / ------->| DTN Rtg. |------ d-lsa pkts |____________| d-lsa pkts ____________ ____________ Periodic _____________ | | | | Updates | | |Neighbor Tbl| | Routing Tbl|--------> | Forward LUT | |____________| |____________| |_____________| Figure 1: Main components of the Click-based MobilityFirst router
Relevant Elements:
- Neighbor Table: prototype/click/elements/gstar/mf_neighbours.cc
- Routing and Forwarding Table: click/elements/gstar/mf_routing.cc
2. Installation and Dependencies
3. Running the MobilityFirst Router
3.1. Scripts
To start up the basic router run the following:
> ./init_rtr.sh my_GUID topo_file oml_conf_file core_dev core_dev_IP resolve where: #parameters to this script #1. my_GUID - GUID of router #2. topo_file - GUID-based topology file #3. oml_conf_file - OML configuration for monitoring #4. core_dev - name of interface towards backhaul/core #5. core_dev_IP - IP assoc with core interface #6. resolve - use gnrs resolution or not (true|false)
Relevant files:
- Basic router startup script: eval/scripts/click/init_rtr.sh
- Click-based file sender: eval/scripts/click/init_filesend_rtr.sh
- Click-based file receiver: eval/scripts/click/init_filerecv_rtr.sh
3.2. Router Configurations
Relevant Files:
- eval/conf/click - default Click configurations for MobilityFirst router
3.3. Topology Control
Relevant Elements:
- Topology: click/elements/gstar/topology.cc
Relevant Files:
- eval/topology - directory with sample topologies
3.4 Debug Logging
Set environment variable 'MF_CLICK_LOG_LEVEL' to integer between 1 and 7, corresponding to the following debug levels:
Value | Log Level | Description |
1 | DEBUG | |
2 | INFO | |
3 | TIME | Used for timing analysis outputs |
4 | WARN | |
5 | ERROR | |
6 | CRITICAL | Cases of out of memory, approaching resource limits, etc. |
7 | FATAL | Unable to proceed, or when integrity may be compromised |