public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "johnny zhao" <filamoon2@hotmail.com>
To: vda@port.imtp.ilyichevsk.odessa.ua, linux-kernel@vger.kernel.org
Subject: Re: udp packet loss even with large socket buffer
Date: Sat, 28 Feb 2004 17:08:13 -0500	[thread overview]
Message-ID: <BAY14-F15j87cUL2cZ00000613e@hotmail.com> (raw)

hi,

Since my program is coping with MSN, it's not easy to post a small example. 
But I will try :)

I use the following code to initialize the socket:

*****************************
	session->rtp.loc_addr.sin_family = AF_INET;
	session->rtp.loc_addr.sin_addr.s_addr = INADDR_ANY;
	session->rtp.loc_addr.sin_port = htons (port);
	session->rtp.socket = socket (PF_INET, SOCK_DGRAM, 0);
	g_return_val_if_fail (session->rtp.socket > 0, -1);
	err = bind (session->rtp.socket,
		    (struct sockaddr *) &session->rtp.loc_addr,
		    sizeof (struct sockaddr_in));
	/* set the address reusable */
	err = setsockopt (session->rtp.socket, SOL_SOCKET, SO_REUSEADDR,
			  (void*)&optval, sizeof (optval));

	optval = 8388608;
	int optlen;
	err = setsockopt (session->rtp.socket, SOL_SOCKET, SO_RCVBUF,
	      (void*)&optval, sizeof (optval));
	err = getsockopt (session->rtp.socket, SOL_SOCKET, SO_RCVBUF,
	      (void*)&optval, &optlen);
**************************

the following code is used to receive data:
**************************

      while ( ( error = recvfrom (session->rtp.socket, mp->b_wptr,
					  1500, 0,
					  (struct sockaddr *) &remaddr,
					  &addrlen) ) > 0 )
      {
        mp->b_wptr = mp->b_rptr + error;
        rtp_parse(session, mp);    //this function parses and enqueues the 
received packet
        mp = allocb (1500/*session->max_buf_size*/, 0);   //wang
      }
**************************

These codes are executed in a thread with the highest priority.
Thank you in advance!

Best regards,
Johnny

>From: Denis Vlasenko <vda@port.imtp.ilyichevsk.odessa.ua>
>To: "johnny zhao" <filamoon2@hotmail.com>, linux-kernel@vger.kernel.org
>Subject: Re: udp packet loss even with large socket buffer
>Date: Sat, 28 Feb 2004 23:22:50 +0200
>
>On Saturday 28 February 2004 03:09, johnny zhao wrote:
> > Hi,
> >
> > I have a problem when trying to receive udp packets containing video 
>data
> > sent by Microsoft Windows Messenger. Here is a detailed description:
> >
> > Linux box:
> >     Linux-2.4.21-0.13mdksmp, P4 2.6G HT
> > socket mode:
> >     blocked mode
> > code used:
> >     while ( recvfrom(...) )
> > socket buffer size:
> >     8388608, set by using sysctl -w net.core.rmem_default and rmem_max
> >
> > I used ethereal(using libpcap) to monitor the network traffic. All the
> > packets were transferred and captured by libpcap. But my program 
>constantly
> > suffers from packet loss. According to ethereal, the average time 
>interval
> > between 2 packets  is 70-80ms, and the minimum interval can go down to
> > ~1ms. Each packet is smaller than 1500 bytes (ethernet MTU).
> >
> > Can anybody help me? I googled and found a similar case that had been
> > solved by increasing the socket buffer size. But it doesn't work for me. 
>I
> > think 8M is a crazily large size :(
>
>Post a small program demonstrating your problem.
>(I'd test udp receive with netcat too)
>--
>vda
>

_________________________________________________________________
Find and compare great deals on Broadband access at the MSN High-Speed 
Marketplace. http://click.atdmt.com/AVE/go/onm00200360ave/direct/01/


             reply	other threads:[~2004-02-28 22:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-28 22:08 johnny zhao [this message]
2004-03-02 12:58 ` udp packet loss even with large socket buffer Paulo Marques
  -- strict thread matches above, loose matches on Subject: below --
2004-03-03  0:16 johnny zhao
2004-02-28  1:09 johnny zhao
2004-02-28 21:22 ` Denis Vlasenko
2004-03-02  2:12   ` Charlie (Zhanglei) Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BAY14-F15j87cUL2cZ00000613e@hotmail.com \
    --to=filamoon2@hotmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vda@port.imtp.ilyichevsk.odessa.ua \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox