Italiano English
Modifica History Actions

olsrV2

RFC Sperimentazione OLSR V2 a Roma

Con il 2015 finirà il supporto per OLSR V1, il protocollo attualmente in produzione nell'isola romana. La presente pagina vuole essere una base comune per organizzare la sperimentazione di olsr2 attualmente in versione alpha.

Roadmap

OLSR2 non è compatibile e non interoperabile nativamente con la versione precedente quindi occorre un approccio simile a quello adottato per l'IPV6 a livello mondiale, ovvero avere entrambi operativi. Per ottenere questa migrazione ci sarà bisogno:

  • Di un FW per routing in antenna (airOS e Openwrt)
  • Di un FW per il routing a terra (Openwrt)
  • Spazio di indirizzamento IPv6 e IPv4 disgiunti dall'attuale indirizzamento.
  • Policy Routing atto ad effettuare l'interoperabilità

L'idea è quella di avere inizialmente nodi che supportono entrambi i protocolli. Quando un nodo è connesso solo e soltanto a nodi dual-olsr deve essere possibile per lui commutare alla versione "solo olsr v2" rimanendo interconnesso.

Firmware per il routing sulle antenne (airOS)

Per la vesione modicata di AIROS (nome in codice Sburratone) si avranno le seguenti versioni partendo dall'SDK airOS 5.5.2:

Firmware OpenWRT

Per la versione Openwrt si potrebbe convergere sul progetto Libre-Mesh facendo:

  • Plugin per OLSR V1
  • Plugin per OLSR V2

in questo modo si ottimizzano gli sforzi con un progetto comune.

Spazio di indirizzamento

La rete OLSRv2 utilizzerà per Roma lo spazio 10.16.0.0/14 così assegnata: Si immagina una X su roma centrata su "Stazione Termini" dividendo Roma in 4 quadranti: Nord,Est,Sud,Ovest.

  • 10.16.0.0/16: Nord
  • 10.17.0.0/16: Est
  • 10.18.0.0/16: Sud
  • 10.19.0.0/16: Ovest

Il motivo è quello del routing dei privati verso le isole. Al momento il BGP isole è solo in un punto ma se dovesse essercene un altro la divisione geografica potrebbe aiutare il bilanciamento del traffico in ingresso. Per lo stesso motivo, ovvero bilanciamento del traffico in ingresso e simmetrizzazione dello stesso, va fatto per IPV6 dove già ci sono 2 punti di traffico in uscita ma solo uno è utilizzato per l'ingresso. Data l'estensione dello spazio di indirizzi si potrebbe usare un nibble più significativo dell'indirizzo per settare il proprio punto in ingresso del traffico (scalabile fino a 16 BGP in IPv6)

Rules

  • Ad ogni nodo è assegnata una sottorete /24 presa in funzione della posizione geografica, segna qui: http://wiki.ninux.org/GestioneIndirizzi#Tabella_Subnet_Roma_OLSR_V2 e segna qui: http://indirizzi.ninux.org

  • Le interfacce radio NON hanno indirizzi IP. Per un nodo dual-olsr dove l'interfaccia radio ha l'indirizzo ip per olsrv1 si duplica l'interfaccia utilizzando il macvlan: ip link add link <eth0.103> name <vradio103> type macvlan. Sostituire <eth0.103> con il nome dell'interfaccia radio (o vlan) e a <vradio103> il nome da assegnare

http://wiki.ninux.org/OlsrAndOlsr2Coexistence

olsr2.conf

Il file di configurazione è il seguente:

[domain=0]
        table 111
[domain=1]
        table 112
[domain=150]
        table 150
[domain=151]
        table 151
[domain=152]
        table 152
[domain=153]
        table 153
[domain=154]
        table 154
[domain=155]
        table 155
[domain=156]
        table 156
[domain=157]
        table 157
[domain=158]
        table 158
[domain=159]
        table 159
[domain=160]
        table 160
[olsrv2]
      lan    10.10x.y.0/24 domain=0
#     lan    0.0.0.0/0 domain=1


[interface=vradio103]
[interface=vradio104]

Tutti gli annunci delle network private "10.10x.y.0/24" vengono annunciate con il dominio "0" (una sorta di tag) e viene costruita la tabella di routing 111.

