Creating Packet Filters

12-9

The following example shows the use of both accept and reject in a packet filter. This packet filter was created for a network running both Phase I and Phase II AppleTalk.TM The goal of the filter is to eliminate the AppleTalk traffic.

Name

“Filter AppleTalk datagrams”

 

pushField.w

12

# Get the type field.

pushTop

 

 

# Make a copy.

pushLiteral

0x809b

# EtherTalk Phase I type

eq

 

 

# Test if the packet type is

 

 

 

# equal to the AppleTalk type.

reject

 

 

# Reject the packet and end.

 

 

 

# Otherwise

pushLiteral.w

0x5dc

# Largest 802.3 packet size

lt

 

 

# If this value is less than the

 

 

 

# value in the packet’s

 

 

 

# type/length field, then this

 

 

 

# is an Ethernet frame, so

accept

 

 

# accept the packet if it is not

 

 

 

# 802.3, otherwise…

pushField.a

16

# get the SNAP OUI and Ethertype

pushLiteral.a

0x03080007809b

# value to compare.

ne

 

 

# If not equal then forward the

 

 

 

# packet, otherwise drop it

Preprocessed and Run-time Storage

Preprocessed packet filters

A packet filter program is stored in a preprocessed format to minimize the space required by the packet filter definition. When assigned to a port, the packet filter is converted from the stored format to a run-time format to optimize the performance of the filter. Each SuperStack™ II Switch 2200 system is limited to a maximum of 16 packet filter programs.

Each system provides a maximum of 2048 bytes of nonvolatile storage for preprocessed packet filter programs. In the preprocessed stored format:

A single packet filter program is limited to 254 bytes.

Each instruction in the packet filter program requires 1 byte for the opcode and size, plus additional bytes for any explicit operands.

System overhead is 22 bytes, plus a per-packet-filter overhead of

13 bytes. For example, assume a packet filter program requires 200 bytes for storing the instructions in the program. If this packet filter is the only one loaded, the nonvolatile memory required is 22 bytes (for system overhead) plus 13 bytes (for packet filter overhead) plus 200 bytes (for the program itself) — a total of 235 bytes.

Page 146
Image 146
3Com 2200 manual Preprocessed and Run-time Storage, Creating Packet Filters 12-9