New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FireHOL/FireQOS marks not working #231

Closed
nitroxis opened this Issue Jul 7, 2017 · 21 comments

Comments

Projects
None yet
3 participants
@nitroxis

nitroxis commented Jul 7, 2017

Hello,
After trying to get traffic shaping based on marks to work for several hours I came to the conclusion that something is not working as expected. My goal was to shape traffic based on the MAC address of devices so I could give a specific device more priority/bandwidth than the rest. The router has an external PPPoE interface (ppp0) and an internal bridge (br0) that bridges 3 ethernet interfaces (eth0, eth1, eth2). It's operating in ipv4/ipv6 dual stack mode.

In my FireHOL configuration I do something like this:

world="ppp0"
home="br0"

tcpmss auto "${world}"

ipv4 masquerade "${world}"

mark46 0 PREROUTING
mark46 2 PREROUTING mac 12:34:56:78:9a:bc

ipv6 interface any v6interop proto icmpv6
        policy accept
        client ipv6neigh accept
        server ipv6neigh accept
        client ipv6router accept
        server ipv6router accept
        server ipv6mld accept

interface "${home}" home
        policy accept

interface "${world}" world
        policy drop
        protection strong
        client all accept
        server ping accept
        server dhcpv6 accept
        client dhcpv6 accept

router world2home inface "${world}" outface "${home}"
        protection bad-packets
        client all accept

router home2world inface "${home}" outface "${world}"
        route all accept
        client all accept
        server all accept

My FireQOS configuration looks like this:

FIREQOS_CONNMARK_RESTORE="act_connmark"

INPUT_SPEED="23500kbit"
OUTPUT_SPEED="4800kbit"
LINKTYPE="adsl local pppoe-llc"

server_mumble_ports="any/64738"
server_sips_ports="tcp/5061"

interface46 ppp0 world bidirectional $LINKTYPE input rate $INPUT_SPEED output rate $OUTPUT_SPEED
        class voip input commit 300kbit output commit 200kbit pfifo
                server sip
                client sip
                server sips
                client sips
                server rtp
                client rtp
                client stun
                client mumble

        class important
                client dns

        class mark4
                match mark 4

        class mark3
                match mark 3

        class mark2
                match mark 2

        class mark1
                match mark 1

        class mark0
                match mark 0

        class default

I would expect that VoIP traffic goes to class voip, non-voip traffic from the prioritized device goes to class mark2, the rest goes either to mark0 or default. However, this is not the case. VoIP traffic appears to be working as expected. All other traffic goes to the mark4 class, but it's not specific to mark4, it's always the first class with a match mark ... statement, no matter what mark it is. It's like match mark behaves the same as match all.

FireHOL/FireQOS version 3.1.3.

Output of uname -a:

Linux server.local 4.11.9-1-ARCH #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017 x86_64 GNU/Linux

The act_connmark module is loaded.

@ktsaou

This comment has been minimized.

Show comment
Hide comment
@ktsaou

ktsaou Jul 7, 2017

Member

Hi, marks are working in Linux QoS only for outbound traffic. QoS is applied in Linux before iptables, so there is no way to use marks for traffic shaping inbound traffic.

Member

ktsaou commented Jul 7, 2017

Hi, marks are working in Linux QoS only for outbound traffic. QoS is applied in Linux before iptables, so there is no way to use marks for traffic shaping inbound traffic.

@ktsaou

This comment has been minimized.

Show comment
Hide comment
@ktsaou

ktsaou Jul 7, 2017

Member

Now that I think of it, FireQOS should have printed a warning when you attempt to do it, to save your time.

Member

ktsaou commented Jul 7, 2017

Now that I think of it, FireQOS should have printed a warning when you attempt to do it, to save your time.

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 7, 2017

Member

I think act_connmark should be restoring connection marks for inbound? I don't know if it is working though.

Member

philwhineray commented Jul 7, 2017

I think act_connmark should be restoring connection marks for inbound? I don't know if it is working though.

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 7, 2017

Member

Lots of detail in #49 looks like it worked at some point.

The generated statements look reasonable at a glance (but I am no good with raw tc) so I am not sure what could be happening.

My only thoughts are that the act_connmark support probably predates bidirectional and ipv6 functionality, so maybe one of them is interfering?

Member

philwhineray commented Jul 7, 2017

Lots of detail in #49 looks like it worked at some point.

The generated statements look reasonable at a glance (but I am no good with raw tc) so I am not sure what could be happening.

My only thoughts are that the act_connmark support probably predates bidirectional and ipv6 functionality, so maybe one of them is interfering?

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 7, 2017

Well, regardless of whether inbound marks are restored or not, shouldn't all packets be matched by either the default or mark0 class? Why is all traffic matched by the first class that has a match mark statement?
If I move the mark1 class to the top, all traffic will be matched by that class instead.
And as far as I know, the act_connmark module should restore marks for inbound traffic, as @philwhineray pointed out.

nitroxis commented Jul 7, 2017

Well, regardless of whether inbound marks are restored or not, shouldn't all packets be matched by either the default or mark0 class? Why is all traffic matched by the first class that has a match mark statement?
If I move the mark1 class to the top, all traffic will be matched by that class instead.
And as far as I know, the act_connmark module should restore marks for inbound traffic, as @philwhineray pointed out.

@ktsaou

This comment has been minimized.

Show comment
Hide comment
@ktsaou

ktsaou Jul 10, 2017

Member

Most likely the restoration of the mark is wrong. @philwhineray any other ideas?

Member

ktsaou commented Jul 10, 2017

Most likely the restoration of the mark is wrong. @philwhineray any other ideas?

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 10, 2017

Member

Not really, sorry.

Does the mark also match incorrectly on egress traffic? What about without act_connmark? Those might help narrow down what is causing the problem but I'm not familiar with any tools that would help debug the problem directly.

Given that rules are produced like this:

/sbin/tc filter add dev ppp0-ifb parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13
...
/sbin/tc filter add dev ppp0-ifb parent 1:0 protocol ip prio 130 u32 match mark 0x000000c0 0x00001fc0 flowid 1:14

I don't really see how both could match (which I think is implied by whichever comes first being the end result) since they are looking for specific values. I find it much easier to believe that neither might match.

Member

philwhineray commented Jul 10, 2017

Not really, sorry.

Does the mark also match incorrectly on egress traffic? What about without act_connmark? Those might help narrow down what is causing the problem but I'm not familiar with any tools that would help debug the problem directly.

Given that rules are produced like this:

/sbin/tc filter add dev ppp0-ifb parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13
...
/sbin/tc filter add dev ppp0-ifb parent 1:0 protocol ip prio 130 u32 match mark 0x000000c0 0x00001fc0 flowid 1:14

I don't really see how both could match (which I think is implied by whichever comes first being the end result) since they are looking for specific values. I find it much easier to believe that neither might match.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

