<div dir="ltr">Grazie Stefano, è uno degli argomenti che sto per raccogliere in Ground Routing - Appendix, lo includo nel documento, naturalmente citandoti. :-)<br></div><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 19 settembre 2014 03:08, Stefano De Carlo <span dir="ltr">&lt;<a href="mailto:stefanauss@gmail.com" target="_blank">stefanauss@gmail.com</a>&gt;</span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">TL; DR: In fondo trovate le modalità con cui si può trattare questo<br>
switch in modo che digerisca il routing a terra. Per configurarlo<br>
correttamente vi serve solo leggere in fondo :)<br>
<br>
TL; DS(croll): porta 6 sempre tagged + grhowto.<br>
<br>
~~~<br>
<br>
Ciao,<br>
<br>
volevo condividere con voi alcune speculazioni sullo switch (AR8237N) di<br>
questo router, che è elettronicamente cablato in maniera diversa dagli<br>
altri che utilizzano lo stesso silicio (TL-WDR3500, TL-WDR3600,<br>
TL-WDR4300, tra quelli supportati da NinucsWrt), e la cosa si riflette<br>
in OpenWrt e ha un impatto sulla guida al routing a terra.<br>
<br>
* Del silicio dell&#39;AR8237N fanno parte dei MAC chip. Sono quei<br>
componenti dello switch convertono i pacchetti in uno stream di bytes.<br>
Attenzione, non gestiscono lo stadio fisico, gli impulsi elettrici, ma<br>
&quot;scrivono&quot; e &quot;leggono&quot; i pacchetti Ethernet da/per la CPU.<br>
<br>
* Del silicio dell&#39;AR8237N fanno parte due 2 GMII (Gigabit Media<br>
Independent Interface) distinte. Le GMII sono una &quot;API elettronica&quot; di<br>
interconnessione tra MAC e PHY (lo strato fisico, quello che traduce i<br>
bytes da/per il MAC in impulsi elettrici). Sono standard, che è l&#39;intero<br>
punto della questione, così MAC e PHY se ne possono fregare dei dettagli<br>
l&#39;uno dell&#39;altro.<br>
<br>
* Ogni PHY ha il suo MAC chip (normale), e in più (nell&#39;AR8237N) ce ne<br>
sono 2 di &quot;raccolta&quot; (GMAC0 e GMAC1)<br>
<br>
L&#39;associazione GMAC + MII è quella che conosciamo come &quot;porta cpu&quot; dello<br>
switch. È cioè la porta non-fisica dello switch attraverso la quale la<br>
CPU può parlare &quot;MAC&quot; con lo switch.<br>
Il kernel, di regola, la chiama &quot;eth0&quot;.<br>
<br>
Se siete familiari con il routing a terra sapete che nei router<br>
normalmente ci capitano due casi:<br>
<br>
1) Tutte le porte fanno capo a &quot;eth0&quot;. Questo significa che il GMAC0<br>
raccoglie tutte le porte fisiche in un bridge &quot;elettronico&quot; che si<br>
imposta nei registri dello switch. La porta &quot;WAN&quot; verrà quindi creata ad<br>
un livello molto più alto, grazie alle VLAN (eth0.1, eth0.2).<br>
<br>
2) Tutte le porte meno la &quot;blu/WAN&quot; fanno capo a &quot;eth0&quot;. Questo<br>
significa che il GMAC0 bridgia elettronicamente tutte le porte fisiche<br>
*meno una*, una modalità anch&#39;essa prevista dai registri dello switch<br>
(un cortocircuito, banalmente).<br>
Cosa succede alla porta &quot;blu/WAN&quot;? È agganciata ad una sua MII dedicata<br>
e da essa direttamente alla CPU, da cui sarà gestita in toto. Niente<br>
GMAC di raccolta, la CPU la vede direttamente come un&#39;interfaccia a sè<br>
stante, che solitamente il kernel chiama &quot;eth1&quot;. Da notare che non può<br>
essere una qualsiasi porta, ma *quella*, elettronicamente predisposta a<br>
questa modalità.<br>
<br>
Ora, se vi ricordate abbiamo detto che l&#39;AR8237N ha due GMAC e relative<br>
MII, ed è per questo che sui modelli che lo montano vi trovate una &quot;port<br>
6&quot;. Ma sopra non abbiamo mai menzionato GMAC1, perchè? Perché la TP-Link<br>
lo lascia inutilizzato su 3500/3600/4300, non c&#39;è collegata nessuna<br>
delle porte fisiche.<br>
Sul 1043NDv2 invece GMAC1 gestisce la porta &quot;blu/WAN&quot; su una SGMII dedicata.<br>
<br>
Questa è una differenza sostanziale rispetto ai due casi soliti perché<br>
stavolta ci sono *due* associazioni GMAC + MII e di conseguenza *due*<br>
&quot;porte cpu&quot; dello *stesso* switch, e di conseguenza *due* interfacce<br>
(eth0 e eth1) che però *non* sono distinte: cosa più importante,<br>
condividono la stessa VLAN table, perché questa è propria dello switch.<br>
<br>
== CONFIGURAZIONE ==<br>
<br>
La ripartizione di default dello switch in OpenWrt è questa (t = tagged,<br>
u = untagged, x = off):<br>
<br>
                ________________________________<br>
               |               CPU              |<br>
               |eth1                        eth0|<br>
               |________________________________|<br>
                 |                            |<br>
