OpenWRT VXLAN MTU (Megoldva)

Hogy lehet OpenWRT alatt (napi snapshotokat próbálok, de nekem amúgy stabilak) egy VXLAN interfész MTU értékét növelni?

Maga a hálózat, ami felett futna a VXLAN, 2000-es MTU-t használ, és úgy néz ki, át is megy annyi (Mikrotik router alól pinggel tesztelve) és az OpenWRT eszközön Luci alól úgy néz ki, hogy be is lövi az MTU-t 1950-re a VXLAN-on, de "Dont fragment" beállítással pingelve 1450-él megáll így is a tudomány a VXLAN-on keresztül. Az lenne a cél, hogy darabolás nélkül átmenjen 1500 byte.

Tudom, van mindenféle overhead, de azt néztem, a RouterOS ping már számol ezzel, valamint azért 2000-ből nem kéne, hogy csak 1450 maradjon VXLAN alatt sem.

Amúgy ez az egész hercehurca azért lenne, mert Wifi Mesh hálón küldenék át több VLAN-t. Jelenleg így működik, de szeretném kihozni a maximumot belőle.

 

Megoldás:

Egyrészt időközben a MESH-ről átálltam sima WDS kliens-AP felállásra, mert stabilabbnak látszik. A másik, ami a lényeg, hogy a trunk interfész alá, ami a VXLAN kommunikációt is intézi, nem közvetlenül a management VLAN-t csatornáztam be, hanem létrehoztam egy bridge eszközt megfelelő MTU-val és "Bring up empty bridge" beállítással, és így már darabolás nélkül is átmegy a csomag a VXLAN-on át.

Hozzászólások

Hogy néz ki a /config/network ?

A két szembenálló rádiónak nagyjából hasonló a konfigja. A WAN port a trunk port, van rajta két tagged VLAN (99 és 100, az 101 untagged, management VLAN) . Ezek (99,100) vannak összebridgelve egy-egy VXLAN-nal. Valamint a 101-es VLAN van Mesh hálón továbbdobva és ezen megy a VXLAN is.

A rádiók MTU-ja be lett lőve 2304-re, a maxra ez alapján: https://gist.github.com/rany2/3b0a4c225977813a8847a89358e2f4de

root@OpenWrt:~# uci show network
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.packet_steering='1'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='none'
network.lan.defaultroute='0'
network.lan.delegate='0'
network.@route6[0]=route6
network.@route6[0].interface='lan'
network.@route6[0].target='::0/0'
network.@route6[0].gateway='xxxxxxxxx'
network.@device[0]=device
network.@device[0].type='bridge'
network.@device[0].name='br-wan'
network.@device[0].mtu='2000'
network.@device[0].ports='wan'
network.@device[0].txqueuelen='1000'
network.@device[0].ipv6='0'
network.@bridge-vlan[0]=bridge-vlan
network.@bridge-vlan[0].device='br-wan'
network.@bridge-vlan[0].vlan='99'
network.@bridge-vlan[0].ports='wan:t'
network.@bridge-vlan[1]=bridge-vlan
network.@bridge-vlan[1].device='br-wan'
network.@bridge-vlan[1].vlan='100'
network.@bridge-vlan[1].ports='wan:t'
network.iot=interface
network.iot.proto='none'
network.iot.device='br-iot'
network.iot.defaultroute='0'
network.iot.delegate='0'
network.@bridge-vlan[2]=bridge-vlan
network.@bridge-vlan[2].device='br-wan'
network.@bridge-vlan[2].vlan='101'
network.@bridge-vlan[2].ports='wan:u*'
network.trunk=interface
network.trunk.proto='static'
network.trunk.device='br-wan.101'
network.trunk.ipaddr='192.168.aa.abc'
network.trunk.netmask='255.255.255.0'
network.trunk.gateway='192.168.aa.1'
network.trunk.dns='192.168.aa.1'
network.trunk.ip6assign='64'
network.trunk.delegate='0'
network.@device[1]=device
network.@device[1].name='wan'
network.@device[1].mtu='2000'
network.@device[1].txqueuelen='1000'
network.@device[1].ipv6='0'
network.@device[2]=device
network.@device[2].name='br-wan.101'
network.@device[2].type='8021q'
network.@device[2].ifname='br-wan'
network.@device[2].vid='101'
network.@device[2].mtu='2000'
network.@device[2].txqueuelen='1000'
network.@device[2].ipv6='0'
network.@device[3]=device
network.@device[3].name='eth0'
network.@device[3].mtu='2004'
network.@device[3].txqueuelen='1000'
network.@device[3].ipv6='0'
network.@device[4]=device
network.@device[4].type='bridge'
network.@device[4].name='br-lan'
network.@device[4].bridge_empty='1'
network.@device[4].stp='1'
network.@device[4].ports='br-wan.99' 'vxl99'
network.@device[4].ipv6='0'
network.@device[5]=device
network.@device[5].type='bridge'
network.@device[5].name='br-iot'
network.@device[5].bridge_empty='1'
network.@device[5].stp='1'
network.@device[5].ports='br-wan.100' 'vxl100'
network.@device[5].ipv6='0'
network.vxl99=interface
network.vxl99.proto='vxlan'
network.vxl99.force_link='1'
network.vxl99.peeraddr='192.168.aa.def'
network.vxl99.ipaddr='192.168.aa.abc'
network.vxl99.vid='99'
network.vxl99.delegate='0'
network.vxl99.tunlink='trunk'
network.vxl100=interface
network.vxl100.proto='vxlan'
network.vxl100.force_link='1'
network.vxl100.peeraddr='192.168.aa.def'
network.vxl100.ipaddr='192.168.aa.abc'
network.vxl100.vid='100'
network.vxl100.delegate='0'
network.vxl100.tunlink='trunk'

Na úgy néz ki, hogy maguk a bridge-k átengedik az 1500Byte-nál nagyobb forgalmat, de maguk az interfészek, amiknek van IP címül nem nagyon akarnak 1500Byte-nál nagyobb csomagban küldeni adatot, ami a VXLAN-t visszafogja. Valamint az ifconfig meg a Luci nem ugyanazt mutatja MTU-nak (Luci: 2000, ifconfig 1500)

Ha ifconfig-gal felveszem 2000-re az MTU-t és kézzel dobok egy network restart-ot mindkét oldalon, akkor elkezd átfolyni a VXLAN-on a nagyobb csomagméret is, viszont még azt nem tudom, hogy rögzítem le a beállítást, mert ezt a két parancsot startup script-be betéve elérhetetlenné váltak az OpenWRT-t futtató eszközök újraindítás után. Megpróbálom failsafe-ba rakni és kiszedni a beállítást az eszközökből.