Routing Babeld

Da EigenWiki.

Essendo la rete cresciuta molto rispetto a quando abbiamo cominciato a usare la VPN con OLSRd la soluzione di far girare OLSRd sulla VPN comincia a non essere piu' ottimale per vari aspetti:

  • Eccessivo consumo di banda ( dovuto alla natura di oLSrd )
  • Interoperabilita' con altri protocolli di routing ( o gli si elencano le rotte da distribuire a mano nel file di conf oppure serve quagga :( )
  • TODO: completare la lista

Una possibile soluzione che abbiamo esplorato a Pisa e' babeld

  • Interoperabilita' con altri protocolli di routing:

babeld legge le rotte da redistribuire direttamente dalle tabelle di ruting del kernel periodicamente ( e' anche possibile dirgli di rileggerle ad un determinato instante a runtime tramite SIGUSR2 ), in oltre e' possibile con opportuni filtri redistribuire solo alcune rotte e applicargli delle metriche, questo e' molto vantaggioso rispetto ad olsrd perche' non e' necessario elencare le rotte da distribuire nel file di configurazione e in piu' permette pesare singolarmente le rotte invece che tutto il link ( vedi OLSRd linkQualityMultiplier o qualcosa del genere )

  • Ridotto consumo di banda:

Nel nostro setup babeld si limiterebbe a scambiare rotte annunciate e a misurare le metriche sulla vpn senza mandare in giro tutte le informazioni del routing interno delle isole come fa l'attuale setup con OLSRd, in oltre e' anche nel caso in cui un'isola usasse babeld per il suo routing interno ( se non ricordo male essendo un distance vector questo non dovrebbe comunque essere un problema ma anche se lo fosse ) e' molto semplice far scambiare rotte a due demoni babeld sulla stessa macchina senza bisogno di usare quagga ( vedi punto interoperabilita' ) e quindi senza bisogno di scambiare tutte le informazioni relative allo stato interno dell'isola, in'oltre scegliendo opportunamente l'indirizzamento ( in questo momento non sarebbe possibile eprche' a roma usate una marea di subnet distinte ) le rotte scambiate potrebbero limitarsi a una per isola e quindi diminuirebbe ancor adi piu' il consumo di banda.

  • Bandwidth aware routing:

Con babeld si puo' si puo' aggiungere una metrica a ciascuna rotta oltre a quella misurata da lui sul link questo mi ha fatto venire un idea che ho discusso poi con Julius ( il creatore di babeld ) e che non sembra poi nemmeno malvaggia ovvero al possibilita' di pesare le rotte che vanno verso internet ( o reti comunque esterne alla nostra ma che raggiungiamo direttamente tipo 131.114.0.0/16 ) con una metrica aggiuntiva ( gia supportata da babeld ) che possiamo definirci noi ma che io ho pensato cosi' in prima istanza k * (upload_megabit + download_megabit) / 20000 ( 20000 sta per upload + download di un collegamento a 10 gigabit ) k ce lo definiamo in modo da trovare il famoso equilibrio giusto tra nutrimento e gusto in modo tra non far pesare troppo poco el misure sui link che fa babeld, questa formula e' comunque abbastanza buttata li a caso e conviene discutercela insieme e magari fare pure delle prove per trovarne sicuramente una migliore