20 Mbps data streaming behind PF



I'm still working on porting our unicast stream servers behind PF
firewall runs on openbsd3.8.
That is a hidden, bridged firewall.

Now, Im testing with only one server, which is streaming from tcp port
443 to nearly 500-1000 instannt browser embedded java clients.
Traffic makes up to 2 ~ 3Mbps now, but in real envriron. it wil take
up to 20Mbps

At begginning, there was high numerical differences among the OS's
ESTABLISHED netstat table, # of states in PF and # of connected hosts
of out server application, wihch is stable for years.
and my state table overwhelmed.

I customized PF rules as follows. And Differences has become
negligable.

FURTHERMORE, I have noticed some unexpected BLOCKs at pflogd0
Because the traffic, I have targetted to pass over PF is 10 times
bigger than the situation at now;
I'm cautions about those BLOCKED PACKETS.

There are 2 sample symthoms below ,

symptom #1:
rule 10/(match) block in on fxp0: 212.175.131.3.48012 >server1.443: F
0:0(0) ack 1 win 8621
rule 10/(match) block in on fxp0: 85.103.159.194.1722 > server1.443: P
22321829:22321963(134) ack 1951655540 win 16744
rule 10/(match) block in on fxp0: 88.225.20.206.11274 > server1.443: R
2749563789:2749563789(0) win 64631

esp. This host one more connection on state table
rule 10/(match) block in on fxp0: 85.104.140.148.1113 > server1.443: F
2282441566:2282441566(0) ack 646237210 win 65020
and 4 more blocks with ( F 0:0(0) ack 1 win 65020)


symptom #2:
rule 11/(match) block out on fxp0: server1.443 > 85.100.93.186.2522:
[|tcp] (DF)

# Now I block 1 ~ 5 connections per minute with avg 2 conn pr min
( I'm not sure those have SYN flag set. I hope those have not;) and
dont know how to investigate


Especially the first one!
I explaind the secound one , BLOCK OUT, with the time limits i have
custmized on tcp options of the rule ( tcp.established 300)
because my box has already killed the state,because of unactivity OS
behind FW tries to sending data.
-- because my server streams realtime quatos, 5 min inactivity is
unusal. ---


BUT, i have sone doubts about the first one related to INBOUND BLOCKS
-- sometimes those hosts ( blocked) has already one or more states in
my table ( but it is verry common , more than one client sharing the
same LAN connect to our servers). But blocked source ports are
different from the ones in state table, - ofcourse -
-- some of the hosts could never establish a connection yet, I have
checked that those are all acknowledged. Now, they are trying :) but
has not complaint yet:)
-- none of the limits have exceeded. (max, max-src-states,
max-src-conn ..etc)


What may cause these problems ?
-- QUEUE limits ?
-- TCP options ( S/SA) ?
-- or what can else , which I have missed ?

Thank you for your help and forgive my this long msg takes time.


ilker.arab...@xxxxxxxxx
App. Developer



#pftop -vqueue
QUEUE BW SCH PRIO PKTS BYTES DROP_P
DROP_B QLEN BORROW SUSPEN P/S B/S
any_eurojava 14M cbq 2 2644516 558110K
6 1019 0 45521 11386 1314 403213



Some of My pf.conf

Options
-------------------
set block-policy drop
set state-policy floating

#set optimization aggressive
set optimization normal

set limit states 100000

set timeout { tcp.first 120, tcp.opening 30, tcp.established 3600}
set timeout { tcp.closing 300, tcp.finwait 45, tcp.closed 60 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 10000, adaptive.end 30000 }

set loginterface $ext_if

set skip on lo0
set skip on $int_if

scrub in on $ext_if all no-df
scrub on $ext_if all reassemble tcp

################# QUEUEING CLASSES ################
altq on $ext_if cbq bandwidth 20Mb queue {
internet,throttled,firewall,secure_out,trusted_in}

# Main Internet services of <secure> servers -
queue internet bandwidth 16Mb {any_eurojava,any_web,any_commons}
# EuroJava Service for any customers
queue any_eurojava bandwidth 14Mb priority 2 qlimit 500
cbq(borrow ecn)
queue any_web bandwidth 1Mb priority 4 cbq(borrow ecn)
queue any_commons bandwidth 1Mb priority 4 cbq(default borrow
ecn)
queue firewall bandwidth 1Mb priority 1 cbq(borrow ecn) #
firewall management queue
# secure servers, behind FW , established out queue
queue secure_out bandwidth 1Mb priority 5 cbq(borrow ecn)
# trusted hosts' traffic on un-common services
queue trusted_in bandwidth 1Mb priority 3 cbq(borrow ecn)
# throttled access for flooding hosts on throttled queuee
queue throttled bandwidth 1Mb priority 7 cbq(red)
########################################################
## RELATED RULES TO MY PROBLEM

# Rule 10
block in log on $ext_if all


# Rule 11
block out log on $ext_if all

#
block in log quick on $ext_if from <bad> to any

#

# my main PASS rule for tcp in to port 443

pass in on $ext_if proto tcp from any to <eurojava_servers> port
{$eurojava_ports} flags S/SA \
tag CHECK_MORE keep state ( max 5000, max-src-states 100, \
tcp.established 300, tcp.closing 10, tcp.finwait 10, tcp.closed
10 \
max-src-conn 100, overload <throttle>) \
queue any_eurojava
# CHECK rule for flooting customers
pass in on $ext_if from <throttle> tagged CHECK_MORE tag THROTTLED
keep state \
( max 500, tcp.established 60, tcp.closing 10, tcp.closed 5,
tcp.finwait 10 \
max-src-conn-rate 50/5, overload <bad> flush global)
\
queue throttled


## OUT BOUND TRAFFIC OF SECURED SERVERS
pass out on $ext_if proto tcp from <secure> to any flags S/SA modulate
state queue secure_out

.



Relevant Pages

  • Re: A question about capacity planning and scalability [2]...
    ... and this will be modeled as a Jackson network like this: ... We know for an M/M/c queue that: ... try to add servers with almost the same hardware ...
    (comp.programming.threads)
  • Re: About capacity planning and scalability ...
    ... of your M/M/n Servers Queues, if for example the number of computer ... this jackson network does in fact take into account ... the performance data of the fwptt stress webserver simulation.." ... managing a Queue requires not just understanding the ...
    (comp.programming)
  • PF with 20Mbps data streaming
    ... I'm still working on porting our unicast stream servers behind PF ... # of states in PF and # of connected hosts ... -- QUEUE limits? ... queue internet bandwidth 16Mb ...
    (comp.unix.bsd.openbsd.misc)
  • Re: A question about scalability...
    ... of your M/M/n Servers Queues, if for example the number of computer ... this jackson network does in fact take into account ... the performance data of the fwptt stress webserver simulation.." ... managing a Queue requires not ...
    (comp.programming.threads)
  • Re: Upload speed
    ... software on both machines and connecting to the same servers. ... I used Pure Networks Network Magic. ... 10Mbits/sec of exclusive bandwidth for the duration of the test. ...
    (alt.internet.wireless)