Date: Wed, 4 Apr 2001 09:38:35 -0700 (PDT) From: Richard Hodges <rh@matriplex.com> To: Alex Huppenthal <alex@aspenworks.com> Cc: freebsd-atm@FreeBSD.ORG Subject: Re: ATM 4.3 and so on Message-ID: <Pine.BSF.4.10.10104040911240.38573-100000@mail.matriplex.com> In-Reply-To: <007501c0bcc5$c408bca0$1800a8c0@d7k>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 3 Apr 2001, Alex Huppenthal wrote:
> some may have seen my postings on Freebsd-isp, but I think they are more
> appropriate here.
>
> I'm running a 4.2 FreeBSD machine with Fore PCA200E installed.
>
> After some week on and off struggling to understand ATM and also FreeBSD's
> HARP stack, I finally have an ATM network connection running.
Good job. Now the fun part starts.
> After learning that FreeBSD HARP stack doesn't pace outbound cells, we
> designed an alternative solution.
Actually, the rate control is done in the driver. As it turns
out, the hfa driver does not even look at the VC traffic info...
> Our FreeBSD system is attached to a Lucent PSAX at OC3 speeds. The PSAX ATM
> switch talks to the ATM cloud via a DS3. Packets from the BSD system egress
> at 135 mbits per second, and the ATM cloud starts discarding them after the
> first 190 bytes or so.. about 4 cells.
Yep, this will happen when you burst cells over the maximum rate. Would
it help if you could put a cap on the cell rate for each PVC? If so,
there is probably an easy way to do this at the driver level.
If you care to look at fore_output.c you will see the line:
xdp->xd_rate = FORE_DEF_RATE;
This is where the driver inserts the "Rate Control Information" into
the transmit PDU descriptor.
In fore.h, you will see FORE_DEF_RATE defined as zero (meaning no
rate control). You can change this to other values to specify
different cell rates. Here are some sample values:
#define FORE_RATE(h,l) htonl((h << 16) | (l))
#define FORE_DEF_RATE FORE_RATE(184,71) /* 223215 cells/s = 94.6 mb/s */
#define FORE_DEF_RATE FORE_RATE(127,128) /* 156250 cells/s = 66.3 mb/s */
#define FORE_DEF_RATE FORE_RATE(76,179) /* 94697 cells/s = 40.2 mb/s */
#define FORE_DEF_RATE FORE_RATE(21,234) /* 26261 cells/s = 11.1 mb/s */
#define FORE_DEF_RATE FORE_RATE(2,253) /* 2509 cells/s = 1.1 mb/s */
The third would be suitable for filling a DS3 (96000 cells/s), and the
fourth could carry 10 mb/s of user data. Keep in mind that this is per
VC, so if you have many going at once, you may still exceed your cell
rate. I believe that the Fore card expects this rate info in network
byte order, but if not, just remove the "htonl()" from the macro. There
are many more possible values; let me know if you want the rest.
And I haven't tested this myself, so if you give it a try, please let
us all know how it works :-)
All the best,
-Richard
-------------------------------------------
Richard Hodges | Matriplex, inc.
Product Manager | 769 Basque Way
rh@matriplex.com | Carson City, NV 89706
775-886-6477 | www.matriplex.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-atm" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.10104040911240.38573-100000>