As far as I can tell, egress traffic is also matched by the first class that matches a mark. The tc commands are generated properly if I look at the output of fireqos debug. rmmod act_connmark doesn't appear to have any effect on this.

fireqos status world-out looks like this:

 color code (packets):  backlog  |  dropped  |  delayed  |  requeued
 Class Utilization on world-out (ppp0 output => ppp0) - values in Kbit/s
 TOTAL   voip import  mark4  mark3  mark2  mark1  mark0 defaul
   945      -      1    944      -      -      -      -      -
   676      -      -    676      -      -      -      -      -
    99      -      1     98      -      -      -      -      -
   114      -      -    114      -      -      -      -      -
    28      -      -     28      -      -      -      -      -
     -      -      -      -      -      -      -      -      -
    56      -      -     56      -      -      -      -      -
   702      -      -    702      -      -      -      -      -
     8      -      -      8      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
     3      1      -      3      -      -      -      -      -
   119      -      3    116      -      -      -      -      -
    45      -      -     45      -      -      -      -      -
    10      -      -     10      -      -      -      -      -
   251      -      -    251      -      -      -      -      -
   749      -      -    749      -      -      -      -      -
     1      -      -      1      -      -      -      -      -
    11      -      1     10      -      -      -      -      -
   395      -      8    387      -      -      -      -      -
   294      -      -    294      -      -      -      -      -

nitroxis commented Jul 10, 2017

As far as I can tell, egress traffic is also matched by the first class that matches a mark. The tc commands are generated properly if I look at the output of fireqos debug. rmmod act_connmark doesn't appear to have any effect on this.

fireqos status world-out looks like this:

 color code (packets):  backlog  |  dropped  |  delayed  |  requeued
 Class Utilization on world-out (ppp0 output => ppp0) - values in Kbit/s
 TOTAL   voip import  mark4  mark3  mark2  mark1  mark0 defaul
   945      -      1    944      -      -      -      -      -
   676      -      -    676      -      -      -      -      -
    99      -      1     98      -      -      -      -      -
   114      -      -    114      -      -      -      -      -
    28      -      -     28      -      -      -      -      -
     -      -      -      -      -      -      -      -      -
    56      -      -     56      -      -      -      -      -
   702      -      -    702      -      -      -      -      -
     8      -      -      8      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
     3      1      -      3      -      -      -      -      -
   119      -      3    116      -      -      -      -      -
    45      -      -     45      -      -      -      -      -
    10      -      -     10      -      -      -      -      -
   251      -      -    251      -      -      -      -      -
   749      -      -    749      -      -      -      -      -
     1      -      -      1      -      -      -      -      -
    11      -      1     10      -      -      -      -      -
   395      -      8    387      -      -      -      -      -
   294      -      -    294      -      -      -      -      -
@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

Same with fireqos status world-in:

 color code (packets):  backlog  |  dropped  |  delayed  |  requeued
 Class Utilization on world-in (ppp0 input => ppp0-ifb) - values in Kbit/s
 TOTAL   voip import  mark4  mark3  mark2  mark1  mark0 defaul
    11      -      -     11      -      -      -      -      -
     1      -      -      1      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
    19      -      -     19      -      -      -      -      -
     5      -      -      5      -      -      -      -      -
     4      -      -      4      -      -      -      -      -
    11      -      6      5      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
   471      -      -    471      -      -      -      -      -
   463      -      -    463      -      -      -      -      -
     -      -      -      -      -      -      -      -      -
   153      -      6    148      -      -      -      -      -
     3      -      -      3      -      -      -      -      -
     3      -      -      3      -      -      -      -      -
    86      -      -     86      -      -      -      -      -
     2      2      -      -      -      -      -      -      -
   100      4      -     95      -      -      -      -      -
     5      2      -      3      -      -      -      -      -
    21     14      -      7      -      -      -      -      -

There is nothing that would set mark 4 on any packet. And as I said, it doesn't matter which mark is matched, as long as the class is the first class that matches a mark.

nitroxis commented Jul 10, 2017

Same with fireqos status world-in:

 color code (packets):  backlog  |  dropped  |  delayed  |  requeued
 Class Utilization on world-in (ppp0 input => ppp0-ifb) - values in Kbit/s
 TOTAL   voip import  mark4  mark3  mark2  mark1  mark0 defaul
    11      -      -     11      -      -      -      -      -
     1      -      -      1      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
    19      -      -     19      -      -      -      -      -
     5      -      -      5      -      -      -      -      -
     4      -      -      4      -      -      -      -      -
    11      -      6      5      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
     6      -      -      6      -      -      -      -      -
   471      -      -    471      -      -      -      -      -
   463      -      -    463      -      -      -      -      -
     -      -      -      -      -      -      -      -      -
   153      -      6    148      -      -      -      -      -
     3      -      -      3      -      -      -      -      -
     3      -      -      3      -      -      -      -      -
    86      -      -     86      -      -      -      -      -
     2      2      -      -      -      -      -      -      -
   100      4      -     95      -      -      -      -      -
     5      2      -      3      -      -      -      -      -
    21     14      -      7      -      -      -      -      -

There is nothing that would set mark 4 on any packet. And as I said, it doesn't matter which mark is matched, as long as the class is the first class that matches a mark.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

Hmm, if I look at the output of tc -p filter show dev ppp0 it looks like there are no match lines for the classes at the end, which I guess are the mark classes:

filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match sport 5060
filter parent 1: protocol ipv6 pref 11 u32
filter parent 1: protocol ipv6 pref 11 u32 fh 801: ht divisor 1
filter parent 1: protocol ipv6 pref 11 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 20 u32
filter parent 1: protocol ip pref 20 u32 fh 802: ht divisor 1
filter parent 1: protocol ip pref 20 u32 fh 802::800 order 2048 key ht 802 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 5060
filter parent 1: protocol ipv6 pref 21 u32
filter parent 1: protocol ipv6 pref 21 u32 fh 803: ht divisor 1
filter parent 1: protocol ipv6 pref 21 u32 fh 803::800 order 2048 key ht 803 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 30 u32
filter parent 1: protocol ip pref 30 u32 fh 804: ht divisor 1
filter parent 1: protocol ip pref 30 u32 fh 804::800 order 2048 key ht 804 bkt 0 flowid 1:11 not_in_hw
  match sport 5061
filter parent 1: protocol ipv6 pref 31 u32
filter parent 1: protocol ipv6 pref 31 u32 fh 805: ht divisor 1
filter parent 1: protocol ipv6 pref 31 u32 fh 805::800 order 2048 key ht 805 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 40 u32
filter parent 1: protocol ip pref 40 u32 fh 806: ht divisor 1
filter parent 1: protocol ip pref 40 u32 fh 806::800 order 2048 key ht 806 bkt 0 flowid 1:11 not_in_hw
  match dport 5061
