NetFlow/IPFIX: MPLS-aware NetFlow
 

Dzięki MPLS-aware NetFlow, mamy możliwość zbierania informacji o ruchu MPLS, który przenosi ruch IP i nie-IP. Informacja o takim przepływie może zawierać wszystkie wcześniej omówione pola, jak źródłowy i docelowy adres IP, numery portów TCP/UDP, flagi TCP oraz pola Protocol i ToS/DSCP nagłówka IP. Oczywiście, w przypadku ruchu nie-IP, pola te mają wartość 0. MPLS-aware NetFlow umożliwia zebranie informacji na temat maksymalnie 3 etykiet (ang. label) MPLS. Przy czym, niekoniecznie muszą być to 3 ostatnie etykiety. Mamy możliwość wskazania numery interesujących nas etykiety z przedziału od 1 do 6, gdzie 1 oznacza etykietę na samej górze stosu. Tak więc, możemy przykładowo zbierać informacje z pierwszej, trzeciej i szóstej etykiety, tylko z pierwsze lub z jakiś wybranych dwóch. Eksport tych informacji do kolektora, możliwy jest od NetFlow v9.


Zainteresowanych zbieraniem danych o ruchu oraz jego analizą zachęcamy do zapoznania się z Cisco Stealthwatch.


Aby otrzymywać informacje na temat etykiety MPLS z danych zebranych na wyjściu interfejsu, w starszych wersjach oprogramowania wymagane było użycie specjalnego polecenia mpls netflow egress. Obecnie jest to już niepotrzebne i router dokona odpowiedniej zmiany, jeśli użyjemy tego polecenia. Aktualnie, wystarczy w tradycyjny sposób uruchomić zbieranie informacji na wyjściu interfejsu.

R4(config-if)# mpls netflow egress 
'mpls netflow egress' translated to 'ip flow egress' for Gi0/0
R4(config-if)# 

Aby w zbieranych danych pojawiły się informacje o etykietach, należy jeszcze wskazać od jednej do trzech etykiet, którymi jesteśmy zainteresowani. 

R4(config)# ip flow-cache mpls label-positions ?
  <1-6>         Specify position of 1-st label to capture (1 is top)
  mpls-length   Report packet length including label stack in MPLS flows
  no-ip-fields  Ignore IP header fields in MPLS flows
  <cr>
R4(config)# ip flow-cache mpls label-positions 1
R4(config)# ip flow-export version 9 origin-as bgp-nexthop
R4(config)# end
R4# show ip cache verbose flow | begin SrcIf
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
BGP: BGP NextHop
Gi0/0          172.16.1.123    Local          10.246.255.4    06 10  18     113 
D887 /0  0                     0016 /0  0     0.0.0.0                64    40.1
 
Gi0/0          10.246.34.3     Null           224.0.0.2       11 C0  10      80 
0286 /0  0                     0286 /0  0     0.0.0.0                62   336.4
 
Gi0/0          10.246.255.3    Local          10.246.255.4    06 C0  10       1 
0286 /0  0                     E06E /32 0     0.0.0.0                40     0.0
 
Gi0/0          172.16.7.2      Gi0/2*         172.16.6.0      01 00  10       5 
0000 /24 65007                 0800 /32 65006 172.16.46.6           100     0.0
BGP: 172.16.46.6     
FFlags: 01  
 
Gi0/0          172.16.7.2      Gi0/2          172.16.6.0      01 00  10       5 
0000 /24 65007                 0800 /32 65006 172.16.46.6           100     0.0
BGP: 172.16.46.6     
 
Gi0/2          172.16.46.6     Local          172.16.46.4     06 C0  18       1 
BFF7 /24 0                     00B3 /0  0     0.0.0.0                59     0.0
BGP: 0.0.0.0         
 
Gi0/1          172.16.45.5     Gi0/0*         172.16.7.91     11 C0  10       1 
007B /0  0                     007B /0  0     0.0.0.0                76     0.0
BGP: 10.246.255.2    
FFlags: 05  
 
