Giter VIP home page Giter VIP logo

drainqueuecongestion's People

Contributors

soonyangzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

drainqueuecongestion's Issues

building error

It seems the recv isn't defined in your code. Maybe the recv should be ret?
The code comes from /dqc/model/thirdparty/src/proto_socket.cc
int UdpSocket::RecvFrom(charbuf,size_t size,SocketAddress &peer){
int ret=0;
su_addr dst;
ret=su_udp_recv(fd_,&dst,(void
)buf,(uint32_t)size,0);
if(recv>=0){
char ip[40];
uint16_t port;
su_addr_to_iport(&dst,ip,40,&port);
std::string host(ip,strlen(ip));
peer=SocketAddress(host,port);
}
return ret;
}

如何提取CC算法中的一些数据如RTT,cwnd之类的?

您好,非常感谢您这个集合了众多CC的非常棒的项目,我希望利用您的项目来进行一些仿真实验,但是我在使用ns3方面是一个新手,而且您的代码量非常庞大,一时没有理清其内在逻辑。所以我冒昧询问一下,如果我希望比如提取bbr算法(src/dqc/model/thirdparty/congestion/proto_bbr_sender.cc)中的RTT,BW,cwnd等数据用来分析,我该怎么做呢?

我看到您的dqc_trace和dqc_sender中提供了一些记录如BW等的接口,但是没有明白其他数据应该如何获取?以及不太明白如proto_bbr_sender中的DebugState应该如何使用(这个里面看起来提供了很多需要的数据)?proto_bbr_sender中好像也提供了CalculateCongestionWindow类似这样的函数,但是我没有找到在顶层是怎么一路调用到这个函数的,以及这个函数的结果应该如果获取下来?

感谢您百忙之中能够阅读我的issue,非常感谢如果您能够不吝赐教!

Dqc框架实现的DqcSender和DqcReceiver只能进行UDP通信测试吗?

伟大的作者您好:
您实现的框架和各类拥塞控制算法非常全面,感谢您的付出和开源精神
下载代码和进行测试时,看到README中和CSDN博客中提到是基于QUIC的,就有点担心该测试程序是不是基于UDP报文的
在粗浅阅读了DqcSender源码后,发现
m_socket = Socket::CreateSocket (GetNode (),UdpSocketFactory::GetTypeId ());
是否意味着您的框架以及全部拥塞控制算法,都是基于UDP实现的?

ns3编译问题

我的虚拟机是18.04,使用ns-3.30.1,运行这里的测试时找不到头文件的dqc-module.h,我在机器上全局搜索,也确实没有这个文件,请问这是怎么回事呢?
root@rw-vm:/home/workspace/ns-allinone-3.30.1/ns-3.30.1# ./waf --run "scratch/dqc-test --it=1 --cc=bbr"
Waf: Entering directory `/home/workspace/ns-allinone-3.30.1/ns-3.30.1/build'
[2683/2745] Compiling scratch/dqc-test.cc
[2685/2745] Linking build/scratch/subdir/subdir
../scratch/dqc-test.cc:9:10: fatal error: ns3/dqc-module.h: No such file or directory
#include "ns3/dqc-module.h"
^~~~~~~~~~~~~~~~~~
compilation terminated.

Can you check some runtime errors for the latest version?

Hello

My environment is like this.

Environment

OS: Ubuntu 16.04
NS3: ns3-3.26
gcc version: 6.5.0

Moreover, I copied your "dqc" under ns3-3.26/src folder.
I also followed your directions about PATH.

Background

In compile process, I got two errors.

The Main Problem was "ProtoTime" that has no default constructor.
Copy constructor became default, so it couldn't create ProtoTime instance without initial params.

So, I added empty constructor like this.

ProtoTime(const ProtoTime& other) = default;
ProtoTime() {} // Added Here

Unexpected Errors

After that, I could compile your src and run the command you gave.

./waf --run "scratch/dqc-test --it=1 --cc=bbr"
or
./waf --run "scratch/dqc-test --it=1 --cc=bbrd"

However, I cannot run "dqc-test.cc" with bbrv2 cc.

I added also this code to use KBBRv2.

else if(cc_tmp==std::string("bbrv2")){
                cc=kBBRv2;
                cc1=cc;
        }

However, Error occured

image

I can run "bbr-rtt.cc" which uses also "bbrv2" congestion control algorithm.

What is the problem? I tried to resolve this for a long time, but i couldn't
If possible, plz let me know.

Thank you in advance.
sincerely.

请教问题

您好,在使用本库代码搭建无线网络拓扑对Cubic进行测试的过程中发现,虽然链路丢包基本在5%以上,但Cubic本身吞吐量并未明显下降,且RTT逐渐增高,请问您对这一问题有什么见解嘛?

How to obtain link information?

Now, I've already run your code. But I have a question after read it, can I obtain information such as average send rate, average receive rate, average rtt from a DqcTraceState object directly using C++ interfaces like the code bellow?

DqcTraceState dts;
// data collection...
Info info = dts.Flush();	// change your code so as to compute average link information and get it
dts.reset();	// reset it
// process 

建置環境問題

抱歉我是個新手,我剛開始嘗試跑你的程式,但出現這個問題,可能是我在建置環境的時候出了問題。
0: fatal error: ns3/dqc-module.h: No such file or directory

想請問能不能給我更詳細的建置過程。

环境配置问题

你好,在执行您的这段代码 trace1.Log(log,DqcTraceEnable::E_DQC_OWD|DqcTraceEnable::E_DQC_BW|DqcTraceEnable::E_DQC_GOODPUT);
出现了这个错误bash: syntax error near unexpected token `log,DqcTraceEnable::E_DQC_OWD'。
请问您能给出什么解决方法吗,万分感谢!

