SoonyangZhang / webrtc-gcc-ns3

evaluate gcc congestion contorl on ns3
Apache License 2.0
29 stars 15 forks source link

Questions on sending data via ns-3 webRTC model. #4

Closed lgs96 closed 1 year ago

lgs96 commented 1 year ago

Dear, Mr. Zhang.

First of all, thank you for your contributions of providing WebRTC ns-3 module.

I have some questions about sending procedure with provided WebRTC module.

It seems that the data packet is transmitted via bool WebrtcSender::SendRtp function, but there is no related function that use the bool WebrtcSender::SendRtp function.

But in the attached scratch file send packet obviously. Where does bool WebrtcSender::SendRtp operate and how the sending procedure in WebRTC ns-3 module?

Additionally, is it possible to transmit other data packets that is not a video frame (e.g., Iperf application to measure bandwidth) ?

Thank you in advance.

SoonyangZhang commented 1 year ago

inherit from webrtc::test::TransportBase and it will be called by webrtc library.

SoonyangZhang commented 1 year ago

You could write Application and send data through TCP socket provided by ns3. There are many congestion cotrol alorithms (Cubic, BBR) in ns3 and you could measure bandwidth. Iperf will call socket api provided by os and it will not work on ns3.

SoonyangZhang commented 1 year ago

https://github.com/SoonyangZhang/ns3-tcp-bbr/blob/main/ns-3.33/src/internet/model/

lgs96 commented 1 year ago

Thank you for the quick reply.

I guess that it seems that the application traffic is determined with webrtc library in default.

Is it possible to change application traffic for my custom demand?

SoonyangZhang commented 1 year ago

For what? This project is to test the congestion control algirithms for RTC. Te test bandwidth fairness or competitiveness, you could send data over UDP or TCP socket. In ns3 node, you can install different application, UDP, TCP, RTP. I do not have any idea of your intention.

lgs96 commented 1 year ago

I apologize that I missed to explain my intention first.

Actually, I want to test the performance of Google congestion control with varying application traffic, which contains sporadic data transmission that is far from a common RTC traffic.

SoonyangZhang commented 1 year ago

For a topology n0-------n1----n2-----n3. You coud use this module to test GCC by installing webrtc sender on n0 and webrtc receiver in ns3 (https://github.com/SoonyangZhang/webrtc-gcc-ns3/blob/main/scratch/webrtc-static.cc#L253). For other traffic (e.g. TCP), install TCP sender on n0 and receiver on ns3 (you could configure different congestion congestion algorithms, Reno, BBR, Cubic ), Refer: https://github.com/SoonyangZhang/ns3-tcp-bbr/blob/main/ns-3.33/scratch/tcp-dumbbell.cc#L283. First ,you should know how to use ns3.

lgs96 commented 1 year ago

Thank you for a suggestion.

I now understand this module is to test the RTC traffic.

I'll close the issue :)