== Click-based !MobilityFirst Router == [[PageOutline(2-100,Contents)]] === 1. Architecture === {{{ ____________ control pkt | | control pkt ------------------------------------>| GSTAR |-------------------------> / |____________| \ / | \ in / _ _ | \ _________ out _________ __________ / ( ) __v____________ \ | | _________ | | | | / ( GNRS ) | | ---->|Priority | | | |Device(s)| -> |Classifier| -> ( _ _ ) | Forward Table | |Scheduler| -> |Device(s)| |_________| |__________| \ ^ | |_______________| ---->| | |_________| \ lookup | | ^ | ___________ / |_________| \ ____________ ____|_v__ _________|__v_____ | | / \ | | | | | |forward| Hop | / --> | Hop |chunk | Network | | Next-Hop Lookup |-----> | Segmentor |/ data pkt | Aggregator | -> | Binder | -> | & | | | | | | | | Store or Forward |----| |___________| |____________| |_________| |__________________| | ^ |store/no-route | _v_________ | rebind after timeout | | ------------------------------ |Chunk Store| |___________| Figure 1: Main components of the Click-based MobilityFirst router }}} Figure 1 outlines the packet-processing architecture of the Click-based prototype. The pipeline has two main paths, data and control. The control path processes GSTAR routing control packets exchanged among neighbors, and the data path handles the forwarding function for !MobilityFirst packets. When functioning as an access router, the prototype also handles client association messages and direct lookups by the client to the GNRS. Sections below detail the important functions implemented by the prototype. ==== 1.1. Hop-by-Hop ==== Relevant Elements: * Aggregator: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/MF_Aggregator.cc click/elements/gstar/MF_Aggregator.cc] * Segmentor: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/MF_Segmentor.cc click/elements/gstar/MF_Segmentor.cc] ==== 1.2. Name Resolution ==== Relevant Elements: * Network Binder: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/MF_NetworkBinder.cc click/elements/gstar/MF_NetworkBinder.cc] * GNRS Message Handler: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gnrs/GNRS_ReqRespHandler.cc click/elements/gnrs/GNRS_ReqRespHandler.cc] ==== 1.3. Next-Hop Lookup & !Store/Forward ==== Relevant Elements: * Forward Table Lookup: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/MF_IntraLookUp.cc click/elements/gstar/MF_IntraLookUp.cc] * Chunk Store: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/MF_CacheManager.cc click/elements/gstar/MF_CacheManager.cc] ==== 1.4. GSTAR ==== Relevant Elements: * Neighbor Table: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/mf_neighbours.cc prototype/click/elements/gstar/mf_neighbours.cc] * Routing and Forwarding Table: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/mf_routing.cc click/elements/gstar/mf_routing.cc] === 2. Message Types and Formats === Relevant Files: * [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/click_MF.hh click/elements/gstar/click_MF.hh] * [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/mf.hh click/elements/gstar/mf.hh] === 3. Running the 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: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/eval/scripts/click/init_rtr.sh eval/scripts/click/init_rtr.sh] * Click-based file sender: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/eval/scripts/click/init_filesend_rtr.sh eval/scripts/click/init_filesend_rtr.sh] * Click-based file receiver: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/eval/scripts/click/init_filerecv_rtr.sh eval/scripts/click/init_filerecv_rtr.sh] ==== 3.2 Click Configurations ==== Relevant Files: * [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/eval/conf/click eval/conf/click] - default Click configurations for !MobilityFirst router ==== 3.3 In-Click Topology Control ==== Relevant Elements: * Topology: [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/click/elements/gstar/topology.cc click/elements/gstar/topology.cc] Relevant Files: * [https://mobilityfirst.orbit-lab.org/browser/trunk/code/prototype/eval/topology eval/topology] - directory with sample topologies === 4. Performance === === 5. Known Issues === === 6. Release Notes ===