<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Source Code Pro";
panose-1:2 11 5 9 3 4 3 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=EN-GB link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hi Junxiao</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I understand, so probably my application is sending to much data in short intervals and causing the producer to crash. I believe a simple approach would be to have a TCP-like window which increases in size when the consumer receives data and decreses upon Nacks and Timeouts. That might be enough since I don’t need very high bandwidths.</p><p><o:p> </o:p></p><p>And what about this other point, do you have an ideia of what might be happening here? </p><p>I also encountered another issue when testing this. I tried starting the consumer processes from the python script that creates the experiment, but I found that the Scheduler does not run for some reason. All the calls to m_scheduler.schedule() are made, but after calling m_ioService.run(), the delayedInterest() function is not called at all. However, the exact same program works when called with the same parameters from the host's xterm window. This a pretty big problem, because I cannot manually start all the consumers for the experiment. </p><p><b>Core scheduling mechanism.<o:p></o:p></b></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>for (i = 0; i < lstData.size(); i++){<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'> dataBuff = lstData[i];<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'> fprintf(stdout, "[Consumer::run] Scheadule at %dms, Type=%d, ID=%d, Payload=%d, Prod=%s\n", dataBuff.nTimeMs, dataBuff.nType, dataBuff.nId, dataBuff.nPayload, dataBuff.strProd);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'> m_scheduler.schedule(boost::chrono::milliseconds(dataBuff.nTimeMs), [this, dataBuff] { delayedInterest(dataBuff); });<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>}<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>// m_ioService.run() will block until all events finished or m_ioService.stop() is called<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>m_ioService.run();<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>return;<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b>Call from the python script.<o:p></o:p></b></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Source Code Pro"'>getPopen(pHost, 'consumer-with-queue %s /home/vagrant/icnsimulations/topologies/queue_wired-topo4.txt' % (str(pHost)))<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Once again, thank you so much for your help.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best regards, </p><p class=MsoNormal>André Dexheimer Carneiro</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:shijunxiao@email.arizona.edu">Junxiao Shi</a><br><b>Sent: </b>26 April 2021 23:32<br><b>To: </b><a href="mailto:adcarneiro@inf.ufrgs.br">Andre</a><br><b>Cc: </b><a href="mailto:mini-ndn@lists.cs.ucla.edu">sepehr abdous via Mini-NDN</a><br><b>Subject: </b>Re: [EXT][Mini-NDN] Timeouts in MiniNDN</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Hi Andre</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I don't see congestion control in this snippet.</p></div><div><p class=MsoNormal>Applications are required to implement congestion control in order to operate smoothly in an NDN network.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Yours, Junxiao</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Mon, Apr 26, 2021 at 8:45 PM Andre <<a href="mailto:adcarneiro@inf.ufrgs.br">adcarneiro@inf.ufrgs.br</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><div><p class=MsoNormal style='margin-left:14.4pt'>Inside delayedInterest, the variable nPackets is determined according to the 8000 byte payload limit.</p><div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#7B7F8B'>// Express interest for all packets</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'><o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>for</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> (i </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>0</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>; i </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'><</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> nPackets; i</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>++</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>){<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>if</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> ((bHasLeftover) </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>&&</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> (i</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>+</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>1</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>==</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> nPackets)){<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#7B7F8B'>// Last packet</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'><o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>nPacketPayload </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> dataBuff.nPayload </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>%</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> N_MAX_PACKET_BYTES;<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>}<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>else</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>{<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#7B7F8B'>// Any other packet</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'><o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>nPacketPayload </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> N_MAX_PACKET_BYTES;<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>}<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>snprintf</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(strBuf, </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>sizeof</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(strBuf), </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#DEE492'>"</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%s</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>-</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%d</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>b-</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%d</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>of</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%d</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#DEE492'>"</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, strPrefix, nPacketPayload, i</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>+</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>1</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, nPackets);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>fprintf</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(stdout, </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#DEE492'>"</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>[Consumer::delayedInterest] Expressing interest=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%s</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'> (</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%d</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>/</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>%d</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#E7EE98'>)</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>\n</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#DEE492'>"</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, strBuf, i</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>+</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>1</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, nPackets);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>dtBegin </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> std</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>chrono</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>steady_clock</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>now</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>();<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>interestName </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>Name</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(strBuf);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>interest </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>=</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'> </span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>Interest</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(interestName);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>interest.</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>setCanBePrefix</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>false</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>interest.</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>setMustBeFresh</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>true</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>interest.</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>setInterestLifetime</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>6</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>_s</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>);<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>m_face.</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>expressInterest</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(interest,<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>bind</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>&</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>Consumer</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>onData, </span><i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>this</span></i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, _1, _2, dtBegin),<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>bind</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>&</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>Consumer</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>onNack, </span><i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>this</span></i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, _1, _2, dtBegin),<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#62E884'>bind</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>(</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>&</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>Consumer</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F286C4'>::</span><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>onTimeout, </span><i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#BF9EEE'>this</span></i><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>, _1, dtBegin));<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:14.4pt;line-height:15.0pt;background:#282A36'><span style='font-size:11.5pt;font-family:"Source Code Pro";color:#F6F6F4'>}<o:p></o:p></span></p></div></div><p><o:p> </o:p></p></div></blockquote></div></div><p style='margin-left:4.8pt'>This runs fine for small requests, but when more interests are expressed in a row, making requests of about 60 to 100 8KB packages, the producers work for a while but then start becoming unresponsive. Once I get a timeout from a specific producer, it does not answer to any more requests, even if I kill the producer/consumer process and start them back up.</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>