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

    PfSense and Shaping Facebook – The Definitive Guide.

    Scheduled Pinned Locked Moved Traffic Shaping
    27 Posts 7 Posters 9.4k 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.
    • H
      Harvy66
      last edited by

      Correct, but only for connections that have low latency relative to the bandwidth. This applies in my case because I have a 1Gb link, but it's rate limited to much less.

      1 Reply Last reply Reply Quote 0
      • DerelictD
        Derelict LAYER 8 Netgate
        last edited by

        I don't see any reason that can't go on LAN with more sanity.

        You are masking on destination address in both In and Out.  That will mean your users will get a limiter pipe for each facebook destination IP address, not for each LAN host.

        You can't match LAN hosts on WAN out floating rules because it's post-NAT (the source address will be the NAT address).

        Name: FBupPRI
        Bandwidth: 300 Kbit/s
        Mask: Source Address

        Name: FBdownPRI
        Bandwidth: 300 Kbit/s
        Mask: Destination address

        Interface LAN
        Action: Pass
        Protocol: any
        Source: LAN net
        Destination Type: Single host or Alias
        Destination Address: Facebook
        Advanced Features:
        In/Out: FBupPRI/FBdownPRI

        Result: 300kbit/sec up/down for each LAN host for all connections to Facebook addresses.

        Chattanooga, Tennessee, USA
        A comprehensive network diagram is worth 10,000 words and 15 conference calls.
        DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
        Do Not Chat For Help! NO_WAN_EGRESS(TM)

        1 Reply Last reply Reply Quote 0
        • cyber7C
          cyber7
          last edited by

          @Derelict:

          I don't see any reason that can't go on LAN with more sanity.

          You are masking on destination address in both In and Out.  That will mean your users will get a limiter pipe for each facebook destination IP address, not for each LAN host.

          You can't match LAN hosts on WAN out floating rules because it's post-NAT (the source address will be the NAT address).

          Name: FBupPRI
          Bandwidth: 300 Kbit/s
          Mask: Source Address

          Name: FBdownPRI
          Bandwidth: 300 Kbit/s
          Mask: Destination address

          Interface LAN
          Action: Pass
          Protocol: any
          Source: LAN net
          Destination Type: Single host or Alias
          Destination Address: Facebook
          Advanced Features:
          In/Out: FBupPRI/FBdownPRI

          Result: 300kbit/sec up/down for each LAN host for all connections to Facebook addresses.

          Hi Derelict
          Definitely going to try this!

          Thanx
          cyber7

          When you pause to think, do you start again?

          2.2.4-RELEASE (amd64)
          built on Sat Jul 25 19:57:37 CDT 2015
          FreeBSD 10.1-RELEASE-p15
          and
          pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

          1 Reply Last reply Reply Quote 0
          • G
            gratis.obake
            last edited by

            @Derelict:

            Result: 300kbit/sec up/down for each LAN host for all connections to Facebook addresses.

            some dumb question on this:
            each will have 300kbit up/down for every computer on LAN?, lets say I have 3 computers with this implemented and all of them are doing facebook simultaneously, total is 900kb up/down right?

            how about something 1,000kbit for them to share? like if only 1 user is accessing facebook, then he will have the whole 1,000kbits, but if others joins, then they'll share the 1,000kbits allocation

            is this possible perhaps?

            1 Reply Last reply Reply Quote 0
            • DerelictD
              Derelict LAYER 8 Netgate
              last edited by

              @gratis.obake:

              @Derelict:

              Result: 300kbit/sec up/down for each LAN host for all connections to Facebook addresses.

              some dumb question on this:
              each will have 300kbit up/down for every computer on LAN?, lets say I have 3 computers with this implemented and all of them are doing facebook simultaneously, total is 900kb up/down right?

              how about something 1,000kbit for them to share? like if only 1 user is accessing facebook, then he will have the whole 1,000kbits, but if others joins, then they'll share the 1,000kbits allocation

              is this possible perhaps?

              New top-level limiter:

              Name: FBupPRIPool
              Bandwidth: 1000 Kbit/s
              Mask: None

              While viewing FBupPRIPool click Add new queue

              Name: FBupPRIByHost
              Mask: Source address

              New top-level limiter:

              Name: FBdownPRIPool
              Bandwidth: 1000 Kbit/s
              Mask: None

              While viewing FBdownPRIPool click Add new queue

              Name: FBdownPRIByHost
              Mask: Destination address

              Interface LAN
              Action: Pass
              Protocol: any
              Source: LAN net
              Destination Type: Single host or Alias
              Destination Address: Facebook
              Advanced Features:
              In/Out: FBupPRIByHost/FBdownPRIByHost

              Result: 1000kbit/sec up/down Pool split among all LAN hosts for all connections to Facebook addresses. If only one host, it gets the full 1000kbit.

              Chattanooga, Tennessee, USA
              A comprehensive network diagram is worth 10,000 words and 15 conference calls.
              DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
              Do Not Chat For Help! NO_WAN_EGRESS(TM)

              1 Reply Last reply Reply Quote 0
              • G
                gratis.obake
                last edited by

                thanks sir, I'll try this one

                1 Reply Last reply Reply Quote 0
                • S
                  strike101
                  last edited by

                  Thanks it works  ;D

                  btw… what if i want to exclude a single pc/ip from the rule ?

                  thanks again

                  1 Reply Last reply Reply Quote 0
                  • DerelictD
                    Derelict LAYER 8 Netgate
                    last edited by

                    If it doesn't match the rule, or if it matches another rule above it it won't be put through the limiter.

                    So put a rule above it that matches only that IP address but doesn't set the limiter.

                    Chattanooga, Tennessee, USA
                    A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                    DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                    Do Not Chat For Help! NO_WAN_EGRESS(TM)

                    1 Reply Last reply Reply Quote 0
                    • cyber7C
                      cyber7
                      last edited by

                      @Derelict:

                      If it doesn't match the rule, or if it matches another rule above it it won't be put through the limiter.

                      So put a rule above it that matches only that IP address but doesn't set the limiter.

                      You can see my limiter works and works 100%  - I did, however make it 1MB/s because the experience at 300kb/s is just not on :)

                      Here you can see it in working (all the FB ip's and then my one single GW IP)

                      limiter.png
                      limiter.png_thumb

                      When you pause to think, do you start again?

                      2.2.4-RELEASE (amd64)
                      built on Sat Jul 25 19:57:37 CDT 2015
                      FreeBSD 10.1-RELEASE-p15
                      and
                      pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

                      1 Reply Last reply Reply Quote 0
                      • DerelictD
                        Derelict LAYER 8 Netgate
                        last edited by

                        Your point?

                        Chattanooga, Tennessee, USA
                        A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                        DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                        Do Not Chat For Help! NO_WAN_EGRESS(TM)

                        1 Reply Last reply Reply Quote 0
                        • cyber7C
                          cyber7
                          last edited by

                          @Derelict:

                          Your point?

                          Did you read the entire topic?  My point being the original limiting works 100% and does not create multiple 1MB pipes, but a single pipe.  ALL FB traffic goes through the pipe and the 1MB pipe gets shared by all the FB ip's.

                          YOUR point? ;)

                          cyber7

                          When you pause to think, do you start again?

                          2.2.4-RELEASE (amd64)
                          built on Sat Jul 25 19:57:37 CDT 2015
                          FreeBSD 10.1-RELEASE-p15
                          and
                          pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

                          1 Reply Last reply Reply Quote 0
                          • DerelictD
                            Derelict LAYER 8 Netgate
                            last edited by

                            Except it doesn't.  If what you're doing works for you, good on you.

                            It goes through a single pipe because it is post-NAT on WAN out, meaning a single source address, meaning a single pipe.

                            You are missing the ability for the limiter to try to share the available pipe among LAN users (the users you should care about) by using the child limiters.

                            But, again, if what you're doing works for you, have at it.

                            The user I was responding to asked how to exclude a single source IP.

                            Tell me how you are going to do that post-NAT on WAN out?

                            Chattanooga, Tennessee, USA
                            A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                            DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                            Do Not Chat For Help! NO_WAN_EGRESS(TM)

                            1 Reply Last reply Reply Quote 0
                            • cyber7C
                              cyber7
                              last edited by

                              Hi Derelict
                              Thanks for the extensive explanation!  Please could I pick your brain a bit?  (It will also help other users to understand when reading the topic)

                              Are you saying that the big difference between my original writing and yours is that with yours you can manage the LAN IP's you want to limit, but with mine, you do it for the entire LAN?

                              I suppose if it is true, it is actually ok in my environment where I want to limit ALL FB traffic, not just for some users…  BUT, the application of a 'child' limiter (in your example) has such potential for other technologies running away with your bandwidth.  For example, Dropbox and any other "clouded" services.

                              My other headache is YOUTUBE (googlevideo) and limiting that traffic...  I found a solution using squid, but that is beyond this subject matter.

                              kind regards
                              cyber7 (aka Aubrey Kloppers)

                              When you pause to think, do you start again?

                              2.2.4-RELEASE (amd64)
                              built on Sat Jul 25 19:57:37 CDT 2015
                              FreeBSD 10.1-RELEASE-p15
                              and
                              pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

                              1 Reply Last reply Reply Quote 0
                              • DerelictD
                                Derelict LAYER 8 Netgate
                                last edited by

                                @cyber7:

                                Hi Derelict
                                Thanks for the extensive explanation!  Please could I pick your brain a bit?  (It will also help other users to understand when reading the topic)

                                Are you saying that the big difference between my original writing and yours is that with yours you can manage the LAN IP's you want to limit, but with mine, you do it for the entire LAN?

                                It all depends on what your goals are.  Post-NAT WAN out rules cannot see what the source IP is.  That is quite a limiting factor in most cases.

                                I suppose if it is true, it is actually ok in my environment where I want to limit ALL FB traffic, not just for some users…  BUT, the application of a 'child' limiter (in your example) has such potential for other technologies running away with your bandwidth.  For example, Dropbox and any other "clouded" services.

                                Your stated goal is to limit facebook.  The hardest part about that is identifying facebook traffic.  Your rules won't do anything to limit dropbox either, since it's all on destination Facebook.

                                Limiters and child limiters work.  The outlier is usually bittorrent.  And that is usually because people put a WAN pass rule for their torrent port and don't set the limiter there too.

                                My other headache is YOUTUBE (googlevideo) and limiting that traffic…  I found a solution using squid, but that is beyond this subject matter.

                                The hard part is identifying the traffic.  Limiting identified traffic is pretty easy.  I think most people who go down this rabbit hole are overthinking things. (Facebook bad, google, ok, googlevideo bad, cnn ok).  Fuck it.  Just limit/shape them all and make the internet work.

                                Chattanooga, Tennessee, USA
                                A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                                DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                                Do Not Chat For Help! NO_WAN_EGRESS(TM)

                                1 Reply Last reply Reply Quote 0
                                • cyber7C
                                  cyber7
                                  last edited by

                                  @Derelict:

                                  The hard part is identifying the traffic.  Limiting identified traffic is pretty easy.  I think most people who go down this rabbit hole are overthinking things. (Facebook bad, google, ok, googlevideo bad, cnn ok).  Fuck it.  Just limit/shape them all and make the internet work.

                                  HAHAHA!  I like your attitude!  I am starting to really think in this direction as well!  I have set up limiters (1/2/3Mb/s).  It works, but after I implemented your solution, I am looking at making this more "smove" :)

                                  cyber7

                                  When you pause to think, do you start again?

                                  2.2.4-RELEASE (amd64)
                                  built on Sat Jul 25 19:57:37 CDT 2015
                                  FreeBSD 10.1-RELEASE-p15
                                  and
                                  pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

                                  1 Reply Last reply Reply Quote 0
                                  • cyber7C
                                    cyber7
                                    last edited by

                                    @Derelict:

                                    The hard part is identifying the traffic.  Limiting identified traffic is pretty easy.  I think most people who go down this rabbit hole are overthinking things. (Facebook bad, google, ok, googlevideo bad, cnn ok).  Fuck it.  Just limit/shape them all and make the internet work.

                                    HAHAHA!  I like your attitude!  I am starting to really think in this direction as well!  I have set up limiters (1/2/3Mb/s).  It works, but after I implemented your solution, I am looking at making this more "smove" :)

                                    cyber7

                                    And you, Derelict, my dear sir ARE A GENIUS!  Re-Wrote all my Limiters with your specs and WOW, soooo smove!

                                    cyber7-out

                                    When you pause to think, do you start again?

                                    2.2.4-RELEASE (amd64)
                                    built on Sat Jul 25 19:57:37 CDT 2015
                                    FreeBSD 10.1-RELEASE-p15
                                    and
                                    pfSense 2.3.2-RELEASE-p1 (amd64 full-install) on pfSense

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