How to compile and run this in ns 3.37

Hi,

I copied dqc/ to src directory and rewrite wscript to CMakeLists.txt. But when running ./ns3 configure --enable-examples --enable-tests, it shows:

-- Configuring done
CMake Error in src/dqc/CMakeLists.txt:
  Unable to resolve full path of PCH-header
  '/home/me/ns-allinone-3.37/ns-3.37/cmake-cache/CMakeFiles/stdlib_pch.dir/cmake_pch.h'
  assigned to target libdqc-obj, although its path is supposed to be known!


-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.
Finished executing the following commands:
cd cmake-cache; /usr/bin/cmake -DNS3_EXAMPLES=ON -DNS3_TESTS=ON .. ; cd ..

How to fix it?

The changed CMakeLists.txt:

build_lib(
  LIBNAME dqc
  SOURCE_FILES
    model/thirdparty/src/ack_frame.cc
    model/thirdparty/src/alarm.cc
    model/thirdparty/src/byte_codec.cc
    model/thirdparty/src/flag_config.cc
    model/thirdparty/src/flag_impl.cc
    model/thirdparty/src/ip_address.cc
    model/thirdparty/src/memslice.cc
    model/thirdparty/src/ns3_platform.cc
    model/thirdparty/src/netutils.cc
    model/thirdparty/src/packet_number.cc
    model/thirdparty/src/platform_linux.c
    model/thirdparty/src/platform_windows.c
    model/thirdparty/src/process_alarm_factory.cc
    model/thirdparty/src/proto_bandwidth.cc
    model/thirdparty/src/proto_con.cc
    model/thirdparty/src/proto_connection_stats.cc
    model/thirdparty/src/proto_error_codes.cc
    model/thirdparty/src/proto_framer.cc
    model/thirdparty/src/proto_packets.cc
    model/thirdparty/src/proto_socket.cc
    model/thirdparty/src/proto_stream.cc
    model/thirdparty/src/proto_stream_sequencer.cc
    model/thirdparty/src/proto_time.cc
    model/thirdparty/src/proto_types.cc
    model/thirdparty/src/proto_utils.cc
    model/thirdparty/src/random.cc
    model/thirdparty/src/received_packet_manager.cc
    model/thirdparty/src/rtt_monitor.cc
    model/thirdparty/src/rtt_stats.cc
    model/thirdparty/src/send_packet_manager.cc
    model/thirdparty/src/send_receive.cc
    model/thirdparty/src/socket_address.cc
    model/thirdparty/src/string_utils.cc
    model/thirdparty/src/unacked_packet_map.cc
    model/thirdparty/congestion/balia_sender_bytes.cc
    model/thirdparty/congestion/couple_bbr_sender.cc
    model/thirdparty/congestion/couple_cc_manager.cc
    model/thirdparty/congestion/couple_cc_source.cc
    model/thirdparty/congestion/cubic_bytes.cc
    model/thirdparty/congestion/cubic_plus_bytes.cc
    model/thirdparty/congestion/cubic_plus_sender_bytes.cc
    model/thirdparty/congestion/dqc_cc_param_config.cc
    model/thirdparty/congestion/dwc_sender_bytes.cc
    model/thirdparty/congestion/hybrid_slow_start.cc
    model/thirdparty/congestion/ledbat_sender_bytes.cc
    model/thirdparty/congestion/lia_sender_bytes.cc
    model/thirdparty/congestion/lia_sender_enhance.cc
    model/thirdparty/congestion/lia_sender_enhance3.cc
    model/thirdparty/congestion/lptcp_sender_bytes.cc
    model/thirdparty/congestion/nmcc_sender_bytes.cc
    model/thirdparty/congestion/mp_veno_sender_bytes.cc
    model/thirdparty/congestion/mp_westwood_sender_bytes.cc
    model/thirdparty/congestion/olia_sender_bytes.cc
    model/thirdparty/congestion/pcc_monitor_interval_queue.cc
    model/thirdparty/congestion/pcc_sender.cc
    model/thirdparty/congestion/pcc_utility_manager.cc
    model/thirdparty/congestion/proto_bandwidth_sampler.cc
    model/thirdparty/congestion/proto_bbr_plus_sender.cc
    model/thirdparty/congestion/proto_bbr_rand_sender.cc
    model/thirdparty/congestion/proto_bbr_sender.cc
    model/thirdparty/congestion/proto_copa_sender.cc
    model/thirdparty/congestion/proto_dctcp_sender.cc
    model/thirdparty/congestion/proto_delay_bbr_sender.cc
    model/thirdparty/congestion/proto_highrail_sender.cc
    model/thirdparty/congestion/proto_lpbbr_sender.cc
    model/thirdparty/congestion/proto_pacing_sender.cc
    model/thirdparty/congestion/proto_send_algorithm_interface.cc
    model/thirdparty/congestion/proto_tsunami_sender.cc
    model/thirdparty/congestion/prr_sender.cc
    model/thirdparty/congestion/quic_bandwidth_sampler.cc
    model/thirdparty/congestion/quic_bbr_sender.cc
    model/thirdparty/congestion/quic_bbr2_drain.cc
    model/thirdparty/congestion/quic_bbr2_misc.cc
    model/thirdparty/congestion/quic_bbr2_probe_bw.cc
    model/thirdparty/congestion/quic_bbr2_probe_rtt.cc
    model/thirdparty/congestion/quic_bbr2_sender.cc
    model/thirdparty/congestion/quic_bbr2_startup.cc
    model/thirdparty/congestion/tcp_c2tcp_sender_bytes.cc
    model/thirdparty/congestion/tcp_cubic_sender_bytes.cc
    model/thirdparty/congestion/tcp_elastic_sender_bytes.cc
    model/thirdparty/congestion/tcp_hunnan_sender_bytes.cc
    model/thirdparty/congestion/tcp_learning_sender_bytes.cc
    model/thirdparty/congestion/tcp_veno_sender_bytes.cc
    model/thirdparty/congestion/tcp_westwood_sender_bytes.cc
    model/thirdparty/congestion/vegas_sender_bytes.cc
    model/thirdparty/congestion/wvegas_sender_bytes.cc
    model/thirdparty/congestion/xmp_sender_bytes.cc
    model/dqc_delay_ack_receiver.cc
    model/dqc_sender.cc
    model/dqc_receiver.cc
    model/time_tag.cc
    model/dqc_trace.cc
  HEADER_FILES
    model/dqc_delay_ack_receiver.h
    model/dqc_sender.h
    model/dqc_receiver.h
    model/dqc_clock.h
    model/time_tag.h
    model/dqc_trace.h
    model/thirdparty/include/ack_frame.h
    model/thirdparty/include/alarm.h
    model/thirdparty/include/basic_constants.h
    model/thirdparty/include/basic_macro.h
    model/thirdparty/include/byte_codec.h
    model/thirdparty/include/byte_order.h
    model/thirdparty/include/cf_platform.h
    model/thirdparty/include/commandlineflags.h
    model/thirdparty/include/flag_config.h
    model/thirdparty/include/flag_util_impl.h
    model/thirdparty/include/interval.h
    model/thirdparty/include/ip_address.h
    model/thirdparty/include/linked_hash_map.h
    model/thirdparty/include/memslice.h
    model/thirdparty/include/netutils.h
    model/thirdparty/include/ns3_platform.h
    model/thirdparty/include/optional.h
    model/thirdparty/include/packet_number.h
    model/thirdparty/include/packet_number_indexed_queue.h
    model/thirdparty/include/process_alarm_factory.h
    model/thirdparty/include/proto_bandwidth.h
    model/thirdparty/include/proto_circular_deque.h
    model/thirdparty/include/proto_comm.h
    model/thirdparty/include/proto_con.h
    model/thirdparty/include/proto_con_visitor.h
    model/thirdparty/include/proto_connection_stats.h
    model/thirdparty/include/proto_constants.h
    model/thirdparty/include/proto_error_codes.h
    model/thirdparty/include/proto_framer.h
    model/thirdparty/include/proto_packets.h
    model/thirdparty/include/proto_socket.h
    model/thirdparty/include/proto_stream.h
    model/thirdparty/include/proto_stream_data_producer.h
    model/thirdparty/include/proto_stream_sequencer.h
    model/thirdparty/include/proto_time.h
    model/thirdparty/include/proto_types.h
    model/thirdparty/include/proto_utils.h
    model/thirdparty/include/quic_export.h
    model/thirdparty/include/quic_logging.h
    model/thirdparty/include/random.h
    model/thirdparty/include/received_packet_manager.h
    model/thirdparty/include/rtt_monitor.h
    model/thirdparty/include/rtt_stats.h
    model/thirdparty/include/send_packet_manager.h
    model/thirdparty/include/send_receive.h
    model/thirdparty/include/socket_address.h
    model/thirdparty/include/string_utils.h
    model/thirdparty/include/unacked_packet_map.h
    model/thirdparty/congestion/couple_cc_manager.h
    model/thirdparty/congestion/couple_cc_source.h
    model/thirdparty/congestion/dqc_cc_param_config.h
    model/thirdparty/congestion/proto_pacing_sender.h
    model/thirdparty/congestion/proto_send_algorithm_interface.h
    model/thirdparty/congestion/unknow_random.h
    model/thirdparty/logging/base.h
    model/thirdparty/logging/build_config.h
    model/thirdparty/logging/logging.h
  LIBRARIES_TO_LINK ${libnetwork}
                    ${libinternet} 
                    ${libcore}
)

Fatal Error: sent_packet.last_acked_packet_sent_time is zero

伟大作者您好:
我在ns-3.30中测试您的算法,其余算法均能正常运行,只有在测试bbrv2时,直接报错

terminate called after throwing an instance of 'dmlc::Error'
 what():  [15:50:10] ../src/dqc/model/thirdparty/congestion/quic_bandwidth_sampler.cc:336: sent_packet.last_acked_packet_sent_time is zero

您的源码如下

  // There might have been no packets acknowledged at the moment when the
  // current packet was sent. In that case, there is no bandwidth sample to
  // make.
  if (sent_packet.last_acked_packet_sent_time == ProtoTime::Zero()) {
    LOG(FATAL)<< "sent_packet.last_acked_packet_sent_time is zero";
    return QuicBandwidthSample();
  }

但是google quic中的源码也有这个主食,但是并没有LOG(FATAL)
https://quiche.googlesource.com/quiche/+/envoy-integration/quic/core/congestion_control/bandwidth_sampler.cc
在我注释了这行代码后,程序也成功正常运行了。请问您加上这一部分有何特别的用意吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.