Filtering Packets¶
This is a long line of text.
Filter¶
The Filter component creates a mechanism for “deep inspection” upstream and/or downstream packets and allowing them to be accepted or rejected:
<Filter client="client_label" server="server_label">
<Upstream>
<Accept source="source_address" destination="destination_address" function="function" />
<Reject />
</Upstream>
<Downstream>
...same accept or reject components as upstream...
</Downstream>
</Filter>
The Upstream
and Downstream
components are optional and may be specified in any order, but
each my only be specified once as a child of the Fitler
component.
The Upstream
and Downstream
components have the same Accept
and Reject
children with
the same semantics.
Accept and Reject¶
The Accept
and Reject
components have identical attributes; source
, destination
,
and function
. If any or all of these are provided, the coorisponding value is considered a match
when the packet value is identical. For example:
<Accept source="12" />
This filter element matches and accepts all packets whose source address is 12
, independent of
the destination address or the function. All other packets are passed to the next filter
element.
Note
The filter elements are processed in the order they are specified.
An element where all attributes are not specified will function as a universal match. For example:
<Reject />
This filter will reject all packets, no further filtering will be performed.
Address Filters¶
The source
and destination
address attributes may be any one of the follow forms:
String | Matches |
---|---|
: |
Any local station |
* |
Local broadcast address |
*: |
Any remote station |
n |
Local station address n |
n: |
Any remote station on network n |
n:* |
Remote broadcast address on network n |
*:* |
Global broadcast address |
The correct form of address to use will depend on the layer where the filter is applied. For example, a remote address, remote broadcast, and global broadcast are not meanful filtering packets going to or from a local network.
Function Filters¶
The function
filter attributes may be one or more of the keywords in the following tables. More than
one keyword can be specified, separated by blanks.
BACnet/IP Message Types¶
BVLC-RESULT, WRITE-BROADCAST-DISTRIBUTION-TABLE, WRITE-BDT, READ-BROADCAST-DISTRIBUTION-TABLE, READ-BDT, READ-BROADCAST-DISTRIBUTION-TABLE-ACK, READ-BDT-ACK, FORWARDED-NPDU, REGISTER-FOREIGN-DEVICE, READ-FOREIGN-DEVICE-TABLE, READ-FDT, READ-FOREIGN-DEVICE-TABLE-ACK, READ-FDT-ACK, DELETE-FOREIGN-DEVICE-TABLE-ENTRY, DELETE-FDT-ENTRY, DISTRIBUTE-BROADCAST-TO-NETWORK, ORIGINAL-UNICAST-NPDU, ORIGINAL-BROADCAST-NPDU
Network Layer Message Types¶
WHO-IS-ROUTER-TO-NETWORK, WHOS-RTN, I-AM-ROUTER-TO-NETWORK, IM-RTN, I-COULD-BE-ROUTER-TO-NETWORK, I-CLD-BE-RTN, REJECT-MESSAGE-TO-NETWORK, REJ-MTN, ROUTER-BUSY-TO-NETWORK, RBTN, ROUTER-AVAILABLE-TO-NETWORK, RATN, INITIALIZE-ROUTING-TABLE, IRT, INITIALIZE-ROUTING-TABLE-ACK, IRT-ACK, ESTABLISH-CONNECTION-TO-NETWORK, ECTN, DISCONNECT-CONNECTION-TO-NETWORK, DCTN
Application Layer Message Types¶
CONFIRMED-REQUEST, UNCONFIRMED-REQUEST, SIMPLEACK, COMPLEXACK, SEGMENTACK, ERROR, REJECT, ABORT
Application Layer Confirmed Services¶
ACKNOWLEDGEALARM, CONFIRMEDCOVNOTIFICATION, CONFIRMEDEVENTNOTIFICATION, GETALARMSUMMARY, GETENROLLMENTSUMMARY, SUBSCRIBECOV, ATOMICREADFILE, ATOMICWRITEFILE, ADDLISTELEMENT, REMOVELISTELEMENT, CREATEOBJECT, DELETEOBJECT, READPROPERTY, READPROPERTYCONDITIONAL, READPROPERTYMULTIPLE, WRITEPROPERTY, WRITEPROPERTYMULTIPLE, DEVICECOMMUNICATIONCONTROL, CONFIRMEDPRIVATETRANSFER, CONFIRMEDTEXTMESSAGE, REINITIALIZEDEVICE, VTOPEN, VTCLOSE, VTDATA, AUTHENTICATE, REQUESTKEY, READRANGE, GETEVENTINFORMATION
Application Layer Unconfirmed Services¶
I-AM, I-HAVE, UNCONFIRMEDCOVNOTIFICATION, UNCONFIRMEDEVENTNOTIFICATION, UNCONFIRMEDPRIVATETRANSFER, UNCONFIRMEDTEXTMESSAGE, TIMESYNCHRONIZATION, WHO-HAS, WHO-IS, UTCTIMESYNCHRONIZATION
Samples¶
For these and other samples, the components are described in configuration starting from the bottom of a stack and proceeding up. In the coorisponding diagrams, upstream traffic goes from left to right, the downstream traffic from right to left.
VLAN Filter¶
This sample configuration file creates a virtual network with three nodes:
<BFR>
Create a network with three nodes:
<VLAN>
<Node address="1" server="a" />
<Node address="2" server="b" />
<Node address="3" server="c" />
</VLAN>
On the first node, bind a filter:
<Filter client="a" server="ax">
Filter upstream traffic from the node to the console, accepting
traffic from address "2" but rejecting everything else:
<Upstream>
<Accept source="2" />
<Reject />
</Upstream>
No downstream filtering.
<Downstream />
</Filter>
And then bind a console:
<Console client="ax" />
On the second node, bind a echo:
<Echo client="b" />
On the third node, bind another echo:
<Echo client="c" />
</BFR>
In this sequence, the user enters a broadcast message on the console, such as this:
* 01020304
The packet travels downstream from the console to the filter (1). There is no filtering on downstream packets, so it continues downstream to the VLAN node (2).
Node A
recognises that it is a broadcast message and that it should be distributed to
all of the other nodes in the VLAN, so it provides a copy of the message to B
(3) and
another copy to C
(9).
Node B
sends its copy of the packet upstream to the Echo
component (4) which swaps
the source and destination and sends it back downstream (5). Node B
recognises that it
is a unicast message and sends it to A
(6). Node A
sends the packet upstream to the
filter (7).
The filter receives the upstream packet, matches it against the rules in the Upstream
sub-component of its configuration. The packet is accepted, then forwarded upstream to the
console (8), which then prints the packet.
Node C
receives the packet from A
(9), sends it upstream to the Echo
component (10)
which swaps the source and destination and sends it back downstream (11). Node C
recognises that it is a unicast message and sends it to A
(12).
The filter receives the upstream packet, matches it against the rules in the Upstream
sub-component of its configuration. The packet is rejected.