filter parent 1: protocol ipv6 pref 41 u32
filter parent 1: protocol ipv6 pref 41 u32 fh 807: ht divisor 1
filter parent 1: protocol ipv6 pref 41 u32 fh 807::800 order 2048 key ht 807 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 50 u32
filter parent 1: protocol ip pref 50 u32 fh 808: ht divisor 1
filter parent 1: protocol ip pref 50 u32 fh 808::800 order 2048 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::801 order 2049 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::802 order 2050 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::803 order 2051 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::804 order 2052 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::805 order 2053 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::806 order 2054 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::807 order 2055 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::808 order 2056 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::809 order 2057 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::80a order 2058 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match sport 20000
filter parent 1: protocol ipv6 pref 51 u32
filter parent 1: protocol ipv6 pref 51 u32 fh 809: ht divisor 1
filter parent 1: protocol ipv6 pref 51 u32 fh 809::800 order 2048 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::801 order 2049 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::802 order 2050 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::803 order 2051 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::804 order 2052 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::805 order 2053 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::806 order 2054 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::807 order 2055 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::808 order 2056 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::809 order 2057 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::80a order 2058 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 60 u32
filter parent 1: protocol ip pref 60 u32 fh 80a: ht divisor 1
filter parent 1: protocol ip pref 60 u32 fh 80a::800 order 2048 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::801 order 2049 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::802 order 2050 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::803 order 2051 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::804 order 2052 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::805 order 2053 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::806 order 2054 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::807 order 2055 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::808 order 2056 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::809 order 2057 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::80a order 2058 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 20000
filter parent 1: protocol ipv6 pref 61 u32
filter parent 1: protocol ipv6 pref 61 u32 fh 80b: ht divisor 1
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::800 order 2048 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::801 order 2049 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::802 order 2050 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::803 order 2051 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::804 order 2052 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::805 order 2053 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::806 order 2054 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::807 order 2055 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::808 order 2056 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::809 order 2057 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::80a order 2058 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 70 u32
filter parent 1: protocol ip pref 70 u32 fh 80c: ht divisor 1
filter parent 1: protocol ip pref 70 u32 fh 80c::800 order 2048 key ht 80c bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 3478
filter parent 1: protocol ipv6 pref 71 u32
filter parent 1: protocol ipv6 pref 71 u32 fh 80d: ht divisor 1
filter parent 1: protocol ipv6 pref 71 u32 fh 80d::800 order 2048 key ht 80d bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 80 u32
filter parent 1: protocol ip pref 80 u32 fh 80e: ht divisor 1
filter parent 1: protocol ip pref 80 u32 fh 80e::800 order 2048 key ht 80e bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 3479
filter parent 1: protocol ipv6 pref 81 u32
filter parent 1: protocol ipv6 pref 81 u32 fh 80f: ht divisor 1
filter parent 1: protocol ipv6 pref 81 u32 fh 80f::800 order 2048 key ht 80f bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 90 u32
filter parent 1: protocol ip pref 90 u32 fh 810: ht divisor 1
filter parent 1: protocol ip pref 90 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:11 not_in_hw
  match dport 64738
filter parent 1: protocol ipv6 pref 91 u32
filter parent 1: protocol ipv6 pref 91 u32 fh 811: ht divisor 1
filter parent 1: protocol ipv6 pref 91 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 812: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 812::800 order 2048 key ht 812 bkt 0 flowid 1:12 not_in_hw
  match IP protocol 17
  match dport 53
filter parent 1: protocol ipv6 pref 101 u32
filter parent 1: protocol ipv6 pref 101 u32 fh 813: ht divisor 1
filter parent 1: protocol ipv6 pref 101 u32 fh 813::800 order 2048 key ht 813 bkt 0 flowid 1:12 not_in_hw
filter parent 1: protocol ip pref 110 u32
filter parent 1: protocol ip pref 110 u32 fh 814: ht divisor 1
filter parent 1: protocol ip pref 110 u32 fh 814::800 order 2048 key ht 814 bkt 0 flowid 1:12 not_in_hw
  match dport 53
filter parent 1: protocol ipv6 pref 111 u32
filter parent 1: protocol ipv6 pref 111 u32 fh 815: ht divisor 1
filter parent 1: protocol ipv6 pref 111 u32 fh 815::800 order 2048 key ht 815 bkt 0 flowid 1:12 not_in_hw
filter parent 1: protocol ip pref 120 u32
filter parent 1: protocol ip pref 120 u32 fh 816: ht divisor 1
filter parent 1: protocol ip pref 120 u32 fh 816::800 order 2048 key ht 816 bkt 0 flowid 1:13 not_in_hw
filter parent 1: protocol ipv6 pref 121 u32
filter parent 1: protocol ipv6 pref 121 u32 fh 817: ht divisor 1
filter parent 1: protocol ipv6 pref 121 u32 fh 817::800 order 2048 key ht 817 bkt 0 flowid 1:13 not_in_hw
filter parent 1: protocol ip pref 130 u32
filter parent 1: protocol ip pref 130 u32 fh 818: ht divisor 1
filter parent 1: protocol ip pref 130 u32 fh 818::800 order 2048 key ht 818 bkt 0 flowid 1:14 not_in_hw
filter parent 1: protocol ipv6 pref 131 u32
filter parent 1: protocol ipv6 pref 131 u32 fh 819: ht divisor 1
filter parent 1: protocol ipv6 pref 131 u32 fh 819::800 order 2048 key ht 819 bkt 0 flowid 1:14 not_in_hw
filter parent 1: protocol ip pref 140 u32
filter parent 1: protocol ip pref 140 u32 fh 81a: ht divisor 1
filter parent 1: protocol ip pref 140 u32 fh 81a::800 order 2048 key ht 81a bkt 0 flowid 1:15 not_in_hw
filter parent 1: protocol ipv6 pref 141 u32
filter parent 1: protocol ipv6 pref 141 u32 fh 81b: ht divisor 1
filter parent 1: protocol ipv6 pref 141 u32 fh 81b::800 order 2048 key ht 81b bkt 0 flowid 1:15 not_in_hw
filter parent 1: protocol ip pref 150 u32
filter parent 1: protocol ip pref 150 u32 fh 81c: ht divisor 1
filter parent 1: protocol ip pref 150 u32 fh 81c::800 order 2048 key ht 81c bkt 0 flowid 1:16 not_in_hw
filter parent 1: protocol ipv6 pref 151 u32
filter parent 1: protocol ipv6 pref 151 u32 fh 81d: ht divisor 1
filter parent 1: protocol ipv6 pref 151 u32 fh 81d::800 order 2048 key ht 81d bkt 0 flowid 1:16 not_in_hw
filter parent 1: protocol ip pref 160 u32
filter parent 1: protocol ip pref 160 u32 fh 81e: ht divisor 1
filter parent 1: protocol ip pref 160 u32 fh 81e::800 order 2048 key ht 81e bkt 0 flowid 1:17 not_in_hw
filter parent 1: protocol ipv6 pref 161 u32
filter parent 1: protocol ipv6 pref 161 u32 fh 81f: ht divisor 1
filter parent 1: protocol ipv6 pref 161 u32 fh 81f::800 order 2048 key ht 81f bkt 0 flowid 1:17 not_in_hw

