modified on 1 lip 2010 at 11:10 ••• 28 214 views

Trasy, Wielodrogowy Routing Równych Kosztów, Polityka Routingu

Z MikroTik Wiki

Spis treści

Informacje Ogólne

Poniższy przewodnik przedstawia sposób zarządzania drogami IP, technikę routingu ECMP (equal-cost multi-path) oraz politykę routingu.

Specifikacja

Moduł wymagany: system

Licencja wymagana: Level1

Poziom menu: /ip route

Standardy i Technologie: IP (RFC 791)

Hardware użyty: -

Opis

MikroTik RouterOS obsługuje następujące typy ścierzek routingu:

   * ścieżki dynamiczne (dynamic routes) - tworzona jest automatycznie ścieżka do sieci, które są dostępne bezpośrednio przez interfejs. Pojawiają się automatycznie, przy dodawaniu nowego adresu IP. Dynamiczne ścieżki są również dodawane przez protokołu routingu.
   * ścieżki statyczne (static routes) - zdefiniowane przez użytkownika trasy, określające router przekazujący ruch do określonej docelowej sieci. Użyteczne przy określaniu bramki domyślnej. Bramka dla statycznych tras może być sprawdzana (poprzez protokół ARP lub ICMP) pod względem dostępności, dzięki czemu różne bramki z różnymi priorytetami (kosztami) mogą być przydzielone dla jednej sieci w celu zapewnienia ochrony przed awariami.


Routing ECMP (Equal Cost Multi-Path)

Ten mechanizm umożliwia wybór tras pakietów przez wiele różnych ścieżek o równych kosztach w celu zapewnienia równoważonego obciążenia. Używając routing ECMP możesz użyć więcej niż jedną bramkę dla jednej sieci docelowej (takie rozwiązanie może być także wykorzystane jako ochrona przez awarią). Z ECMP router w zasadzie ma kilkanaście dostępnych następnych skoków (hops) do punku docelowego. Nowa bramka wybierana jest dla każdej nowej pary adresów źródłowych/docelowych. Oznacza to,że, dla przykładu jedno połączenie FTP będzie używać jednego łącza, a nowe połączenie do innego serwera będzie wykorzystywało inne łącze. Routing ECMP posiada jeszcze jedną przydatną opcję - pakiety należące do jednego połączenia nie są przekierowywane, dzięki czemu nie następuje zakończenie sesji TCP.

Trasy ECMP mogą być stworzone przez protokoły routingu (RIP lub OSPF) lub poprzez dodanie statycznych tras z wieloma bramkami, oddzielonymi od siebie przecinkami (np. /ip route add gateway=192.168.0.1,192.168.1.1). Protokoły routingu mogą automatycznie stworzyć wielościeżkowe dynamiczne trasy o równym koszcie, jeżeli koszt interfejsu jest odpowiednio dobrany. Aby znaleźć więcej informacji jak używać protokoły routingu, przeczytaj odpowiedni przewodnik.

Polityka Routingu (Policy-Based Routing)

To jest podejście do routingu, w którym następny skok (bramka) dla pakietu jest wybierana w oparciu o politykę określoną przez administratora sieci. Dla RouterOS procedury przebiegają według punktów:

  * oznaczyć odpowiednie pakiety, znakiem routingu
  * wybrać bramkę dla oznaczonych pakietów

Uwaga! W procesie routingu, router decyduje, którą drogą zostanie przesłany pakiet. Następnie, gdy pakiet jest maskowany (masqueraded) jego adres źródłowy podawany jest adres znajdujący się w polu prefsrc.

Trasy

Poziom menu: /ip route

Opis

W tym podmenu możesz skonfigurwać statyczny, ECMP lub oparty o politykę routing oraz wyświetlić listę tras.

Nazewnictwo

