Classless Queuing Disciplines


class pyqos.algorithms.classless_qdiscs.Cake(bandwidth=None, autorate_ingress=False, rtt_time=None, rtt_preset=None, priority_queue_preset=None, flow_isolation=None, nat=False, wash=False, split_gso=True, ack_filter=False, ack_filter_aggressive=False, memlimit=None, fwmark=None, atm_ptm_compensation=None, overhead=None, mpu=None, overhead_preset=None, ingress=False, *args, **kwargs)[source]

Cake (cake) qdisc

Complete documentation about this algorithm can be read here:


Parent object

ack_filter = None

Enable or disable ACK filtering, changing the priority of TCP ACK

ack_filter_aggressive = None

Enable aggressive mode for ACK filtering (useful only if ACK filter is enabled)

autorate_ingress = None

automatic compute of bandwidth. Can be used in conjunction of bandwidth to specify an initial estimate

bandwidth = None

bandwidth, in kbps. For now, does not allow a dynamic rate based on the parent one, as their is not a real purpose without allowing to handle priorities.

flow_isolation = None

flow isolation technique

fwmark = None

Mask applied on the packet firewall mark. If indicated, only packets matching this mask will be accepted by the qdisc.

ingress = None

Is the qdisc ingress. If false, is egress

memlimit = None

Memory limit, Bytes. If None, automatically computed by Cake.

mpu = None

Rounds each packet (including overhead) up to a minimum length, in Bytes

nat = None

Enable or disable NAT lookup

overhead = None

Overhead to apply to the size of each packet, in Bytes. Range is -64 to 256

overhead_preset = None

Overhead preset to apply to the size of each packet. Useless if an overhead size if given. As some preset can be repeated, can be a list of string.

priority_queue_preset = None

preset of priority queue

rtt_preset = None

rtt preset. Useless if an rtt_time is given.

rtt_time = None

rtt time, in ms

split_gso = None

Enable or disable General Segmentation Offload (GSO) splitting

wash = None

Enable or disable extra diffserv “washing”


class pyqos.algorithms.classless_qdiscs.FQCodel(limit=None, flows=None, target=None, interval=None, codel_quantum=None, *args, **kwargs)[source]

FQCodel (fq_codel) qdisc


Parent object

codel_quantum = None

is the number of bytes used as ‘deficit’ in the fair queuing algorithm

flows = None

is the number of flows into which the incoming packets are classified

interval = None

is used to ensure that the measured minimum delay does not become too stale

limit = None

when this limit is reached, incoming packets are dropped

target = None

is the acceptable minimum standing/persistent queue delay


class pyqos.algorithms.classless_qdiscs.PFIFO(id=None, parent=None, interface=None, *args, **kwargs)[source]



Parent object


class pyqos.algorithms.classless_qdiscs.SFQ(perturb=10, *args, **kwargs)[source]



Parent object

perturb = None

perturb parameter for sfq