Skip site navigation (1)Skip section navigation (2)
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>