Donnerstag, 27. Mai 2021
Seit einiger Zeit fällt mir auf, dass FaceTime Video-Anrufe von mir (Fiber7, 1 Gbit/s symmetrisch) zu einem Bekannten (upc, mit ein paar 100 MBit/s up- and down, best effort) ruckeln und stocken.
Die Probleme beginnen wenige Sekunden nach der Etablierung des Anrufs. Symptome:
Screenshots:


Die (triviale) Lösung: Auf dem EdgeRouter ER-X mit Firmware v1.10.0 muss das sog. Hardware Offloading (kurz hwnat) deaktiviert werden:
Offizielle Anleitung (CLI), aber dasselbe geht auch über das GUI und den Config Tree: System > Offloading > hwnat = disable.
Das Problem ist im Support-Eintrag Connecting to wireguard on edgerouter messes up outgoing UDP packets #23 beschrieben, mitsamt der Lösung:
If you use a Mediatek device with hwnat your UDP packages might get lost. Currently the only solution is to disable hwnat
UDP re-order problem
With hwnat disabled, the wg0 interface works great and the ER-X routes all my internet traffic out of it just fine, although CPU has much more overhead.
As soon as I enable hwnat, I start seeing problems, but only in certain scenarios, not all. For example, with hwnat disabled, I can use OpenVPN as a client on a local machine. Thus that OpenVPN connection gets routed out through the wg interface first, then on to server. The OpenVPN server shows the endpoint IP of the server ER-X wg is connected to as the OpenVPN client’s IP, not my ISP IP (what I want). As soon as I enable hwnat, this breaks. I can still make the initial outgoing connection and bring up the OpenVPN tunnel, but packets get dropped so that OpenVPN through the wg interface is unusable with hwnat enabled.
Also noticed Apple FaceTime is broken when hwnat is enabled with wg interface. Lots of disconnects and moments of me hearing them but them not hearing me. Again, disabling hwnat fixes it instantly, but again, at the cost of CPU.
Nachtrag
Das Problem ist leider immer noch nicht gelöst. Zuerst einmal scheint die Deaktivierung von hwnat über das Web GUI erst dann zu greifen, wenn man den Router neu startet. Bei mir zeigte das GUI „disabled“ an, doch auf der Kommandozeile erschien folgendes:
$ configure
[edit]
user@ROUTER# show system offload hwnat
hwnat disable
$ show ubnt offload
IPSec offload module: loaded
HWNAT offload module: loaded
Traffic Analysis :
export : disabled
dpi : disabled
version : 1.354
Nach dem Neustart dann:
$ show ubnt offload
IPSec offload module: not loaded
HWNAT offload module: not loaded
Traffic Analysis :
export : disabled
dpi : disabled
version : 1.354
Trotz alledem macht FaceTime weiterhin Probleme.
Via: ERX Hardware Offload won’t load