_________________|____________________________|__<br>
switch port   | p0 | p1 | p2 | p3 | p4 | p5 | p6 |<br>
______________|____|____|____|____|____|____|____|<br>
router port   |  - |lan4|lan3|lan2|lan1|wan |  - |<br>
______________|____|____|____|____|____|____|____|<br>
vlan1         |  u |  u |  u |  u |  u |  x |  x |<br>
______________|____|____|____|____|____|____|____|<br>
vlan2         |  x |  x |  x |  x |  x |  u |  u |<br>
______________|____|____|____|____|____|____|____|<br>
<br>
<br>
Questa ripartizione però assegna alle porte che partecipano nel br-lan<br>
l&#39;interfaccia eth1, mentre la solita eth0 viene assegnata alla WAN.<br>
Tutto questo è rilevante perchè quando a partire da questo default si<br>
vanno a modificare le VLAN agendo da LuCI, le interfacce corrispondenti<br>
erroneamente (da netifd, methinks) vengono create su eth0.x, mentre a<br>
noi servirebbero sulla eth1.x.<br>
Se poi si creano nel passo successivo le Networks mettendo il pallino su<br>
eth0.x, non funziona giustamente nulla.<br>
<br>
Due possibili approcci (negli esempi, routing a terra con 1 antenna):<br>
<br>
= Business as usual =<br>
<br>
                ________________________________<br>
               |               CPU              |<br>
               |eth1                        eth0|<br>
               |________________________________|<br>
                 |                            |<br>
_________________|____________________________|__<br>
switch port   | p0 | p1 | p2 | p3 | p4 | p5 | p6 |<br>
______________|____|____|____|____|____|____|____|<br>
router port   |  - |lan4|lan3|lan2|lan1|wan |  - |<br>
______________|____|____|____|____|____|____|____|<br>
vlan2         |  t |  x |  x |  x |  x |  u |  t |<br>
______________|____|____|____|____|____|____|____|<br>
vlan3         |  t |  t |  x |  x |  x |  x |  t |<br>
______________|____|____|____|____|____|____|____|<br>
vlan7         |  t |  t |  u |  u |  u |  x |  t |<br>
______________|____|____|____|____|____|____|____|<br>
<br>
Trattiamo la porta 6 come qualsiasi porta CPU nel routing a terra: tutto<br>
tagged.<br>
In questo caso però OpenWrt torna a considerare come interfaccia-switch<br>
la eth0 (ancora netifd?).<br>
Dunque, così facendo, le VLAN-interface presentate da LuCI (eth0.x) sono<br>
corrette e funzionanti.<br>
Occhio alla network WAN: rimarrà eth0, che ora è invece lo switch-LAN.<br>
Nell&#39;esempio dobbiamo riassegnarla a eth0.2 in physical settings.<br>
<br>
= Manuale =<br>
<br>
                ________________________________<br>
               |               CPU              |<br>
               |eth1                        eth0|<br>
               |________________________________|<br>
                 |                            |<br>
_________________|____________________________|__<br>
switch port   | p0 | p1 | p2 | p3 | p4 | p5 | p6 |<br>
______________|____|____|____|____|____|____|____|<br>
router port   |  - |lan4|lan3|lan2|lan1|wan |  - |<br>
______________|____|____|____|____|____|____|____|<br>
vlan1 (unused)|  t |  t |  x |  x |  x |  x |  x |<br>
______________|____|____|____|____|____|____|____|<br>
vlan2         |  x |  x |  x |  x |  x |  u |  u |<br>
______________|____|____|____|____|____|____|____|<br>
vlan3         |  t |  t |  x |  x |  x |  x |  x |<br>
______________|____|____|____|____|____|____|____|<br>
vlan7         |  t |  t |  u |  u |  u |  x |  x |<br>
______________|____|____|____|____|____|____|____|<br>
<br>
In questo caso quando una porta CPU è tagged, l&#39;altra è off.<br>
Lo switch mantiene la separazione di default eth1-LAN + eth0-WAN,<br>
ma ciò riporta in auge il problema delle VLAN-interface in LuCI, create<br>
sull&#39;interfaccia madre errata.<br>
Per ovviare, semplicemente: quando creiamo una nuova Network *non*<br>
spuntiamo la eth0.x che ci serve ma, nel campo di testo &quot;Custom<br>
Interface&quot; digitiamo a mano eth1.x. Ricordate, la VLAN table è la stessa ;)<br>
<br>
(Non mi ricordo se ho testato la WAN in questa configurazione, mal 99%<br>
si e funzionava. Routing a terra 100% operativo.)<br>
<br>
Non so che vantaggio possa esserci a eseguire il secondo tipo di<br>
configurazione. L&#39;unico che mi viene in mente è che, potenzialmente,<br>
taggando entrambe le porte CPU tutto viene trattato dal solo GMAC0,<br>
difatto rinunciando al throughput dedicato della seconda MII Gigabit.<br>
Effetti sulle performance massime?<br>
<br>
Stefanauss.<br>
<br>
<br>_______________________________________________<br>
Calabria mailing list<br>
<a href="mailto:Calabria@ml.ninux.org">Calabria@ml.ninux.org</a><br>
<a href="http://ml.ninux.org/mailman/listinfo/calabria" target="_blank">http://ml.ninux.org/mailman/listinfo/calabria</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr"><div style="text-align:left"><span style="font-family:&#39;courier new&#39;,monospace;font-size:small">#musk from <a href="http://calabria.ninux.org" target="_blank">calabria.ninux.org</a> - CS</span></div><div style="text-align:left"><font face="courier new, monospace"><br></font></div><div style="text-align:left"><font face="courier new, monospace">@openmusk</font></div></div>
</div>