Merge branch 'pie' of https://github.com/mimugmail/core into mimugmail-pie

This commit is contained in:
Ad Schellevis 2018-10-11 08:36:39 +02:00
commit 7b1e838109
4 changed files with 95 additions and 45 deletions

View File

@ -95,6 +95,12 @@
<advanced>true</advanced>
<help>The number of flow queues that are created and managed, leave empty for defaults</help>
</field>
<field>
<id>pipe.pie_enable</id>
<label>Enable PIE</label>
<type>checkbox</type>
<help>Enable PIE active queue management</help>
</field>
<field>
<id>pipe.delay</id>
<label>Delay</label>

View File

@ -60,6 +60,12 @@
<type>checkbox</type>
<advanced>true</advanced>
<help>Explicit Congestion Notification</help>
</field>
<field>
<id>queue.pie_enable</id>
<label>Enable PIE</label>
<type>checkbox</type>
<help>Enable PIE active queue management</help>
</field>
<field>
<id>queue.description</id>

View File

@ -55,48 +55,67 @@
<ValidationMessage>bucket size should be between 1...65535</ValidationMessage>
</buckets>
<scheduler type="OptionField">
<Required>N</Required>
<default></default>
<BlankDesc>Weighted Fair Queueing</BlankDesc>
<OptionValues>
<fifo>FIFO</fifo>
<rr>Deficit Round Robin</rr>
<qfq>QFQ</qfq>
<fq_codel>FlowQueue-CoDel</fq_codel>
</OptionValues>
<Required>N</Required>
<default></default>
<BlankDesc>Weighted Fair Queueing</BlankDesc>
<OptionValues>
<fifo>FIFO</fifo>
<rr>Deficit Round Robin</rr>
<qfq>QFQ</qfq>
<fq_codel>FlowQueue-CoDel</fq_codel>
<fq_pie>FlowQueue-PIE</fq_pie>
</OptionValues>
</scheduler>
<codel_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<ValidationMessage>Only one option could be selected</ValidationMessage>
<type>SingleSelectConstraint</type>
<addFields>
<pie_enable>pie_enable</pie_enable>
</addFields>
</check001>
</Constraints>
</codel_enable>
<codel_target type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_target>
<codel_interval type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_interval>
<codel_ecn_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<default>0</default>
<Required>Y</Required>
</codel_ecn_enable>
<pie_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<reference>codel_enable.check001</reference>
</check001>
</Constraints>
</pie_enable>
<fqcodel_quantum type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_quantum>
<fqcodel_limit type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_limit>
<fqcodel_flows type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>65535</MaximumValue>
</fqcodel_flows>
<origin type="TextField">
<Required>N</Required>
@ -162,23 +181,41 @@
<ValidationMessage>bucket size should be between 1...65535</ValidationMessage>
</buckets>
<codel_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<ValidationMessage>CoDel and PIE can not be combined.</ValidationMessage>
<type>SingleSelectConstraint</type>
<addFields>
<pie_enable>pie_enable</pie_enable>
</addFields>
</check001>
</Constraints>
</codel_enable>
<codel_target type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_target>
<codel_interval type="IntegerField">
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
<Required>N</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>10000</MaximumValue>
</codel_interval>
<codel_ecn_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<default>0</default>
<Required>Y</Required>
</codel_ecn_enable>
<pie_enable type="BooleanField">
<default>0</default>
<Required>Y</Required>
<Constraints>
<check001>
<reference>codel_enable.check001</reference>
</check001>
</Constraints>
</pie_enable>
<description type="TextField">
<Required>Y</Required>
<mask>/^([\t\n\v\f\r 0-9a-zA-Z.\-,_\x{00A0}-\x{FFFF}]){1,255}$/u</mask>
@ -193,10 +230,10 @@
</queues>
<rules>
<rule type="ArrayField">
<enabled type="BooleanField">
<default>1</default>
<Required>Y</Required>
</enabled>
<enabled type="BooleanField">
<default>1</default>
<Required>Y</Required>
</enabled>
<sequence type="IntegerField">
<MinimumValue>1</MinimumValue>
<MaximumValue>1000000</MaximumValue>

View File

@ -52,8 +52,8 @@ pipe {{ pipe.number }} config bw {{ pipe.bandwidth }}{{ pipe.bandwidthMetric }}/
if pipe.fqcodel_quantum|default('') != '' %} quantum {{pipe.fqcodel_quantum}} {% endif %} {%
if pipe.fqcodel_limit|default('') != '' %} limit {{pipe.fqcodel_limit}} {% endif %} {%
if pipe.fqcodel_flows|default('') != '' %} flows {{pipe.fqcodel_flows}} {% endif %}
{% endif %}
{% endif %}
{% endif %}{%
elif pipe.pie_enable|default('0') == '1' and pipe.scheduler != 'fq_pie' %} pie {% endif %}
{% endfor %}
{% endif %}
@ -69,7 +69,8 @@ queue {{ queue.number }} config pipe {{ helpers.getUUID(queue.pipe).number
if queue.codel_enable|default('0') == '1' %} codel {%
if queue.codel_target|default('') != ''%} target {{queue.codel_target}} {% endif %}{%
if queue.codel_interval|default('') != ''%} interval {{queue.codel_interval}} {% endif %}{%
if queue.codel_ecn_enable|default('0') == '1'%} ecn {% else %} noecn {% endif %}
if queue.codel_ecn_enable|default('0') == '1'%} ecn {% else %} noecn {% endif %}{%
elif queue.pie_enable|default('0') == '1' %} pie
{% endif %}
{% endif %}