D> Analisi dell'algoritmo di dampening in BGP

Analisi degli effetti dell'algoritmo di dampening

Autori: Valerio Schiavoni Alessio Pace


  • Analisi del problema

    Per effettuare una simulazione che potesse offrire dei risultati apprezzabili, sui quali si potessero investigare gli effetti concreti dell'algoritmo del route flap dampening (RFD), è stata svolta una fase preliminare di studio della materia, facendo riferimento a risorse pubblicamente accessibili su Internet, che vengono citate nel documento.


    1. Preparazione dell'ambiente di simulazione

    Gli strumenti e risorse utilizzate nella simulazione sono state:

  • Analisi dell'algoritmo di dampening in BGP

    Analisi degli effetti dell'algoritmo di dampening

    Autori: Valerio Schiavoni Alessio Pace


  • Analisi del problema

    Per effettuare una simulazione che potesse offrire dei risultati apprezzabili, sui quali si potessero investigare gli effetti concreti dell'algoritmo del route flap dampening (RFD), è stata svolta una fase preliminare di studio della materia, facendo riferimento a risorse pubblicamente accessibili su Internet, che vengono citate nel documento.


    1. Preparazione dell'ambiente di simulazione

    Gli strumenti e risorse utilizzate nella simulazione sono state:


    1. La configurazione utilizzata

    L'intento della simulazione è stato quello di analizzare il comportamento dell'algoritmo di dampening. A tale scopo abbiamo scelto una configurazione di rete osservabile nella figura sottostante.




    Per l'analisi richiesta è stata utilizzata la tecnica denominata BGP Beacon: un singolo prefisso (nella nostra simulazione: 200.0.1.0/24), viene annunciato e ritirato ad istanti di tempo programmati, e vengono esaminate le reazioni in punti differenti della rete.

    Per illustrare tali effetti abbiamo scelto di usare una clique di 5 AS (ognuna con un solo border gateway), e un AS (AS2, nella figura è posizionato in alto a destra) collegato ad uno dei nodi della clique diverso dalla sorgente del beacon (che è AS10, nella figura collocato a sinistra).

    Per agevolare l'analisi dei log prodotti, nella figura sono stati evidenziati i domini di collisione di ciascuna interfaccia disponibile per ogni border gateway componente la clique.

    Le configurazioni del demone bgpd hanno i valori di default sia per quel che riguarda le policy di routing (ovvero ogni router non filtra e non applica preferenze a ciò che invia o riceve), sia per i parametri dell'algoritmo di dampening.

    C'è da sottolineare che l'implementazione Zebra del dampening non aderisce alle indicazioni del RIPE per la scelta dei valori dei parametri (cfr. RipeRouting-WG Reccomentations For Coordinated Route Flap Damping Parameters” – October 2001, document id: ripe-229). Dagli esperimenti svolti e grazie agli effetti riscontrati e alla rapida visione del codice sorgente di bgp_damp.c, è stata desunta la seguente tabella, che pertanto allinea Zebra ai valori utilizzati da CISCO:

    Parametro

    Zebra

    RIPE reccomendations

    Withdrawal penalty

    1000

    1000

    Re-advertisement penalty

    0

    ?

    Attribute change penalty

    500

    500

    Suppress threshold

    2000

    2000

    Half-life (minuti)

    15

    15

    Reuse threshold

    750

    750

    Max suppress time (minuti)

    60

    dipendente dalla lunghezza del prefisso (più aggressivo verso prefissi più corti)

    Min flap count

    3

    4

    Viene considerato route flap:


    Zebra non consente di effetture damping in modo diverso per prefissi di lunghezza diversa, ma impone un'unica damping policy, come invece suggerito dal RIPE (vedi tabella)

    Infine, Zebra non rispetta il suggerimento di adottare un MRAI timer di 30 secondi: ciò è stato verificato osservando un router annunciare a un vicino lo stesso prefisso (ma con path diverso) a distanza di meno di 30 secondi.


    1. La simulazione

    La simulazione si è svolta nelle seguenti fasi principali:

      1. Lancio dello script per avviare tutte le macchine virtuali coinvolte nella simulazione

      2. Attesa del raggiungimento della convergenza delle rotte bgp

      3. Withdrawal esplicito del prefisso beacon (200.0.1.0/24) da parte dell'AS10

      4. Attesa del raggiungimento della nuova configurazione stabile della rete

      5. Riannuncio del prefisso beacon da parte di AS10 dopo un tempo di circa 11 minuti dall'ultimo ritiro. Con le transizioni che hanno portato dalla fase 3 alla fase 5 si è simulato il guasto e la momentanea riparazione dell'interfaccia sul dominio di collisione A (nb: non si è potuto disattivare l'interfaccia sulla macchina virtuale per ottenere lo stesso risultato per limiti di User Mode Linux)

      6. Dopo circa 1-2 minuti il prefisso viene ritirato di nuovo da parte di AS10 (la riparazione non era stata completata)

      7. Dopo altri 3-4 minuti AS10 riannuncia il prefisso beacon

      8. Attesa della nuova convergenza delle rotte e verifica della soppressione del prefisso beacon sul router di AS2 (prefisso annunciato ad AS2 da AS30). Verifica anche, nei router AS20 AS30 AS40 AS50, di eventuali soppressioni di path “alternativi” (i non best path) verso il prefisso beacon.

      9. Attesa del raggiungimento del reuse threshold da parte di AS2, dopo il quale esso può utilizzare di nuovo il path verso il prefisso beacon. Verifica di ristabilizzazione di rotte che erano state soppresse anche sugli altri nodi della clique (cfr. punto 8).

    Al fine di osservare i vari cambiamenti nelle configurazione dei router componenti la nostra rete, sono stati usati e incrociati i log prodotti da zebra per il demone bgpd, e i log prodotti dal nostro script Python.

    Per le tabelle di convergenza della simulazione effettuata fare riferimento al paragrafo dedicato, allegato in fondo al documento.


    1. Note e conclusioni

    Come già discusso, i guasti sono stati simulati solamente per mezzo di withdrawal espliciti del prefisso beacon, da parte dell'AS origine, per mezzo del comando bgp no network <prefix>. Infatti spegnere un'interfaccia di rete con il comando ifconfig ethx down non produce sempre i risultati aspettati, per limiti dovuti a User Mode Linux. Altrimenti si sarebbe dovuto crashare la virtual machine costituente un singolo router, e successivamente riavviarla, ma ciò avrebbe causato la simulazione del guasto di tutte le sue interfaccie di rete e non di una sola come voluto per la simulazione.

    L'intento secondario della simulazione è stato quello di verificare i risultati esposti nell'articolo“Route Flap Damping Exarcebates Internet Routing Convergence” (Mao, Govindan, Varghese, Katz): un singolo withdrawal seguito da un reannouncement del prefisso avrebbe dovuto causare l'accumulo di penalità fino a superare il suppression threshold, oltre il quale il prefisso doveva essere soppresso per un certo periodo di tempo (un outage time fino a un'ora). I nostri risultati purtroppo non ci hanno permesso una tale verifica: nel nostro esperimento il numero di withdrawal seguiti da reannuncement che hanno portato alla soppressione di rotte sono stati due.


    Tabelle di convergenza per ciascun border gateway coinvolto nella simulazione


    Nomenclatura e simbologia:

    Per dare maggiore evidenza alla soppressione di cammini, i record relativi a tali path sono stati evidenziati in rosso. La successiva riabilitazione di un cammino soppresso è evidenziata dal colore celeste.

    Nel caso in cui vi siano n messaggi ricevuti allo stesso orario, per i primi n-1 nella colonna Best Path c'è l'indicazione transitorio, mentre a seguito dell'n-esimo viene indicato il best path scelto in base alla ricezione ed elaborazione degli n messaggi complessivi.




    AS30 border gateway

    Tempo

    A/W

    Peer

    AS Path

    Best Path

    Penalty

    Flaps

    Duration

    Reuse

    17:10:07

    A

    AS10

    * 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:07

    A

    AS20

    * 20 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:39

    A

    AS40

    * 40 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:54

    A

    AS50

    * 50 10 i

    *> 10 i

    -

    -

    -

    -

    17:14:34

    W

    AS10

    h 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS20

    h 20 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS40

    h 40 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS50

    h 50 10 i

    -

    992

    1

    00:00:11

    -

    17:25:34

    A

    AS10

    * 10 i

    *> 10 i

    596

    1

    00:11:11

    -

    17:25:34

    A

    AS20

    * 20 10 i

    *> 10 i

    596

    1

    00:11:11

    -

    17:25:50

    A

    AS40

    * 40 10 i

    *> 10 i

    587

    1

    00:11:27

    -

    17:25:50

    A

    AS50

    * 50 10 i

    *> 10 i

    586

    1

    00:11:27

    -

    17:26:53

    W

    AS10

    h 10 i

    *> 40 10 i

    1561

    2

    00:12:30

    -

    17:26:53

    W

    AS20

    h 20 10 i

    *> 40 10 i

    1561

    2

    00:12:30

    -

    17:27:09

    A

    AS40

    * 40 50 10 i

    *> 50 10 i

    1055

    2

    00:12:46

    -

    17:27:24

    A

    AS50

    * 50 20 10 i

    *> 50 20 10 i

    1043

    2

    00:13:01

    -

    17:27:24

    W

    AS40

    h 40 50 10 i

    *> 50 20 10 i

    2038

    3

    00:13:01

    -

    17:27:56

    A

    AS50

    50 20 30 40 10 i

    -

    -

    -

    -

    -

    17:30:17

    A

    AS10

    * 10 i

    *> 10 i

    1340

    2

    00:15:34

    -

    17:30:17

    A

    AS40

    *d 40 10 i

    *> 10 i

    1787

    3

    00:15:34

    00:18:47

    17:30:33

    A

    AS20

    * 20 10 i

    *> 10 i

    1320

    2

    00:16:10

    -

    17:31:04

    A

    AS50

    * 50 10 i

    *> 10 i

    -

    -

    -

    -

    17:38:56

    -

    AS40

    *d 40 10 i

    *> 10 i

    1197

    3

    00:24:33

    00:10:07

    17:43:39

    -

    AS40

    *d 40 10 i

    *> 10 i

    965

    3

    00:29:16

    00:05:27

    17:48:24

    -

    AS40

    *d 40 10 i

    *> 10 i

    774

    3

    00:34:01

    00:00:40

    17:49:11

    -

    AS40

    * 40 10 i

    *> 10 i

    748

    3

    00:34:48

    -




    AS2 border gateway

    Tempo

    A/W

    Peer

    AS Path

    Best Path

    Penalty

    Flaps

    Duration

    Reuse

    17:10:32

    A

    AS30

    * 30 10 i

    *> 30 10 i

    -

    -

    -

    -

    17:14:27

    W

    AS30

    h 30 10 i

    -

    1000

    1

    00:00:04

    -

    17:25:54

    A

    AS30

    * 30 10 i

    *> 30 10 i

    583

    1

    00:11:31

    -

    17:26:57

    A

    AS30

    * 30 40 10 i

    *> 30 40 10 i

    1055

    2

    00:12:34

    -

    17:27:28

    A

    AS30

    * 30 50 20 10 i

    *> 30 50 20 10 i

    1530

    3

    00:13:05

    -

    17:27:59

    W

    AS30

    h 30 50 20 10 i

    -

    2486

    4

    00:13:36

    -

    17:30:35

    A

    AS30

    *d 30 10 i

    *d 30 10 i

    2206

    4

    00:16:12

    00:23:20

    17:45:11

    -

    AS30

    *d 30 10 i

    *d 30 10 i

    1124

    4

    00:30:48

    00:08:24

    17:54:17

    -

    -

    * 30 10 i

    *> 30 10 i

    742

    4

    00:39:54

    -


    Osservare come AS30 faccia path exploration e causi due flap su AS2 nel giro di mezzo minuto (circa dalle 17:26:57 alle 17:27:28).

    AS20 border gateway

    Tempo

    A/W

    Peer

    AS Path

    Best Path

    Penalty

    Flaps

    Duration

    Reuse

    17:09:56

    A

    AS10

    * 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:12

    A

    AS40

    * 40 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:12

    A

    AS30

    * 30 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:27

    A

    AS50

    * 50 30 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:59

    A

    AS50

    * 50 10 i

    *> 10 i

    494

    1

    00:00:15

    -

    17:14:38

    W

    AS10

    h 10 i

    transitorio

    988

    1

    00:00:15

    -

    17:14:38

    W

    AS30

    h 30 10 i

    transitorio

    988

    1

    00:00:15

    -

    17:14:38

    W

    AS50

    h 50 10 i

    transitorio

    1405

    2

    00:03:54

    -

    17:14:38

    W

    AS40

    h 40 10 i

    -

    988

    1

    00:00:15

    -

    17:25:20

    A

    AS10

    * 10 i

    *> 10 i

    600

    1

    00:10:57

    -

    17:25:51

    A

    AS50

    * 50 10 i

    *> 10 i

    838

    2

    00:15:07

    -

    17:25:51

    A

    AS40

    * 40 10 i

    *> 10 i

    587

    1

    00:11:28

    -

    17:26:07

    A

    AS30

    * 30 10 i

    *> 10 i

    577

    1

    00:11:44

    -

    17:26:54

    W

    AS10

    h 10 i

    transitorio

    1559

    2

    00:12:31

    -

    17:26:54

    W

    AS50

    h 50 10 i

    transitorio

    1800

    3

    00:16:10

    -

    17:26:54

    A

    AS40

    * 40 50 10 i

    transitorio

    1060

    2

    00:12:31

    -

    17:26:54

    A

    AS30

    * 30 40 10 i

    *> 30 40 10 i

    1059

    2

    00:12:31

    -

    17:27:41

    A

    AS30

    30 50 20 10 i

    *> 40 50 10 i

    -

    -

    -

    -

    17:27:41

    A

    AS40

    * 40 30 50 10 i

    *> 40 30 50 10 i

    1519

    3

    00:13:18

    -

    17:28:12

    W

    AS40

    h 40 30 50 10 i

    -

    2475

    4

    00:13:49

    -

    17:30:17

    A

    AS10

    * 10 i

    *> 10 i

    1335

    2

    00:15:55

    -

    17:30:17

    A

    AS40

    *d 40 10 i

    *> 10 i

    2257

    4

    00:15:55

    00:23:50

    17:30:49

    A

    AS30

    * 30 10 i

    *> 10 i

    -

    -

    -

    -

    17:30:49

    A

    AS50

    * 50 10 i

    *> 10 i

    1506

    3

    00:20:005

    -

    17:38:09

    -

    AS40

    *d 40 10 i

    *> 10 i

    1571

    4

    00:23:46

    00:16:00

    17:43:39

    -

    AS40

    *d 40 10 i

    *> 10 i

    1219

    4

    00:29:16

    00:10.30

    17:48:08

    -

    AS40

    *d 40 10 i

    *> 10 i

    990

    4

    00:33:45

    00:06:00

    17:54:24

    -

    AS40

    * 40 10 i

    *> 10 i

    741

    4

    00:40:01

    -


    AS40 border gateway

    Tempo

    A/W

    Peer

    AS Path

    Best Path

    Penalty

    Flaps

    Duration

    Reuse

    17:10:15

    A

    AS10

    * 10 i

    *> 10 i

    -

    -

    -

    -

    17:10:15

    A

    AS20

    * 20 i

    *> 10 i

    -

    -

    -

    -

    17:10:15

    A

    AS30

    * 30 i

    *> 10 i

    -

    -

    -

    -

    17:10:15

    A

    AS50

    * 50 i

    *> 10 i

    -

    -

    -

    -

    17:14:26

    W

    AS10

    h 10 i

    transitorio

    1000

    1

    00:00:03

    -

    17:14:26

    W

    AS30

    h 30 10 i

    transitorio

    1000

    1

    00:00:03

    -

    17:14:26

    W

    AS20

    h 20 10 i

    transitorio

    1000

    1

    00:00:03

    -

    17:14:26

    W

    AS50

    h 50 10 i

    -

    1000

    1

    00:00:03

    -

    17:25:23

    A

    AS50

    * 50 10 i

    *> 50 10 i

    599

    1

    00:11:00

    -

    17:25:39

    A

    AS30

    * 30 10 i

    *> 50 10 i

    592

    1

    00:11:16

    -

    17:25:55

    A

    AS10

    * 10 i

    *> 10 i

    585

    1

    00:11:32

    -

    17:25:55

    A

    AS20

    * 20 10 i

    *> 10 i

    585

    1

    00:11:32

    -

    17:26:57

    W

    AS10

    h 10 i

    transitorio

    1554

    2

    00:12:34

    -

    17:26:57

    W

    AS20

    h 20 10 i

    transitorio

    1554

    2

    00:12:34

    -

    17:26:57

    W

    AS30

    h 30 10 i

    *> 50 10 i

    1554

    2

    00:12:34

    -

    17:27:13

    A

    AS30

    * 30 50 10 i

    *> 50 10 i

    1542

    2

    00:12:50

    -

    17:27:13

    A

    AS20

    20 30 40 10 i

    *> 50 10 i

    -

    -

    -

    -

    17:27:29

    A

    AS50

    50 20 30 40 10 i

    *> 30 50 10 i

    -

    -

    -

    -

    17:27:44

    A

    AS30

    *d 30 50 20 10 i

    *d 30 50 20 10 i

    1998

    3

    00:13:21

    00:21:12

    17:28:00

    W

    AS30

    h 30 50 20 10 i

    -

    2963

    4

    00:13:37


    17:30:21

    A

    AS30

    *d 30 10 i

    transitorio

    2660

    4

    00:15:28

    00:27:13

    17:30:21

    A

    AS10

    * 10 i

    *> 10 i

    1330

    2

    00:15:58

    -

    17:30:36

    A

    AS50

    * 50 10 i

    *> 10 i

    -

    -

    -

    -

    17:30:52

    A

    AS20

    * 20 10 i

    *> 10 i

    -

    -

    -

    -

    17:38:26

    -

    AS30

    *d 30 10 i

    *> 10 i

    1831

    4

    00:24:03

    00:19:18

    17:43:24

    -

    AS30

    *d 30 10 i

    *> 10 i

    1459

    4

    00:29:01

    00:14:24

    17:57:50

    -

    AS30

    * 30 10 i

    *> 10 i

    748

    4

    00:43:27

    -

    AS50 border gateway

    Tempo

    A/W

    Peer

    AS Path

    Best Path

    Penalty

    Flaps

    Duration

    Reuse

    17:10:23

    A

    AS30

    * 30 10 i

    transitorio

    -

    -

    -

    -

    17:10:23

    A

    AS10

    * 10 i

    transitorio

    -

    -

    -

    -

    17:10:23

    A

    AS20

    * 20 10 i

    transitorio

    -

    -

    -

    -

    17:10:23

    A

    AS40

    * 40 10 i

    *> 10 i

    -

    -

    -

    -

    17:14:34

    W

    AS10

    h 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS20

    h 20 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS40

    h 40 10 i

    transitorio

    992

    1

    00:00:11

    -

    17:14:34

    W

    AS30

    h 30 10 i

    -

    992

    1

    00:00:11

    -

    17:25:19

    A

    AS10

    * 10 i

    *> 10 i

    602

    1

    00:10:56

    -

    17:25:50

    A

    AS20

    * 20 10 i

    *> 10 i

    585

    1

    00:11:27

    -

    17:25:50

    A

    AS30

    * 30 10 i

    *> 10 i

    585

    1

    00:11:27

    -

    17:25:50

    A

    AS40

    * 40 10 i

    *> 10 i

    585

    1

    00:11:27

    -

    17:26:53

    W

    AS10

    h 10 i

    transitorio

    1561

    2

    00:12:30

    -

    17:26:53

    W

    AS40

    h 40 10 i

    *> 20 10 i

    1561

    2

    00:12:30

    -

    17:27:09

    W

    AS30

    h 30 10 i

    *> 20 10 i

    1554

    2

    00:12:46

    -

    17:27:24

    A

    AS20

    * 20 30 40 10 i

    *> 20 30 40 10 i

    1041

    2

    00:13:01

    -

    17:27:24

    A

    AS40

    40 30 50 10

    *> 20 30 40 10 i

    -

    -

    -

    -

    17:27:56

    A

    AS20

    20 40 30 50 10 i

    -

    -

    -

    -

    -

    17:30:17

    A

    AS10

    * 10 i

    *> 10 i

    1334

    2

    00:15:54

    -

    17:30:17

    A

    AS30

    * 30 10 i

    *> 10 i

    1346

    2

    00:15:54

    -

    17:30:33

    A

    AS40

    * 40 10 i

    *> 10 i

    -

    -

    -

    -

    17:30:49

    A

    AS20

    * 20 10 i

    *> 10 i

    -

    -

    -

    -