On Fri, Oct 05, 2007 at 11:40:07AM -0400, Chris Smith wrote:
<SNIP>
> The performance issue is that normal web access is horrifically slow, yet 
> when 
> doing a download test the results show the proper bandwidth.

It takes a while for the packets to figure out how to get through the
router, once they do, the states are set up and everything works as it
should.  I can see that.

<SNIP>
> Basic scenario is 2 internal interfaces (2 separate subnets) and three 
> external (gateway) interfaces (a T1 line - the default gateway, a 4Mb/s cable 
> line, and an 8Mb/s cable line). My current testing is just using one system 
> to route-to one of the non-default gateways.

This means that each interface has a separate subnet with separate
gateways and all that?  

What is $ext_if and what is $wow_8_if?  You seem to use them kind of
randomly in your ruleset below.  I am guessing that $ext_if is the T1
(default gateway) and that $wow_8_if is one of the cable lines.

I think your problem is that if you route-to on your outbound interface
it happens after NAT.  NAT and route-to on egress is I think a bad
combination.  That it works at all is to me more surprising than that it
is slow.


> Simplified ruleset:
> ==================================================================
> nat on $ext_if inet tag WOW_8_NAT tagged WOW_8 -> $wow_8_ad1
> nat on $ext_if inet from $s3_if:network to any -> $ext_ad
> 
> pass in on $s3_if inet from $s3_if:network to !$alt_if flags S/SA keep state
> pass in on $s3_if inet from $orion7 to !$alt_if flags S/SA keep state tag W
> OW_8
> 
> pass out on $s3_if from any to $s3_if:network flags S/SA keep state
> 
> pass out on $ext_if all keep state flags S/SA
> pass out on $ext_if route-to ( $wow_8_if $wow_8_gw ) all keep state flags 
> S/SA 
> tagged WOW_8_NAT
> ==================================================================


Perhaps try this (I didn't):
(and keep state is default now so that simplifies the rules)
==================================================================
nat on $ext_if   inet from $s3_if:network to any -> $ext_ad
nat on $wow_8_if inet from $s3_if:network to any -> $wow_8_ad1

pass in on $s3_if inet from $s3_if:network to !$alt_if
pass in on $s3_if route-to ( $wow_8_if $wow_8_gw ) \
        inet from $orion7 to !$alt_if

pass out on $s3_if from any to $s3_if:network

pass out on $ext_if
pass out on $wow_8_if
==================================================================

You may also want some of the rules like are shown in the FAQ
http://www.openbsd.org/faq/pf/pools.html

  To ensure that packets with a source address belonging to $ext_if1 are
  always routed to $ext_gw1 (and similarly for $ext_if2 and $ext_gw2), the
  following two lines should be included in the ruleset:

    pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 \
       to any
    pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 \
       to any 

I am NOT sure that I am correct, but this may give you something else to
try.

I also think tcpdump on the different external interfaces when you are
trying this would probably help a lot.

l8rZ,
-- 
andrew - ICQ# 253198 - Jabber: [EMAIL PROTECTED]

BOFH excuse of the day: Not enough interrupts

Reply via email to