inet-tub / ns3-datacenter

104 stars 32 forks source link

initWienRate? #2

Open patrickkasper opened 2 years ago

patrickkasper commented 2 years ago

What is error here? cannot find it in code:

msg="Could not set default value for ns3::TcpSocketState::initWienRate", +0.000000000s -1 file=../src/core/model/config.cc, line=854 terminate called without an active exception

vamsiDT commented 2 years ago

Hi, thanks for pointing that out. Some old names are still stuck here. I just corrected it and pushed. Hope it should work now.

patrickkasper commented 2 years ago

thank you it working. but now when i run abm-evaluation fct file is always empty (one line only for titles) but simulation ends and stats file is not empty. did you see output in fct file?

thank you

vamsiDT commented 2 years ago

It should work now. The issue was with FlowFinish TraceSource. Thanks for pointing it.

PS: Please make sure to set alphasFile, cdfFileName to the correct path in the abm-evaluation file. You can also pass it as cmd arguments.

patrickkasper commented 2 years ago

thank you. it looks the fix only works for incast applications. i can see that non-incast flows exist but they do not show in the fct file. incasts are showed well.

vamsiDT commented 2 years ago

I doubt you might be having only non-incast flows in your fct file but not incast flows. Please check queryRequestRate value. You can set it using cmd as --queryRequestRate=1 for example. This is set to zero by default and no incast flows are generated.

As a check I ran a partial simulation and pushed fcts.txt.

The first line in fcts.txt shows what each column means.

$ cat fcts.txt | head -n1

time flowsize fct basefct slowdown basertt flowstart priority incast

The following are non-incast websearch flows.

$ cat fcts.txt | awk '{if($9==0) print $0}' | head -n2

10.0001 7984.19 130388 86387.4 1.50934 80 12.572 1 0
10.0014 61283.2 173091 129027 1.34151 80 1242.72 1 0

The following are incast flows.

$ cat fcts.txt | awk '{if($9==1) print $0}' | head -n2

10.0042 58885.4 418809 127108 3.2949 80 3751.87 1 1 
10.0045 58885.4 747273 127108 5.87903 80 3751.87 1 1
patrickkasper commented 2 years ago

thank you i think the problem was one of start_time, flow_end_time because i had changed those. i don't know which one of these was the problem because in every setting of them both type of flows (incast and non-incast) are generated from the cdf (request rate was never zero and i was printing flow size and their type as they were being generated) so i expected to see them finish too but i couldn't see any non-incast in fct (with start time=0, flow_end_time = 0.2, end_time=0.4) . now even when i set a very low load and start_time=10, flow_end_time=10.1 and end_time=20, some of the non-incast flows are not reported in the fct (but some are) but incasts finish. according to my math by looking at flow sizes and network capacity all should finish and hence be in fct so i was surprised.

i think if you could provide a guideline to set the start, flow_end and end times so we could see all flows in fct it would be very helpful.

thank you for your help here :)

vamsiDT commented 2 years ago

Hi, actually it has nothing to do with start and end times. A quick pointer: Please don't start at time 0. Its best to start at any time after 1.5 seconds. Incast flows are generated by persistent tcp connections. Here connection setup is done initially between 0-1.5 seconds.

The missing flows is actually a nice lesson about TCP port number 0.

If you check with the version you have before doing a git pull, you should notice that the number of missing flows will be exactly $n-1$ where $n$ is the total number of servers in the topology. All the sink apps which are created by specifying port number $0$ will eventually find a random port number allocated by Ns3 but the corresponding bulksend app communicates with dst port $0$. This eventually leads to connection failure and hence the missing flows. The initialization with port number zero is due to the stupidity here: uint32_t PORT_START[512] = {4444};

In any case, hope it works now. Thanks a lot for pointing this out. :)