Routing Information Protocol A simple distance vector scheme Karst Koymans Informatics Institute University of Amsterdam (version 16.3, 2017/03/01 13:00:45) Friday, March 3, 2017 RIP version 1 Origin and application Basic RIPv1 operation RIPv1 packets RIP version 1 and subnetting Protocol extensions IGRP EIGRP RIP version 2 Extensions with respect to version 1 Summary of changes with respect to version 1 RIP Next Generation and RIP variants RIP version 1 RIP application RFC 1058 Charles Hedrick, Rutgers University, 1988 Based on the Bellman-Ford distance vector algorithm Also used as the first ARPANET routing protocol Many implementations were already present differing in details (timers... ) available before the specification itself GWINFO from Xerox PARC routed from BSD 4.2 Inside homogeneous networks with a moderate size An interior routing protocol (IGP) Maximum diameter is 15 hops Based on a uniform cost (weight) of 1 Hence in this case 16 =
Basic operation Split horizon (with poisoned reverse) Keep a table of routes to destination networks with distance (metric), gateway (next hop) Periodically send out a complete table to all neighbours Send all destination networks with distances Do not send the gateways Update your table with newly collected information The distance can only decrease (become better) unless the information comes from the gateway itself, thereby overriding the old information which only occurs if the topology changes or links fail or come up Split horizon Do not advertize back routes you learned from your neighbour to the network you both are on Poisoned reverse Do advertise routes back but with distance which indicates unreachability explicitly Advantage is the faster convergence in case topology changes for instance when routers point to each other Disadvantage is the larger routing update packets Therefore implementation is optional or configurable Timers Timers (later additions) Update timer: updates are sent every 30 seconds (default) Invalid timer: routes time out after 180 seconds (default) Called timeout in RFC 1058 Flush timer: routes disappear after 240 seconds (default) Called garbage-collection timer in RFC 1058 with a default value of 120 seconds after timeout Unreachable networks are included in updates until the flush timer expires them and they are eliminated from the routing table Infinity = = 16 Triggered updates An update is being sent as soon as a route changes Hold-down timer (default 180 seconds) This is a later (Cisco) addition, not present in RFCs It exists to prevent incorporating possibly bad routing information which might be present in a network that didn t converge yet The semantics is not completely clear (not standardized) Essentially do not accept updates during hold-down on routes that have been marked unreachable
RIP version 1 packets RIPv1 packet format Packets are broadcast to 255.255.255.255 or to a directed broadcast address or to an individual host or router as a response to a request Works on top of UDP and uses 520 as its well-known port The maximum size of this UDP packet is 512 bytes, including the 8 bytes long UDP header There is room for 25 route updates Each update needs 20 bytes Command Version Reserved (must be 0) Address Family Identifier Reserved (must be 0) IP Address (network) Reserved (must be 0) Metric Repeated maximally 25 times RIPv1 packet fields Subnets RIPv1 fields Command Request(1) or Response(2) Version 1 AFI IP(2) IP Address Destination Network Metric Distance (max 16= ) RIPv1 supports fixed length, one level deep, subnet masks RIPv1 uses heuristics to derive the uniform subnet mask in use throughout the whole subnetted network from its own directly connected subnets RIPv1 differentiates between neighbours for updates about subnets being part of that same subnetted network being part of another network
IGRP (1) IGRP (2) IGRP stands for Interior Gateway Routing Protocol IGRP is a Cisco proprietary protocol IGRP is just like RIP a distance vector protocol The basics are the same as with RIP It runs directly on top of IP (protocol 9) It has a larger notion of, typically 100, maximum 255 It accepts up to four parallel paths which Cisco also used in its RIP implementation, deviating from the official specification Division into independent domains is possible which are called (confusingly) autonomous systems Uses three types of network routes Interior route with implicit subnet information, like in RIPv1 System route which is possibly summarized Exterior route candidate default Support for multiple default routes using fictitious network numbers contrary to RIP that only (optionally) includes 0.0.0.0 IGRP (3) EIGRP (1) RIP The only metric is the hop count IGRP The metric is composite, based on Delay, Bandwidth, Reliability and Load The hop count is still communicated as a separate field to see when has been reached MTU information about the path is also communicated EIGRP stands for Enhanced Interior Gateway Routing Protocol It runs directly on top of IP (protocol 88) Remembers all paths, not only the best path It carries explicit subnet information (VLSM) It keeps state about its neighbours It can take the MTU into account It uses the DUAL (Diffusing Update Algorithm) algorithm for loop free routing and fast convergence
EIGRP (2) EIGRP (3) It uses no regular (periodic) routing table updates Uses partial and incremental updates when the routing table changes It uses hello multicast packets to be discovered by neighbours It forms adjacencies with neighbours It uses ack(nowledgement)s for reliable communication It can summarize on arbitrary bit boundaries (classless) Use of DUAL Complicated algorithm, remotely similar to the propose and agree mechanism for Rapid Spanning Tree Suppose S-M-T is a path from S to T via neighbour M Suppose the link cost for S-M is c Suppose the path cost for M-T is p When is it safe (with respect to loop avoidance) to switch to a backup path via neighbour N when the link S-M fails? Say the link cost for S-N is d and the path cost for N-T is q Answer: q c + p (feasible successor condition) RIP version 2 RIPv2 packet format Specified in RFC 2453 Gary Malkin, Bay Networks, 1998 It has extensions for Subnet masks Alternate next hop Authentication Multicasting Route tags Command Version Reserved (must be 0) Address Family Identifier Route Tag IP Address (network) Subnet Mask Next Hop Metric Repeated maximally 25 times
RIPv2 packet fields First-routing-entry-as-authentication hack RIPv2 fields Command Request(1) or Response(2) Version 2 AFI IP(2) Route Tag Identification of route origin IP Address Destination Network Subnet Mask CIDR support Next Hop Gateway (if different from advertising router) Metric Distance (max 16= ) Address Family Identifier (=0xFFFF) Authentication Authentication Type Authentication type 2 means use of a plaintext password Authentication type 3 (RFC 4822) means use of Keyed-MD5 or HMAC-SHA-{1,256,384,512} where extended authentication data is added as a trailer to the RIP data Summary of changes (1) Summary of changes (2) Authentication fields First AFI is 0xFFFF Type 2: simple password of length 16 bytes Type 3: key id, sequence number and length and offset of a variable length authentication trailer Route tag field This is simply carried along It differentiates between internally and externally generated routes Subnet mask field net/subnet/host route differentiation Next Hop field Used when best next hop does not speak RIP itself Multicast (not a field) replaces broadcast The destination of updates is 224.0.0.9 (which is not forwarded)
Next Hop scenario RIPng (for IPv6) Network A B E F A and B speak RIP internally. E and F speak some other protocol over the external network. E can speak RIP to A and B on behalf of F, setting the Next Hop to F as appropriate. Specified in RFC 2080 It still runs over UDP It uses port number 521 Packets can be any length that fits inside the network unfragmented Supports IPv6 prefix, route tags, next hop No authentication (which can be done at the IP level) It uses FF02::9, the all-rip-routers multicast address RIPng packet format RTE-with-big-metric-as-next-hop hack Command Version Reserved (must be 0) Next Hop IPv6 Prefix Route Tag Prefix Length Metric As many as can fit in a packet unfragmented 0x0000 0x00 Metric(=0xFF) The next hop must be a link local address Using :: as next hop means use originator as next hop Next Hop remains valid until next next-hop-rte