Pos:Lbl-Exp-S 1:16-6-1
Gi0/1          172.16.45.5     Gi0/0          172.16.7.91     11 C0  10       1 
007B /24 0                     007B /24 65007 10.246.34.3            76     0.0
BGP: 10.246.255.2    
 
Gi0/0          172.16.40.2     Null           172.16.40.4     01 00  10       5 
0000 /0  0                     0800 /0  0     0.0.0.0               100     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:19-0-1
Gi0/2          172.16.6.0      Gi0/0*         172.16.7.2      01 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0               100     0.0
BGP: 10.246.255.2    
FFlags: 05  
 
Pos:Lbl-Exp-S 1:16-0-1
Gi0/2          172.16.6.0      Gi0/0          172.16.7.2      01 00  10       5 
0000 /32 65006                 0000 /24 65007 10.246.34.3           100     0.0
BGP: 10.246.255.2    
 
Gi0/1          172.16.45.5     Gi0/0*         172.16.1.91     11 C0  10       1 
007B /0  0                     007B /0  0     0.0.0.0                76     0.0
BGP: 10.246.255.2    
FFlags: 05  
 
Pos:Lbl-Exp-S 1:16-6-1
Gi0/1          172.16.45.5     Gi0/0          172.16.1.91     11 C0  10       1 
007B /24 0                     007B /24 0     10.246.34.3            76     0.0
BGP: 10.246.255.2    
 
R4# 

Jako, że informacje na temat jednego przepływu nie są prezentowane jednoznacznie i zwarcie, oznaczyłem je powyżej kolorem. Kopia tego rekordu znajduje się poniżej. 

Informacja na temat etykiety przedstawiona jest według schematu Pos:Lbl-Exp-SPos, jest numerem etykiety w stosie, gdzie 1 oznacza etykietę na samej górze stosu. Lbl jest wartością etykiety. Exp jest wartością 3 bitów experimental (ang. experimental bits), które wykorzystywane są przy oznaczania i klasyfikacji ruchu (QoS). S oznacza bit end-of-stack, który ustawiony jest na 1 w ostatniej etykiecie stosu - tej na samym dole.

Gi0/1          172.16.45.5     Gi0/0*         172.16.7.91     11 C0  10       1 
007B /0  0                     007B /0  0     0.0.0.0                76     0.0
BGP: 10.246.255.2    
FFlags: 05  
 
Pos:Lbl-Exp-S 1:16-6-1

Warto też zwrócić uwagę na wartość FFlags (Flow Flags). Zgodnie z ostatnim artykułem, oznacza ona ruch MPLS zebrany na wyjściu interfejsu Gi0/0. 04 (MPLS) OR 01 (egress flow) daje 05. Ustawienie wyjściowej etykiety odbywa się zgodnie z tablicą przekazywania MPLS, którą można zobaczyć poniżej. Zgodnie z nią, dla ruchu którego BGP NextHop jest 10.246.255.2, etykieta powinna zostać ustawiona na wartość 16.

R4# show mpls forwarding-table  
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
16         Pop Label  10.246.255.3/32  0             Gi0/0      10.246.34.3 
17         16         10.246.255.2/32  0             Gi0/0      10.246.34.3 
18         Pop Label  10.246.23.0/24   0             Gi0/0      10.246.34.3 
19         Pop Label  172.16.40.4/32[V]   \
                                       1000          aggregate/R2R4-VRF 
20         No Label   2001:DB8:5::/48  0             Gi0/1      FE80::218:18FF:FE83:2D70
21         No Label   2001:DB8:56::/48 0             Gi0/1      FE80::218:18FF:FE83:2D70
22         No Label   2001:DB8:6::/48  0             Gi0/2      FE80::CA00:84FF:FE4C:4C63
23         No Label   2001:DB8:8::/48  0             Gi0/1      FE80::218:18FF:FE83:2D70
24         No Label   2001:DB8:234:4::/64   \
                                       0             aggregate  
R4#

Ruch zebrany na wejściu interfejsu nie zawiera żadnych etykiet, co spowodowane jest wykorzystanie w MPLS procedury PHP (Penultimate Hop Popping), czyli usunięcia najbardziej zewnętrznej etykiety w stosie, przed przekazaniem pakietu do routera PE - w naszym przypadku R4.

