Comments (21)
What is your exact setup? How do you set up losses? What are the exact commands you are running and from where?
from mp-quic.
Thank you for your reply, I really appreciate it.
The client-server code was written based on this Github project: https://github.com/prat-bphc52/VideoStreaming-MPTCP-MPQUIC, then I added loss/delay options to the Mininet environment using the following commands:
net.addLink(router, client, cls=TCLink, bw=10, loss=1, delay='10ms', max_queue_size=25)
net.addLink(router, client, cls=TCLink, bw=10, loss=1, delay='50ms', max_queue_size=100)
net.addLink(router, server, cls=TCLink, bw=10, loss=1, delay='10ms', max_queue_size=25)
net.addLink(router, server, cls=TCLink, bw=10, loss=1, delay='50ms', max_queue_size=100)
from mp-quic.
You should not limit the max queue size using netem, it won't give you the results you expect (see Section 5.2.2 of my thesis available at https://qdeconinck.github.io/assets/thesis_deconinck.pdf). To model buffer sizes, instead rely on shaping (tbf or htb) or policing. You can have a look at https://github.com/qdeconinck/minitopo.
from mp-quic.
But even when I delete the max queue size option I'm still getting the same behavior.
from mp-quic.
What is the actual tc command generated by mininet?
from mp-quic.
I'm not using the tc command. Instead, I'm using the mininet.link.TCIntf Class in a python script according to this article: http://mininet.org/api/classmininet_1_1link_1_1TCIntf.html. I tried in earlier times to add loss/delay options using commands and keep the python script defining the bandwidth only, but it gave me an error telling me that I have to declare these options inside the script.
net.addLink(router, client, cls=TCLink, bw=10, loss=1, delay='10ms')
net.addLink(router, client, cls=TCLink, bw=10, loss=1, delay='50ms')
net.addLink(router, server, cls=TCLink, bw=10, loss=1, delay='10ms')
net.addLink(router, server, cls=TCLink, bw=10, loss=1, delay='50ms')
from mp-quic.
Yes, but it uses tc under the hood. In the mining setup, how are links configured (tc qdisc show when the network is ready to use)?
from mp-quic.
qdisc htb 5: dev server-eth0 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 direct_qlen 1000
qdisc netem 10: dev server-eth0 parent 5:1 limit 1000 delay 10.0ms loss 1%
qdisc htb 5: dev server-eth1 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 direct_qlen 1000
qdisc netem 10: dev server-eth1 parent 5:1 limit 1000 delay 50.0ms loss 1%
from mp-quic.
And what about tc class show for htb?
It might also be useful to have an example of loss pattern you observe (e.g with either logs or pcap trace) vs. what you would expect.
from mp-quic.
I'm a beginner at Mininet, so excuse me if I took so much time to understand. I ran the following command: tc class show, and it returns nothing...
from mp-quic.
From what I understand, there is no bandwidth limitation being applied, which may give very strange behaviours. You should look at the exact command being generated (this (https://github.com/mininet/mininet/blob/270a6ba3335301f1e4757c5fb7ee64c1d3580bf2/mininet/link.py#L316) is the line you want to see the output, have a look in Mininet in how you can enable such logging) and paste the output here.
from mp-quic.
I'm sorry I just know how to use the tc class command, so it returns:
class htb 5:1 root leaf 10: prio 0 rate 10000kbit ceil 10000kbit burst 15kb cburst 1600b
from mp-quic.
Sounds ok then. To further understand what's going on, a PCAP trace along with the logs at both client/server sides could be nice to understand where packets losses occur.
from mp-quic.
Hello,
Working by your suggestion I took a PCAP caption and got some strange behaviors. The first is the occurrence of more than one ARP packet. According to my knowledge, they can be seen at the beginning of the conversation when the MAC addresses must be discovered. The second is getting the "Destination Unreachable (Port Unreachable)" error from the ICMP packet.
from mp-quic.
from mp-quic.
I found this note when reading the MultipathTester article: "We notably noticed some connectivity issues with QUIC using IPv6, but in America, we observed better performance using IPv6 rather than IPv4". Might it be the reason in my case also?
from mp-quic.
- ARP packet exchange at the beginning of the connection are normal if the ARP tables are initially empty.
- With screen captures, I cannot say much more. The PCAP itself would have been better.
- I though you were performing Mininet experiments, I'm not sure how the statement you mentioned relates to your current behaviour.
from mp-quic.
The whole PCAP file:
mpquic_trace_client.zip
from mp-quic.
I think this disconnectivity is caused by the huge amount of packets coming from the client-side (two sources). So the server was so busy to receive the entire data via one path. Notice that I create two paths for the server to use MPQUIC but it keeps working with only one!
Thank you for your time, I appreciate that.
from mp-quic.
There are a few strange elements in your trace:
- The connection seems twice idle for about 10 seconds. Is this expected?
- How was the capture made? Between packet 553 and 554, the time rewinded (Mar 10, 2022 00:17:34.138101494 CET -> Mar 10, 2022 00:17:33.980234299 CET)
- The ICMP messages seem to indicate that the socket of the path(s) at server side were meanwhile closed.
- It would have been interesting to capture at both sides (i.e., client and server) to figure out which packets were actually lost. Furthermore, you should take a look at the implementation logs and try to understand what is going wrong.
from mp-quic.
The only expected idle was located at the beginning of the connection because I had to enter some data manually and it takes a few seconds. Otherwise, I did not expect any idle moments.
Thank you so much for your help, I will try to do what you recommend.
from mp-quic.
Related Issues (20)
- when I build on ubuntu, crypto handshake timeout,please which reason??? HOT 2
- Client behind can not receive packets from both of two paths HOT 1
- the aggregated throughput is quite low HOT 1
- "go get -t -u ./..." doesn't work well HOT 8
- No matter which version of quic-go I use, some packages are not found in any modules
- Setting up Multipath QUIC HOT 7
- Unable to set CreatePaths in server Config
- Does mp-quic implements Cubic or Reno?
- go build... no non-test Go files error
- Issue with provided virtual machine HOT 4
- How InitialPath works (PathID=0)
- Panic: runtime error: invalid memory address or nil pointer dereference
- MPQUIC installation HOT 5
- Test problem
- MP QUIC on windows 10?
- These two bits of code in the path_manager.go file confuse me.
- unable to download mininet VM given in official site https://multipath-quic.org/2017/12/09/artifacts-available.html HOT 1
- How to setup the code, update version
- Real machine environment HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
š Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ššš
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ā¤ļø Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mp-quic.