[ovs-discuss] Queue of openvswitch running on openwrt

lin linger_lilac at 163.com
Thu Aug 25 02:28:49 UTC 2016


problem description: data are still transmitted to queue 0 even when use set_queue:2
I created queues and then create flow by using  "ovs-ofctl add-flow br0 actions=set_queue:2 --protocols=openflow13" , but no data are enqueued to queue 2, they are still enqueued
to queue 0. But if I use tc filter to set the rules, data could be transmitted to queue 2


I use the following command to create three queues:
ovs-vsctl -- set port br0 qos=@newqos \
                     -- --id=@newqos create qos type=linux-htb other-config:max-rate=40000000 queues=0=@q0,1=@q1,2=@q2 \
                     -- --id=@q0 create queue other-config:min-rate=10000000 other-config:max-rate=10000000 \
                     -- --id=@q1 create queue other-config:min-rate=20000000 other-config:max-rate=20000000 \
                     -- --id=@q2 create queue other-config:min-rate=30000000 other-config:max-rate=30000000
ovs-vsctl list qos:

-----------------------------

root at OpenWrt:~# ovs-vsctl list qos

_uuid               : ab514b32-241f-4b9a-ad6e-5f755f9beb2a

external_ids        : {}

other_config        : {max-rate="40000000"}

queues              : {0=17ecc2fe-e6d3-40cc-a6ea-ea6ae7a2ac57, 1=2b2b84f7-8bf0-405f-af5b-6dd6dc71d422, 2=56a4f14e-9ffd-4e1b-9d87-c0ddc39e975d}

type                : linux-htb

--------------------------
ovs-vsctl list queue:
***************

root at OpenWrt:~# ovs-vsctl list queue

_uuid               : 56a4f14e-9ffd-4e1b-9d87-c0ddc39e975d

dscp                : []

external_ids        : {}

other_config        : {max-rate="30000000", min-rate="30000000"}




_uuid               : 17ecc2fe-e6d3-40cc-a6ea-ea6ae7a2ac57

dscp                : []

external_ids        : {}

other_config        : {max-rate="10000000", min-rate="10000000"}




_uuid               : 2b2b84f7-8bf0-405f-af5b-6dd6dc71d422

dscp                : []

external_ids        : {}

other_config        : {max-rate="20000000", min-rate="20000000"}

***************
tc results:
@@@@@@@@@@@@@@@

root at OpenWrt:~# tc -s class show dev br0

class htb 1:fffe root rate 40Mbit ceil 40Mbit burst 1495b cburst 1495b 

 Sent 32345529 bytes 248707 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 4480 ctokens: 4480




class htb 1:1 parent 1:fffe prio 0 rate 10Mbit ceil 10Mbit burst 1563b cburst 1563b 

 Sent 32345529 bytes 248707 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 248549 borrowed: 0 giants: 0

 tokens: 18725 ctokens: 18725




class htb 1:2 parent 1:fffe prio 0 rate 20Mbit ceil 20Mbit burst 1562b cburst 1562b 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 9775 ctokens: 9775




class htb 1:3 parent 1:fffe prio 0 rate 30Mbit ceil 30Mbit burst 1563b cburst 1563b 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 6516 ctokens: 6516

@@@@@@@@@@@@@@@
=====================
I use "ovs-ofctl add-flow br0 actions=set_queue:2 --protocols=openflow13" to enforce data to be transmitted to queue 2, but the data are still transmitted to queue 0:

OFPST_QUEUE reply (OF1.3) (xid=0x2): 3 queues

  port LOCAL queue 0: bytes=32342937, pkts=248671, errors=0, duration=2987889752.3375967296s

  port LOCAL queue 1: bytes=0, pkts=0, errors=0, duration=2987889752.3375967296s

  port LOCAL queue 2: bytes=0, pkts=0, errors=0, duration=2987889752.3375967296s

====================

However, if I use tc filter to set the rules, data could be transmitted to queue 2:


--------------------

  # tc filter add dev br0 parent 1: protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:1

  # tc filter add dev br0 parent 1: protocol ip prio 9 u32 match u8 0 0 flowid 1:2

 # tc filter add dev br0 parent 1: protocol ip prio 1 u32 match ip dport 25 0xffff flowid 1:3

 # tc filter add dev br0 parent 1: protocol ip prio 1 u32 match ip dport 465 0xffff flowid 1:3

# ovs-ofctl queue-stats br0 --protocols=Openflow13

# tc filter add dev br0 parent 1: protocol ip prio 1 u32 match ip dport 6 0xffff flowid 1:3

root at OpenWrt:~# tc -s class show dev br0

class htb 1:fffe root rate 40Mbit ceil 40Mbit burst 1495b cburst 1495b 

 Sent 54297556 bytes 339175 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 4330 ctokens: 4330




class htb 1:1 parent 1:fffe prio 0 rate 10Mbit ceil 10Mbit burst 1563b cburst 1563b 

 Sent 33188566 bytes 196655 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 193180 borrowed: 0 giants: 0

 tokens: 19025 ctokens: 19025




class htb 1:2 parent 1:fffe prio 0 rate 20Mbit ceil 20Mbit burst 1562b cburst 1562b 

 Sent 21108990 bytes 142520 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 138876 borrowed: 0 giants: 0

 tokens: 9062 ctokens: 9062




class htb 1:3 parent 1:fffe prio 0 rate 30Mbit ceil 30Mbit burst 1563b cburst 1563b 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 6516 ctokens: 6516

--------------------



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20160825/0f8a34d6/attachment-0002.html>


More information about the discuss mailing list