You went from emulated Realtek ethernet to xnf. Can you try other network 
interfaces?

Berry Wendermouth [bayb...@riseup.net] wrote:
> Xen based VPS / OpenBSD 6.2 / OpenVPN 2.4.4 => Slow download speed after
> upgrade
> ================================================================================
> 
> Dear OpenBSD Community,
> 
> we are operating an OpenVPN server on OpenBSD. A few days ago we
> upgraded to OpenBSD 6.2 
> and we are now seeing very slow speeds (<10KB/s) when trying to download
> via
> the VPN tunnel from the internet (WAN). We did not have this problem
> before.
> 
> >From the documented test cases below (Specifically case 2) it does not
> look like it is a VPN performance problem (e.g. mtu/encryption
> performance related).
> We can also exclude bandwidth trottleing by the VPS provider and the
> ISP.
> 
> * Did something essential change in `pf`? [4]
> * Or is the problem related to OpenBSD's Xen drivers?
> 
> Could someone help us track down the bottleneck?
> 
> Any help and hints are very much appreciated.
> 
> Thank you kindly
> 
> Berry
> 
> PS: for a better viewing experience you may compile this email body with
> `asciidoc` 
> 
> == Environment
> 
> === Server
> * OpenBSD 6.2 / amd64 (-release) + syspatch
> * OpenVPN 2.4.4
> * On Virtual Private Server / Xen version "4.9.0" by Xen Project [0]
> * Detected CPU: Intel(R) Xeon(R) CPU E5-2620
> * Detected network device: xnf0
> * Firewall configuration: /etc/pf.conf [1]
> * System Message Buffer [2]
> 
> === Clients
> * OpenBSD 6.2 with OpenVPN 2.4.4
> * GNU/Linux Gentoo with OpenVPN 2.4.4
> * LinesageOS 14.1 with OpenVPN for Android 0.6.73
> 
> == Detailed Problem Description / Test Results
> 
> Please note: the following documented tests used one and the same client
> / network connection:
> 
> * GNU/Linux Gentoo with OpenVPN 2.4.4
> * Connected to router via wifi on internet connection with max 50Mbit/s
> download
> 
> To rule out problems with the client local network settings tests with
> other client setups on other networks were also performed and showed
> identical
> results. For brevity they are not documented here.
> 
> === Case 1: Server <==> WAN (ok)
> * When on the server, downloading a file from WAN 
> * Scenario: downloaded 100MB file from
> http://fra36-speedtest-1.tele2.net/ with curl
> * Average Download Speed: ~ 10Mbit/s 
> * Testresult:
> 
> ----
> $ curl http://fra36-speedtest-1.tele2.net/100MB.zip > /dev/null 
> % Total    % Received % Xferd  Average Speed   Time    Time     Time 
> Current
> Dload  Upload   Total   Spent    Left  Speed
> 100  100M  100  100M    0     0  9309k      0  0:00:11  0:00:11 --:--:--
> 10.9M
> ----
> 
> === Case 2: Client <= VPN => Server (ok)
> * When on the client, downloading a file from server via VPN tunnel
> * Scenario: standard download test with `iperf`
> * Average Download Speed: ~ 15Mbit/s
> * Testresult:
> 
> ----
> # iperf -s                                                              
>                                                                         
>                                             
> ---
> Server listening on TCP port 5001
> TCP window size: 16.0 KByte (default)
> ---
> [  4] local 10.8.0.1 port 5001 connected with 10.8.0.4 port 34998
> [ ID] Interval       Transfer     Bandwidth
> [  4]  0.0-10.2 sec  18.5 MBytes  15.2 Mbits/sec
> 
> 
> # iperf -c 10.8.0.1
> ---
> Client connecting to 10.8.0.1, TCP port 5001
> TCP window size: 45.0 KByte (default)
> ---
> [  3] local 10.8.0.4 port 34998 connected with 10.8.0.1 port 5001
> [ ID] Interval       Transfer     Bandwidth
> [  3]  0.0-10.0 sec  18.5 MBytes  15.5 Mbits/sec
> ----
> 
> === Case 3a: Client <= VPN => Server <==> WAN (broken)
> * When on the client, downloading a file from WAN via VPN tunnel
> * Scenario: downloaded 100MB file from
> http://fra36-speedtest-1.tele2.net/ with curl
> * Average Download Speed: ~ 5KB/s
> * Testresult:
> 
> ----
> curl http://fra36-speedtest-1.tele2.net/100MB.zip > /dev/null
> % Total    % Received % Xferd  Average Speed   Time    Time     Time 
> Current
> Dload  Upload   Total   Spent    Left  Speed
> 0  100M    0  149k    0     0   5102      0  5:42:32  0:00:30  5:42:02 
> 4933
> ----
> 
> === Case 3b: Client <==> WAN (ok)
> * When on the client, downloading a file from WAN directly
> * Scenario: downloaded 100MB file from
> http://fra36-speedtest-1.tele2.net/ with curl
> * Average Download Speed: ~ 1100KB/s
> * Testresult:
> 
> ----
> curl http://fra36-speedtest-1.tele2.net/100MB.zip > /dev/null
> % Total    % Received % Xferd  Average Speed   Time    Time     Time 
> Current
> Dload  Upload   Total   Spent    Left  Speed
> 100  100M  100  100M    0     0  1113k      0  0:01:32  0:01:32 --:--:--
> 1196k
> ----
> 
> == Previous working system
> Before the upgrade to OpenBSD 6.2 we had a working system with the
> following setup:
> 
> * OpenBSD 6.1 / i386
> * OpenVPN 2.4.1 
> * firewall settings were the same [8]
> 
> The fact that we had installed i386 instead of amd64 was unintentional.
> 
> We had to change the virtual machine (QEMU) network interface from
> Realtek to
> Virtio to get a good performance on the external network interface.
> Hence
> the working system's external interface was operating on `vio`. The
> following
> system message buffer still lists the inefficient `re` device.
> 
> * System Message Buffer [3]
> 
> == Appendix
> * [0] https://www.xenproject.org/
> * [1] Firewall configuration: /etc/pf.conf
> ----
> ext_if="xnf0"
> vpn_if="tun0"
> vpn_ip="10.8.0.1"
> vpn_sn="10.8.0.0/24"
> server="10.8.0.99"
> 
> ssh_port="22"
> vpn_port="1094"
> iperf_port="5001"
> server_tcp_ip4_ports="{ 25, 53, 80, 443, 465, 587, 993, 5222, 5269, 9999
> }"
> server_udp_ip4_ports="{ 53, 5353, 67 }"
> 
> # Runtime Options
> set block-policy return
> set loginterface egress
> set skip on lo
> 
> #block log all
> match in all scrub (no-df max-mss 1440 random-id)
> 
> # forwarding from WAN through tunnel to client
> pass in quick on $ext_if proto { tcp } from any to ($ext_if) port
> $server_tcp_ip4_ports rdr-to $server
> pass in quick on $ext_if proto { udp } from any to ($ext_if) port
> $server_udp_ip4_ports rdr-to $server
> 
> # route outwards from tunnel
> pass out quick on $ext_if from $vpn_sn to any nat-to ($ext_if)
> 
> # incoming
> pass in quick on $ext_if proto { tcp } from any to ($ext_if) port {
> $ssh_port $iperf_port } flags S/SA synproxy state
> pass in quick on $ext_if proto { udp } from any to ($ext_if) port {
> $ssh_port $vpn_port $iperf_port }
> block drop in quick on $ext_if all
> 
> # out to WAN
> pass out quick on $ext_if from ($ext_if) to any modulate state
> block drop out quick on $ext_if all
> ----
> 
> * [2] system message buffer 6.2:
> ----
> openBSD 6.2 (GENERIC) #0: Thu Oct 12 19:16:36 CEST 2017
> r...@syspatch-62-amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC
> real mem = 2122313728 (2023MB)
> avail mem = 2051125248 (1956MB)
> mpath0 at root
> scsibus0 at mpath0: 256 targets
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xfc001000 (11 entries)
> bios0: vendor Xen version "4.9.0" date 09/10/2017
> bios0: Xen HVM domU
> acpi0 at bios0: rev 2
> acpi0: sleep states S3 S4 S5
> acpi0: tables DSDT FACP APIC HPET WAET SSDT SSDT
> acpi0: wakeup devices
> acpitimer0 at acpi0: 3579545 Hz, 32 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 11, 48 pins
> , remapped to apid 1
> cpu0 at mainbus0: apid 0 (boot processor)
> cpu0: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz, 2100.27 MHz
> cpu0:
> FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,SSE3,PCLMUL,SSSE3,CX16,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,FSGSBASE,SMEP,ERMS
> cpu0: 256KB 64b/line 8-way L2 cache
> cpu0: smt 0, core 0, package 0
> mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
> cpu0: apic clock running at 99MHz
> acpihpet0 at acpi0: 62500000 Hz
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpicpu0 at acpi0: C1(@1 halt!)
> "PNP0F13" at acpi0 not configured
> "PNP0700" at acpi0 not configured
> "ACPI0007" at acpi0 not configured
> pvbus0 at mainbus0: Xen 4.9
> xen0 at pvbus0: features 0x2705, 32 grant table frames, event channel 1
> xbf0 at xen0 backend 0 channel 5: disk
> scsibus1 at xbf0: 2 targets
> sd0 at scsibus1 targ 0 lun 0: <Xen, phy xvda 51712, 0000> SCSI3 0/direct
> fixed
> sd0: 51200MB, 512 bytes/sector, 104857600 sectors
> xbf1 at xen0 backend 0 channel 6: cdrom
> scsibus2 at xbf1: 2 targets
> cd0 at scsibus2 targ 0 lun 0: <Xen, qdisk xvdc 5174, 0000> SCSI3 5/cdrom
> fixed
> "vkbd" at xen0: device/vkbd/0 not configured
> xnf0 at xen0 backend 0 channel 7: address 00:50:56:34:10:49
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
> pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
> pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA,
> channel 0 wired to compatibility, channel 1 wired to compatibility
> pciide0: channel 0 disabled (no drives)
> atapiscsi0 at pciide0 channel 1 drive 0
> scsibus3 at atapiscsi0: 2 targets
> cd1 at scsibus3 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.5+> ATAPI 5/cdrom
> removable
> cd1(pciide0:1:0): using PIO mode 4, DMA mode 2
> uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 1 int
> 23
> piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: SMBus
> disabled
> xspd0 at pci0 dev 2 function 0 "XenSource Platform Device" rev 0x01
> vga1 at pci0 dev 3 function 0 "Cirrus Logic CL-GD5446" rev 0x00
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> isa0 at pcib0
> isadma0 at isa0
> fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> pckbc0 at isa0 port 0x60/5 irq 1 irq 12
> pckbd0 at pckbc0 (kbd slot)
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pms0 at pckbc0 (aux slot)
> wsmouse0 at pms0 mux 0
> pcppi0 at isa0 port 0x61
> spkr0 at pcppi0
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0 configuration 1 interface 0 "Intel UHCI root hub" rev
> 1.00/1.00 addr 1
> uhidev0 at uhub0 port 1 configuration 1 interface 0 "QEMU QEMU USB
> Tablet" rev 2.00/0.00 addr 2
> uhidev0: iclass 3/0
> ums0 at uhidev0: 3 buttons, Z dir
> wsmouse1 at ums0 mux 0
> vscsi0 at root
> scsibus4 at vscsi0: 256 targets
> softraid0 at root
> scsibus5 at softraid0: 256 targets
> root on sd0a (244889b124e5edd0.a) swap on sd0b dump on sd0b
> fd0 at fdc0 drive 1: density unknown
> ----
> 
> * [3] Working system message buffer before upgrade from 6.1 to 6.2
> ----
> OpenBSD 6.1 (GENERIC) #291: Sat Apr  1 13:49:08 MDT 2017
> dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
> cpu0: Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz ("GenuineIntel"
> 686-class) 2.11 GHz
> cpu0:
> FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,NXE,PAGE1GB,LONG,SSE3,PCLMUL,SSSE3,CX16,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,HV,LAHF,FSGSBASE,SMEP,ERMS
> real mem  = 2138583040 (2039MB)
> avail mem = 2084909056 (1988MB)
> mpath0 at root
> scsibus0 at mpath0: 256 targets
> mainbus0 at root
> bios0 at mainbus0: date 06/23/99, BIOS32 rev. 0 @ 0xfd578, SMBIOS rev.
> 2.4 @ 0xfc001000 (11 entries)
> bios0: vendor Xen version "4.9.0" date 09/10/2017
> bios0: Xen HVM domU
> acpi0 at bios0: rev 2
> acpi0: sleep states S3 S4 S5
> acpi0: tables DSDT FACP APIC HPET WAET SSDT SSDT
> acpi0: wakeup devices
> acpitimer0 at acpi0: 3579545 Hz, 32 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 11, 48 pins
> cpu0 at mainbus0: apid 0 (boot processor)
> mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
> cpu0: apic clock running at 100MHz
> acpihpet0 at acpi0: 62500000 Hz
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpicpu0 at acpi0: C1(@1 halt!)
> "PNP0F13" at acpi0 not configured
> "PNP0303" at acpi0 not configured
> "PNP0700" at acpi0 not configured
> "PNP0501" at acpi0 not configured
> "ACPI0007" at acpi0 not configured
> bios0: ROM list: 0xc0000/0x9600 0xc9800/0xe00 0xec000/0x4000!
> pvbus0 at mainbus0: Xen 4.9
> pci0 at mainbus0 bus 0: configuration mode 1 (bios)
> pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
> pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
> pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA,
> channel 0 wired to compatibility, channel 1 wired to compatibility
> wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK>
> wd0: 16-sector PIO, LBA48, 51200MB, 104857600 sectors
> wd0(pciide0:0:0): using PIO mode 4, DMA mode 2
> atapiscsi0 at pciide0 channel 1 drive 0
> scsibus1 at atapiscsi0: 2 targets
> cd0 at scsibus1 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.5+> ATAPI 5/cdrom
> removable
> cd0(pciide0:1:0): using PIO mode 4, DMA mode 2
> uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 1 int
> 23
> piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: SMBus
> disabled
> "XenSource Platform Device" rev 0x01 at pci0 dev 2 function 0 not
> configured
> vga1 at pci0 dev 3 function 0 "Cirrus Logic CL-GD5446" rev 0x00
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> re0 at pci0 dev 4 function 0 "Realtek 8139" rev 0x20: RTL8139C+
> (0x7480), apic 1 int 32, address 00:50:56:34:10:49
> rlphy0 at re0 phy 0: RTL internal PHY
> isa0 at pcib0
> isadma0 at isa0
> fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> fd0 at fdc0 drive 1: density unknown
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> pckbc0 at isa0 port 0x60/5 irq 1 irq 12
> pckbd0 at pckbc0 (kbd slot)
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pms0 at pckbc0 (aux slot)
> wsmouse0 at pms0 mux 0
> pcppi0 at isa0 port 0x61
> spkr0 at pcppi0
> npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
> usb0 at uhci0: USB revision 1.0
> uhub0 at usb0 configuration 1 interface 0 "Intel UHCI root hub" rev
> 1.00/1.00 addr 1
> nvram: invalid checksum
> uhidev0 at uhub0 port 1 configuration 1 interface 0 "QEMU QEMU USB
> Tablet" rev 2.00/0.00 addr 2
> uhidev0: iclass 3/0
> ums0 at uhidev0: 3 buttons, Z dir
> wsmouse1 at ums0 mux 0
> vscsi0 at root
> scsibus2 at vscsi0: 256 targets
> softraid0 at root
> scsibus3 at softraid0: 256 targets
> root on wd0a (244889b124e5edd0.a) swap on wd0b dump on wd0b
> clock: unknown CMOS layout
> ----
> 
> * [4] https://www.openbsd.org/62.html - search for "Generic network
> stack improvements"

Reply via email to