djvergad / dash Goto Github PK
View Code? Open in Web Editor NEWAn MPEG/DASH client-server module for simulating rate adaptation mechanisms over HTTP/TCP.
License: GNU General Public License v2.0
An MPEG/DASH client-server module for simulating rate adaptation mechanisms over HTTP/TCP.
License: GNU General Public License v2.0
There are currently no test cases (except an auto-generated stub)
Hi~
I follow the Installation instructions and successfully get the output
However, I check the log in dash/model/dash-server.cc
To open the log, I use the command export NS_LOG=DashServer=level_all
Following is my command to run the simulator
./waf --run 'src/dash/examples/dash-example --users=1 --protocol="ns3::FdashClient" --linkRate=5000Kbps'
Then I get the log like this
DATA WAS JUST SENT!!!
DashServer:DataSend(0x16e3e30)
VidId: 1 rxAv= 0 queue= 39 res= 1547000
Could not send frame
DATA WAS JUST SENT!!!
DashServer:DataSend(0x16e3e30)
VidId: 1 rxAv= 0 queue= 39 res= 1547000
Could not send frame
DATA WAS JUST SENT!!!
DashServer:DataSend(0x16e3e30)
VidId: 1 rxAv= 0 queue= 38 res= 1547000
Could not send frame
DATA WAS JUST SENT!!!
DashServer:DataSend(0x16e3e30)
VidId: 1 rxAv= 0 queue= 38 res= 1547000
Could not send frame
DATA WAS JUST SENT!!!
....
The log "Could not send frame" is from dash-server.cc line 237
It means that sometimes server could not send packets to client
I wonder why this situation happen?
Could this problem be fixed?
This test case will show how the MPEG client will adapt to the changing channel conditions.
If we have multiple streams at the server-side can we add multiple players (each player requesting a single stream over the same channel from the server) at the client-side? Will that is equivalent to a separate dash client for each of the stream requesting the segments over a channel for different streams same as in the multi-client scenario. Thanks
Instead or multiplying, try addining
Hey,i get a error about installation.
after installing ns3 and configuring,I run the instruction
./waf --run 'src/dash/examples/dash-example --users=3 --protocol="ns::FdashClient" --LinkRate=1000Kbps'
and get a error:
Waf: Entering directory `/home/albert/repos/ns-3-allinone/ns-3-dev/build'
[1786/2466] Compiling src/dash/model/algorithms/osmp-client.cc
[1791/2466] Compiling src/dash/model/dash-server.cc
../src/dash/model/dash-server.cc: In static member function ‘static ns3::TypeId ns3::DashServer::GetTypeId()’:
../src/dash/model/dash-server.cc:58:60: error: ‘ns3::TypeId ns3::TypeId::AddTraceSource(std::__cxx11::string, std::__cxx11::string, ns3::Ptr)’ is deprecated [-Werror=deprecated-declarations]
MakeTraceSourceAccessor(&DashServer::m_rxTrace));
^
In file included from ./ns3/object-base.h:23:0,
from ./ns3/object.h:29,
from ./ns3/node.h:26,
from ../src/dash/model/dash-server.cc:26:
./ns3/type-id.h:439:10: note: declared here
TypeId AddTraceSource (std::string name,
^
cc1plus: all warnings being treated as errors
Waf: Leaving directory `/home/albert/repos/ns-3-allinone/ns-3-dev/build'
Build failed
-> task in 'ns3-dash' failed with exit status 1 (run with -v to display more information)
how can i solve this problem?(using ubuntu16.04 ns3.29
The current implementation consists of a packet header with only two message types: request, response. This is not an accurate representation of the HTTP protocol. It should be improved.
Hi,
I would be thankful if you could clarify 2 questions regarding the dash-server ('dash/model/dash-server.cc'):
Currently the MPEG packet size follows a Uniform distribution, and can be set at any (integer) rate.
There should be an option to generate packets from a MPEG trace file, at predefined rates.
Is it right?
else if (mi < gamma_d) // Switch down
{
i = rateInd - 1;
for (i = 0; i < rateInd - 1; i--)
{
if (rates[i] < mi * currRate)
{
nextRate = rates[i];
}
else
{
break;
}
}
}
May be:
else if (mi < gamma_d) // Switch down
{
for (i =rates_size-1; i>=0; i--)
{
if (rates[i] < mi * currRate)
{
nextRate = rates[i];
break;
}
}
}
What does represent MPEG_MAX_MESSAGE in the mpeg-header.h ?
The default value is set to 100000 [what?]
Thkns
hey,issues again :D
how to set the total buffer capacity? buffer is infinite?can i set an upper limit to buffer?
i didn't see the restrict of buffer in mpeg-play.
another:
how can i run the dash in variable bandwidth condition?
Hi, thank for your simulation.
Have you ever implemented the fluctuation of bandwidth in the code?
In the NS3 forum, they addressed us how to simulate the bandwidth fluctuation by changing bandwidth of the link.
https://groups.google.com/forum/#!msg/ns-3-users/rJaWMVixcmY/z1dy8gRsAwAJ
^ What the title says
is it possible to have segments that have a fixed time duration?
ns3 recommends each class to be defined in its own file
When executing the example dash-example.cc with ns version 3.34 the execution works fine (output is as expected), however after this execution I can no longer use the waf commands to execute any simulations in ns3 due to this error:
Traceback (most recent call last):
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Scripting.py", line 119, in waf_entry_point
run_commands()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Scripting.py", line 182, in run_commands
ctx=run_command(cmd_name)
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Scripting.py", line 173, in run_command
ctx.execute()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Scripting.py", line 375, in execute
return execute_method(self)
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 93, in execute
self.execute_build()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 100, in execute_build
self.compile()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 167, in compile
self.producer.start()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Runner.py", line 275, in start
self.refill_task_list()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Runner.py", line 152, in refill_task_list
tasks=next(self.biter)
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 416, in get_build_iterator
self.post_group()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 399, in post_group
tgpost(tg)
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/Build.py", line 359, in tgpost
f()
File "/home/alejandro/Desktop/bake/source/ns-3.34/.waf3-2.0.21-c6c9a875365426e5928462b9b74d40b5/waflib/TaskGen.py", line 123, in post
v()
File "/home/alejandro/Desktop/bake/source/ns-3.34/src/wscript", line 717, in apply_ns3moduleheader
for source in sorted(ns3headers.headers):
AttributeError: 'task_gen' object has no attribute 'headers'
Is this caused because there is no ns-3.34 compatibility ?
The DASH protocol includes messages for discovering the available rates, the segment sizes, etc. These packet exchanges have yet to be implemented.
Reduce the controller feedback.
^ what the title says.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.