Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Traffic Shaper + Simple brigde possible?

    Scheduled Pinned Locked Moved Traffic Shaping
    13 Posts 4 Posters 11.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mogie
      last edited by

      @dvserg:

      I have this configuration. But Shapped only incoming traffic.

      Well, it's a first step. :) Any way to share how you've done it? Much manual configuration after (or without) the wizard?

      After all, is this feature possible at all? Traffic shaping on both in and out?

      1 Reply Last reply Reply Quote 0
      • M
        mogie
        last edited by

        It is possible I will try to DMZ the modemrouter to the pfsense and NAT it from there instead. However the transparent bridge shaper would be much easier and more reliable since I would not have to move all my settings from the modemrouter over to pfsense. Unfortunately it would be a whole set of webservers to NAT properly, which will bring me a lot of deadtime for my pretty critical internet services..

        1 Reply Last reply Reply Quote 0
        • D
          dvserg
          last edited by

          @mogie:

          @dvserg:

          I have this configuration. But Shapped only incoming traffic.

          Well, it's a first step. :) Any way to share how you've done it? Much manual configuration after (or without) the wizard?

          After all, is this feature possible at all? Traffic shaping on both in and out?

          I create basic rules by wizard and adapted them to my need's (delete one and add other).
          Shaping outgoing traffic i can't (tested different variants)

          SquidGuardDoc EN  RU Tutorial
          Localization ru_PFSense

          1 Reply Last reply Reply Quote 0
          • M
            mogie
            last edited by

            So to shape both incoming and outcoming, I will need to NAT the network then? Alternately use m0nowall for transparrent bridge? The DMZ alternative seems to it then? :)

            thanks for the reply btw!

            1 Reply Last reply Reply Quote 0
            • D
              dvserg
              last edited by

              I have this rules.debug (altq part)

              
              # System Aliases 
              loopback = "{ lo0 }"
              lan = "{ rl0  bridge0 }"
              wan = "{ xl0  bridge0 }"
              enc0 = "{ enc0 }"
              
               ...
              
              scrub all random-id  fragment reassemble
              altq on xl0 hfsc bandwidth 4Mb queue { qwanRoot }
              altq on rl0 hfsc bandwidth 256Kb queue { qlanRoot }
              
              queue qwanRoot bandwidth 4Mb priority 0 hfsc { qwandef, qwanacks, qwanHi, qRdpUp, qwebUp, qmailUp, smtp_up, qtestW }
              queue qlanRoot bandwidth 256Kb priority 0 hfsc { qlandef, qlanacks, qlanHi, qRdpDown, qwebDown, qmailDown, smtp_down, qtestL }
              queue qwandef bandwidth 20% priority 3 hfsc (  default realtime 10% )
              queue qlandef bandwidth 20% priority 3 hfsc (  default realtime 10% )
              queue qwanacks bandwidth 24Kb priority 7 hfsc (  realtime 8Kb )
              queue qlanacks bandwidth 24Kb priority 7 hfsc (  realtime 8Kb )
              queue qwanHi bandwidth 32Kb priority 7 hfsc (  realtime 16Kb )
              queue qlanHi bandwidth 32Kb priority 7 hfsc (  realtime 16Kb )
              queue qRdpUp bandwidth 48Kb priority 6 hfsc (  realtime(64Kb 300 32Kb) )
              queue qRdpDown bandwidth 48Kb priority 6 hfsc (  realtime(32Kb 300 32Kb) )
              queue qwebUp bandwidth 24Kb priority 4 hfsc (  red ecn linkshare 24Kb realtime(48Kb 300 24Kb) )
              queue qwebDown bandwidth 24Kb priority 4 hfsc (  red ecn rio realtime(48Kb 300 24Kb) )
              queue qmailUp bandwidth 24Kb priority 2 hfsc (  red ecn rio realtime(48Kb 300 12Kb) )
              queue qmailDown bandwidth 24Kb priority 2 hfsc (  red ecn upperlimit 48Kb realtime(48Kb 300 24Kb) )
              queue smtp_down bandwidth 4Kb priority 2 hfsc (  red ecn rio upperlimit 4Kb realtime 4Kb )
              queue smtp_up bandwidth 4Kb priority 2 hfsc (  red ecn rio upperlimit 4Kb realtime 4Kb )
              queue qtestW bandwidth 10Kb priority 2 hfsc (  red ecn rio realtime 10Kb )
              queue qtestL bandwidth 10Kb priority 2 hfsc (  red ecn rio realtime 10Kb )
              
              ...
              
              # UPnPd rdr anchor
              rdr-anchor "miniupnpd"
              
              block in all tag unshaped label "SHAPER: first match rule"
              pass in on  $wan proto esp from any  to any  keep state tagged unshaped tag qwandef 
              pass out on $lan proto esp from any to any keep state tagged qwandef tag qlandef
              pass in on  $lan proto esp from any  to any  keep state tagged unshaped tag qlandef 
              pass out on $wan proto esp from any to any keep state tagged qlandef tag qwandef
              pass in on  $wan proto ah from any  to any  keep state tagged unshaped tag qwandef 
              pass out on $lan proto ah from any to any keep state tagged qwandef tag qlandef
              pass in on  $lan proto ah from any  to any  keep state tagged unshaped tag qlandef 
              pass out on $wan proto ah from any to any keep state tagged qlandef tag qwandef
              pass in on  $wan proto icmp from any  to any  keep state tagged unshaped tag qwanHi 
              pass out on $lan proto icmp from any to any keep state tagged qwanHi tag qlanHi
              pass in on  $lan proto icmp from any  to any  keep state tagged unshaped tag qlanHi 
              pass out on $wan proto icmp from any to any keep state tagged qlanHi tag qwanHi
              pass in on  $lan proto tcp from any  to any port 53  keep state tagged unshaped tag qlanHi 
              pass out on $wan proto tcp from any to any port 53 keep state tagged qlanHi tag qwanHi
              pass in on  $lan proto udp from any  to any port 53  keep state tagged unshaped tag qlanHi 
              pass out on $wan proto udp from any to any port 53 keep state tagged qlanHi tag qwanHi
              pass in on  $wan proto tcp from any port 3389  to any  keep state tagged unshaped tag qRdpUp 
              pass out on $lan proto tcp from any to any keep state tagged qRdpUp tag qRdpDown
              pass in on  $lan proto tcp from any  to any port 3389  keep state tagged unshaped tag qRdpDown 
              pass out on $wan proto tcp from any to any port 3389 keep state tagged qRdpDown tag qRdpUp
              pass in on  $wan proto tcp from any  to any port 25  keep state tagged unshaped tag smtp_up 
              pass out on $lan proto tcp from any to any port 25 keep state tagged smtp_up tag smtp_down
              pass in on  $lan proto tcp from any  to any port 25  keep state tagged unshaped tag smtp_down 
              pass out on $wan proto tcp from any to any port 25 keep state tagged smtp_down tag smtp_up
              pass in on  $wan proto tcp from any port 110  to any  keep state tagged unshaped tag qmailUp 
              pass out on $lan proto tcp from any to any keep state tagged qmailUp tag qmailDown
              pass in on  $lan proto tcp from any  to any port 110  keep state tagged unshaped tag qmailDown 
              pass out on $wan proto tcp from any to any port 110 keep state tagged qmailDown tag qmailUp
              
              ...
              
              # pass traffic from firewall -> out
              anchor "firewallout"
              pass out quick on xl0 all keep state tagged qwandef queue (qwandef, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state tagged qwanHi queue (qwanHi, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state tagged qRdpUp queue (qRdpUp, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state tagged qwebUp queue (qwebUp, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state tagged qmailUp queue (qmailUp, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state tagged smtp_up queue (smtp_up, qwanacks) label "let out anything from firewall host itself"
              pass out quick on xl0 all keep state queue (qwandef, qwanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged qlandef queue (qlandef, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged qlanHi queue (qlanHi, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged qRdpDown queue (qRdpDown, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged qwebDown queue (qwebDown, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged qmailDown queue (qmailDown, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state tagged smtp_down queue (smtp_down, qlanacks) label "let out anything from firewall host itself"
              pass out quick on rl0 all keep state queue (qlandef, qlanacks) label "let out anything from firewall host itself"
              pass out quick on bridge0 all keep state label "let out anything from firewall host itself"
              pass out quick on $enc0 keep state label "IPSEC internal host to host"
              # make sure the user cannot lock himself out of the webGUI or SSH
              anchor "anti-lockout"
              pass in quick from any to 10.62.0.3 keep state label "anti-lockout web rule"
              
              

              SquidGuardDoc EN  RU Tutorial
              Localization ru_PFSense

              1 Reply Last reply Reply Quote 0
              • D
                dvserg
                last edited by

                Looking to last part on pass present real interfaces only
                In previous rules part present $wan and $lan aliases.
                In Last part bridge0 interfase not writed (only default)
                –-
                I rewrite last part as

                # pass traffic from firewall -> out
                anchor "firewallout"
                pass out quick on $wan all keep state tagged qwandef queue (qwandef, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $wan all keep state tagged qwanHi queue (qwanHi, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $wan all keep state tagged qRdpUp queue (qRdpUp, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $wan all keep state tagged qwebUp queue (qwebUp, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $wan all keep state tagged qmailUp queue (qmailUp, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $wan all keep state tagged smtp_up queue (smtp_up, qwanacks) label "let out anything from firewall host itself"
                pass out quick on xl0 all keep state queue (qwandef, qwanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged qlandef queue (qlandef, qlanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged qlanHi queue (qlanHi, qlanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged qRdpDown queue (qRdpDown, qlanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged qwebDown queue (qwebDown, qlanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged qmailDown queue (qmailDown, qlanacks) label "let out anything from firewall host itself"
                pass out quick on $lan all keep state tagged smtp_down queue (smtp_down, qlanacks) label "let out anything from firewall host itself"
                pass out quick on rl0 all keep state queue (qlandef, qlanacks) label "let out anything from firewall host itself"
                pass out quick on bridge0 all keep state label "let out anything from firewall host itself"
                pass out quick on $enc0 keep state label "IPSEC internal host to host"
                # make sure the user cannot lock himself out of the webGUI or SSH
                anchor "anti-lockout"
                pass in quick from any to 10.62.0.3 keep state label "anti-lockout web rule"
                
                

                Aliases $lan and $wan contains bridge0 inerface.
                After - i have work shaper IN and OUT (work two queue's).
                I unknown how this influense on system work, but shaper really need more what all other..

                –-
                Test to be continued.  ::)
                ps I already change my shaper sources for generate "right" ruleset.

                SquidGuardDoc EN  RU Tutorial
                Localization ru_PFSense

                1 Reply Last reply Reply Quote 0
                • D
                  dvserg
                  last edited by

                  /etc/inc/filter.inc[2972]:

                  
                  	foreach ($config['shaper']['queue'] as $queue) {
                  		if(!filter_is_queue_being_used_on_interface($queue['name'], $ifname, 'out'))
                  			continue;
                  		if ($ackq == "" || $defq == "") {
                  		    /* Shaper must not be enabled on this interface */
                  		    $q = "";
                  		} else {
                  		    $q = "queue ({$queue['name']}, {$ackq})";
                  		}
                  #	             $rule .="pass out quick on {$int} all keep state tagged {$queue['name']} {$q} label \"let out anything from firewall host itself\"\n";
                  # dvserg bridge fix
                  		$zzz = convert_real_interface_to_friendly_descr($int);
                  		$rule .="pass out quick on \${$zzz} all keep state tagged {$queue['name']} {$q} label \"let out anything from firewall host itself\"\n";
                  	}
                  
                  

                  SquidGuardDoc EN  RU Tutorial
                  Localization ru_PFSense

                  1 Reply Last reply Reply Quote 0
                  • X
                    xromain
                    last edited by

                    This patch will be applied in next RC ?

                    1 Reply Last reply Reply Quote 0
                    • D
                      dvserg
                      last edited by

                      @xromain:

                      This patch will be applied in next RC ?

                      No. This my private modification for ALTQ on BRIDGE.
                      I use this to achieve the desired effect, and don't know how this affect the entire system to other regimes.
                      But now i use WAN-LAN bridged and OPT1-inet interface. Ft first glance, it works well.

                      SquidGuardDoc EN  RU Tutorial
                      Localization ru_PFSense

                      1 Reply Last reply Reply Quote 0
                      • X
                        xromain
                        last edited by

                        I have tested your patch. But, outgoing traffic (from LAN to bridged WAN) is queued in qlandef instead custom queue. Only incoming traffic is correctly queued.

                        Here's my rules:

                        
                        loopback = "{ lo0 }"
                        lan = "{ re0  bridge0 }"
                        wan = "{ vr0  bridge0 }"
                        enc0 = "{ enc0 }"
                        
                        ...
                        
                        pass out quick on $wan all keep state tagged qwanDNS queue (qwanDNS, qwanacks) label "let out anything from firewall host itself"
                        pass out quick on $wan all keep state tagged qwanTEST queue (qwanTEST, qwanacks) label "let out anything from firewall host itself"
                        pass out quick on vr0 all keep state queue (qwandef, qwanacks) label "let out anything from firewall host itself"
                        pass out quick on $lan all keep state tagged qlanDNS queue (qlanDNS, qlanacks) label "let out anything from firewall host itself"
                        pass out quick on $lan all keep state tagged qlanTEST queue (qlanTEST, qlanacks) label "let out anything from firewall host itself"
                        pass out quick on re0 all keep state queue (qlandef, qlanacks) label "let out anything from firewall host itself"
                        pass out quick on bridge0 all keep state label "let out anything from firewall host itself"
                        pass out quick on $enc0 keep state label "IPSEC internal host to host"
                        
                        ...
                        
                        block in all tag unshaped label "SHAPER: first match rule"
                        pass in on  $wan proto udp from any  to X.X.X.X port 53  keep state tagged unshaped tag qwanDNS
                        pass out on $lan proto udp from any to X.X.X.X port 53 keep state tagged qwanDNS tag qlanDNS
                        pass in on  $wan proto udp from any  to Y.Y.Y.Y port 53  keep state tagged unshaped tag qwanDNS
                        pass out on $lan proto udp from any to Y.Y.Y.Y port 53 keep state tagged qwanDNS tag qlanDNS
                        pass in on  $wan proto udp from any  to X.X.X.X port 1024:65535  keep state tagged unshaped tag qwanTEST
                        pass out on $lan proto udp from any to X.X.X.X port 1024:65535 keep state tagged qwanTEST tag qlanTEST
                        pass in on  $lan proto udp from X.X.X.X port 53  to any  keep state tagged unshaped tag qlanDNS
                        pass out on $wan proto udp from any to any keep state tagged qlanDNS tag qwanDNS
                        pass in on  $lan proto udp from Y.Y.Y.Y port 53  to any  keep state tagged unshaped tag qlanDNS
                        pass out on $wan proto udp from any to any keep state tagged qlanDNS tag qwanDNS
                        pass in on  $lan proto udp from X.X.X.X port 1024:65535  to any  keep state tagged unshaped tag qlanTEST
                        pass out on $wan proto udp from any to any keep state tagged qlanTEST tag qwanTEST
                        
                        

                        What's wrong doctor ?

                        1 Reply Last reply Reply Quote 0
                        • E
                          eri--
                          last edited by

                          With the new shaper code you will be able to do bridge shaping and more.

                          This is just an update for people to not mess with their systems.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.