[CEF] Rozkład ruchu 2 do 1

Problemy związane z routingiem

Moderatorzy: mikrobi, garfield, gangrena, Seba, aron

Wiadomość
Autor
ms
wannabe
wannabe
Posty: 111
Rejestracja: 22 kwie 2009, 12:54
Kontakt:

[CEF] Rozkład ruchu 2 do 1

#1

#1 Post autor: ms »

Cześć,
Chcę osiągnąć rozkład ruchu 2 do 1 na dwóch łączach do internetu z statycznymi trasami domyślnymi.

Tutaj wygląda to OK:

Kod: Zaznacz cały

sh ip cef 0.0.0.0 0.0.0.0
0.0.0.0/0
  nexthop xx.xx.xx.97 GigabitEthernet8
  nexthop xx.xx.xx.97 GigabitEthernet8
  nexthop xx.xx.xx.145 FastEthernet0
Realizuje to w taki sposób:

Kod: Zaznacz cały

ip route 0.0.0.0 0.0.0.0 xx.xx.xx.97 track 101
ip route 0.0.0.0 0.0.0.0 192.0.2.254 track 101
ip route 192.0.2.254 255.255.255.255 xx.xx.xx.97

ip route 0.0.0.0 0.0.0.0 xx.xx.xx.145 track 102
Niestety rozkład ruchu i liczba translacji na poszczególnych adresach wskazują, że ruch rozkłada się w stosunku 1 do 1

Kod: Zaznacz cały

show ip nat translations | count xx.xx.xx.146
Number of lines which match regexp = 1586

show ip nat translations | count xx.xx.xxx.99
Number of lines which match regexp = 1559
Czy ma ktoś z Was pomysł dlaczego tak się dzieje?
Zastanawia mnie dlaczego poniżej są tylko DWA hash bucket.

Kod: Zaznacz cały

 2 hash buckets
        < 0 > IP adj out of GigabitEthernet8, addr xx.xx.xx.97 021C8D20
        < 1 > IP adj out of FastEthernet0, addr xx.xx.xx.145 01BA3E80
Poniżej całe wyjście:

Kod: Zaznacz cały

sh ip cef 0.0.0.0 0.0.0.0 internal
0.0.0.0/0, epoch 0, flags [cover, defrt], RIB[S], refcnt 7, per-destination sharing
  sources: RIB, DRH
  feature space:
    IPRM: 0x00048000
    NetFlow: Origin AS 0, Peer AS 0, Mask Bits 0
  subblocks:
    Covered dependent prefixes: 1
      notify cover updated: 1
  ifnums:
    GigabitEthernet8(12): xx.xx.xx.97
    FastEthernet0(13): xx.xx.xx.145
  path list 03E9EE30, 3 locks, per-destination, flags 0x69 [shble, rif, rcrsv, hwcn]
    path 124E8588, share 0/1, type recursive, for IPv4
      recursive via xx.xx.xx.97[IPv4:Default], fib 11F9D93C, 1 terminal fib, v4:Default:xx.xx.xx.97/32
      path list 1213AE34, 2 locks, per-destination, flags 0x49 [shble, rif, hwcn]
          path 035AE754, share 1/1, type adjacency prefix, for IPv4
            attached to GigabitEthernet8, IP adj out of GigabitEthernet8, addr xx.xx.xx.97 021C8D20
    path 124E85F0, share 1/1, type recursive, for IPv4
      recursive via 192.0.2.254[IPv4:Default], fib 03E9DAA8, 1 terminal fib, v4:Default:192.0.2.254/32
      path list 03EA0CD0, 3 locks, per-destination, flags 0x49 [shble, rif, hwcn]
          path 124E9E50, share 1/1, type attached nexthop, for IPv4
            nexthop xx.xx.xx.97 GigabitEthernet8, IP adj out of GigabitEthernet8, addr xx.xx.xx.97 021C8D20
    path 124E8658, share 1/1, type recursive, for IPv4
      recursive via xx.xx.xx.145[IPv4:Default], fib 11F9D5A0, 1 terminal fib, v4:Default:xx.xx.xx.145/32
      path list 1213AAC4, 2 locks, per-destination, flags 0x49 [shble, rif, hwcn]
          path 035AE2DC, share 1/1, type adjacency prefix, for IPv4
            attached to FastEthernet0, IP adj out of FastEthernet0, addr xx.xx.xx.145 01BA3E80
  output chain:
    loadinfo 01C5BCE0, per-session, 2 choices, flags 0083, 5 locks
      flags [Per-session, for-rx-IPv4, 2buckets]
      2 hash buckets
        < 0 > IP adj out of GigabitEthernet8, addr xx.xx.xx.97 021C8D20
        < 1 > IP adj out of FastEthernet0, addr xx.xx.xx.145 01BA3E80
      Subblocks:
        None
Rozwiązania z dzieleniem przestrzeni adresów 0/0 na 0/1 i 128/1, itp. wolałbym uniknąć.

Pozdrawiam,

lbromirs
CCIE
CCIE
Posty: 4084
Rejestracja: 30 lis 2006, 08:44

Re: [CEF] Rozkład ruchu 2 do 1

#2