Maybe this has something to do with the issue? Or am I just misinterpreting the cryptic output of tc filter show

nitroxis commented Jul 10, 2017

Hmm, if I look at the output of tc -p filter show dev ppp0 it looks like there are no match lines for the classes at the end, which I guess are the mark classes:

filter parent 1: protocol ip pref 10 u32
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match sport 5060
filter parent 1: protocol ipv6 pref 11 u32
filter parent 1: protocol ipv6 pref 11 u32 fh 801: ht divisor 1
filter parent 1: protocol ipv6 pref 11 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 20 u32
filter parent 1: protocol ip pref 20 u32 fh 802: ht divisor 1
filter parent 1: protocol ip pref 20 u32 fh 802::800 order 2048 key ht 802 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 5060
filter parent 1: protocol ipv6 pref 21 u32
filter parent 1: protocol ipv6 pref 21 u32 fh 803: ht divisor 1
filter parent 1: protocol ipv6 pref 21 u32 fh 803::800 order 2048 key ht 803 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 30 u32
filter parent 1: protocol ip pref 30 u32 fh 804: ht divisor 1
filter parent 1: protocol ip pref 30 u32 fh 804::800 order 2048 key ht 804 bkt 0 flowid 1:11 not_in_hw
  match sport 5061
filter parent 1: protocol ipv6 pref 31 u32
filter parent 1: protocol ipv6 pref 31 u32 fh 805: ht divisor 1
filter parent 1: protocol ipv6 pref 31 u32 fh 805::800 order 2048 key ht 805 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 40 u32
filter parent 1: protocol ip pref 40 u32 fh 806: ht divisor 1
filter parent 1: protocol ip pref 40 u32 fh 806::800 order 2048 key ht 806 bkt 0 flowid 1:11 not_in_hw
  match dport 5061
filter parent 1: protocol ipv6 pref 41 u32
filter parent 1: protocol ipv6 pref 41 u32 fh 807: ht divisor 1
filter parent 1: protocol ipv6 pref 41 u32 fh 807::800 order 2048 key ht 807 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 50 u32
filter parent 1: protocol ip pref 50 u32 fh 808: ht divisor 1
filter parent 1: protocol ip pref 50 u32 fh 808::800 order 2048 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::801 order 2049 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::802 order 2050 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::803 order 2051 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::804 order 2052 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::805 order 2053 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::806 order 2054 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::807 order 2055 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::808 order 2056 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::809 order 2057 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::80a order 2058 key ht 808 bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match sport 20000
filter parent 1: protocol ipv6 pref 51 u32
filter parent 1: protocol ipv6 pref 51 u32 fh 809: ht divisor 1
filter parent 1: protocol ipv6 pref 51 u32 fh 809::800 order 2048 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::801 order 2049 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::802 order 2050 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::803 order 2051 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::804 order 2052 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::805 order 2053 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::806 order 2054 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::807 order 2055 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::808 order 2056 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::809 order 2057 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 51 u32 fh 809::80a order 2058 key ht 809 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 60 u32
filter parent 1: protocol ip pref 60 u32 fh 80a: ht divisor 1
filter parent 1: protocol ip pref 60 u32 fh 80a::800 order 2048 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::801 order 2049 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::802 order 2050 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::803 order 2051 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::804 order 2052 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::805 order 2053 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::806 order 2054 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::807 order 2055 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::808 order 2056 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::809 order 2057 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::80a order 2058 key ht 80a bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 20000
filter parent 1: protocol ipv6 pref 61 u32
filter parent 1: protocol ipv6 pref 61 u32 fh 80b: ht divisor 1
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::800 order 2048 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::801 order 2049 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::802 order 2050 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::803 order 2051 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::804 order 2052 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::805 order 2053 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::806 order 2054 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::807 order 2055 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::808 order 2056 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::809 order 2057 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::80a order 2058 key ht 80b bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 70 u32
filter parent 1: protocol ip pref 70 u32 fh 80c: ht divisor 1
filter parent 1: protocol ip pref 70 u32 fh 80c::800 order 2048 key ht 80c bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 3478
filter parent 1: protocol ipv6 pref 71 u32
filter parent 1: protocol ipv6 pref 71 u32 fh 80d: ht divisor 1
filter parent 1: protocol ipv6 pref 71 u32 fh 80d::800 order 2048 key ht 80d bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 80 u32
filter parent 1: protocol ip pref 80 u32 fh 80e: ht divisor 1
filter parent 1: protocol ip pref 80 u32 fh 80e::800 order 2048 key ht 80e bkt 0 flowid 1:11 not_in_hw
  match IP protocol 17
  match dport 3479
filter parent 1: protocol ipv6 pref 81 u32
filter parent 1: protocol ipv6 pref 81 u32 fh 80f: ht divisor 1
filter parent 1: protocol ipv6 pref 81 u32 fh 80f::800 order 2048 key ht 80f bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 90 u32
filter parent 1: protocol ip pref 90 u32 fh 810: ht divisor 1
filter parent 1: protocol ip pref 90 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:11 not_in_hw
  match dport 64738
filter parent 1: protocol ipv6 pref 91 u32
filter parent 1: protocol ipv6 pref 91 u32 fh 811: ht divisor 1
filter parent 1: protocol ipv6 pref 91 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:11 not_in_hw
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 812: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 812::800 order 2048 key ht 812 bkt 0 flowid 1:12 not_in_hw
  match IP protocol 17
  match dport 53
filter parent 1: protocol ipv6 pref 101 u32
filter parent 1: protocol ipv6 pref 101 u32 fh 813: ht divisor 1
filter parent 1: protocol ipv6 pref 101 u32 fh 813::800 order 2048 key ht 813 bkt 0 flowid 1:12 not_in_hw
filter parent 1: protocol ip pref 110 u32
filter parent 1: protocol ip pref 110 u32 fh 814: ht divisor 1
filter parent 1: protocol ip pref 110 u32 fh 814::800 order 2048 key ht 814 bkt 0 flowid 1:12 not_in_hw
  match dport 53
