[Ninux-Calabria] Stato delle dorsali di NewSpig (brodo, hpcc)

Stefano De Carlo stefanauss a gmail.com
Lun 22 Feb 2016 12:20:05 CET


Il 22/02/2016 12:18, Stefano De Carlo ha scritto:
> Ciao a tutti,
>
> come nota a margine (!) degli studi su NewSpig volevo ricapitolare la situazione dorsale: la dorsale di punti-punti tra HPCC->NewSpig->Brodo->Lappano è dispiegata sui tetti ma è solo parzialmente operativa.
>
> Di seguito (in due mail separate) trovate i dettagli
>
>

/* Brodo <-> NewSpig */

* Il Link Brodo -> NewSpig, dopo il semplice switch dall'AP alla PtP, è perfetto, i parametri wireless sono perfetti.
* Il link NewSpig -> Brodo ha parametri wifi perfetti in apparenza, ma oltre a non avere il throughput desiderato (e che c'è vs lappanux) è spesso inutilizzato nel routing reale. Le due cose sono probabilmente collegate.
* Il passaggio di traffico più consistente di quello di controllo avviene sempre o quasi sulla tratta Brodo->Lappanux->Musk->Newspig, ovvero il routing preferisce 2 hop in più invece della dorsale!

L'asimmetria si nota eseguendo dall'output della topology table OLSR, che è la tabella dove OLSR riporta tutti i link nella mesh, ed è identica tra tutti i router:

# link brodo->newspig-ptp e brodo->lappanux
$: watch -n 5 'curl -s [ip_groundrouter]:2006 | egrep -w 172.17.87.39 | egrep -w "172.17.87.3|172.17.87.30"'
# link musk->lappanux e musk->newspig
$: watch -n 5 'curl -s [ip_groundrouter]:2006 | egrep -w 172.17.87.7 | egrep -w "172.17.87.30|172.17.87.3"'

Come si legge la topology table: l'estratto prodotto avrà delle righe "di segno opposto" perchè listano tutte le connessioni OLSR in NinuCS, e ovviamente vale che se musk è linkato a lappanux, varrà anche che lappanux è linkato a musk.
I tre valori elencati sono rispettivamente LQ (Link Quality), NLQ (Neighbor Link Quality), e ETX (il costo, come concepito da OLSR). Una definizione veloce, ma vi invito a leggere la documentazione ^^ [1]

* Il primo IP nella tabella è il "vicino" della riga
* Il secondo IP è il nodo "sorgente" della riga

Importante: Ogni nodo è definito da un singolo IP, anche se ha più interfacce OLSR! Quindi, ad esempio, anche se brodo usa il 172.17.87.50 per linkarsi al .32 di lappanux, i nodi vengono messi in alias con .39 e .30, rispettivamente. Potete leggere gli alias nella tabella dei MID.

$: curl -s [ip_gr]:2006
<snip>
Table: MID
IP address      Aliases
172.17.87.39    172.17.87.50;172.17.87.46;172.17.87.40;172.17.87.41
172.17.87.7     172.17.87.29;172.17.87.8
172.17.87.30    172.17.87.32;172.17.87.31
</snip>

* LQ: la qualità del link percepita dal sorgente, ovvero nella direzione vicino->sorgente
* NLQ: la qualità del link percepita dal vicino, ovvero nella direzione sorgente->vicino
* EXT: il costo del link, la formula è semplice: 1/(LQ*NLQ)

Un output tipico dei link di brodo è:

172.17.87.39    172.17.87.3     1.000   0.121   8.226
172.17.87.39    172.17.87.30    1.000   1.000   1.000
172.17.87.3     172.17.87.39    0.180   1.000   5.543
172.17.87.30    172.17.87.39    1.000   1.000   1.000

(e quando va bene, invece:)

172.17.87.39    172.17.87.3     1.000   0.427   2.339
172.17.87.39    172.17.87.30    1.000   1.000   1.000
172.17.87.3     172.17.87.39    0.553   1.000   1.808
172.17.87.30    172.17.87.39    1.000   1.000   1.000

Un output tipico dei link di musk è:

172.17.87.7     172.17.87.3     1.000   1.000   1.000
172.17.87.3     172.17.87.7     1.000   1.000   1.000
172.17.87.30    172.17.87.7     1.000   1.000   1.000
172.17.87.7     172.17.87.30    1.000   1.000   1.000

La tratta Brodo->Lappano->Musk->Newspig ha un ETX che oscilla tra 3.000 e 3.128, causa link musk->newspig non perfetto.

La tratta Brodo->NewSpig dovrebbe essere 1.000 fisso e invece oscilla tipicamente tra 1.500 e INFINITE.

Ogni volta che questa oscillazione eccede 3.000, brodo arriva a newspig tramite giro lunghissimo. L'oscillazione varia di entità in momenti della giornata e in giorni diversi, ma c'è. Ad esempio, adesso mediamente brodo va direttamente a NewSpig, ma ieri pomeriggio ogni ping causava il cambio di rotta verso lappano.

Nei momenti in cui OLSR riporta cose brutte, cose brutte ci sono effettivamente, i numeri funzionano. Un tcpdump su brodo rivela che:

root a Brodolini:~# tcpdump -i eth1.7 src 172.17.87.5 and port 698
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1.7, link-type EN10MB (Ethernet), capture size 65535 bytes
11:57:39.307839 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55a3, length 692
11:57:40.910807 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55a4, length 972
11:57:49.927486 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55a9, length 748
11:57:51.530838 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55aa, length 840
11:57:54.936830 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55ac, length 884
11:57:58.243148 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55ae, length 516
11:58:01.548923 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b0, length 632
11:58:03.402577 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b1, length 840
11:58:05.204305 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b2, length 864
11:58:07.207622 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b3, length 600
11:58:08.763401 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b4, length 756
11:58:10.417686 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b5, length 836
11:58:13.972667 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b7, length 844
11:58:15.676592 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55b8, length 684
11:58:21.038328 IP 172.17.87.5.698 > 172.17.255.255.698: OLSRv4, seq 0x55bb, length 700
^C

Notate i buchi nei numeri di sequenza, che diventano sempre più ampi quanto il link si degrada.
Lato opposto, non ci sono buchi, a NewSpig arriva tutto ciò che brodo manda dalla ptp.

Il tutto non è limitato al traffico di controllo OLSR. Nei momenti in cui brodo switcha alla tratta lunga, cercando su NewSpig di forzare (ping -I eth0.5 -s 1024 10.87.22.1) il traffico ad uscire in direzione brodo risulta in pacchetti persi.

Fino a poco tempo fa Brodo aveva addirittura 3 path verso NewSpig, ma ora l'antenna di Spax (che sta comunque per dismettere il nodo) si è girata col vento ed è puntata nella direzione opposta; inoltre, Musk ogni tanto vuole particolarmente bene all'ENEL. In questa situazione un contemporaneo momento brutto del ptp con NewSpig isolerebbe brodolini.

I sintomi sembrano tipici di quel che è successo al primo puntamento musk-lappano: le antenne si linkavano, ma con i lobi laterali, risultando in segnali forti ma disconnessioni e asimmetrie. Con un leggero aggiustamento, anche di inclinazione orizzontale, il link diventò rock solid. In questo caso il puntamento non c'è stato proprio!

All'atto pratico non cambia molto, la ridondanza c'è e funziona, e il calendario degli interventi prevedeva comunque il puntamento con brodo. Pensavamo erroneamente di aver azzeccato il puntamento ad occhio, che scemi :)

Brodo potrebbe prevenire il rischio di eventuali isolamenti ri-switchando temporaneamente al vecchio (e perfetto) link con la Rocket di NewSpig, sceglierà Peppe. Principalmente questo riassunto ha lo scopo di integrare controlli sul routing e sulla qualità _effettiva_ del link nelle nostre pratiche e conoscenze ;-)

Stefanauss.

[1] http://www.olsr.org/docs/README-Link-Quality.html

-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  819 bytes
Descrizione: OpenPGP digital signature
URL:         <http://ml.ninux.org/pipermail/calabria/attachments/20160222/836888de/attachment-0001.sig>


Maggiori informazioni sulla lista Calabria