D>
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.
Preparazione dell'ambiente di simulazione
Gli strumenti e risorse utilizzate nella simulazione sono state:
Netkit modificato (cfr. Homework n°1 “Nesting UML”)
Uno script Bash per l'avvio delle macchine virtuali e la loro inizializzazione nella configurazione scelta per l'esperimento (cfr. file allegato clique.sh)
Uno script Python (cfr. file allegato telnet.py) che a istanti di tempo prefissati (circa 15 secondi) si occupa di prelevare il contenuto della BGP routing table (show ip bgp) e le flap statistics (show ip bgp flap-statistics e show ip bgp <beacon-prefix>) del router BGP su cui lo script viene eseguito. Era stata preso in considerazione l'utilizzo di uno script in linguaggio Expect con circa le stesse funzionalità, fornito ed usato da Oregon Route Views
I log zebra del demone bgpd. Il contenuto di questi log è stato “incrociato” con quello fornito dall'esecuzione dello script Python
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.
Preparazione dell'ambiente di simulazione
Gli strumenti e risorse utilizzate nella simulazione sono state:
Netkit modificato (cfr. Homework n°1 “Nesting UML”)
Uno script Bash per l'avvio delle macchine virtuali e la loro inizializzazione nella configurazione scelta per l'esperimento (cfr. file allegato clique.sh)
Uno script Python (cfr. file allegato telnet.py) che a istanti di tempo prefissati (circa 15 secondi) si occupa di prelevare il contenuto della BGP routing table (show ip bgp) e le flap statistics (show ip bgp flap-statistics e show ip bgp <beacon-prefix>) del router BGP su cui lo script viene eseguito. Era stata preso in considerazione l'utilizzo di uno script in linguaggio Expect con circa le stesse funzionalità, fornito ed usato da Oregon Route Views
I log zebra del demone bgpd. Il contenuto di questi log è stato “incrociato” con quello fornito dall'esecuzione dello script Python
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:
ogni withdrawal
ogni announcement consecutivo successivo al primo, per uno stesso prefisso, da parte dello stesso peerer.
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.
La simulazione
La simulazione si è svolta nelle seguenti fasi principali:
Lancio dello script per avviare tutte le macchine virtuali coinvolte nella simulazione
Attesa del raggiungimento della convergenza delle rotte bgp
Withdrawal esplicito del prefisso beacon (200.0.1.0/24) da parte dell'AS10
Attesa del raggiungimento della nuova configurazione stabile della rete
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)
Dopo circa 1-2 minuti il prefisso viene ritirato di nuovo da parte di AS10 (la riparazione non era stata completata)
Dopo altri 3-4 minuti AS10 riannuncia il prefisso beacon
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.
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.
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:
Tempo: l'istante di tempo di osservazione dello stato del router. Vengono presi in considerazione gli istanti di tempo più significati fra quelli campionati dallo script Python (che ha un tempo di campionamento di circa 15 secondi). Ciò implica che messaggi che nella realtà sono stati ricevuti fra due intervalli di campionamento consecutivi, vengono riportati tutti come avvenuti allo stesso istante di campionamento.
A/W: Announcement/Withdrawal del prefisso beacon 200.0.1.0/24. Un '-' indica che si sta semplicemente osservando uno stato
Peer: il vicino che ha inviato l'announcement o withdrawal
AS Path: il cammino verso il prefisso beacon avente come next hop il Peer che l'ha annunciato o ritirato. Un '*' indica che il cammino è valido, un 'h' che il cammino è stato ritirato e fa parte solo della history, un '*d' che il cammino è valido ma è stato soppresso dall'algoritmo di dampening. Se il cammino annunciato da un Peer è evidenziato in grigio, questo presenta un ciclo: pertanto il router cancellerà dalla history il path annunciato dal Peer.
Best Path: se presente, indica il miglior path verso il prefisso beacon. È indicato con '*>' per aderenza con gli output della console interattiva del demone zebra bgpd
Penalty: se presente, indica la penalty associata dall'algoritmo di dampening al prefisso beacon annunciato/ritirato dal Peer
Flaps: se presente, indica il numero di volte che il prefisso beacon ha “flappato” a causa di messaggi inviati dal Peer
Duration: se presente, indica il tempo trascorso dal primo flap del prefisso beacon annunciato/ritirato dal Peer
Reuse: se presente, indica che la rotta avente come next hop il Peer è stata soppressa, e per essere riammessa è necessario aspettare questo “reuse time”
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 |
- |
- |
- |
- |