filter parent 1: protocol ipv6 pref 111 u32
filter parent 1: protocol ipv6 pref 111 u32 fh 815: ht divisor 1
filter parent 1: protocol ipv6 pref 111 u32 fh 815::800 order 2048 key ht 815 bkt 0 flowid 1:12 not_in_hw
filter parent 1: protocol ip pref 120 u32
filter parent 1: protocol ip pref 120 u32 fh 816: ht divisor 1
filter parent 1: protocol ip pref 120 u32 fh 816::800 order 2048 key ht 816 bkt 0 flowid 1:13 not_in_hw
filter parent 1: protocol ipv6 pref 121 u32
filter parent 1: protocol ipv6 pref 121 u32 fh 817: ht divisor 1
filter parent 1: protocol ipv6 pref 121 u32 fh 817::800 order 2048 key ht 817 bkt 0 flowid 1:13 not_in_hw
filter parent 1: protocol ip pref 130 u32
filter parent 1: protocol ip pref 130 u32 fh 818: ht divisor 1
filter parent 1: protocol ip pref 130 u32 fh 818::800 order 2048 key ht 818 bkt 0 flowid 1:14 not_in_hw
filter parent 1: protocol ipv6 pref 131 u32
filter parent 1: protocol ipv6 pref 131 u32 fh 819: ht divisor 1
filter parent 1: protocol ipv6 pref 131 u32 fh 819::800 order 2048 key ht 819 bkt 0 flowid 1:14 not_in_hw
filter parent 1: protocol ip pref 140 u32
filter parent 1: protocol ip pref 140 u32 fh 81a: ht divisor 1
filter parent 1: protocol ip pref 140 u32 fh 81a::800 order 2048 key ht 81a bkt 0 flowid 1:15 not_in_hw
filter parent 1: protocol ipv6 pref 141 u32
filter parent 1: protocol ipv6 pref 141 u32 fh 81b: ht divisor 1
filter parent 1: protocol ipv6 pref 141 u32 fh 81b::800 order 2048 key ht 81b bkt 0 flowid 1:15 not_in_hw
filter parent 1: protocol ip pref 150 u32
filter parent 1: protocol ip pref 150 u32 fh 81c: ht divisor 1
filter parent 1: protocol ip pref 150 u32 fh 81c::800 order 2048 key ht 81c bkt 0 flowid 1:16 not_in_hw
filter parent 1: protocol ipv6 pref 151 u32
filter parent 1: protocol ipv6 pref 151 u32 fh 81d: ht divisor 1
filter parent 1: protocol ipv6 pref 151 u32 fh 81d::800 order 2048 key ht 81d bkt 0 flowid 1:16 not_in_hw
filter parent 1: protocol ip pref 160 u32
filter parent 1: protocol ip pref 160 u32 fh 81e: ht divisor 1
filter parent 1: protocol ip pref 160 u32 fh 81e::800 order 2048 key ht 81e bkt 0 flowid 1:17 not_in_hw
filter parent 1: protocol ipv6 pref 161 u32
filter parent 1: protocol ipv6 pref 161 u32 fh 81f: ht divisor 1
filter parent 1: protocol ipv6 pref 161 u32 fh 81f::800 order 2048 key ht 81f bkt 0 flowid 1:17 not_in_hw

Maybe this has something to do with the issue? Or am I just misinterpreting the cryptic output of tc filter show

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 10, 2017

Member

