Splitting download bandwidth by groups and fairly sharing upload



  • Change my subject line in attempt to get more answers and benefit other users.

    (Tried to make the subject for this thread but could not do it wright.  I don't have enough terminology to do it in a condensed subject line.)

    I have 50 computers LAN, but like two computers use extensive burst downloads, sharing one single WAN to Internet.

    One does hundreds of file downloads, and the other uses streaming.  The other computers use the bandwidth typically as Web Clients.

    I would like to have 2 highways.  In Highway 1 have the regular 48 computers sharing their bandwidth segment proportionally (let say 10MB of 40MB).  In Highway 2 have the two extensive burst download computers sharing their bandwidth segment proportionally (let say 30MB of 40MB).

    Proportionally I mean that from 10MB if there are 10 connections each will have 1MB, but if there are only 1 it will have the full 10MB.

    Maybe use MAC address or IPs to determine which highway to direct the traffic for the computers.

    The Download total is 40MB.

    Then have for Upload only one Highway for all computers sharing the bandwidth proportionally (The upload total is 3MB).



  • You could get your 80/20 rule by creating two HFSC queues on your LAN interface, one with 10Mb and the other with 30Mb, set "Codel Active queue" for each of them, then just create rules that assign your traffic based on IP to the two different queues. For your WAN, just set the shaper to Codel and 3Mb, no queues needed.



  • @Harvy66:

    You could get your 80/20 rule by creating two HFSC queues on your LAN interface, one with 10Mb and the other with 30Mb, set "Codel Active queue" for each of them, then just create rules that assign your traffic based on IP to the two different queues. For your WAN, just set the shaper to Codel and 3Mb, no queues needed.

    Could you provide some screen view.  I have pfsense 2.3.2-Release.

    I went to Firewall -> Traffic Shaper -> By Queue. But I can't add anything there.



  • Can I use Limiters for a solution for this thread?

    Assuming Alias HighVolume.

    Maybe I can make 3 Limiters.

    LimiterOne for 30MB Download
    LimiterTwo for 10MB Download
    LimiterThree for 3MB Upload

    Then create Two Rules.
    Rule1 with In/Out Pipe LimiterThree/LimiterOne for Source Alias HighVolume
    Rule2 with In/Out Pipe LimiterThree/LimiterTwo for Source "invert match" Alias HighVolume

    The problem is that if computers in HighVolume are not connected the others wont use the 30MB bandwidth segment.
    Is there a way that I can allow the not HighVolume computers to use that bandwidth?



  • I am wondering.

    Assuming Alias HighVolume.

    Maybe I can make 3 Limiters.

    LimiterOne for 30MB Download
    LimiterTwo for 40MB Download (instead of 10MB)
    LimiterThree for 3MB Upload

    Then create Two Rules.
    Rule1 with In/Out Pipe LimiterThree/LimiterOne for Source Alias HighVolume
    Rule2 with In/Out Pipe LimiterThree/LimiterTwo for Source "invert match" Alias HighVolume

    What will happen when the HighVolume computers are not connected?
    I guess since the LimiterTwo is set to 40MB, the non HighVolume computer will use the full bandwidth.  Please confirm.

    What will happen when the HighVolume computers are indeed connected?
    I guess HighVolume computer will try to use their limit but will have to compete for the bandwidth.  Please confirm.

    Will the order of the rules gives priority to the HighVolume computers to allow them to reach their limit (30MB) and will push the others computers to their 10MB "virtual" limit?



  • Having a better understanding of the problem can you experts suggest a better subject for this thread so I can change it for the benefit of others with similar problem.



  • I find naming things harder than all of the other problems in CS. Concurrency is trivial comparatively.

    "Splitting download bandwidth by groups and fairly sharing upload"?