Маршрутизация
Contents
Какво е маршрутизация
Маршрутизация или рутиране е процес на избиране на път в дадена мрежа, по който да се изпрати мрежовия трафик.
Рутиране има в различни мрежи - телефонни мрежи (комутационни вериги), транспортни мрежи (логистика), компютърни мрежи (пакетна комутация).
В компютърните мрежи информацията се предава на пакети, затова рутирането се занимава с препращането на пакет от комуникационна точка към друга комуникационна точка (нод - възел, който в частност може да е router, bridge, gateway, firewall, switch или host). Целта е информационният пакет да бъде пренесен от началната точка до крайната точка.
Всеки компютър с подходящ софтуер може да изпълнява роля на някои от тези устройства, но при големи натоварвания се препоръчва специализиран хардуер.
Рутиращата машина препраща пакети според своята рутираща таблица, в която са описани пътищата до различни дестинации (мрежи). Оптималното конструиране на рутиращата таблица е много важно за ефективно рутиране.
Трафик според дестинация
- anycast - до всеки от група нодове
- broadcast - до всички нодове
- multicast - до група от нодове
- unicast - до точно определен нод
- geocast - до географска област
Видове рутиране
Статично рутиране
На практика малки мрежи могат да използват ръчно конфигурирани рутиращи таблици, това се нарича статично рутиране (не адаптивно).
Приципно цялата мрежа може да бъде конфигурирана статично, но по този начин мрежата не е устойчива на повреда в даден нод. Ако има промяна и повреда в мрежата трафика няма да може да се пренасочи. Трябва да бъдат обновени съответните рутиращи таблици или да бъде отсранена повредата, за да може мрежата да функционира нормално.
При някои обстоятелства статичното рутиране би могло да е от полза - stub networks, default routes
Пример
To configure a static route to network 10.10.20.0/24, pointing to a next-hop router with the IP address of 192.168.100.1, type:
Cisco IOS ip route 10.10.20.0 255.255.255.0 192.168.100.1 Linux route add -net 10.10.20.0 netmask 255.255.255.0 gw 192.168.1.100
The other option is to define a static route with reference to the outgoing interface which is connected to the next hop towards the destination network.
Cisco IOS ip route 10.10.20.0 255.255.255.0 FastEthernet 0/0 Linux route add -net 10.10.20.0 netmask 255.255.255.0 dev eth0
Динамично рутиране
Големите мрежи имат сложна топология, която своевременно може многократно да се променя. Това прави ръчната конфигурация неприложима. Динамичното (адаптивното) рутиране позволява автоматична настройка на рутиращата таблица. Последната се променя според информацията, която се обменя между нодовете посредством рутиращи протоколи и заложениете локални предпочетания за всеки нод.
Примери за такива протоколи са RIP - Routing Information Protocol и OSPF (Open-Shortest-Path-First protocol). Дънамичното рутиране пробладава в Интернет, но изисква съответните познания за правилното му конфигуриране.
Алгоритми на рутиращи протоколи
Distance vector algorithms Main article: Distance-vector routing protocol
Distance vector algorithms use the Bellman-Ford algorithm. This approach assigns a number, the cost, to each of the links between each node in the network. Nodes will send information from point A to point B via the path that results in the lowest total cost (i.e. the sum of the costs of the links between the nodes used).
The algorithm operates in a very simple manner. When a node first starts, it only knows of its immediate neighbours, and the direct cost involved in reaching them. (This information, the list of destinations, the total cost to each, and the next hop to send data to get there, makes up the routing table, or distance table.) Each node, on a regular basis, sends to each neighbour its own current idea of the total cost to get to all the destinations it knows of. The neighbouring node(s) examine this information, and compare it to what they already 'know'; anything which represents an improvement on what they already have, they insert in their own routing table(s). Over time, all the nodes in the network will discover the best next hop for all destinations, and the best total cost.
When one of the nodes involved goes down, those nodes which used it as their next hop for certain destinations discard those entries, and create new routing-table information. They then pass this information to all adjacent nodes, which then repeat the process. Eventually all the nodes in the network receive the updated information, and will then discover new paths to all the destinations which they can still "reach". eg RIPV1,RIPV2 [edit] Link-state algorithms Main article: Link-state routing protocol
When applying link-state algorithms, each node uses as its fundamental data a map of the network in the form of a graph. To produce this, each node floods the entire network with information about what other nodes it can connect to, and each node then independently assembles this information into a map. Using this map, each router then independently determines the least-cost path from itself to every other node using a standard shortest paths algorithm such as Dijkstra's algorithm. The result is a tree rooted at the current node such that the path through the tree from the root to any other node is the least-cost path to that node. This tree then serves to construct the routing table, which specifies the best next hop to get from the current node to any other node. [edit] Optimised Link State Routing algorithm Main article: Optimized Link State Routing Protocol
A link-state routing algorithm optimised for mobile ad-hoc networks is the Optimised Link State Routing Protocol (OLSR).[1] OLSR is proactive; it uses Hello and Topology Control (TC) messages to discover and disseminate link state information through the mobile ad-hoc network. Using Hello messages, each node discovers 2-hop neighbor information and elects a set of multipoint relays (MPRs). MPRs distinguish OLSR from other link state routing protocols. [edit] Path vector protocol Main article: Path vector protocol
Distance vector and link state routing are both intra-domain routing protocols. They are used inside an autonomous system, but not between autonomous systems. Both of these routing protocols become intractable in large networks and cannot be used in Inter-domain routing. Distance vector routing is subject to instability if there are more than a few hops in the domain. Link state routing needs huge amount of resources to calculate routing tables. It also creates heavy traffic due to flooding.
Path vector routing is used for inter-domain routing. It is similar to distance vector routing. In path vector routing we assume there is one node (there can be many) in each autonomous system which acts on behalf of the entire autonomous system. This node is called the speaker node. The speaker node creates a routing table and advertises it to neighboring speaker nodes in neighboring autonomous systems. The idea is the same as distance vector routing except that only speaker nodes in each autonomous system can communicate with each other. The speaker node advertises the path, not the metric of the nodes, in its autonomous system or other autonomous systems. Path vector routing is discussed in RFC 1322; the path vector routing algorithm is somewhat similar to the distance vector algorithm in the sense that each border router advertises the destinations it can reach to its neighboring router. However, instead of advertising networks in terms of a destination and the distance to that destination, networks are advertised as destination addresses and path descriptions to reach those destinations. A route is defined as a pairing between a destination and the attributes of the path to that destination, thus the name, path vector routing, where the routers receive a vector that contains paths to a set of destinations. The path, expressed in terms of the domains (or confederations) traversed so far, is carried in a special path attribute that records the sequence of routing domains through which the reachability information has passed. [edit] Comparison of routing algorithms
Distance-vector routing protocols are simple and efficient in small networks and require little, if any, management. However, traditional distance-vector algorithms have poor convergence properties due to the count-to-infinity problem.
This has led to the development of more complex but more scalable algorithms for use in large networks. Interior routing mostly uses link-state routing protocols such as OSPF and IS-IS.
A more recent development is that of loop-free distance-vector protocols (e.g., EIGRP). Loop-free distance-vector protocols are as robust and manageable as native distance-vector protocols, but avoid counting to infinity, and have good worst-case convergence times.