Gli annunci del da le default (nattate) vengono annunciate con il dominio "1" e viene costruita la tabella di routing 112.

I domini 150 a 160 ci sono gli annunci delle default non nattate (dai BGP) uno per ogni rete pubblica.

Routing Tables

  • 110 -> local routes

  • 111 -> olsrV2 router (domain 0)

  • 112 -> olsrV2 adsl default (domain 1)

  • 150..160 -> Default BGP

  • 222 -> olsrV1 routes

  • 223 -> olsrV1 default

  • 224 -> default per la lan (adsl locale)

  • 225 -> full route (if node has bgp router)

  • 254 -> pubblici default di sistema

Regole Policy Routing

LAN=10.10x.y.0/24

# --------------------------------------------
# tables:

# 111 -> olsrV2  router (domain 0)
# 112 -> olsrV2  adsl default (domain 1)
# 150 -> Default BGP 176.62.53.0/24
# 151 -> Default BGP 44.
# 222 -> olsr router v1
# 223 -> olsr default
# 224 -> default per la lan
# 225 -> full route
# 254 -> pubblici default di sistema
# 110 -> local

sleep 5


#Copy local routes only from table main 254 to table 110
ip route show table 254 | grep -Ev ^default | grep -Ev ^blackhole |
while read ROUTE ; do
MASK=`echo "${ROUTE}" | awk '{print $1}' | awk -F/ '{print $2}'`
if [ "$MASK" -ne 16 ] ; then
ip route add table 110 $ROUTE
fi
done

#Sposto la rotta di default
DEF_ROUTE=`ip route show table 254 | grep ^default`
if [ -n "$DEF_ROUTE" ] ; then
ip route add table 224 $DEF_ROUTE
ip route del table 254 $DEF_ROUTE
fi

#First evaluate local routes
ip rule add from all lookup 110 pref 30

#Private routes to OLSRv2 table
ip rule add to 10.16.0.0/14 table 111 pref 35
#Private routes to OLSRv1 table
ip rule add to 10.0.0.0/8 table 222 pref 40

#Private routes to OLSRv2 table
ip rule add to 10.16.0.0/14 table 111 pref 35

#Private routes to OLSRv1 table
ip rule add to 10.0.0.0/8 table 222 pref 40
ip rule add to 172.16.0.0/12 table 222 pref 40
ip rule add to 192.168.0.0/16 table 222 pref 40

#Ninux IP Addresses to OLSRv2 table
ip rule add to 176.62.53.0/24 table 111 pref 41
ip rule add from 176.62.53.0/24 table 111 pref 41

#Ninux IP Addresses to OLSRv1 table
ip rule add to 176.62.53.0/24 table 222 pref 42
ip rule add from 176.62.53.0/24 table 222 pref 42

#main and blackholes
ip rule add from all lookup 254 pref 60

#Lookup default route first from user and then from OLSR
ip rule add from $LAN table 224 pref 80

#default annunciata su olsrV2 (ipotesi chi ha V1 ha anche v2)
ip rule add from 10.16.0.0/14 lookup 112 pref 85


#Percorso verso i BGP dei pubblici
#questa riga deve essere generata dallo script.
ip rule add from 176.62.53.0/24 lookup 150 pref 90

#i pacchettii generati dal router vanno alla default locale
ip rule add iif lo lookup 224 pref 91

#default annunciata su olsrV1
ip rule add from all lookup 223 pref 100

#Blackhole private aggregates
ip route add blackhole 10.0.0.0/8 table 254
ip route add blackhole 172.16.0.0/12 table 254
ip route add blackhole 192.168.0.0/16 table 254

#Blackhole Ninux aggregate
ip route add blackhole 176.62.53.0/24 table 254

Note

Presentazione Ninuxday 2016 e Simulatore

https://github.com/fabys77/olsrd2CoreTB

== Download ==

TODO

Altre features

Approfitttando dell'aggiornamento del fw sarebbe il caso di inserire le seguenti features:

  • Metodo per aggiungere in modo dinamico gli IP pubblici (WIP)
  • Attivare di default il supporto per MLDv2
  • Monitoring utilizzando Munin

Task

Task

Chi

Note

Repositorio

Branch

Pacchetti SburratoneV2

FaByS

github

olsr_v2_sburratone