Coustum traffic shape on multiwan.



  • Cheers

    I'm setting up a pfsense at campus using 4 adsl lines to connect to the Internet. It's working like a charm with load ballance but I still need to get some traffic shaping running.

    I tried to take a simple config made with the wizard and multiply in hand with the xml backup file.

    Any one who has an ideer what this "has no parent" meens. The queue is a parent!

    When try to enable the config I get this error in the system log

    php: : There where error(s) loading the rules: /tmp/rules.debug:35: syntax error /tmp/rules.debug:49: queue qlanRoot1 has no parent /tmp/rules.debug:49: errors in queue definition /tmp/rules.debug:51: queue qlandef1 has no parent /tmp/rules.debug:51: errors in queue definition /tmp/rules.debug:53: queue qlanacks1 has no parent /tmp/rules.debug:53: errors in queue definition /tmp/rules.debug:55: queue qVOIPDown1 has no parent /tmp/rules.debug:55: errors in queue definition /tmp/rules.debug:57: queue q

    The xml of the config lookes like this:

    <shaper><schedulertype>hfsc</schedulertype>
        <queue><name>qwanRoot1</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>720</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qlanRoot1</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>8000</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qwandef1</name>
            <attachtoqueue>qwanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <priority>1</priority>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qlandef1</name>
            <priority>1</priority>
            <attachtoqueue>qlanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qwanacks1</name>
            <ack><attachtoqueue>qwanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qlanacks1</name>
            <ack><attachtoqueue>qlanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qVOIPUp1</name>
            <attachtoqueue>qwanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qVOIPDown1</name>
            <attachtoqueue>qlanRoot1</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qwanRoot2</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>720</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qlanRoot2</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>8000</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qwandef2</name>
            <attachtoqueue>qwanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <priority>1</priority>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qlandef2</name>
            <priority>1</priority>
            <attachtoqueue>qlanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qwanacks2</name>
            <ack><attachtoqueue>qwanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qlanacks2</name>
            <ack><attachtoqueue>qlanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qVOIPUp2</name>
            <attachtoqueue>qwanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qVOIPDown2</name>
            <attachtoqueue>qlanRoot2</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>

    <queue><name>qwanRoot3</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>720</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qlanRoot3</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>8000</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qwandef3</name>
            <attachtoqueue>qwanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <priority>1</priority>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qlandef3</name>
            <priority>1</priority>
            <attachtoqueue>qlanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qwanacks3</name>
            <ack><attachtoqueue>qwanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qlanacks3</name>
            <ack><attachtoqueue>qlanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qVOIPUp3</name>
            <attachtoqueue>qwanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qVOIPDown3</name>
            <attachtoqueue>qlanRoot3</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qwanRoot4</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>720</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qlanRoot4</name>
            <associatedrule>0</associatedrule>
            <priority>0</priority>
            <parentqueue>on</parentqueue>
            <bandwidth>8000</bandwidth>
            <bandwidthtype>Kb</bandwidthtype></queue>
        <queue><name>qwandef4</name>
            <attachtoqueue>qwanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <priority>1</priority>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qlandef4</name>
            <priority>1</priority>
            <attachtoqueue>qlanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <defaultqueue>true</defaultqueue>
            <realtime>on</realtime>
            <realtime3>1%</realtime3>
            <bandwidth>1</bandwidth>
            <bandwidthtype>%</bandwidthtype>
            <qlimit>500</qlimit></queue>
        <queue><name>qwanacks4</name>
            <ack><attachtoqueue>qwanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qlanacks4</name>
            <ack><attachtoqueue>qlanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>10%</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></ack></queue>
        <queue><name>qVOIPUp4</name>
            <attachtoqueue>qwanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <queue><name>qVOIPDown4</name>
            <attachtoqueue>qlanRoot4</attachtoqueue>
            <associatedrule>0</associatedrule>
            <priority>7</priority>
            <realtime>on</realtime>
            <realtime3>64Kb</realtime3>
            <bandwidth>25</bandwidth>
            <bandwidthtype>%</bandwidthtype></queue>
        <rule><descr>DiffServ/Lowdelay/Download</descr>
            <inqueue>qVOIPUp1</inqueue>
            <outqueue>qVOIPDown1</outqueue>
            <in-interface>wan</in-interface>
            <out-interface>lan</out-interface>
            <source>
                <any><destination><network>lan</network></destination>
            <iptos>lowdelay</iptos></any></rule>
        <rule><descr>DiffServ/Lowdelay/Upload</descr>
            <inqueue>qVOIPDown1</inqueue>
            <outqueue>qVOIPUp1</outqueue>
            <in-interface>lan</in-interface>
            <out-interface>wan</out-interface>
            <source>
                <network>lan</network>

    <destination><any></any></destination>
            <iptos>lowdelay</iptos></rule>
        <rule><descr>DiffServ/Lowdelay/Download</descr>
            <inqueue>qVOIPUp2</inqueue>
            <outqueue>qVOIPDown2</outqueue>
            <in-interface>opt1</in-interface>
            <out-interface>lan</out-interface>
            <source>
                <any><destination><network>lan</network></destination>
            <iptos>lowdelay</iptos></any></rule>
        <rule><descr>DiffServ/Lowdelay/Upload</descr>
            <inqueue>qVOIPDown2</inqueue>
            <outqueue>qVOIPUp2</outqueue>
            <in-interface>lan</in-interface>
            <out-interface>opt1</out-interface>
            <source>
                <network>lan</network>

    <destination><any></any></destination>
            <iptos>lowdelay</iptos></rule>
        <rule><descr>DiffServ/Lowdelay/Download</descr>
            <inqueue>qVOIPUp3</inqueue>
            <outqueue>qVOIPDown3</outqueue>
            <in-interface>opt2</in-interface>
            <out-interface>lan</out-interface>
            <source>
                <any><destination><network>lan</network></destination>
            <iptos>lowdelay</iptos></any></rule>
        <rule><descr>DiffServ/Lowdelay/Upload</descr>
            <inqueue>qVOIPDown3</inqueue>
            <outqueue>qVOIPUp3</outqueue>
            <in-interface>lan</in-interface>
            <out-interface>opt2</out-interface>
            <source>
                <network>lan</network>

    <destination><any></any></destination>
            <iptos>lowdelay</iptos></rule>
        <rule><descr>DiffServ/Lowdelay/Download</descr>
            <inqueue>qVOIPUp4</inqueue>
            <outqueue>qVOIPDown4</outqueue>
            <in-interface>opt3</in-interface>
            <out-interface>lan</out-interface>
            <source>
                <any><destination><network>lan</network></destination>
            <iptos>lowdelay</iptos></any></rule>
        <rule><descr>DiffServ/Lowdelay/Upload</descr>
            <inqueue>qVOIPDown4</inqueue>
            <outqueue>qVOIPUp4</outqueue>
            <in-interface>lan</in-interface>
            <out-interface>opt3</out-interface>
            <source>
                <network>lan</network>

    <destination><any></any></destination>
            <iptos>lowdelay</iptos></rule>
        <enable></enable></shaper>



  • I can tell you that the has no parent error will happen if you have a single error in any of your shaping.  If I remember right, we bascially just cloned all the rules from the wizard on wan 1, but like I mentioned I will try and get your more info as my time frees up.



  • Cheers Justin

    Well I'm also just trying to close the wisard. Most appreciated if you can find more info

    Regards Rasmus



  • This code is work in progress.  There was a bounty for work on this - multi-LAN is part of it.  Multi-wan is a tad more difficult, but I'm hoping the way I'm building the new code will allow for it.

    –Bill



  • Cool. I'm personally waiting for multi-wan and traffic shaping.



  • Any new progress reports on getting traffic shaping to work with load balancing?



  • @Gitsum:

    Any new progress reports on getting traffic shaping to work with load balancing?

    No.


Log in to reply