Poniżej widać tablicę przekazywania MPLS routera R3, który pełni funkcję routera P w sieci MPLS. Widać w niej, iż dla ruch kierowanego do 10.246.255.4 (R4) należy wykonać operację PHP. W tym przypadku na stosie znajdowała się tylko jedyna etykieta, tak więc od routera P do routera PE zostały wysłany sam pakiet IP, bez danych MPLS.

R3# show mpls forwarding-table 
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
16         Pop Label  10.246.255.2/32  73805         Gi0/0      10.246.23.2 
17         Pop Label  10.246.255.4/32  63706         Gi0/1      10.246.34.4 
R3#

Gdyśmy mieli do czynienia w naszej sieci MPLS z ruchem VPNv4, wtedy zostałaby etykieta identyfikująca instancję VRF (Virtual Routing Forwarding) klienta. Warto zwrócić uwagę na topologię naszej sieci, gdzie pomiędzy R2, a R4 zbudowany został VPNv4 przenoszący dane R2R4-VRF, do którego należą adresy 172.16.40.2/32 i 172.16.40.4/32. Ruch odbierany w ramach tego VPNv4 na wejściu interfejsu Gi0/0 routera PE (R4) zawiera jedną etykietę, której wartość możemy zobaczyć poniżej. Warto spojrzeć jeszcze raz na tablicę przekazywania MPLS routera R4 i wejściową wartość etykiety 19 (widać tam informację na temat VRF).

Gi0/0          172.16.40.2     Null           172.16.40.4     01 00  10       5 
0000 /0  0                     0800 /0  0     0.0.0.0               100     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:19-0-1 

Informacje na temat obsługiwanych adresów w ramach R2R4-VRF i przypisanymi do nich etykietami można zobaczyć poniżej w tablicy BGP. Do adresu 172.16.40.4/32, który obsługiwany jest na R4, powinniśmy otrzymać ruch z etykietą o wartości 19. Za to, kiedy R4 wyśle ruch z 172.16.40.4/32, do adresu 172.16.40.2/32, powinien ustawić etykietę z wartością 18. Należy pamiętać, że jest to etykiet wewnętrzna.

Do przełączania danych w sieci MPLS wykorzystywana jest tylko etykieta najbardziej zewnętrzna, która zostanie dołożona na samą górę stosu zaraz przed wysłaniem pakietu. Zgodnie z tablicą przekazywania MPLS R4, w tym przypadku będzie to etykieta o wartości 16ruch ten powinien zostać wysłany w kierunku R3.

Kiedy wrócimy to tablicy przekazywania MPLS R3 powyżej, to widać, że dla ruchu z wejściową etykietą 16, realizowana jest procedura PHP przed przekazaniem go do R2. Stąd R2, również będzie widział tylko etykietę identyfikującą instancję VRF klienta, w tym przypadku 18.  

R4# show bgp vpnv4 unicast vrf R2R4-VRF
BGP table version is 4, local router ID is 172.16.4.129
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
 
     Network          Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 65234:40 (default for vrf R2R4-VRF)
 *>i 172.16.40.2/32   10.246.255.2             0    100      0 i
 *>  172.16.40.4/32   0.0.0.0                  0         32768 i