I would say it does. I ran your same config (I created a bridge becaus eI don't have a ppp device) and got from this:

sudo tc -p filter show dev virbr0

Output which includes mark matches:

filter parent 1: protocol ip pref 10 u32 
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:11 
  match IP protocol 17
  match sport 5060
filter parent 1: protocol ipv6 pref 11 u32 
filter parent 1: protocol ipv6 pref 11 u32 fh 801: ht divisor 1 
filter parent 1: protocol ipv6 pref 11 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 20 u32 
filter parent 1: protocol ip pref 20 u32 fh 802: ht divisor 1 
filter parent 1: protocol ip pref 20 u32 fh 802::800 order 2048 key ht 802 bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 5060
filter parent 1: protocol ipv6 pref 21 u32 
filter parent 1: protocol ipv6 pref 21 u32 fh 803: ht divisor 1 
filter parent 1: protocol ipv6 pref 21 u32 fh 803::800 order 2048 key ht 803 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 30 u32 
filter parent 1: protocol ip pref 30 u32 fh 804: ht divisor 1 
filter parent 1: protocol ip pref 30 u32 fh 804::800 order 2048 key ht 804 bkt 0 flowid 1:11 
  match sport 5061
filter parent 1: protocol ipv6 pref 31 u32 
filter parent 1: protocol ipv6 pref 31 u32 fh 805: ht divisor 1 
filter parent 1: protocol ipv6 pref 31 u32 fh 805::800 order 2048 key ht 805 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 40 u32 
filter parent 1: protocol ip pref 40 u32 fh 806: ht divisor 1 
filter parent 1: protocol ip pref 40 u32 fh 806::800 order 2048 key ht 806 bkt 0 flowid 1:11 
  match dport 5061
filter parent 1: protocol ipv6 pref 41 u32 
filter parent 1: protocol ipv6 pref 41 u32 fh 807: ht divisor 1 
filter parent 1: protocol ipv6 pref 41 u32 fh 807::800 order 2048 key ht 807 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 50 u32 
filter parent 1: protocol ip pref 50 u32 fh 808: ht divisor 1 
filter parent 1: protocol ip pref 50 u32 fh 808::800 order 2048 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::801 order 2049 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::802 order 2050 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::803 order 2051 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::804 order 2052 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::805 order 2053 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::806 order 2054 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::807 order 2055 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::808 order 2056 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::809 order 2057 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::80a order 2058 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
  match sport 20000
filter parent 1: protocol ipv6 pref 51 u32 
filter parent 1: protocol ipv6 pref 51 u32 fh 809: ht divisor 1 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::800 order 2048 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::801 order 2049 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::802 order 2050 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::803 order 2051 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::804 order 2052 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::805 order 2053 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::806 order 2054 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::807 order 2055 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::808 order 2056 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::809 order 2057 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::80a order 2058 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 60 u32 
filter parent 1: protocol ip pref 60 u32 fh 80a: ht divisor 1 
filter parent 1: protocol ip pref 60 u32 fh 80a::800 order 2048 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::801 order 2049 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::802 order 2050 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::803 order 2051 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::804 order 2052 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::805 order 2053 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::806 order 2054 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::807 order 2055 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::808 order 2056 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::809 order 2057 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::80a order 2058 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 20000
filter parent 1: protocol ipv6 pref 61 u32 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b: ht divisor 1 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::800 order 2048 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::801 order 2049 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::802 order 2050 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::803 order 2051 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::804 order 2052 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::805 order 2053 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::806 order 2054 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::807 order 2055 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::808 order 2056 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::809 order 2057 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::80a order 2058 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 70 u32 
filter parent 1: protocol ip pref 70 u32 fh 80c: ht divisor 1 
filter parent 1: protocol ip pref 70 u32 fh 80c::800 order 2048 key ht 80c bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 3478
filter parent 1: protocol ipv6 pref 71 u32 
filter parent 1: protocol ipv6 pref 71 u32 fh 80d: ht divisor 1 
filter parent 1: protocol ipv6 pref 71 u32 fh 80d::800 order 2048 key ht 80d bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 80 u32 
filter parent 1: protocol ip pref 80 u32 fh 80e: ht divisor 1 
filter parent 1: protocol ip pref 80 u32 fh 80e::800 order 2048 key ht 80e bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 3479
filter parent 1: protocol ipv6 pref 81 u32 
filter parent 1: protocol ipv6 pref 81 u32 fh 80f: ht divisor 1 
filter parent 1: protocol ipv6 pref 81 u32 fh 80f::800 order 2048 key ht 80f bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 90 u32 
filter parent 1: protocol ip pref 90 u32 fh 810: ht divisor 1 
filter parent 1: protocol ip pref 90 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:11 
  match dport 64738
filter parent 1: protocol ipv6 pref 91 u32 
filter parent 1: protocol ipv6 pref 91 u32 fh 811: ht divisor 1 
filter parent 1: protocol ipv6 pref 91 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 100 u32 
filter parent 1: protocol ip pref 100 u32 fh 812: ht divisor 1 
filter parent 1: protocol ip pref 100 u32 fh 812::800 order 2048 key ht 812 bkt 0 flowid 1:12 
  match IP protocol 17
  match dport 53
filter parent 1: protocol ipv6 pref 101 u32 
filter parent 1: protocol ipv6 pref 101 u32 fh 813: ht divisor 1 
filter parent 1: protocol ipv6 pref 101 u32 fh 813::800 order 2048 key ht 813 bkt 0 flowid 1:12 
filter parent 1: protocol ip pref 110 u32 
filter parent 1: protocol ip pref 110 u32 fh 814: ht divisor 1 
filter parent 1: protocol ip pref 110 u32 fh 814::800 order 2048 key ht 814 bkt 0 flowid 1:12 
  match dport 53
filter parent 1: protocol ipv6 pref 111 u32 
filter parent 1: protocol ipv6 pref 111 u32 fh 815: ht divisor 1 
filter parent 1: protocol ipv6 pref 111 u32 fh 815::800 order 2048 key ht 815 bkt 0 flowid 1:12 
filter parent 1: protocol ip pref 120 u32 
filter parent 1: protocol ip pref 120 u32 fh 816: ht divisor 1 
filter parent 1: protocol ip pref 120 u32 fh 816::800 order 2048 key ht 816 bkt 0 flowid 1:13 
  mark 0x0100 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 121 u32 
filter parent 1: protocol ipv6 pref 121 u32 fh 817: ht divisor 1 
filter parent 1: protocol ipv6 pref 121 u32 fh 817::800 order 2048 key ht 817 bkt 0 flowid 1:13 
  mark 0x0100 0x1fc0 (success 0)
filter parent 1: protocol ip pref 130 u32 
filter parent 1: protocol ip pref 130 u32 fh 818: ht divisor 1 
filter parent 1: protocol ip pref 130 u32 fh 818::800 order 2048 key ht 818 bkt 0 flowid 1:14 
  mark 0x00c0 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 131 u32 
filter parent 1: protocol ipv6 pref 131 u32 fh 819: ht divisor 1 
filter parent 1: protocol ipv6 pref 131 u32 fh 819::800 order 2048 key ht 819 bkt 0 flowid 1:14 
  mark 0x00c0 0x1fc0 (success 0)
filter parent 1: protocol ip pref 140 u32 
filter parent 1: protocol ip pref 140 u32 fh 81a: ht divisor 1 
filter parent 1: protocol ip pref 140 u32 fh 81a::800 order 2048 key ht 81a bkt 0 flowid 1:15 
  mark 0x0080 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 141 u32 
filter parent 1: protocol ipv6 pref 141 u32 fh 81b: ht divisor 1 
filter parent 1: protocol ipv6 pref 141 u32 fh 81b::800 order 2048 key ht 81b bkt 0 flowid 1:15 
  mark 0x0080 0x1fc0 (success 0)
filter parent 1: protocol ip pref 150 u32 
filter parent 1: protocol ip pref 150 u32 fh 81c: ht divisor 1 
filter parent 1: protocol ip pref 150 u32 fh 81c::800 order 2048 key ht 81c bkt 0 flowid 1:16 
  mark 0x0040 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 151 u32 
filter parent 1: protocol ipv6 pref 151 u32 fh 81d: ht divisor 1 
filter parent 1: protocol ipv6 pref 151 u32 fh 81d::800 order 2048 key ht 81d bkt 0 flowid 1:16 
  mark 0x0040 0x1fc0 (success 0)
filter parent 1: protocol ip pref 160 u32 
filter parent 1: protocol ip pref 160 u32 fh 81e: ht divisor 1 
filter parent 1: protocol ip pref 160 u32 fh 81e::800 order 2048 key ht 81e bkt 0 flowid 1:17 
  mark 0x0000 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 161 u32 
filter parent 1: protocol ipv6 pref 161 u32 fh 81f: ht divisor 1 
filter parent 1: protocol ipv6 pref 161 u32 fh 81f::800 order 2048 key ht 81f bkt 0 flowid 1:17 
  mark 0x0000 0x1fc0 (success 0)

I take it if you check the output of fireqos debug that you see the same rules generated that I listed above? If so it sounds like you have a problem with tc on your system... somehow it is silently failing to generate the rules.

You could take a look at the output of dmesg to see if anything is in there...

Member

philwhineray commented Jul 10, 2017

I would say it does. I ran your same config (I created a bridge becaus eI don't have a ppp device) and got from this:

sudo tc -p filter show dev virbr0

Output which includes mark matches:

filter parent 1: protocol ip pref 10 u32 
filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 
filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:11 
  match IP protocol 17
  match sport 5060
filter parent 1: protocol ipv6 pref 11 u32 
filter parent 1: protocol ipv6 pref 11 u32 fh 801: ht divisor 1 
filter parent 1: protocol ipv6 pref 11 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 20 u32 
filter parent 1: protocol ip pref 20 u32 fh 802: ht divisor 1 
filter parent 1: protocol ip pref 20 u32 fh 802::800 order 2048 key ht 802 bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 5060
filter parent 1: protocol ipv6 pref 21 u32 
filter parent 1: protocol ipv6 pref 21 u32 fh 803: ht divisor 1 
filter parent 1: protocol ipv6 pref 21 u32 fh 803::800 order 2048 key ht 803 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 30 u32 
filter parent 1: protocol ip pref 30 u32 fh 804: ht divisor 1 
filter parent 1: protocol ip pref 30 u32 fh 804::800 order 2048 key ht 804 bkt 0 flowid 1:11 
  match sport 5061
filter parent 1: protocol ipv6 pref 31 u32 
filter parent 1: protocol ipv6 pref 31 u32 fh 805: ht divisor 1 
filter parent 1: protocol ipv6 pref 31 u32 fh 805::800 order 2048 key ht 805 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 40 u32 
filter parent 1: protocol ip pref 40 u32 fh 806: ht divisor 1 
filter parent 1: protocol ip pref 40 u32 fh 806::800 order 2048 key ht 806 bkt 0 flowid 1:11 
  match dport 5061
filter parent 1: protocol ipv6 pref 41 u32 
filter parent 1: protocol ipv6 pref 41 u32 fh 807: ht divisor 1 
filter parent 1: protocol ipv6 pref 41 u32 fh 807::800 order 2048 key ht 807 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 50 u32 
filter parent 1: protocol ip pref 50 u32 fh 808: ht divisor 1 
filter parent 1: protocol ip pref 50 u32 fh 808::800 order 2048 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::801 order 2049 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::802 order 2050 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::803 order 2051 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::804 order 2052 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::805 order 2053 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::806 order 2054 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::807 order 2055 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::808 order 2056 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::809 order 2057 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 50 u32 fh 808::80a order 2058 key ht 808 bkt 0 flowid 1:11 
  match IP protocol 17
  match sport 20000
filter parent 1: protocol ipv6 pref 51 u32 
filter parent 1: protocol ipv6 pref 51 u32 fh 809: ht divisor 1 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::800 order 2048 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::801 order 2049 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::802 order 2050 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::803 order 2051 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::804 order 2052 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::805 order 2053 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::806 order 2054 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::807 order 2055 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::808 order 2056 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::809 order 2057 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 51 u32 fh 809::80a order 2058 key ht 809 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 60 u32 
filter parent 1: protocol ip pref 60 u32 fh 80a: ht divisor 1 
filter parent 1: protocol ip pref 60 u32 fh 80a::800 order 2048 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::801 order 2049 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::802 order 2050 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::803 order 2051 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::804 order 2052 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::805 order 2053 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::806 order 2054 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::807 order 2055 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::808 order 2056 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::809 order 2057 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
filter parent 1: protocol ip pref 60 u32 fh 80a::80a order 2058 key ht 80a bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 20000
filter parent 1: protocol ipv6 pref 61 u32 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b: ht divisor 1 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::800 order 2048 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::801 order 2049 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::802 order 2050 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::803 order 2051 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::804 order 2052 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::805 order 2053 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::806 order 2054 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::807 order 2055 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::808 order 2056 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::809 order 2057 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ipv6 pref 61 u32 fh 80b::80a order 2058 key ht 80b bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 70 u32 
filter parent 1: protocol ip pref 70 u32 fh 80c: ht divisor 1 
filter parent 1: protocol ip pref 70 u32 fh 80c::800 order 2048 key ht 80c bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 3478
filter parent 1: protocol ipv6 pref 71 u32 
filter parent 1: protocol ipv6 pref 71 u32 fh 80d: ht divisor 1 
filter parent 1: protocol ipv6 pref 71 u32 fh 80d::800 order 2048 key ht 80d bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 80 u32 
filter parent 1: protocol ip pref 80 u32 fh 80e: ht divisor 1 
filter parent 1: protocol ip pref 80 u32 fh 80e::800 order 2048 key ht 80e bkt 0 flowid 1:11 
  match IP protocol 17
  match dport 3479
filter parent 1: protocol ipv6 pref 81 u32 
filter parent 1: protocol ipv6 pref 81 u32 fh 80f: ht divisor 1 
filter parent 1: protocol ipv6 pref 81 u32 fh 80f::800 order 2048 key ht 80f bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 90 u32 
filter parent 1: protocol ip pref 90 u32 fh 810: ht divisor 1 
filter parent 1: protocol ip pref 90 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:11 
  match dport 64738
filter parent 1: protocol ipv6 pref 91 u32 
filter parent 1: protocol ipv6 pref 91 u32 fh 811: ht divisor 1 
filter parent 1: protocol ipv6 pref 91 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:11 
filter parent 1: protocol ip pref 100 u32 
filter parent 1: protocol ip pref 100 u32 fh 812: ht divisor 1 
filter parent 1: protocol ip pref 100 u32 fh 812::800 order 2048 key ht 812 bkt 0 flowid 1:12 
  match IP protocol 17
  match dport 53
filter parent 1: protocol ipv6 pref 101 u32 
filter parent 1: protocol ipv6 pref 101 u32 fh 813: ht divisor 1 
filter parent 1: protocol ipv6 pref 101 u32 fh 813::800 order 2048 key ht 813 bkt 0 flowid 1:12 
filter parent 1: protocol ip pref 110 u32 
filter parent 1: protocol ip pref 110 u32 fh 814: ht divisor 1 
filter parent 1: protocol ip pref 110 u32 fh 814::800 order 2048 key ht 814 bkt 0 flowid 1:12 
  match dport 53
filter parent 1: protocol ipv6 pref 111 u32 
filter parent 1: protocol ipv6 pref 111 u32 fh 815: ht divisor 1 
filter parent 1: protocol ipv6 pref 111 u32 fh 815::800 order 2048 key ht 815 bkt 0 flowid 1:12 
filter parent 1: protocol ip pref 120 u32 
filter parent 1: protocol ip pref 120 u32 fh 816: ht divisor 1 
filter parent 1: protocol ip pref 120 u32 fh 816::800 order 2048 key ht 816 bkt 0 flowid 1:13 
  mark 0x0100 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 121 u32 
filter parent 1: protocol ipv6 pref 121 u32 fh 817: ht divisor 1 
filter parent 1: protocol ipv6 pref 121 u32 fh 817::800 order 2048 key ht 817 bkt 0 flowid 1:13 
  mark 0x0100 0x1fc0 (success 0)
filter parent 1: protocol ip pref 130 u32 
filter parent 1: protocol ip pref 130 u32 fh 818: ht divisor 1 
filter parent 1: protocol ip pref 130 u32 fh 818::800 order 2048 key ht 818 bkt 0 flowid 1:14 
  mark 0x00c0 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 131 u32 
filter parent 1: protocol ipv6 pref 131 u32 fh 819: ht divisor 1 
filter parent 1: protocol ipv6 pref 131 u32 fh 819::800 order 2048 key ht 819 bkt 0 flowid 1:14 
  mark 0x00c0 0x1fc0 (success 0)
filter parent 1: protocol ip pref 140 u32 
filter parent 1: protocol ip pref 140 u32 fh 81a: ht divisor 1 
filter parent 1: protocol ip pref 140 u32 fh 81a::800 order 2048 key ht 81a bkt 0 flowid 1:15 
  mark 0x0080 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 141 u32 
filter parent 1: protocol ipv6 pref 141 u32 fh 81b: ht divisor 1 
filter parent 1: protocol ipv6 pref 141 u32 fh 81b::800 order 2048 key ht 81b bkt 0 flowid 1:15 
  mark 0x0080 0x1fc0 (success 0)
filter parent 1: protocol ip pref 150 u32 
filter parent 1: protocol ip pref 150 u32 fh 81c: ht divisor 1 
filter parent 1: protocol ip pref 150 u32 fh 81c::800 order 2048 key ht 81c bkt 0 flowid 1:16 
  mark 0x0040 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 151 u32 
filter parent 1: protocol ipv6 pref 151 u32 fh 81d: ht divisor 1 
filter parent 1: protocol ipv6 pref 151 u32 fh 81d::800 order 2048 key ht 81d bkt 0 flowid 1:16 
  mark 0x0040 0x1fc0 (success 0)
filter parent 1: protocol ip pref 160 u32 
filter parent 1: protocol ip pref 160 u32 fh 81e: ht divisor 1 
filter parent 1: protocol ip pref 160 u32 fh 81e::800 order 2048 key ht 81e bkt 0 flowid 1:17 
  mark 0x0000 0x1fc0 (success 0)
filter parent 1: protocol ipv6 pref 161 u32 
filter parent 1: protocol ipv6 pref 161 u32 fh 81f: ht divisor 1 
filter parent 1: protocol ipv6 pref 161 u32 fh 81f::800 order 2048 key ht 81f bkt 0 flowid 1:17 
  mark 0x0000 0x1fc0 (success 0)

I take it if you check the output of fireqos debug that you see the same rules generated that I listed above? If so it sounds like you have a problem with tc on your system... somehow it is silently failing to generate the rules.

You could take a look at the output of dmesg to see if anything is in there...

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

Interesting. I guess this would explain why the first class with a mark statement matches everything, as it simple doesn't have any filters. I checked the output of fireqos debug. It correctly generates the tc commands:

:       class mark4 (1:13, 48/4800kbit, prio 2)
 /usr/bin/tc class add dev ppp0 parent 1:1 classid 1:13 htb rate 48kbit ceil 4800kbit prio 2 quantum 1492
 /usr/bin/tc qdisc add dev ppp0 parent 1:13 handle 13: fq_codel
:               match mark 4
 /usr/bin/tc filter add dev ppp0 parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13
 /usr/bin/tc filter add dev ppp0 parent 1:0 protocol ipv6 prio 121 u32 match mark 0x00000100 0x00001fc0 flowid 1:13

dmesg doesn't appear to contain anything related to this as far as I see.
I'm on Arch Linux, in case it matters. Standard kernel, no special setup.

nitroxis commented Jul 10, 2017

Interesting. I guess this would explain why the first class with a mark statement matches everything, as it simple doesn't have any filters. I checked the output of fireqos debug. It correctly generates the tc commands:

:       class mark4 (1:13, 48/4800kbit, prio 2)
 /usr/bin/tc class add dev ppp0 parent 1:1 classid 1:13 htb rate 48kbit ceil 4800kbit prio 2 quantum 1492
 /usr/bin/tc qdisc add dev ppp0 parent 1:13 handle 13: fq_codel
:               match mark 4
 /usr/bin/tc filter add dev ppp0 parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13
 /usr/bin/tc filter add dev ppp0 parent 1:0 protocol ipv6 prio 121 u32 match mark 0x00000100 0x00001fc0 flowid 1:13

dmesg doesn't appear to contain anything related to this as far as I see.
I'm on Arch Linux, in case it matters. Standard kernel, no special setup.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

Manually running tc filter add dev ppp0 parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13 adds an additional line to the tc filter show output:

filter parent 1: protocol ip pref 120 u32 fh 816::801 order 2049 key ht 816 bkt 0 flowid 1:13 not_in_hw

But still no mark filter. tc itself has no output or unusual exit code.

nitroxis commented Jul 10, 2017

Manually running tc filter add dev ppp0 parent 1:0 protocol ip prio 120 u32 match mark 0x00000100 0x00001fc0 flowid 1:13 adds an additional line to the tc filter show output:

filter parent 1: protocol ip pref 120 u32 fh 816::801 order 2049 key ht 816 bkt 0 flowid 1:13 not_in_hw

But still no mark filter. tc itself has no output or unusual exit code.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

After doing some more research I found this https://www.spinics.net/lists/lartc/msg21600.html
Apparently, CONFIG_CLS_U32_MARK needs to be set, which doesn't seem to be the case for the default Arch kernel:

> zcat /proc/config.gz | grep CONFIG_CLS_U32_MARK
# CONFIG_CLS_U32_MARK is not set

Could you please check if this flag is set on your kernel?

nitroxis commented Jul 10, 2017

After doing some more research I found this https://www.spinics.net/lists/lartc/msg21600.html
Apparently, CONFIG_CLS_U32_MARK needs to be set, which doesn't seem to be the case for the default Arch kernel:

> zcat /proc/config.gz | grep CONFIG_CLS_U32_MARK
# CONFIG_CLS_U32_MARK is not set

Could you please check if this flag is set on your kernel?

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 10, 2017

Member
Member

philwhineray commented Jul 10, 2017

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 10, 2017

Member

Yes:

grep CONFIG_CLS_U32_MARK /boot/config-4.8.0-58-generic 
CONFIG_CLS_U32_MARK=y

I guess that could well be it.

Member

philwhineray commented Jul 10, 2017

Yes:

grep CONFIG_CLS_U32_MARK /boot/config-4.8.0-58-generic 
CONFIG_CLS_U32_MARK=y

I guess that could well be it.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 10, 2017

Alright, thanks. I will try compiling the kernel with that flag set and see if that helps. Not sure why this isn't set by default, I guess it was simply an oversight and no one ever attempted to do what I was trying on Arch before.

nitroxis commented Jul 10, 2017

Alright, thanks. I will try compiling the kernel with that flag set and see if that helps. Not sure why this isn't set by default, I guess it was simply an oversight and no one ever attempted to do what I was trying on Arch before.

@nitroxis

This comment has been minimized.

Show comment
Hide comment
@nitroxis

nitroxis Jul 11, 2017

That was indeed the culprit. After booting a custom kernel with that flag set, tc filter show shows the mark matches and the MAC address marks immediately started working.
It still think it shouldn't just silently fail, but that's probably something either the kernel or the tc developers need to fix. But maybe you can still show a warning or put a note in the docs that matching marks with tc requires CONFIG_CLS_U32_MARK, otherwise it won't work without the user noticing.
Anyways, thanks for the help.

nitroxis commented Jul 11, 2017

That was indeed the culprit. After booting a custom kernel with that flag set, tc filter show shows the mark matches and the MAC address marks immediately started working.
It still think it shouldn't just silently fail, but that's probably something either the kernel or the tc developers need to fix. But maybe you can still show a warning or put a note in the docs that matching marks with tc requires CONFIG_CLS_U32_MARK, otherwise it won't work without the user noticing.
Anyways, thanks for the help.

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Jul 11, 2017

Member
Member

philwhineray commented Jul 11, 2017

philwhineray added a commit that referenced this issue Jul 11, 2017

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Aug 20, 2017

Member

Oops, commit message was wrong. Re-opening.

Member

philwhineray commented Aug 20, 2017

Oops, commit message was wrong. Re-opening.

@philwhineray philwhineray reopened this Aug 20, 2017

philwhineray added a commit that referenced this issue Aug 20, 2017

@philwhineray

This comment has been minimized.

Show comment
Hide comment
@philwhineray

philwhineray Aug 20, 2017

Member

Docs added now, so closing. Sorry for the noise.

Member

philwhineray commented Aug 20, 2017

Docs added now, so closing. Sorry for the noise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment