Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Nov 2002 01:11:47 +0100
From:      Florian Kruegl <fk@duese.org>
To:        Julian Elischer <julian@elischer.org>
Cc:        freebsd-net@FreeBSD.ORG
Subject:   Re: pppoe performance problems
Message-ID:  <20021130011147.26e4c87b.fk@duese.org>
In-Reply-To: <20021128210412.7aae42e2.fk@duese.org>
References:  <20021127210449.299ade52.fk@duese.org> <Pine.BSF.4.21.0211271213130.52749-100000@InterJet.elischer.org> <20021128210412.7aae42e2.fk@duese.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 28 Nov 2002 21:04:12 +0100
Florian Kruegl <fk@duese.org> wrote:

> On Wed, 27 Nov 2002 12:47:20 -0800 (PST)
> Julian Elischer <julian@elischer.org> wrote:
> 
> > 
> > 
> > On Wed, 27 Nov 2002, Florian Kruegl wrote:
> > 
> > > Hi *,
> > > 
> > > I'm trying to set up some kint of test environment for xDSL
> > > devices. before wasting much time trying to explain the
> > > environment here is a little picture:
> > > 
> > > | | | | | | | | |
> > > | | | | | | | | |  XDSL Lines 
> > > +-+-+-+-+-+-+-+-+
> > > | Siemens DSLAM |
> > > +-------+-------+	
> > > 	|
> > >        ATM (OC3 SM)
> > > 	|                              
> > > +-------+-------+		   fxp0	+---------------+
> > > |    Brick XL	+--------X-Over---------+  FreeBSD 4.6	|
> > > +-------+-------+			+-------+-------+
> > > 	|					| fxp1
> > >     Ethernet				    Ethernet
> > >   192.168.64.2				  192.168.64.3
> > > 	|					|
> > > --------+---------------------------------------+-----------
> > > 			_Internet_
> > > 
> > > The BrickXL operates as a bridge and bridges the VPI:VCI
> > > combinations intended to be used for PPPoE and DHCP directly over
> > > the X-Over link to the FreeBSD Box running pppoed and dhcpd. Using
> > > tcp connections for bandwith maessurement show normal values, but
> > > when using a Ethernet Test Box (SmartApp / SmartBits), which spits
> > > out IP pakets at a defined rate and uses all sent frames where
> > > recieved as success criteria to determine the maximum transfer
> > > rate, gives rates about 60 f/s. when looking at the logs you can
> > > see that at higher rates (2000f/s) there are just one or two
> > > frames missing. but it takes till theese mentioned 60 f/s second
> > > till all packets are recieved by the testequipment. 
> > > 
> > > my pppoe config is nothing special:
> > > rc.conf
> > > --------------------<Schanipp>--------------------
> > > pppoed_enable="YES"
> > > pppoed_provider="pppoe"
> > > pppoed_flags="-P /var/run/pppoed.pid"
> > > pppoed_interface="fxp0"
> > > --------------------<Schanipp>--------------------
> > > 
> > > ppp.conf
> > > --------------------<Schanipp>--------------------
> > > default:
> > >  set log Phase Chat IPCP CCP tun command
> > > 
> > > pppoe:
> > >  allow mode direct
> > >  set timeout 0
> > >  disable mppe
> > >  enable pap
> > >  set ifaddr 192.168.64.3/32 192.168.100.1-192.168.100.127
> > >  allow users
> > >  accept dns
> > >  set dns 192.168.64.3 
> > >  disable lcp
> > >  accept lqr
> > >  disable deflate
> > >  disable pred1
> > >  disable vjcomp
> > >  disable acfcomp
> > >  disable protocomp 
> > >  set vj slotcomp off 
> > > --------------------<Schanipp>--------------------
> > > 
> > > mpd is not a good alternative in this cas as AFAIK not capable of
> > > acting as a PPPoE-Server.
> > 
> > correct.
> > 
> > The question is WHERE are the packets being lost?.
> 
> more than a good point, seems that I got some man pages to read, in
> order to find out who looses those packets.
> 
> > 
> > Are all the generated packets being aimed at a single session?
> > are they all session startup packets, or data packets on an
> > already set up session?
> > 
> 
> in this case there is only one setup session where only data packets
> should be transfered in one direction, as this is no tcp it should be
> a real unidirectional test, I even disabled LCP keepaliving. this is a
> plain pppoe session. I added the code to increase buffer size to the
> Spawn function, but I'll have to wait till tomorrow to plug in the
> testequipment. Willing to send mail no matter if that already fixed
> the problem or not.
> 
> Something I got in my mind but forgot to put in the last mail is that
> this testcycle starts with very tiny frames ( 64 Byte ) and pulls them
> up in seven steps till it reaches the ethernet maximum. I never tested
> anything more than with theese 64Byte frames ;( perhaps I should let
> it run once completely )
>  
> > 
> > I would suspect that the socket buffer size on the
> > netgraph socket that ppp is using may be too short.
> > 
> > you can try increase the buffer size in pppoed.c using 
> > int newval;
> > int len;
> > len = sizeof (newval);
> > [...]
> > getsockopt( so, SOL_SOCKET, SO_RCVBUF, &newval, &len);
> > newval *= 4;	/* make it 4 times as big */
> > setsockopt( so, SOL_SOCKET, SO_RCVBUF, &newval, len);
> > 
> > This should happen in the function Spawn()
> > 
> > probably about
> >       if (debug)
> >         syslog(LOG_INFO, "Sending CONNECT from .:%s -> %s.%s",
> >                ngc.ourhook, ngc.path, ngc.peerhook);
> >       if (NgSendMsg(cs, ".:", NGM_GENERIC_COOKIE,
> >                     NGM_CONNECT, &ngc, sizeof ngc) < 0) {
> >         syslog(LOG_ERR, "Cannot CONNECT PPPoE and socket nodes:
> >         %m");_exit(EX_OSERR);
> >       }
> > 
> > 
> > /* HERE */
> > ========new code
> > /* make the data socket buffer larger */
> > 
> > getsockopt( ds, SOL_SOCKET, SO_RCVBUF, &newval, &len);
> > newval *= 4;    /* make it 4 times as big */
> > setsockopt( ds, SOL_SOCKET, SO_RCVBUF, &newval, len);
> > 
> > 
> >       /*
> >        * If we tell the socket node not to LINGER, it will go away
> >        when* the last hook is removed.
> >        */
> >       if (debug)
> >         syslog(LOG_INFO, "Sending NGM_SOCK_CMD_NOLINGER to socket");
> >       if (NgSendMsg(cs, ".:", NGM_SOCKET_COOKIE,
> >                     NGM_SOCK_CMD_NOLINGER, NULL, 0) < 0) {
> >         syslog(LOG_ERR, "Cannot send NGM_SOCK_CMD_NOLINGER: %m");
> >         _exit(EX_OSERR);
> >       }
> > 
> > 

[...]

problem is some kind of solved as not any longer loosing some packets
all the time, performance for a Pentium II Celeron 300 MHz is somewhere
about that:

FrameSize	Frames/s	percent 
64		2650		17.81
128		2559		30.30
256		2731		60.30
512		2350		100
1024		1197		100
1280		962		100
1518		813		100

percent are based on a 10MBit half duplex ethernet link as currently no
DSLAM available. The BSD Box has a quite heavy load but this is possible
to work arround, going to do another test with 100 MBit full duplex
link. 

greetings

	flo 

-- 
God isn't dead -- he's been busted.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021130011147.26e4c87b.fk>