Open minnamu opened 2 years ago
I added the following code to solve this problem:
//folowing 4 line code added by zhujiahua to fix the bug "[ccp] ccp_connection not initialized"! for (sid = 0; sid < kernel_datapath->max_connections; sid++) { conn = & kernel_datapath->ccp_active_connections[sid]; conn->index=0; }
But CCP is still wrong.
Is there anything wrong with the load process below?
Looking at your output, my guess is that there is a mismatch between ccp-kernel version and compatible portus version for the version of generic-cong-avoid you are running. This causes the serialization to mix up the fields.
Hello, thank you for your reply! I will try again according to 1 or 2 suggestions. According to the guide, don't I need to install it only when I use Python?I'm using the RUST version of Cubic.But I did not install Portus specifically.My Portus is currently in version 0.5.1,but portus = "0.6" in cargo.toml in generic-cong-avoid.
- Consider using kernel version 5.4, that is what we test against. 4.15 does not have the patch exposing rate measurements, and uses a hack instead. This may be the cause of other problems as well.
- With more recent ccp versions, the userspace CCP should be loaded first, before the datapath (this is the cause of "could not send ready message"). Things should still work the other way around, but this should be the default.
- There is definitely something wrong with the load process - if the kernel module is already loaded, this line: https://github.com/ccp-project/ccp-kernel/blob/master/ccp_kernel_load#L24 should stop insmod from running, and (https://github.com/ccp-project/ccp-kernel/blob/master/ccp_kernel_load#L60) should not happen.
Looking at your output, my guess is that there is a mismatch between ccp-kernel version and compatible portus version for the version of generic-cong-avoid you are running. This causes the serialization to mix up the fields.
Hello, thank you for your reply! I will try again according to 1 or 2 suggestions. But I didn't install Portus. According to the guide, don't I need to install it only when I use Python? Sorry, because I haven't contacted rust before, I haven't installed Portus at present. Is this wrong?
Thank you very much for your reply. I may have found the problem, but it has not been solved yet. At 4.15, both BBR and CUBIC are not operational. Here are the current details:
1.the order in which I execute commands is always::
1)sudo ./ccp_kernel_load ipc=0
2)sudo RUST_LOG=debug ./target/debug/reno --ipc=netlink
Is that right?If I swap the order, CCP will have only initialized output.
2.I once doubted whether CCP could not be used with mininet, but it was successfully used in the paper (https://onlinelibrary.wiley.com/doi/abs/10.1002/cpe.5716).
3.After I used "sudo dpkg -i *.deb
" to upgrade the kernel version to 5.4,I couldn't apply the patch.
The result of using 'uname -a' is:5.4.0-050400-generic #201911242031 SMP Mon Nov 25 01:35:10 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
When I use 'git apply
', the result shows'error: include/net/tcp.h,error: net/ipv4/tcp_rate.c:There is no such file or directory '.The 'tcp_rate.c' file does not exist on my system.
So I downloaded the linux-5.4.1.tar.gz file and found that files tcp.h and tcp_rate.c didn't seem to need to be modified.
This is my latest result:
Here are my results in kernel 5.4.1,but the BBR algorithm looks like correct, but the output of Cubic and Reno remains the same as before, and the result of the commandlimod | grep CCP
is 2.(1 when using iPerf2, 2 when using iPerf3)
My version information is as follows:
1). ubuntu 20.04 ,5.4.1
2). portus-0.5.1 pyportus-0.6.1(I just use " curl https: // sh.rustup.rs -sSf | sh -s -- -y -v --default-toolchain nightly
"and pip install --user portus
)
3). Ccp-kernel and the code are the latest versions downloaded,
Why does the BBR algorithm look right and cubic and Reno have problems?(The latest cargo. Toml files for BBR and Cubic say portus = "0.5.4"
and portus = "0.6"
, respectively. I also think it's a version problem. So, I need to download the historical version of Cubic? But when I use this historical version, CCP outputs the same error as before.Or upgrade portus to 0.6?)
When I download the latest version of Portus and make, I get the following error:
The CCP-kernel and algorithm implementation I use are the latest versions.
4.I didn't run through the.py file, I tried it, and here's what happened(Do I not need PyPortus if I do not use Python?I don't choose to use Python, so maybe I don't care about this issue 4.):
I'm sorry to bother you with so many questions, because this question has bothered me for some time. I look forward to your reply!
Hello, here is the latest result, you can ignore some minor problems described earlier (but I still want to know the order of execution in previous question 1). when I use portus-0.5-compat,and generic-cong-avoid(834fd1),it is still the same as the previous result. The correct data cannot be received, but THE BBR is still correct. If I do this in the following order, I get the result shown above. 1)sudo ./ccp_kernel_load ipc=0 2)sudo RUST_LOG=debug ./target/debug/reno --ipc=netlink But if I switch the order, CCP just initializes the window and does no tuning.
The version should match, why is it still wrong? What's the reason?
So I tried to upgrade portus to 0.6.1(My Python version is 3.8.10),I used. whl to upgrade portus(but python aimd.py still shows:ModuleNotFoundError: No module named 'portus'),
and used the latest CCP-kernel, libCCP, generic-cong-avoid.Cubic also cannot get the correct data, but BBR can.I don't know what caused it.I still haven't downloaded this:https://github.com/ccp-project/portus/ Do I need to choose the ccP-kernel version according to the following version(https://github.com/ccp-project/portus/tags)?
I currently use portus0.5.1, but portus can't make. I couldn't upgrade with the command "PIP install portus==0.6.1", or with the file (.whl), or make in /portus/python. I want to know how to upgrade to 0.6.1. I am currently using portus0.5.1, kernel's 0.5 branch and the old cubic algorithm, but I still can't get the correct result.
From my experience, python 3.8 definitely works. The version 0.6.1 is for pyportus only, and I use portus 0.5.1 too, which works and doesn't need a manual build. It is good to have kernel 5.4 (there is also a way to hack CCP code to use it for 4.15 as well). If you still need to further debug it now, you can try the following with kernel 5.4 and show the result here: 1) create a virtualenv and activate it (it is really hard to tell if your previous packages are installed correctly):
$ python3 -m .venv PATH_TO_VENV
$ source PATH_TO_VENV/bin/activate
2) install portus pip install portus
under the virtual environment, and check if you can import it in the virtual environment's python
3) to run an example, run aimd.py or const.py under example folder, which should work.
From my experience, python 3.8 definitely works. The version 0.6.1 is for pyportus only, and I use portus 0.5.1 too, which works and doesn't need a manual build. It is good to have kernel 5.4 (there is also a way to hack CCP code to use it for 4.15 as well). If you still need to further debug it now, you can try the following with kernel 5.4 and show the result here:
- create a virtualenv and activate it (it is really hard to tell if your previous packages are installed correctly):
$ python3 -m .venv PATH_TO_VENV $ source PATH_TO_VENV/bin/activate
- install portus
pip install portus
under the virtual environment, and check if you can import it in the virtual environment's python- to run an example, run aimd.py or const.py under example folder, which should work.
I executed the command "pip install portus" in the virtual environment myv, but could not import portus:
Hello, I have used the latest version, but this problem still appears. What is the reason?