csulennon / udtx

修改UDT默认的CC算法,移植linux2.6版本的tcp_vegas和tcp_cubic算法进去
BSD 3-Clause "New" or "Revised" License
25 stars 14 forks source link

how to test vegas algorithm #1

Open Alexyali opened 3 years ago

Alexyali commented 3 years ago

hi csulennon, i wanna test tcp vegas in udt protocol, but i have some problems. in general, udt use setsockopt to set UDT_CC for different cc algorithm. i see there is LINUXCC class, but i cannot set it in setsockopt. how can i change the default cc to vegas? Thanks!

Alexyali commented 3 years ago

i found you init CC algorithm in line 122 of core.cpp

m_pCCFactory = new CCCFactory<LINUXCC>;
Alexyali commented 3 years ago

To test TCP Cubic algorithm, i modified two files: in core.h, add #include "cubic_cc.h" in core.cpp line 122, change m_pCCFactory = new CCCFactory<CUBICCC>;

But when i test cubic, the rtt is very low, which is not correspond with its nature of "buffer bloat" so where is the problem? here is the log

SendRate(Mb/s)  RTT(ms) CWnd    PktSndPeriod(us)        RecvACK RecvNAK
1127.97         0.089   7938    10.7632                 1405    4
885.389         0.123   7924    19.1499                 2208    9
889.438         0.056   8784    9.44094                 3329    9
832.613         0.067   7792    16.0451                 4008    13
802.914         0.039   8872    25                      4815    17
751.347         0.015   7335    19.5693                 5348    18
721.503         0.01    8889    19.0113                 6023    20
689.205         0.027   8388    24.0963                 6469    23
662.626         0.029   8357    17.4606                 7029    26
666.024         0.014   1648    15.0755                 7892    27
684.572         0.04    8732    14.164                  8970    29
670.72          0.062   8211    19.335                  9487    32
666.671         0.007   7359    22.5333                 10263   34
651.425         0.101   8882    26                      10694   40
643.47          0.033   5161    17.6797                 11359   40
QingweiJi commented 3 years ago

To test TCP Cubic algorithm, i modified two files: in core.h, add #include "cubic_cc.h" in core.cpp line 122, change m_pCCFactory = new CCCFactory<CUBICCC>;

But when i test cubic, the rtt is very low, which is not correspond with its nature of "buffer bloat" so where is the problem? here is the log

SendRate(Mb/s)  RTT(ms) CWnd    PktSndPeriod(us)        RecvACK RecvNAK
1127.97         0.089   7938    10.7632                 1405    4
885.389         0.123   7924    19.1499                 2208    9
889.438         0.056   8784    9.44094                 3329    9
832.613         0.067   7792    16.0451                 4008    13
802.914         0.039   8872    25                      4815    17
751.347         0.015   7335    19.5693                 5348    18
721.503         0.01    8889    19.0113                 6023    20
689.205         0.027   8388    24.0963                 6469    23
662.626         0.029   8357    17.4606                 7029    26
666.024         0.014   1648    15.0755                 7892    27
684.572         0.04    8732    14.164                  8970    29
670.72          0.062   8211    19.335                  9487    32
666.671         0.007   7359    22.5333                 10263   34
651.425         0.101   8882    26                      10694   40
643.47          0.033   5161    17.6797                 11359   40

Question: What is the key point of the Cubic algorithm, why the cwnd value of the measured result is all 2, and how to modify it