802.1Q VLAN přes WiFi a HostAP

Nedávno jsme v CZFree v Dejvicích řešili problém s OSPF, Quaggou a možností nastavit pro jednotlivé neighbor OSPF routery různý cost linky v případě, že jsou na stejném interfacu. Bohužel se nepodařilo Quaggu donutit, aby se tak chovala (netvrdím, že to nejde). Přistoupili jsme proto k vymýšlení workaroundu. Padly následující návrhy:

  • naaliasovat na interface víc IP rozsahů (wlan0:1, wlan0:2, ..)
  • 802.1Q VLAN
  • VPN (OpenVPN, CIPE, PPTP, ..)

Nakonec zvítězil druhý návrh - řešení přes 802.1Q VLAN.

První pokus nebyl příliš úspěšný. Na prvním routeru byl kernel 2.6.8.1, který obsahoval chybu v implementaci VLAN, která se zákeřně neprojevila ihned po inicalizaci VLANu, ale až po pár minutách a následně ihned při každém bootu a spouštění DHCP serveru.

kernel: [schedule+60/1064] schedule+0x3c/0x428
kernel: [default_idle+0/40] default_idle+0x0/0x28
kernel: [default_idle+0/40] default_idle+0x0/0x28
kernel: [default_idle+35/40] default_idle+0x23/0x28
kernel: [cpu_idle+62/64] cpu_idle+0x3e/0x40
kernel: [rest_init+89/92] rest_init+0x59/0x5c
kernel: [start_kernel+403/408] start_kernel+0x193/0x198
kernel: [schedule+60/1064] schedule+0x3c/0x428
kernel: [default_idle+0/40] default_idle+0x0/0x28
kernel: [default_idle+0/40] default_idle+0x0/0x28
kernel: [default_idle+35/40] default_idle+0x23/0x28
kernel: [cpu_idle+62/64] cpu_idle+0x3e/0x40
kernel: [rest_init+89/92] rest_init+0x59/0x5c
kernel: [start_kernel+403/408] start_kernel+0x193/0x198
kernel: [schedule+60/1064] schedule+0x3c/0x428
kernel: [default_idle+0/40] default_idle+0x0/0x28
kernel: [default_idle+0/40] default_idle+0x0/0x28
...

Následovala kompilace nového kernelu a upgrade HostAP driveru. Tentokrát už všechno běželo tak, jak mělo. Stačilo přes vconfig vytvořit vlanX interfacy z patřičného wlanX wireless interfacu HostAPu. Vše funguje správně a zdá se, že u HostAP nejsou potřeba patche, jako např. u eepro100 driveru.

Written on May 22, 2006