On 11 August 2010 15:12, James Peltier <[email protected]> wrote:
> Hello fellow OpenBSD'ers.
>
> I would just like to share some information with the list about our new
> firewall/bridge and perhaps get some input as to where I might be able to
look
> to squeeze some additional performance improvements.  I must say though, I
am
> very impressed with the performance improvements of networking/PF in the
> snapshots.
>
> Parameters:
> ===========
> bridge: OpenBSD 4.8-BETA (snapshot Aug 5, 2010)
> server: CentOS 5.5 w/Updates as of Aug 5, 2010 - head3)
> client: Ubuntu 10.04 w/Updates as of today - buckeye)
>
> iperf options on server/client
> ==============================
> server:
> -------
> iperf -s
>
> client:
> -------
> for count in 1 2 3 4 5; do iperf -i 1 -t 60 -c head3 && sleep 15; done
>
>
> Transfer indicates the amount of data transferred throughout the duration
of
> the test.  Bandwidth indicates the average bandwidth consumed for the test.
>
> [ ID] Interval       Transfer     Bandwidth
> [  1]  0.0-60.0 sec  5.28 GBytes    756 Mbits/sec
> [  2]  0.0-60.0 sec  5.20 GBytes    744 Mbits/sec
> [  3]  0.0-60.0 sec  5.12 GBytes    733 Mbits/sec
> [  4]  0.0-60.0 sec  5.30 GBytes    759 Mbits/sec
> [  5]  0.0-60.0 sec  5.08 GBytes    727 Mbits/sec
>
> So as can be seen here we are seeing data transfer rates of between 85 and
> 90MBps.  Pretty impressive for an first pass, untweaked configuration.
>
> However, there are some "unfortunates".  During these tests the system was
> running at between 80 and 95% interrupt, with the inverse being idle. This
> means that either there are some tweaks that I can add to counteract the
> interrupts, perhaps a tweak for interrupt mitigation, or that the hardware
> is currently not able to handle more than a single gigabit link running at
> full capacity.  In any case I would like to know what the developers see if
> better hardware would help as well as any performance tweaks that may help.
>
> These "unfortunates" are not really "bad news".  The box is certainly up to
> the task of dealing with our network traffic.  Some tweaking may help and
> for a first pass test it is a good baseline to work from and understand
> where the bottlenecks are.
>
>
>
>  Obligitory Configuration Information:
> ===============================
>
> # cat /etc/pf.conf
> # See pf.conf(5) for syntax and examples.
> # Remember to set net.inet.ip.forwarding=1 and/or
net.inet6.ip6.forwarding=1
> # in /etc/sysctl.conf if packets are to be forwarded between interfaces.
>
> set skip on lo
>
> # Table definitions
> table <bad_hosts> persist
>
> pass  in on vlan300             # to establish keep-state
>
> # block any host deemed for whatever reason to be bad
> block quick from <bad_hosts>
>
> pass out on vlan300
>
> # if a host is found to be connecting more than 100 times within 10 minutes
> # add them to bad_hosts table so they can be blocked
> pass in proto tcp to any port ssh keep state \
>                 (max-src-conn-rate 15/5, overload <bad_hosts> flush global)
>
> # By default, do not permit remote connections to X11
> #block in on ! lo0 proto tcp to port 6000:6010
>
>
> # cat /etc/sysctl.conf
> #       $OpenBSD: sysctl.conf,v 1.47 2009/06/09 11:52:54 sthen Exp $
> #
> # This file contains a list of sysctl options the user wants set at
> # boot time.  See sysctl(3) and sysctl(8) for more information on
> # the many available variables.
> #
> net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of IPv4
packets
> #net.inet.ip.mforwarding=1      # 1=Permit forwarding (routing) of IPv4
> multicast packets
> #net.inet.ip.multipath=1        # 1=Enable IP multipath routing
> #net.inet.icmp.rediraccept=1    # 1=Accept ICMP redirects
> #net.inet6.icmp6.rediraccept=0  # 0=Don't accept IPv6 ICMP redirects
> #net.inet6.ip6.forwarding=1     # 1=Permit forwarding (routing) of IPv6
packets
> #net.inet6.ip6.mforwarding=1    # 1=Permit forwarding (routing) of IPv6
> multicast packets
> #net.inet6.ip6.multipath=1      # 1=Enable IPv6 multipath routing
> #net.inet6.ip6.accept_rtadv=1   # 1=Permit IPv6 autoconf (forwarding must be
0)
> #net.inet.tcp.rfc1323=0         # 0=Disable TCP RFC1323 extensions (for if
tcp
> is slow)
> #net.inet.tcp.rfc3390=0         # 0=Disable RFC3390 for TCP window
increasing
> #net.inet.esp.enable=0          # 0=Disable the ESP IPsec protocol
> #net.inet.ah.enable=0           # 0=Disable the AH IPsec protocol
> #net.inet.esp.udpencap=0        # 0=Disable ESP-in-UDP encapsulation
> #net.inet.ipcomp.enable=1       # 1=Enable the IPCOMP protocol
> #net.inet.etherip.allow=1       # 1=Enable the Ethernet-over-IP protocol
> #net.inet.tcp.ecn=1             # 1=Enable the TCP ECN extension
> #net.inet.carp.preempt=1        # 1=Enable carp(4) preemption
> #net.inet.carp.log=1            # 1=Enable logging of carp(4) packets
> #ddb.panic=0                    # 0=Do not drop into ddb on a kernel panic
> #ddb.console=1                  # 1=Permit entry of ddb from the console
> #fs.posix.setuid=0              # 0=Traditional BSD chown() semantics
> #vm.swapencrypt.enable=0        # 0=Do not encrypt pages that go to swap
> #vfs.nfs.iothreads=4            # Number of nfsio kernel threads
> #net.inet.ip.mtudisc=0          # 0=Disable tcp mtu discovery
> #kern.usercrypto=0              # 0=Disable userland use of /dev/crypto
> #kern.splassert=2               # 2=Enable with verbose error messages
> #kern.nosuidcoredump=2          # 2=Put suid coredumps in /var/crash
> #kern.watchdog.period=32        # >0=Enable hardware watchdog(4) timer if
> available
> #kern.watchdog.auto=0           # 0=Disable automatic watchdog(4)
retriggering
> #machdep.allowaperture=2        # See xf86(4)
> #machdep.kbdreset=1             # permit console CTRL-ALT-DEL to do a nice
halt
>
>
> #pfctl -sa (without states)
> INFO:
> Status: Enabled for 5 days 03:51:55              Debug: err
>
> State Table                          Total             Rate
>  current entries                     6292
>  searches                      4258348201         9549.7/s
>  inserts                         45197611          101.4/s
>  removals                        45191319          101.3/s
> Counters
>  match                         2397196364         5375.9/s
>  bad-offset                             0            0.0/s
>  fragment                             441            0.0/s
>  short                                111            0.0/s
>  normalize                            370            0.0/s
>  memory                             14103            0.0/s
>  bad-timestamp                          0            0.0/s
>  congestion                           681            0.0/s
>  ip-option                         447562            1.0/s
>  proto-cksum                            0            0.0/s
>  state-mismatch                      7560            0.0/s
>  state-insert                           0            0.0/s
>  state-limit                            0            0.0/s
>  src-limit                              5            0.0/s
>  synproxy                               0            0.0/s
>
> TIMEOUTS:
> tcp.first                   120s
> tcp.opening                  30s
> tcp.established           86400s
> tcp.closing                 900s
> tcp.finwait                  45s
> tcp.closed                   90s
> tcp.tsdiff                   30s
> udp.first                    60s
> udp.single                   30s
> udp.multiple                 60s
> icmp.first                   20s
> icmp.error                   10s
> other.first                  60s
> other.single                 30s
> other.multiple               60s
> frag                         30s
> interval                     10s
> adaptive.start             6000 states
> adaptive.end              12000 states
> src.track                     0s
>
> LIMITS:
> states        hard limit    10000
> src-nodes     hard limit    10000
> frags         hard limit     5000
> tables        hard limit     1000
> table-entries hard limit   200000
>
> TABLES:
> bad_hosts
>
>
>
> #dmesg
>
> OpenBSD 4.8-beta (GENERIC.MP) #259: Tue Aug  3 09:06:37 MDT 2010
>    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> real mem = 3487244288 (3325MB)
> avail mem = 3380592640 (3223MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.5 @ 0xcff9c000 (46 entries)
> bios0: vendor Dell Inc. version "1.4.3" date 05/15/2009
> bios0: Dell Inc. PowerEdge R200
> acpi0 at bios0: rev 2
> acpi0: tables DSDT FACP APIC SPCR HPET MCFG WDAT SLIC ERST HEST BERT EINJ
SSDT
> SSDT SSDT
> acpi0: wakeup devices PCI0(S5)
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> cpu0 at mainbus0: apid 0 (boot processor)
> cpu0: Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz, 2800.50 MHz
> cpu0:
>
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUS
H,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,EST,TM2,SSSE3,CX1
6,xTPR,PDCM,SSE4.1,XSAVE,NXE,LONG
>
> cpu0: 3MB 64b/line 8-way L2 cache
> cpu0: apic clock running at 266MHz
> cpu1 at mainbus0: apid 1 (application processor)
> cpu1: Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz, 2800.10 MHz
> cpu1:
>
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUS
H,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,EST,TM2,SSSE3,CX1
6,xTPR,PDCM,SSE4.1,XSAVE,NXE,LONG
>
> cpu1: 3MB 64b/line 8-way L2 cache
> ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
> ioapic0: misconfigured as apic 0, remapped to apid 2
> ioapic1 at mainbus0: apid 3 pa 0xfec10000, version 20, 24 pins
> ioapic1: misconfigured as apic 0, remapped to apid 3
> acpihpet0 at acpi0: 14318179 Hz
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpiprt1 at acpi0: bus 1 (PEX1)
> acpiprt2 at acpi0: bus 2 (SBE0)
> acpiprt3 at acpi0: bus 3 (PXHA)
> acpiprt4 at acpi0: bus 4 (SBE4)
> acpiprt5 at acpi0: bus 5 (SBE5)
> acpiprt6 at acpi0: bus 6 (COMP)
> acpicpu0 at acpi0: PSS
> acpicpu1 at acpi0: PSS
> ipmi at mainbus0 not configured
> cpu0: Enhanced SpeedStep 2800 MHz: speeds: 2800, 2400, 2133, 1867, 1600 MHz
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "Intel 3200/3210 Host" rev 0x01
> ppb0 at pci0 dev 1 function 0 "Intel 3200/3210 PCIE" rev 0x01: apic 2 int
16
> (irq 15)
> pci1 at ppb0 bus 1
> em0 at pci1 dev 0 function 0 "Intel PRO/1000 PT (82571EB)" rev 0x06: apic 2
int
> 16 (irq 15), address 00:15:17:d6:18:d0
> em1 at pci1 dev 0 function 1 "Intel PRO/1000 PT (82571EB)" rev 0x06: apic 2
int
> 17 (irq 14), address 00:15:17:d6:18:d1
> ppb1 at pci0 dev 28 function 0 "Intel 82801I PCIE" rev 0x02
> pci2 at ppb1 bus 2
> ppb2 at pci2 dev 0 function 0 "Intel PCIE-PCIE" rev 0x09
> pci3 at ppb2 bus 3
> ppb3 at pci0 dev 28 function 4 "Intel 82801I PCIE" rev 0x02
> pci4 at ppb3 bus 4
> bge0  at pci4 dev 0 function 0 "Broadcom BCM5721" rev 0x21, BCM5750 C1
> (0x4201): apic 2 int 16 (irq 15), address 00:25:64:3c:c1:0a
> brgphy0 at bge0 phy 1: BCM5750 10/100/1000baseT PHY, rev. 0
> ppb4 at pci0 dev 28 function 5 "Intel 82801I PCIE" rev 0x02
> pci5 at ppb4 bus 5
> bge1  at pci5 dev 0 function 0 "Broadcom BCM5721" rev 0x21, BCM5750 C1
> (0x4201): apic 2 int 17 (irq 14), address 00:25:64:3c:c1:0b
> brgphy1 at bge1 phy 1: BCM5750 10/100/1000baseT PHY, rev. 0
> uhci0 at pci0 dev 29 function 0 "Intel 82801I USB" rev 0x02: apic 2 int 21
(irq
> 11)
> uhci1 at pci0 dev 29 function 1 "Intel 82801I USB" rev 0x02: apic 2 int 20
(irq
> 10)
> uhci2 at pci0 dev 29 function 2 "Intel 82801I USB" rev 0x02: apic 2 int 21
(irq
> 11)
> ehci0 at pci0 dev 29 function 7 "Intel 82801I USB" rev 0x02: apic 2 int 21
(irq
> 11)
> usb0 at ehci0: USB revision 2.0
> uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
> ppb5 at pci0 dev 30 function 0 "Intel 82801BA Hub-to-PCI" rev 0x92
> pci6 at ppb5 bus 6
> vga1 at pci6 dev 5 function 0 "ATI ES1000" rev 0x02
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> radeondrm0 at vga1: apic 2 int 19 (irq 5)
> drm0 at radeondrm0
> pcib0 at pci0 dev 31 function 0 "Intel 82801IR LPC" rev 0x02
> pciide0  at pci0 dev 31 function 2 "Intel 82801I SATA" rev 0x02: DMA,
channel 0
> configured to native-PCI, channel 1 configured to native-PCI
> pciide0: using apic 2 int 23 (irq 6) for native-PCI interrupt
> wd0 at pciide0 channel 0 drive 0: <WDC WD1602ABKS-18N8A0>
> wd0: 16-sector PIO, LBA48, 152587MB, 312500000 sectors
> atapiscsi0 at pciide0 channel 0 drive 1
> scsibus0 at atapiscsi0: 2 targets
> cd0 at scsibus0 targ 0 lun 0: <TEAC, DVD-ROM DV28SV, D.0L> ATAPI 5/cdrom
> removable
> wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 6
> cd0(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 5
> usb1 at uhci0: USB revision 1.0
> uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb2 at uhci1: USB revision 1.0
> uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb3 at uhci2: USB revision 1.0
> uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> isa0 at pcib0
> isadma0 at isa0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com0: console
> pckbc0 at isa0 port 0x60/5
> pcppi0 at isa0 port 0x61
> spkr0 at pcppi0
> mtrr: Pentium Pro MTRR support
> uhub4 at uhub0 port 5 "Cypress Semiconductor USB2 Hub" rev 2.00/0.0b addr 2
> uhidev0 at uhub2 port 2 configuration 1 interface 0 "Avocent Dell 03R874"
rev
> 1.10/1.00 addr 2
> uhidev0: iclass 3/1
> ukbd0 at uhidev0: 8 modifier keys, 6 key codes, country code 33
> wskbd0 at ukbd0: console keyboard, using wsdisplay0
> uhidev1 at uhub2 port 2 configuration 1 interface 1 "Avocent Dell 03R874"
rev
> 1.10/1.00 addr 2
> uhidev1: iclass 3/1, 3 report ids
> ums0 at uhidev1 reportid 1: 5 buttons, Z dir
> wsmouse0 at ums0 mux 0
> uhid0 at uhidev1 reportid 2: input=2, output=0, feature=0
> uhid1 at uhidev1 reportid 3: input=1, output=0, feature=0
> softraid0 at root
> root on wd0a swap on wd0b dump on wd0b
>
> ---
> James A. Peltier     [email protected]
>
>

Could you perform the same test using tcpbench between two openbsd boxes ?

I never had the chance to test it under a heavy load like yours.

Reply via email to