Babel Routing Protocol for Omnet++ More Than Just a New Simulation Module for INET Framework
Total Page:16
File Type:pdf, Size:1020Kb
Babel Routing Protocol for OMNeT++ More than just a new simulation module for INET framework Vladimír Veselý, Vít Rek, Ondřej Ryšavý Department of Information Systems, Faculty of Information Technology Brno University of Technology Brno, Czech Republic {ivesely, rysavy}@fit.vutbr.cz; [email protected] Abstract—Routing and switching capabilities of computer Device discovery protocols such as Cisco Discovery networks seem as the closed environment containing a limited set Protocol (CDP) and Link Layer Discovery Protocol of deployed protocols, which nobody dares to change. The (LLDP), which verify data-link layer operation. majority of wired network designs are stuck with OSPF (guaranteeing dynamic routing exchange on network layer) and In this paper, we only focus on a Babel simulation model. RSTP (securing loop-free data-link layer topology). Recently, Babel is increasingly more popular seen as the open-source more use-case specific routing protocols, such as Babel, have alternative to Cisco’s Enhanced Interior Gateway Routing appeared. These technologies claim to have better characteristic Protocol (EIGRP). Babel is also considered a better routing than current industry standards. Babel is a fresh contribution to protocol for mobile networks comparing to Destination- the family of distance-vector routing protocols, which is gaining its Sequenced Distance-Vector (DSDV) or Ad hoc On-Demand momentum for small double-stack (IPv6 and IPv4) networks. This Distance-Vector (AODV) routing protocols. Babel is a hybrid paper briefly describes Babel behavior and provides details on its distance vector routing protocol. Although it stems from a implementation in OMNeT++ discrete event simulator. classical distributed Bellman-Ford algorithm, it also adopts certain features from link-state protocols, such as proactive Keywords—Babel, OMNeT++, INET, Routing, Protocols, IPv6, neighbor discovery. It offers a great modularity of metric IPv4, dual-stack; calculation (currently four distinct techniques are specified) and I. INTRODUCTION pluggable best route selection policy. Babel employs a feasibility condition test to prevent route loops during Currently deployed routing protocols, e.g., OSPF, RIP, EIGRP, convergence phase. Babel protocol syntax employs type-length- have well-known characteristics. New proposals that address value (TLV) encoding, which for instance allow incorporating shortcomings of standard routing protocols need to be evaluated different address-family (currently both IPv4 and IPv6) for to reach the required level of maturity to be widely adopted by routing information. Babel has a built-in mechanism for the industry. Simulation approach can provide an initial duplicity prevention together with a data compression that evaluation of a new routing protocol and its comparison to reduces protocol overhead. existing protocols. Presented paper provides notes on development and evaluation of a simulation model for Babel This paper has the following structure. Section II covers a routing protocol. quick overview of existing implementations. Section III describes the operational theory and design supplemented with The newly developed Babel simulation model is a part of 1 implementation notes. Section IV contains validation and testing ANSAINET framework which aims at providing a variety of scenarios. The paper is summarized in Section V together with simulation models compatible with RFC specifications and outlines of our plans. reference implementations. These tools should allow for analysis of a near real network behavior. Results are freely II. CURRENT BABEL IMPLEMENTATIONS available and can be employed for further research initiatives, This section brings brief information about the availability such as simulation approach to proving (or disproving) certain of Babel for real network deployment. According to the main aspects of technologies and related protocols. The ANSAINET Babel project web page [3], there are three active (and one now supports: deprecated) implementations available: Babel dynamic unicast routing protocol; babeld – reference implementation maintained by the Proprietary first-hop redundancy protocols (FHRP) such author of Babel specification [4]; as Hot Standby Router Protocol (HSRP) and Gateway Pybabel – implementation in Python limited only to IPv6 Load Balancing Protocol (GLBP), which guarantee high- and no real cost recalculation [5]; availability of default gateway; Sbabeld – a limited implementation intended only for 1 ANSA is a long-term project carried by researchers and students at the Brno IPv6 stub-routers [6]; University of Technology aiming at extending IP network simulation framework with new simulation models. The framework is built on the original INET framework [1] shipped with OMNeT++ simulator. We have unsuccessfully searched for any Babel simulation reception (훽) and successful Hello transmission (훼). model. In particular, we are not aware of any Babel Aggregated link cost is computed as 256/(훼 ∙ 훽). implementation in the most used discrete event simulators, such as NS-2/3, OPNET, or OMNET++. Babel exchanges data as TLV records. Babel message consists of several TLVs records, which is controlled by a III. CONTRIBUTION buffering policy. Babel records are: The aim of this section is to overview the basic elements of AckReq and Ack – AckReq is the ack request, and Ack is Babel: 1) the best route selection, 2) message exchange the solicited acknowledgment response within specified mechanisms, and 3) state maintenance structures. Also, we interval using the same nonce; provide an explanation of how these elements are implemented in Babel’s simulation model of ANSAINET. Hello – Neighbor and link’s reception cost are discovered using Hello; A. Theory of Operation IHU – I Hear You is confirmation of mutual reachability Babel is codified withing IETF as experimental RFC 6126 of neighbors. Moreover, these TLVs carry link’s [7]. It leverages both unicast communication and also multicast transmission cost; address 224.0.0.111 for IPv4 and ff02::1:6 for IPv6 group communication. Babel operates over UDP on (both source and Router-Id – TLV contains unique (recommended is to destination) port 6696. use EUI-64) eight bytes long router identification within a given Babel routing domain; Babel is using feasibility condition (FC) when verifying incoming routing records. In particular, Babel employs FC NextHop – TLV carries next-hop IP address for variant called Source Node Condition [8] just as EIGRP: The subsequent Updates TLV; best known metric 푚퐴 together with a sequence number 푠퐴 (number reflecting age of metric, higher means younger and Update – It advertises or withdraws routes including more current) to a destination network N from a router 푨 denotes their prefix, two bytes long sequence number and metric; its feasible distance, 퐹퐷퐴(푵) = (푠퐴, 푚퐴). Routing information RouteReq – TLV prompts receiver to send Update received by router 푨 from router 푩 satisfies FC if and only if the regarding specified prefix; metric 퐷퐵(푵) to the destination network N advertised by router 푩 is strictly lower than 퐹퐷퐴(푵): SeqNoReq – It prompts receiver to send (or to delegate further) Update regarding specified prefix with a given 퐷퐵(푵) = (푠퐵, 푚퐵), 퐹퐷퐴(푵) = (푠퐴, 푚퐴): sequence number. 퐷퐵(푵) < 퐹퐷퐴(푵) ↔ (푠퐵 = 푠퐴 ∧ 푚퐵 < 푚퐴) ∨ 푠퐵 > 푠퐴 Pad1 and PadN – These two are padding TLVs without any meaningful content; Applying FC, we avoid counting-to-infinity problem known from original RIP implementation. However, the FC might Babel standard specifies multiple abstract data structures and cause starvation, when the only one route exists, and it cannot placeholders for information important for Babel functionality: be used because it does not satisfy FC. Therefore, Babel is Interface Table contains the list of interfaces through checking sequence numbers (just as DSDV) to recognize which Babel routing information are being sent and outdated 퐹퐷. Moreover, Babel equips routing updates also with accepted; advertising router identification to distinct between different routes to the same network prefix. Neighbor Table (NT) contains the list of all known neighbors including mutual interface (through which Babel employs the sum of links costs from the router to a neighbor is reachable), IP address, history of Hellos, given destination network as the metric. Babel evaluates metric transmission cost, sequence number (used by neighbor); on router 푨 as the route’s metric 푚퐵 announced by a neighbor 푩 plus link’s cost 푐 between 푨 and 푩: 푚퐴 = 푚퐵 + 푐 Babel Source Table (ST) is a placeholder for 퐹퐷s of different currently suggests two methods how link’s cost may be network prefixes. Each record is specific for a given calculated: advertising router and prefix (including prefix length) and contains (푠, 푚) tuple; k-out-of-j – This method is intended for wired networks using two parameters 푗 and 푘, where 0 < 푘 ≤ 푗 . A router Route Table (RT) contains Babel routes (tuples of prefix, remembers window of size 푗 containing last k Hello prefix length, next-hop, neighbor’s router-id and address, messages. If less than 푘 Hello messages have been metric, sequence number) known to this router; delivered, then cost is set to 0xFFFF, which means infinity (unreachable network), otherwise (푘 and more Pending Requests Table (PRT) maintains the list of sent Hellos have been successfully delivered) cost is set to a but not yet answered requests during network topology fixed value reflecting the link’s speed (by default 96 on convergence time; wired