hello,

I did open this issue

http://bugs.python.org/issue27271

and I got recommendation from to open a discussion .

I do have a solution by UDP. 

+++++
client generating traffic by SCTP  ----->   server  generating reports by 
UDP ( without any response back) --->  
server asyncio receiving UDP and sending heartbeat every 10 seconds to 
another ip.addr  and sending all reports by tcp to elasticsearch.
+++++


I am monitoring all machines by tcpdump  , I do have  linux embedded and 
windows7 and windows server 2012 in this scenario.

tcpdump
163 packets captured
835 packets received by filter
0 packets dropped by kernel
001A-$


tcpdump have this func to report  packets dropped by kernel.  and in my 
case it will be always zero.

here is the mismatch that I am always seen during tests:

+++
124605 UDP packets send from client.

and received by server network:

tcpdump
Packets: 124605

correct number send and received.  124605

++++++

received by application, I do have a count for all udp received by application:

def datagram_received(self, data, addr):

[2016-06-08 14:59:49] total udp = 124255,queue size =0
[2016-06-08 14:59:49] Got 124255 json report from server.

only 124255 received by application.

124605 - 124255 = 350 udp , received by network card , but application never 
got it.

we are missing 350 udp.


less udp per second then this problem will disappear. and I am monitoring 
cpu/memory/network and there is no bottleneck.
+++



now, I have this problem . tcpdump does not show any dropped by kernel, 
 but on asyncio  i am not able to debug it.

debug between  kernel and  datagram_received :

 def datagram_received(self, data, addr):
            asyncio_queue.put_nowait(data)



I do have two threads, main to handle  datagram_received add to queue
  and another to read from queue and  handle  tcp/json.



regards!
Valdemar

Reply via email to