BSDIPLOOKUP

NAME
SYNOPSIS
DESCRIPTION
ELEMENT HANDLERS
NOTES
SEE ALSO

NAME

BSDIPLookup − Click element; IP routing lookup using a variant of PATRICIA trie

SYNOPSIS

BSDIPLookup(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)

Ports: any number of inputs, any number of outputs
Processing
: push
Package
: ip (core)

DESCRIPTION

Expects a destination IP address annotation with each packet. Looks up that address in its routing table, using longest-prefix-match, sets the destination annotation to the corresponding GW (if specified), and emits the packet on the indicated OUTput port.

Each argument is a route, specifying a destination and mask, an optional gateway IP address, and an output port. No destination-mask pair may occur more than once.

Uses the IPRouteTable(7) interface; see IPRouteTable(7) for description.

BSDIPLookup is optimized for fast database updates, while longest-prefix lookups are accomplished in at most O(W) time, where W is the width of the search key. The implementation is based on the historic PATRICIA trie lookup scheme borrowed from FreeBSD, described by Keith Sklower in the paper cited below.

ELEMENT HANDLERS

table (read-only)

Outputs a human-readable version of the current routing table.

lookup (read-only)

Reports the OUTput port and GW corresponding to an address.

add (write-only)

Adds a route to the table. Format should be ‘ADDR/MASK [GW] OUT’. Fails if a route for ADDR/MASK already exists.

set (write-only)

Sets a route, whether or not a route for the same prefix already exists.

remove (write-only)

Removes a route from the table. Format should be ‘ADDR/MASK’.

ctrl (write-only)

Adds or removes a group of routes. Write ‘add/set ADDR/MASK [GW] OUT’ to add a route, and ‘remove ADDR/MASK’ to remove a route. You can supply multiple commands, one per line; all commands are executed as one atomic operation.

flush (write-only)

Clears the entire routing table in a single atomic operation.

stat (read-only)

Outputs human-readable report on current database state.

NOTES

See IPRouteTable(7) for a performance comparison of the various IP routing elements.

SEE ALSO

IPRouteTable(7), DirectIPLookup(7), DXRIPLookup(7), StaticIPLookup(7), LinearIPLookup(7), SortedIPLookup(7), LinuxIPLookup(7)

Keith Sklower. "A tree-based packet routing table for Berkeley UNIX". In Proc. USENIX Winter 1991 Technical Conference, pp. 93-104.