[Ninux-Calabria] problema gr e openwrt

Stefano De Carlo stefanauss a gmail.com
Lun 16 Mar 2015 09:59:38 CET


Il 16/03/2015 00:24, BornAgain ha scritto:
> adesso io non so dove altro sbattere la testa .. se qualcuno ha idee che le dica
>
> Danilo è convinto di ripiallare il gr e seguire la vostra guida (noi sostanzialmente abbiamo fatto circa le stesse cose fatte a cosenza ma da shell)
>
> Io credo che il problema non stia lì (altrimenti non funzionerebbe neanche l’antenna lato nord) ma risieda nel bridge dell’antenna openwrt
>
> tra le altre cose correggetemi ma nessuno di voi ha provato gr con antenna in sta in openwrt quindi mi sembra che questo sia un buon banco di prova
>
> aspetto idee

Ciao Dario e Danilo,

grazie mille delle prove.
Hai ragione, nessuno di noi ha provato GR+OpenWRT a Station. Per nessuna ragione particolare, e io non avevo particolare fretta perché davo per scontato che il Layer 2 avesse lo stesso comportamento.
Non è così. Ma manco vicino. L'avevo in un angolo remoto del cervello ma non ho fatto il collegamento, sorry.

Parto dalla fine: Su OpenWrt, il ground-routing-come-da-guida NON è possibile.
Non avete sbagliato nulla, non è una virgola da qualche parte, è strutturale.
Aggiundo AP+STA contemporanei al quadro non cambia nulla, il problema è altrove.

La "soluzione" sicuramente funzionante c'è già, ed è il WDS.
Non ti so informare in questo momento sulle possibili ramificazioni del suo uso, ma ti posso dire con relativa sicurezza che se il link è PtP essenzialmente hai la situazione equivalente all'howto.
Possibili altre soluzioni con altri pro+contro sono trelay e ebtables.
Bisognerebbe tornare in laboratorio, ma in questo momento non ho hw e tempo per simulare questo scenario :(

Voi però recuperate questo setup usando Station WDS e AP WDS. Non avete bisogno di rinunciare al ground routing.

Il meccanismo fondamentale del ground routing non sono le VLAN (sebbene il 90% delle conversazioni e help cada su quelle xD) ma è il bridging.
E non basta che ci sia un bridge, ma il bridge deve essere *trasparente* (o equivalente a), ovvero: i dispositivi a qualunque lato del bridge devono poter comunicare direttamente con i *loro* src e dst MAC address.
Il problema è che in 802.11 puro è *impossibile fare trasparent bridging* sulla STA perché il frame format non prevede proprio la conservazione dei MAC address degli endpoint nella comunicazione over-the-bridge.
WDS ha diverse feature, ma a livello fondamentale è proprio questo che fa: nuovo frame format, trasparent bridging sulla STA possibile. È stato creato apposta per questo.

Il che chiaramente porta alla domanda: ma come cazzo fa a funzionare su AirOS?
Su AirOS mettiamo in bridge STA e wired come se non ci fosse un domani.
Mikrotik, anche se non lo usiamo, funziona tutto uguale.

La risposta è sia Ubnt che Mikrotik hanno fatto pesanti modifiche al meccanismo di bridging di Linux e al comportamento L2 wireless per permettere il trasparent bridging anche senza WDS.
Federico questa settimana A FAGIOLISSIMO ha pubblicato un diff tra il ramo ufficiale openwrt (molto datato) e AirOS7 (su AirOS 5 queste cose dovrebbero essere uguali, ma è difficile confermare adesso). In nessun caso questi sono *tutti* i sorgenti (i driver ubiquiti sono proprietari), ma analizzando si capisce subito che

* Ubiquiti ha hardcodato (non è disabilitabile, neanche quando non serve!) un meccanismo chiamato ARP-NAT che aggira il problema di bridge+STA anche senza WDS grazie ad una traduzione del MAC.
* il codice che su OpenWrt ti restituisce errore in caso di bridging con STA è rimosso in AirOS

Purtroppo la parte succosa, ovvero il driver wireless, dove avviene la magia che rende tutto questo possibile è proprietario, e non fa parte del code dump. Non so dire come opera, ma a questo punto è chiaro che applica in hw le funzionalità appena viste (altrimenti non avrebbe senso predisporre i wrapper e esporle in userspace).

Con Mikrotik il codice è diverso (e non mi pare lo rilascino...), ma il risultato è uguale. Anzi, Mikrotik ha molte più modalità.

ARP-NAT non solo non è supportato su OpenWrt vanilla, ma non lo sarà mai per volontà dei devs. È il motivo per cui è stato scritto trelay, per ovviare al caso d'uso (molto di nicchia, se non sei su Ninux...) di bridging senza ARP-NAT e senza WDS.

Scusate la mail lunga, che verrebbe ancora più lunga se mi addentrassi ancora. Meglio farlo a sto punto dopo i test, quando ce ne sarà il tempo.
La palla a voi.

Stefanauss.

-------------- 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/20150316/5c0f9380/attachment-0001.sig>


Maggiori informazioni sulla lista Calabria