R4# show bgp vpnv4 unicast vrf R2R4-VRF 172.16.40.4
BGP routing table entry for 65234:40:172.16.40.4/32, version 4
Paths: (1 available, best #1, table R2R4-VRF)
  Advertised to update-groups:
     1         
  Refresh Epoch 1
  Local
    0.0.0.0 (via vrf R2R4-VRF) from 0.0.0.0 (172.16.4.129)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best
      Extended Community: RT:65234:40
      mpls labels in/out 19/nolabel(R2R4-VRF)
      rx pathid: 0, tx pathid: 0x0
R4# show bgp vpnv4 unicast vrf R2R4-VRF 172.16.40.2
BGP routing table entry for 65234:40:172.16.40.2/32, version 3
Paths: (1 available, best #1, table R2R4-VRF)
  Not advertised to any peer
  Refresh Epoch 1
  Local
    10.246.255.2 (metric 2) (via default) from 10.246.255.2 (172.16.2.129)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Extended Community: RT:65234:40
      mpls labels in/out nolabel/18
      rx pathid: 0, tx pathid: 0x0
R4# 

Zgodnie z terminologią MPLS, R4 jest w naszej topologii urządzeniem PE (Provider Edge). Zobaczmy, jak wygląda MPLS-aware NetFlow z perspektywy urządzenia P (Provider), którym jest R3. Po R3 możemy spodziewać się pełnych informacji na temat etykiet oraz braku informacji na temat BGP ASN i BGP NextHop. Wynika to z tego, że router P przekazuje dane w oparciu o zewnętrzną etykietę i nie potrzebuje do tego celu pełnych informacji o routingu. Pomimo dużej ilości prefiksów w naszej sieci, tablica przekazywania MPLS R3 jest bardzo niewielka. Zawiera tylko 2 wpisy, dzięki czemu przełączanie może odbywać się bardzo szybko, a router nie zużywa niepotrzebnie zasobów na przetrzymywanie i zarządzenie informacjami o prefiksach. 

R3(config)# interface GigabitEthernet 0/0
R3(config-if)# ip flow ingress 
R3(config-if)# ip flow egress 
R3(config-if)# interface GigabitEthernet 0/1
R3(config-if)# ip flow ingress 
R3(config-if)# ip flow egress 
R3(config-if)#

Zbieranie danych zostało uruchomione na wejściu i wyjściu używanych interfejsów. Jako, że router P jest w stanie widzieć zawartości wszystkich etykiety MPLS, skonfigurujemy usługę NetFlow do zbierania informacji na temat pierwszej i drugiej etykiety. 

R3(config)# ip flow-cache mpls label-positions ?
  <1-6>                  Specify position of 1-st label to capture (1 is top)
  exp-bgp-prefix-fields  Ignore all fields except input interface, BGP NH, and MPLS label
  mpls-length            Report packet length including label stack in MPLS flows
  no-ip-fields           Ignore IP header fields in MPLS flows
  <cr> 
R3(config)# ip flow-cache mpls label-positions 1 2 
R3(config)# do show ip cache verbose flow 
IP packet size distribution (386 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .443 .339 .139 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000
 
    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000
 
IP Flow Switching Cache, 4456704 bytes
  16 active, 65520 inactive, 50 added
  957 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 533256 bytes
  0 active, 16384 inactive, 0 added, 0 added to flow
  0 alloc failures, 0 force free
  1 chunk, 1 chunk added
  last clearing of statistics never
Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
--------         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow
TCP-BGP             13      0.0         1    50      0.0       0.0      15.5
TCP-other            9      0.0        19    72      0.0       4.0      15.4
UDP-NTP              4      0.0         1    76      0.0       0.0      15.5
ICMP                 8      0.0         7  3650      0.0       6.5      15.5
Total:              34      0.0         7   909      0.0       2.6      15.5
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
Gi0/1          172.16.40.4     Gi0/0*         172.16.40.2     01 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0               100     0.0
FFlags: 05  
 
Pos:Lbl-Exp-S 1:18-0-1
Gi0/0          172.16.40.2     Gi0/1*         172.16.40.4     01 00  10       5 
0000 /0  0                     0800 /0  0     0.0.0.0               100     0.0
FFlags: 05  
 
Pos:Lbl-Exp-S 1:19-0-1
Gi0/0          10.246.23.2     Local          10.246.255.3    06 C0  18      45 
5BFD /0  0                     0016 /0  0     0.0.0.0                59    16.0
 
Gi0/0          172.16.1.123    Gi0/1          10.246.255.4    06 10  18       2 
D91E /0  0                     0016 /0  0     0.0.0.0                74     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:17-0-1
Gi0/0          172.16.1.123    Gi0/1*         10.246.255.4    06 10  18       2 
D91E /0  0                     0016 /0  0     0.0.0.0                74     0.0
FFlags: 01  
 
Gi0/1          10.246.255.4    Local          10.246.255.3    06 C0  10       2 
E06E /0  0                     0286 /0  0     0.0.0.0                49    14.6
 
Gi0/0          10.246.255.2    Gi0/1*         10.246.255.4    06 C0  10       1 
00B3 /0  0                     EA71 /0  0     0.0.0.0                40     0.0
FFlags: 01  
 
Gi0/0          10.246.255.2    Gi0/1          10.246.255.4    06 C0  10       1 
00B3 /0  0                     EA71 /0  0     0.0.0.0                40     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:17-6-1
Gi0/1          10.246.255.4    Gi0/0          10.246.255.2    06 C0  18       1 
EA71 /0  0                     00B3 /0  0     0.0.0.0                59     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:16-6-1
Gi0/1          10.246.255.4    Gi0/0*         10.246.255.2    06 C0  18       1 
EA71 /0  0                     00B3 /0  0     0.0.0.0                59     0.0
FFlags: 01  
 
Gi0/0          10.246.23.2     Null           224.0.0.2       11 C0  10      28 
0286 /0  0                     0286 /0  0     0.0.0.0                62   114.8
 
Gi0/1          10.246.34.4     Null           224.0.0.2       11 C0  10      25 
0286 /0  0                     0286 /0  0     0.0.0.0                62   104.9
 
Gi0/0          172.16.40.2     Gi0/1          172.16.40.4     01 00  10       5 
0000 /0  0                     0800 /0  0     0.0.0.0              12798     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:17-0-0 2:19-0-1
Gi0/1          10.246.255.4    Gi0/0          172.16.1.123    06 C0  18       1 
0016 /0  0                     D91E /0  0     0.0.0.0                76     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:16-6-1
Gi0/1          10.246.255.4    Gi0/0*         172.16.1.123    06 C0  18       1 
0016 /0  0                     D91E /0  0     0.0.0.0                76     0.0
FFlags: 01  
 
Gi0/1          172.16.40.4     Gi0/0          172.16.40.2     01 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0              8702     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:16-0-0 2:18-0-1
R3(config)#

Ruch wejściowy w ramach R2R4-VRF zawiera po dwie etykiety. Dla ruchu w kierunku od R4 do R2, są to 16 i 18, a dla ruchu w kierunku od R2 do R4 17 i 19. Ruchu wyjściowy zawiera tylko po jednej etykiecie. Wynika to z wcześniej wspomnianej procedury PHP. Dla ruchu od R4 do R2, jest to wartość etykiety 18, a dla ruchu od R2 do R4 19. Proszę też zwrócić uwagę na wartość bitu S w każdej z etykiet (wartość 1 oznacza ostatnią etykietę na stosie).

Jeśli interesują nas tylko dane MPLS, to możemy wyłączyć zbieranie informacji na temat danych powiązanych z protokołem IP. Służy do tego opcja no-ip-fields. Może być to przydatne w sytuacji, gdzie interesują nas tylko dane na temat ilości ruchu (bajtów/pakietów), jaki wymieniają pomiędzy sobą klienci.

Użycie tej opcji powoduje wstawianie wartości null w polach, związanych z protokołem IP. Niestety, pola te będą nadal częścią eksportowanego szablonu i pakietów przenoszących informacje o rekordach. Wynika to z wykorzystania w predefiniowanych szablonów TNF. Warto też zwrócić uwagę na to, że pola te będą miały pustą wartość tylko dla rekordów MPLS. Ruch nie-MPLS zawiera wszystkie informacje.

R3(config)# ip flow-cache mpls label-positions 1 2 no-ip-fields 
R3(config)# show ip cache verbose flow | begin SrcIf
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
Gi0/1          0.0.0.0         Gi0/0*         0.0.0.0         00 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0               100     0.0
FFlags: 05  
 
Pos:Lbl-Exp-S 1:18-0-1
Gi0/0          0.0.0.0         Gi0/1*         0.0.0.0         00 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0               100     0.0
FFlags: 05  
 
Pos:Lbl-Exp-S 1:19-0-1
Gi0/1          0.0.0.0         Gi0/0          0.0.0.0         00 00  10       1 
0000 /0  0                     0000 /0  0     0.0.0.0                76     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:16-6-1
Gi0/0          10.246.23.2     Local          10.246.255.3    06 C0  18      25 
5BFD /0  0                     0016 /0  0     0.0.0.0                62     6.6
 
Gi0/0          10.246.255.2    Local          10.246.255.3    06 C0  10       2 
0286 /0  0                     F84B /0  0     0.0.0.0                49     2.5
 
Gi0/0          10.246.23.2     Null           224.0.0.2       11 C0  10     198 
0286 /0  0                     0286 /0  0     0.0.0.0                62   865.3
 
Gi0/1          10.246.34.4     Null           224.0.0.2       11 C0  10     197 
0286 /0  0                     0286 /0  0     0.0.0.0                62   858.9
 
Gi0/1          10.246.34.4     Gi0/0*         172.16.7.91     11 C0  10       1 
007B /0  0                     007B /0  0     0.0.0.0                76     0.0
FFlags: 01  
 
Gi0/1          0.0.0.0         Gi0/0          0.0.0.0         00 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0              8702     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:16-0-0 2:18-0-1
Gi0/0          0.0.0.0         Gi0/1          0.0.0.0         00 00  10       5 
0000 /0  0                     0000 /0  0     0.0.0.0              12798     0.0
FFlags: 04  
 
Pos:Lbl-Exp-S 1:17-0-0 2:19-0-1
R3(config)# 

W platformie Cisco 7201, którym jest R3 istnieje dodatkowa opcja exp-bgp-prefix-fields. Nie jest ona dostępna na platformie Cisco ISR G2 3945E, którą jest R4. Użycie tej opcji spowoduje, że ignorowane będą wszystkie pola za wyjątkiem interfejsu wejściowego, BGP NextHop i etykiet MPLS. Zatem opcja ta może okazać się szczególnie przydatna na routera PE, który posiada informacje o BGP NextHop.


Niektóre z opcji mogą nie być dostępne na wszystkich platformach sprzętowych. Zależne jest to od ich pozycjonowania przez producenta. Router Cisco 7201 jest pozycjonowany jako urządzenie PE (Provider Edge) w sieci MPLS, a router Cisco ISR G2 3945E, jako urządzenie CE (Client Edge). Niemniej, nie oznacza to, że urządzenia te nie mogą pełnić innych ról.


Jeśli chcemy, by do raportowanych informacji o wielkości pakietu zostały doliczone rozmiary etykiet MPLS, należy użyć opcji mpls-length. Bez tego, prezentowany rozmiar odnosi się do wielkości pakietu IP. Każda etykiet MPLS, to dodatkowe 32 bity. Jako, że opcja exp-bgp-prefix-fields nie zmieni nic w naszym przypadku (R3 jest urządzeniem P i nie posiada informacji protokołu BGP), to przyjrzyjmy się opcji mpls-length.

Na potrzeby weryfikacji zostało wygenerowane w ramach R2R4-VRF dwa razy (przed włączeniem opcji i po jej włączeniu) po 1000 pakietów IP o rozmiarze 1024 bajtów z routera R2 do routera R4. 

R3# show ip cache verbose flow
IP packet size distribution (4010 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .001 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000
 
    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .000 .000 .000 .498 .000 .000 .000 .000 .000 .000 .000

<wycięte nieistotne fragmenty> 

R3# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)# ip flow-cache mpls label-positions 1 2 exp-bgp-prefix-fields mpls-length 
R3(config)# end
R3# show ip cache verbose flow
IP packet size distribution (8103 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .007 .004 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000
 
    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .000 .000 .000 .246 .246 .000 .000 .000 .000 .000 .000

<wycięte nieistotne fragmenty>


R3#

W pierwszym fragmencie wydruku widać, że wygenerowane pakiety zostały zaklasyfikowane do przedziału od 577 do 1024 bajtów. Po włączeniu opcji mpls-length, trafiły już one do przedziału od 1025 do 1536 bajtów.


Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.