bgp-as-path (text) - fizyczna wartość drogi BGP (BGP's as-path) dla wychodzącej trasy.

bgp-atomic-aggregate (yes | no) - wskaźnik dla odbiornika, czy może oddzielić (deaggregate) prefix.

bgp-communities (multiple choice: integer) - znacznik polityki administratora, który może podróżować różnymi autonomicznymi systemami (administrative policy marker, that can travel through different autonomous systems internet - communities value 0)

bgp-local-pref (integer) - Lokalna preferowana wartość trasy (local preference value for a route).

bgp-med (integer) - atrybut BGP, który zapewnia mechanizm dla spikerów BGP, doprowadzający do przyległych AS informacje o optymalnym punkcie wejściowym do lokalnego AS (a BGP attribute, which provides a mechanism for BGP speakers to convey to an adjacent AS the optimal entry point into the local AS)

bgp-origin (incomplete | igp | egp) - początek prefiksu trasy (the origin of the route prefix)

bgp-prepend (integer: 0..16) - liczba określająca jak wiele razy należy sięgnąć z AS_NAME do AS_PATH (number which indicates how many times to prepend AS_NAME to AS_PATH).

check-gateway (arp | ping; default: ping) - który protokół zostanie użyty w celu określenia dostępności bramki (which protocol to use for gateway reachability).

distance (integer: 0..255) - odległość trasy określona administracyjnie. Gdy pakiet jest przekazywany, router użyje trasy o najmniejszej administracyjnej odległości oraz dostępnej bramki (administrative distance of the route. When forwarding a packet, the router will use the route with the lowest administrative distance and reachable gateway).

dst-address (IP address/netmask; default: 0.0.0.0/0) - adres docelowy oraz maska sieci, gdzie liczba po sleszu "/" jest ilością bitów określających numer sieci. Używane podczas routingu statycznego w celu określenia miejsce przeznaczenia, które jest osiągalne przy użyciu bramki (destination address and network mask, where netmask is number of bits which indicate network number. Used in static routing to specify the destination which can be reached, using a gateway). 0.0.0.0/0 - dowolna sieć

gateway (IP address) - bramka, która jest osiągalna bezpośrednio przez interfejsy. Możesz określić kilka bramek, oddzielonych przecinkiem "," dla tras ECMP.

pref-src (IP address) - źródłowy adres IP pakietów, opuszczających router przez tą trasę. 0.0.0.0 - pref-src jest określony automatycznie.

routing-mark (name) - znak pakietów, zdefiniowany w /ip firewall mangle. Tylko pakiety posiadające odpowiednie oznakowanie pakietów zostaną przekazane przez tą bramkę (a mark for packets, defined under /ip firewall mangle. Only those packets which have the according routing-mark, will be routed, using this gateway).

scope (integer: 0..255) - wartość używana do rekurecyjnego wyszukiwania adresu następnego skoku. Następny skok jest wyszukiwany tylko dla tras które mają zakres <= zakres docelowy następnego skoku (a value which is used to recursively lookup the nexthop addresses. Nexthop is looked up only through routes that have scope <= target-scope of the nexthop).

target-scope (integer: 0..255) - wartość używana do rekurecyjnego wyszukiwania adresu następnego skoku. Każdy następny adres skoku wybierany jest według najmniejszej wartości target-scope ze wszystkich tras jakie wykorzystują adres tego skoku. Następny skok jest wyszukiwany tylko przez trasy które mają zakres <= zakres docelowy następnego skoku (a value which is used to recursively lookup the next-hop addresses. Each nexthop address selects smallest value of target-scope from all routes that use this nexthop address. Nexthop is looked up only through routes that have scope <= target-scope of the nexthop).

Uwagi

Możesz określić więcej niż jedną lub dwie bramki w trasie. Ponadto możesz powtórzyć niektóre trasy w liście kilkanaście razy, aby zrobić coś w rodzaju ustalenia wartości kosztu dla bramek ( You can specify more than one or two gateways in the route. Moreover, you can repeat some routes in the list several times to do a kind of cost setting for gateways).

Przykład

Aby dodać dwie statyczne trasy do sieci 10.1.12.0/24 i 0.0.0.0/0 (domyślny adres docelowy) na routerze z dwoma interfejsami i dwoma adresami IP:

[admin@MikroTik] ip route> add dst-address=10.1.12.0/24 gateway=192.168.0.253
[admin@MikroTik] ip route> add gateway=10.5.8.1
[admin@MikroTik] ip route> print
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        G GATEWAY         DIS INTE...
 0 A S  10.1.12.0/24       r 192.168.0.253            Local
 1 ADC  10.5.8.0/24                                   Public
 2 ADC  192.168.0.0/24                                Local
 3 A S  0.0.0.0/0          r 10.5.8.1                 Public
[admin@MikroTik] ip route>


Zasady polityki

Poziom menu: /ip route rule

Nazewnictwo

action (drop | unreachable | lookup; default: unreachable) - akcja przeprowadzona dla pakietów spełniających tę regułę:

  • drop - porzuć pakiet bez powiadamiania
  • unreachable - odpowiedz, że host docelowy jest nieosiągalny
  • lookup - wyszukaj trasę podaną w tablicy routingu

dst-address (IP address:netmask) -adres/maska docelowego IP

interface (name; default: "") - interfejs przez który bramka jest osiągalna

routing-mark (name; default: "") - oznakowanie pakietu pasującego do tej reguły. Aby dodać znak routingu, użyj polecenia /ip firewall mangle.

src-address (IP address:netmask) - adres/maska IP źródła

table (name; default: "") - tablica routingu, określona przez użytkownika

Uwagi

Możesz użyć polityki routingu nawet, gdy używasz maskarady w Twoich prywatnych sieciach. Adres źródłowy będzie taki sam jakby był w sieci lokalnej. W poprzednich wersjach RouterOS adres źródłowy zmieniany był na 0.0.0.0.

Niemożliwe jest rozpoznanie ruchu peer-to-peer po pierwszym pakiecie. Tylko zestawione już połączenia będą rozpoznawane. To również oznacza, że w tym przypadku źródłowy NAT traktuje ruch peer-to-peer inaczej niż normalny ruch. Programy peer-to-peer nie będą działać (często stosowana jest polityka, w której normalny ruch jest przekierowywany przez jeden interfejs, a ruch peer-to-peer przez drugi interfejs). Znanym obejściem tego problemu jest rozwiązanie go z drugiej strony: Ruch inny niż peer-to-peer kierowany jest przez jedną bramkę, ale cały użyteczny ruch kierowany jest przez drugą bramkę. Innymi słowy, określenie jakie protokoły (HTTP. DNS,POP3, itp) będą kierowane przez bramkę A, a cały pozostały ruch (również ruch peer-to-peer) jest kierowany przez bramkę B (nie jest istotne która bramka jest którą; ważne jest jedynie aby trzymać ruch peer-to-peer razem z całym ruchem oprócz określonych wcześniej protokołów).

Przykład

Aby dodać regułę określającą, że wszystkie pakiety z hosta 10.0.0.144 powinny wyszukiwać tablice routingu MT:

[admin@MikroTik] ip firewall mangle add action=mark-routing new-routing-mark=mt \
\... chain=prerouting
[admin@MikroTik] ip route> add gateway=10.0.0.254 routing-mark=mt
[admin@MikroTik] ip route rule> add src-address=10.0.0.144/32 \
\... table=mt action=lookup
[admin@MikroTik] ip route rule> print
Flags: X - disabled, I - invalid
 0   src-address=192.168.0.144/32 action=lookup table=mt
[admin@MikroTik] ip route rule>

Przykłady aplikacji

Statyczny Routing Equal Cost Multi-Path

Rozpatrzmy poniższą sytuację, gdzie mamy trasę pakietów z sieci 192.168.0.0/24 do 2 bramek - 10.1.0.1 i 10.1.1.1:

Grafika:route-ecmp.jpg

Zauważ, że ISP1 przydziela nam 2Mbps a ISP2 - 4Mbps, więc chcielibyśmy aby stosunek ruchu wynosił 1:2 (1/3 par adresów IP źródło/cel z 192.168.0.0/24 idzie przez ISP1, a 2/3 przez ISP2).

Adresy IP routera:

[admin@ECMP-Router] ip address> print
Flags: X - disabled, I - invalid, D - dynamic
 #   ADDRESS            NETWORK         BROADCAST       INTERFACE
 0   192.168.0.254/24   192.168.0.0     192.168.0.255   Local
 1   10.1.0.2/28        10.1.0.0        10.1.0.15       Public1
 2   10.1.1.2/28        10.1.1.0        10.1.1.15       Public2
[admin@ECMP-Router] ip address>

Dodajmy domyślne trasy - jedna dla ISP1 i 2 dla ISP2, więc otrzymujemy stosunek 1:3:

[admin@ECMP-Router] ip route> add gateway=10.1.0.1,10.1.1.1,10.1.1.1
[admin@ECMP-Router] ip route> print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf
 #     DST-ADDRESS        G GATEWAY         DISTANCE INTERFACE
 0 ADC 10.1.0.0/28                                   Public1
 1 ADC 10.1.1.0/28                                   Public2
 2 ADC 192.168.0.0/24                                Local
 3 A S 0.0.0.0/0          r 10.1.0.1                 Public1
                          r 10.1.1.1                 Public2
                          r 10.1.1.1                 Public2
[admin@ECMP-Router] ip route>

Standardowy Routing Oparty o Politykę z Ochroną Przed Awariami (Standard Policy-Based Routing with Failover)

Ten przykład pokazuje jak kierować pakiety, używając polityki zdefiniowanej przez administratora. Polityka dla takiego przykładu jest następująca: kierowane pakiety z sieci 192.168.0.0/24 używają bramki 10.0.0.1, a pakiety z sieci 192.168.1.0/24, używają bramki 10.0.0.2. Jeżeli GW_1 nie odpowiada na pingi, użyj GW_Backup dla sieci 192.168.0.0/24. Jeżeli GW_2 nie odpowiada na pingi, użyj GW_Backup dla sieci 192.168.1.0/24 zamiast GW_2.


Konfigurowanie:

Grafika:route-policy.jpg

Konfiguracja adresów IP:

[admin@PB-Router] ip address> print
Flags: X - disabled, I - invalid, D - dynamic
 #   ADDRESS            NETWORK         BROADCAST       INTERFACE
 0   192.168.0.1/24     192.168.0.0     192.168.0.255   Local1
 1   192.168.1.1/24     192.168.1.0     192.168.1.255   Local2
 2   10.0.0.7/24        10.0.0.0        10.0.0.255      Public
[admin@PB-Router] ip address>

Aby otrzymać pożądany efekt, postępuj według poniższych kroków:

1. Oznakuj pakiety z sieci 192.168.0.0/24 nowym znakiem routingu=net1, a pakiet z sieci 192.168.1.0/24 nowym znakiem=net2:

(1. Mark packets from network 192.168.0.0/24 with a new-routing-mark=net1, and packets from network 192.168.1.0/24 with a new-routing-mark=net2:)

[admin@PB-Router] ip firewall mangle> add src-address=192.168.0.0/24 \
      \... action=mark-routing new-routing-mark=net1 chain=prerouting
[admin@PB-Router] ip firewall mangle> add src-address=192.168.1.0/24 \
      \... action=mark-routing new-routing-mark=net2 chain=prerouting
[admin@PB-Router] ip firewall mangle> print
      Flags: X - disabled, I - invalid, D - dynamic
       0   chain=prerouting src-address=192.168.0.0/24 action=mark-routing
           new-routing-mark=net1

       1   chain=prerouting src-address=192.168.1.0/24 action=mark-routing
           new-routing-mark=net2
[admin@PB-Router] ip firewall mangle>

2. Przekieruj pakiety z sieci 192.168.0.0/24 do bramki GW_1 (10.0.0.2), pakiety z sieci 192.168.1.0/24 do bramki GW_2 (10.0.0.3) według oznakowania pakietów. Jeżeli GW_1 lub GW_2 zawiedzie (przestanie odpowiadać na pingi), przekieruj odpowiednie pakiety do GW_Main (10.0.0.1):

(2. Route packets from network 192.168.0.0/24 to gateway GW_1 (10.0.0.2), packets from network 192.168.1.0/24 to gateway GW_2 (10.0.0.3), using the according packet marks. If GW_1 or GW_2 fails (does not reply to pings), route the respective packets to GW_Main (10.0.0.1):)

[admin@PB-Router] ip route> add gateway=10.0.0.2 routing-mark=net1 \
      \... check-gateway=ping
[admin@PB-Router] ip route> add gateway=10.0.0.3 routing-mark=net2 \
      \... check-gateway=ping
[admin@PB-Router] ip route> add gateway=10.0.0.1
[admin@PB-Router] ip route> print
      Flags: X - disabled, A - active, D - dynamic,
      C - connect, S - static, r - rip, b - bgp, o - ospf
       #     DST-ADDRESS        PREFSRC         G GATEWAY         DISTANCE INTERFACE
       0 ADC 10.0.0.0/24        10.0.0.7                                   Public
       1 ADC 192.168.0.0/24     192.168.0.1                                Local1
       2 ADC 192.168.1.0/24     192.168.1.1                                Local2
       3 A S 0.0.0.0/0                          r 10.0.0.2                 Public
       4 A S 0.0.0.0/0                          r 10.0.0.3                 Public
       5 A S 0.0.0.0/0                          r 10.0.0.1                 Public
[admin@PB-Router] ip route>