Configuring ATM for FreeBSD

This example assumes a Fore PCA-200e series PCI OC-3 interface, which is interface hfa0, on a CLIP-only configuration. (The budget adaptors are hea0).

This document assumes FreeBSD 3.1-RELEASE. (If you have FreeBSD 3.0-RELEASE, one kernel module needs patching. Contact for the patch).

cd /usr/src/sys/i386/conf

edit your config file. Append these entries:

# Fore PCA-200 ATM
options         ATM_CORE
options         ATM_IP
options         ATM_UNI
options         ATM_SPANS
device          hfa0

Compile a new kernel and install as /kernel

edit /etc/rc.conf

### Basic network options: ###
network_interfaces="xl0 atm0 lo0"       # List of network interfaces (lo0 is l!
ifconfig_atm0="inet 128.63.247.??? netmask"

### ATM interface options: ###
atm_enable="YES"                # Configure ATM interfaces (or NO).
atm_netif_hfa0="atm 1"          # Network interfaces for physical interface.
atm_sigmgr_hfa0="uni31"		# Signalling manager for physical interface.
atm_prefix_hfa0="ILMI"          # NSAP prefix (UNI interfaces only) (or ILMI).
atm_macaddr_hfa0="NO"           # Override physical MAC address (or NO).
atm_arpserver_atm0="0x47.0005.80.007300.0000.0300.0100.0020481C095F00" # ATMAR!
atm_scsparp_atm0="NO"           # Run SCSP/ATMARP on network interface (or NO)!
atm_pvcs=""                     # Set to PVC list (or leave empty).
atm_arps=""                     # Set to permanent ARP list (or leave empty).

Install proper version of /etc/pca200e.bin
MD5 (/etc/pca200e.bin) = 86c3f62566483ba357e1228fbfb3ec62
-rw-r--r-- 1 root wheel 40984 Jan 28 17:24 pca200e.bin

Reboot the system. It should just work.

Here is some sample "netstat -i" output:

> netstat -ni
Name  Mtu   Network       Address            Ipkts Ierrs    Opkts Oerrs  Coll
lo0   16384 [Link>                               0     0        0     0     0
lo0   16384 127               0     0        0     0     0
atm0  9180  [Link>   343558     0   429340     0     0
atm0  9180  128.63.240/20    343558     0   429340     0     0

Here is what some "atm show" commands reveal on a working system:

> atm show config hfa0
Intf      Vendor    Model     Media           Bus   Serial No
hfa0      Fore      PCA-200E  OC-3c           PCI   4204387
    MAC address = 00:20:48:40:27:63
    Hardware version = 2.0.1
    Firmware version = 3.0.1

> atm show interface
Interface  Sigmgr   State
hfa0       UNI 3.1  ACTIVE
    ATM address = 0x47.0005.80.007300.0000.0300.018c.002048402763.00
    Network interfaces: atm0

TTCP tests between two FreeBSD machines deliver 80 Mbits/sec of user data bandwidth (exclusive of TCP, IP, and ATM overhead), e.g.:

ttcp -r -s -l102400 -n10240
ttcp -t -s -l10240 -n10240

If you can ping and traceroute directly to (gw328-2 CLIP), you should change your default route to point there. Edit /etc/rc.conf:


The FreeBSD ATM code was provided by the HARP project.

NOTE: There is a very peculiar interaction (bug) when a FreeBSD machine talks to an SGI machine over ATM using TCP. This bug does not affect UDP (such as NFS), only TCP traffic. Traffic FreeBSD-to-SGI drizzles at a megabit or so, traffic SGI-to-FreeBSD goes only 35 Mbit/sec or so. So don't use an SGI for your raw peformance testing to FreeBSD.

Up | Prev | Next