#2 Post autor: lbromirs »

Kiedyś tak się dało, gdzieś do okolic 12.2 i potem 15.0. Ale po raz kolejny usprawniliśmy CEF i teraz skubany sprytnie "rozwiąże" sobie do ostatecznego nexthopa i dopiero tego użyje.

Udaje się jednak zrobić routing pośredni, przez nieistniejące next-hopy. Testowałem to u siebie na ASRze 1001X z 16.9.4 i działało. Coś na kształt:

Kod: Zaznacz cały

ip route 0.0.0.0 0.0.0.0 192.168.254.10 ! via 1 gateway
ip route 0.0.0.0 0.0.0.0 192.168.254.11 ! via 1 gateway, ale drugi, unikalny nexthop
ip route 0.0.0.0 0.0.0.0 192.168.254.20 ! via 2 gateway
Potem dodajesz oczywiście te fikcyjne nexthopy z własciwymi:

Kod: Zaznacz cały

ip route 192.168.254.10 255.255.255.255 x.x.x.y ! 1 gateway
ip route 192.168.254.11 255.255.255.255 x.x.x.y ! 1 gateway
ip route 192.168.254.20 255.255.255.255 x.x.z.z ! 2 gateway
Możesz oczywiście dołączyć sobie tracking/SLA/etc.

ms
wannabe
wannabe
Posty: 111
Rejestracja: 22 kwie 2009, 12:54
Kontakt:

Re: [CEF] Rozkład ruchu 2 do 1

#3

#3 Post autor: ms »

Dzięki za wyjaśnienia!

Niestety, u mnie jest to 891F z IOS 15.5(3) i tutaj CEF jest "zbyt sprytny" - ciągle rozwiązuje do ostatecznego nexthop.

Sprawdzałem nawet co się dzieje
- przy potrójnej rekurencji do next-hop oraz
- gdy trasy do nieistniejących next-hop nie są /32, a np. /24
Niestety efekty te same - ciągle ostatecznie dwa next-hopy.

Przydałby się jakiś parametr w CEF, który pozwoliłby to zachowanie kontrolować. Albo jakiś "ludzki sposób" :) na nierównomierny rozkład przy routingu statycznym.

Pozdrawiam,

lbromirs
CCIE
CCIE
Posty: 4084
Rejestracja: 30 lis 2006, 08:44

Re: [CEF] Rozkład ruchu 2 do 1

#4

#4 Post autor: lbromirs »

Hmmm, no to poczekaj. Muszę rzucić okiem ;)

lbromirs
CCIE
CCIE
Posty: 4084
Rejestracja: 30 lis 2006, 08:44

Re: [CEF] Rozkład ruchu 2 do 1

#5

#5 Post autor: lbromirs »

OK, po dyskusji z developerami wygląda na to, że obecnie w IOS-XE się tego nie da zrobić. Wynika to z optymalizacji dokonanej pod kątem nowych platform (ASR 1k, a ostatnio ISR 4k), w których komponent sprzętowy dostaje z CEFa od razu gotowy obrazek forwardowania i nie musi tracić czasu na rekursywne rozwiązywanie next-hopów. Zapytałem czy da się przenieść funkcjonalność z IOS XRa (którego, jak zakładam, niewiele osób wstawi sobie do domu jako bramkę internetową {i tu pogładził czule szumiącego ASRa 9001}):

Kod: Zaznacz cały

RP/0/0/CPU0:XR1#sh running-config router static
router static
 address-family ipv4 unicast
  0.0.0.0/0 10.0.10.254 metric 4
  0.0.0.0/0 10.0.20.254
  0.0.0.0/0 10.0.30.254
 !
!
Po takiej konfiguracji XRowy CEF sobie ładnie przeliczy wagi i efektem będzie:

Kod: Zaznacz cały

RP/0/0/CPU0:XR1#sh cef 0.0.0.0/0 detail
0.0.0.0/0, version 17, proxy default, internal 0x1000011 0x0 (ptr 0xa13f307c) [1], 0x0 (0x0), 0x0 (0x0)

[...]

    Weight distribution:
    slot 0, weight 4, normalized_weight 4, class 0
    slot 1, weight 1, normalized_weight 1, class 0
    slot 2, weight 1, normalized_weight 1, class 0
          
    Load distribution: 0 0 0 0 1 2 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/0    10.0.10.254    ! jak widać
    1     Y   GigabitEthernet0/0/0/0    10.0.10.254    ! pierwsza trasa
    2     Y   GigabitEthernet0/0/0/0    10.0.10.254    ! jest czterokrotnie
    3     Y   GigabitEthernet0/0/0/0    10.0.10.254    ! atrakcyjniejsza
    4     Y   GigabitEthernet0/0/0/1    10.0.20.254    
    5     Y   GigabitEthernet0/0/0/2    10.0.30.254

ms
wannabe
wannabe
Posty: 111
Rejestracja: 22 kwie 2009, 12:54
Kontakt:

Re: [CEF] Rozkład ruchu 2 do 1

#6

#6 Post autor: ms »

Dzięki jeszcze raz za powrót do tematu i wyjaśnienia.

Pozdrawiam,

ODPOWIEDZ