AGW: pipelined: use pyroute2 to manage TC queue and filters#5240
AGW: pipelined: use pyroute2 to manage TC queue and filters#5240pshelar merged 1 commit intomagma:masterfrom
Conversation
koolzz
left a comment
There was a problem hiding this comment.
those stress test numbers look gooooooooooood
| self._uplink = config['nat_iface'] | ||
| self._downlink = config['enodeb_iface'] | ||
| self._max_rate = config["qos"]["max_rate"] | ||
| self._enable_pyroute2 = config["qos"].get('enable_pyroute2', False) |
There was a problem hiding this comment.
should this be true by default?
There was a problem hiding this comment.
I still want to make sure all tests works fine before making it default
| def __init__(self): | ||
| self._ipr = IPRoute() | ||
| self._iface_if_index = {} | ||
| LOG.info("initialized") |
There was a problem hiding this comment.
This msg is logs shows which TC backend implementation we are using.
| ret = self._ipr.tc("add-class", "htb", if_index, | ||
| htb_queue, parent=parent_qid, | ||
| rate=str(rate).lower(), ceil=max_bw, prio=1) | ||
| LOG.debug("Return: %s", ret) |
There was a problem hiding this comment.
yes, it returns class state from kernel.
There was a problem hiding this comment.
yeah I just meant expand log msg so its clear
There was a problem hiding this comment.
logger has prefix set. So in log it looks like:
Mar 1 21:59:15 magma-dev pipelined[11667]: INFO:pipelined.qos.tc_pyroute2:initialized
| try: | ||
| if_index = self._get_if_index(iface) | ||
|
|
||
| class_id = int(0x10000) | int(qid, 16) |
There was a problem hiding this comment.
I see 0x10000 used a bunch, make it a const?
Codecov Report
@@ Coverage Diff @@
## master #5240 +/- ##
=======================================
Coverage 63.61% 63.61%
=======================================
Files 301 301
Lines 20300 20300
=======================================
+ Hits 12913 12914 +1
+ Misses 5486 5485 -1
Partials 1901 1901
Continue to review full report at Codecov.
|
3039e61 to
7a26d76
Compare
29bedeb to
1a5f1cd
Compare
| "libtins-dev" # required for Connection tracker | ||
| "libmnl-dev" # required for Connection tracker | ||
| "getenvoy-envoy" # for envoy dep | ||
| "python3-pyroute2" |
There was a problem hiding this comment.
As It's a python dep can you add it to the setup.py instead of here?
Following commit adds second implementation for executing TC commands. This is using netlink socket rather than executing `tc` commands. I have seen good improvement over current master. following numbers are using `pipelined_cli.py enforcement stress_test_grpc` With pyroute2 ------------ Starting attaches Finished 600 attaches in 9.850383 seconds Actual attach rate = 61 UEs per sec Starting detaches Finished 600 detaches in 6.381709 seconds with current master ------------------- Starting attaches Finished 600 attaches in 22.11333 seconds Actual attach rate = 27 UEs per sec Starting detaches Finished 600 detaches in 6.360227 seconds Signed-off-by: Pravin B Shelar <[email protected]>
Following commit adds second implementation for executing TC commands. This is using netlink socket rather than executing `tc` commands. I have seen good improvement over current master. following numbers are using `pipelined_cli.py enforcement stress_test_grpc` With pyroute2 ------------ Starting attaches Finished 600 attaches in 9.850383 seconds Actual attach rate = 61 UEs per sec Starting detaches Finished 600 detaches in 6.381709 seconds with current master ------------------- Starting attaches Finished 600 attaches in 22.11333 seconds Actual attach rate = 27 UEs per sec Starting detaches Finished 600 detaches in 6.360227 seconds Signed-off-by: Pravin B Shelar <[email protected]>
Following commit adds second implementation for executing TC commands. This is using netlink socket rather than executing `tc` commands. I have seen good improvement over current master. following numbers are using `pipelined_cli.py enforcement stress_test_grpc` With pyroute2 ------------ Starting attaches Finished 600 attaches in 9.850383 seconds Actual attach rate = 61 UEs per sec Starting detaches Finished 600 detaches in 6.381709 seconds with current master ------------------- Starting attaches Finished 600 attaches in 22.11333 seconds Actual attach rate = 27 UEs per sec Starting detaches Finished 600 detaches in 6.360227 seconds Signed-off-by: Pravin B Shelar <[email protected]>
Following commit adds second implementation for executing TC commands. This is using netlink socket rather than executing `tc` commands. I have seen good improvement over current master. following numbers are using `pipelined_cli.py enforcement stress_test_grpc` With pyroute2 ------------ Starting attaches Finished 600 attaches in 9.850383 seconds Actual attach rate = 61 UEs per sec Starting detaches Finished 600 detaches in 6.381709 seconds with current master ------------------- Starting attaches Finished 600 attaches in 22.11333 seconds Actual attach rate = 27 UEs per sec Starting detaches Finished 600 detaches in 6.360227 seconds Signed-off-by: Pravin B Shelar <[email protected]>
Following commit adds second implementation for executing
TC commands. This is using netlink socket rather than executing
tccommands. I have seen good improvement over current master.following numbers are using
pipelined_cli.py enforcement stress_test_grpcWith pyroute2
Starting attaches
Finished 600 attaches in 9.850383 seconds
Actual attach rate = 61 UEs per sec
Starting detaches
Finished 600 detaches in 6.381709 seconds
with current master
Starting attaches
Finished 600 attaches in 22.11333 seconds
Actual attach rate = 27 UEs per sec
Starting detaches
Finished 600 detaches in 6.360227 seconds
Signed-off-by: Pravin B Shelar [email protected]
Summary
Test Plan
make testAdditional Information