SITUAZIONE

Mi capita abbastanza spesso di usare Wireshark (il successore di Ethereal) per "vedere" quello che passa sulla rete: questo tipo di approccio è veramente utile perchè consente di controllare (grazie anche agli ottimi parser di questi software) cosa viene scambiato tra client e server, riuscendo quindi ad arrivare ad un dettaglio che normalmente è nascosto dal sistema operativo.

Normalmente si potrebbe pensare che questi signori siano in grado di "catturare" tutti i campti di tutti frame che passano a livello di "data link": sono quindi rimasto abbastanza sorpreso quando, durante una serie di test e prove per l'implementazione di una serie di VLAN, non ho trovato il tag 802.1q che invece mi sarei aspettato.

Ho subito sospettato che il difetto fosse legato alla mia macchina in quanto tutti gli apparati di rete si stavano comportando da manuale, segno quindi che il TAG doveva essere lì (anche se io non lo vedevo).

SOLUZIONE

Dopo una breve ricerca sul wiki di Wireshark ho appurato quanto segue:

  • Su Windows non esiste una gestione delle VLAN implementata nel "kernel": questo significa che questo lavoro deve essere svolto dal driver di rete
  • Di conseguenza, la possibilità o meno di visualizzare il tag 802.1q dipende dal tipo di driver utilizzato, in quanto Wireshark si pone sopra il driver
  • Le schede di rete più "umili" (es. le classiche Realtek) normalmente passano a Wireshark il tag 802.1q mentre quelle più sofisticate (es. Intel e Broadcom) lo eliminao direttamente

E secondo voi che scheda di rete avevo sul portatile (IBM)?

Fortunatamente il WIKI da anche la soluzione per questi due vendor (che sono quelli più comuni): personalmente mi sono fermato a quella per Broadcom (la mia scheda, montata su un IBM R52, ma anche su un Desktop HP che avevo) ma riporto anche quella di Intel (anche se non testata) casomai qualcuno in futuro ne avesse bisogno

BROADCOM

Si tratta (come al solito) di aggiungere un valore al registro di tipo STRING denominato PreserveVlanInfoInRxPacket (mi piacciono sempre i nomi corti - vedi chiavi di Exchange teeth smile)settandolo ovviamente a 1. Il problema è che la posizione di questa chiave è a dir poco bizzarra: per trovarla occorre cercare un'altra chiave chiamata TxCoalescingTicks ed aggiungerla nello stesso contenitore. Il percorso purtroppo cambia di volta in volta perchè dipende (credo) dall'ordine della scheda di rete nel sistema operativo.

Quindi, riepilogando:

  1. Si cerca (dentro HKLM\System\CurrentControlSet) la chiave TxCoalescingTicks
  2. Si aggiunge (nello stesso contenitore) il valore di tipo stringa PreserveVlanInfoInRxPacket  e lo si mette a 1
  3. Si fa ripartire Ethereal (un "reboottino" non ci sta male, dato che siamo su Windows!) e si vedranno i tanto agognati TAG

INTEL

Come detto precedentemente, riporto solo le note ma non l'ho provato in prima persona: si tratta di cambiare il valore denominato MonitorModeEnabled portandolo a 1. Questo valore si dovrebbe trovare in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\00xx dove xx identifica il numero della scheda di rete sul sistema.