Policy Traffic Filtering
Policy traffic filtering introduces the ability to filter traffic across multiple layers of the frame or packet, and offload the filtering to the hardware.
Note
As of this release, policy traffic filtering is only supported for the Redfox 7000/5000 and Lynx 5000-series.
Introduction
Usage of policy traffic filtering allows for the possibility to offload filtering of packets directly in hardware.
When using the firewall subsystem, it requires packets to be forwarded by the CPU of the switch to perform the filtering of network traffic.
However, these operations will come at a cost in routing performance. Since packets are filtered in hardware, filters need to be configured per direction, ingress or egress, and per port.
This entails that policy traffic filtering is not capable of monitoring and tracking active network connections (stateful) and is therefore stateless. If returning traffic should be accepted, filters need to be configured in both ingress and egress directions. An additional benefit with policy traffic filtering is the ability of matching across multiple layers of the packet. E.g. matching on a packets MAC address, something not possible with the firewall subsystem.
Configuration
Policies are configured and enabled from the policy configuration context in the CLI.
example:/#> configure example:/config/#> policy example:/config/policy/#>
To delete all policy related configurations execute the following command.
example:/#> configure example:/config/#> no policy
[no] enable
-
Enable or disable policies.
Note
Configured policies will not be deleted upon no enable, rather they are saved but not applied.
- no
- Disable the policies.
show
- Show the current policy settings
Ingress and Egress Policy Specific Settings
The following context creates and manages the groups of filters for ingress or egress policies. The name or id is used to distinguish between different groups of ingress or egress policies. The following options can both be found when configuring an ingress policy or egress policy.
example:/config/policy/#> <ingress|egress>-policy <NAME|id>
To delete all ingress- or egress-policy configuration for a specific id or name execute the following command.
example:/config/policy/#> no <ingress|egress>-policy <NAME|id>
[no] description <STRING>
-
Free form description of the current policy group.
A valid string contains ASCII characters in the range of [32-126]. Maximum of 128 characters allowed.
- no
- Remove the saved description.
[no] name <STRING>
-
Set name of the current policy group.
A valid string contains alphabetic and numeric characters. Maximum of 16 characters allowed.
- no
- Remove the saved name.
[no] filter <id>
-
Enter the filter configuration context
Create a filter with an id that is used as a ruleset for ingress or egress traffic control. Valid filter id range [1-50].
- no
- Remove saved filter of the given id.
show
- Show the current settings of the ingress or egress policy.
Filter Specific Settings
The following context creates and manages the individual filters for ingress or egress policies, depending on the current context. The filter options are identical in both the ingress-policy context and the egress-policy context. Valid filter id range [1-50].
example:/config/policy/ingress-policy-1/#> filter <id>
To delete the filter of a given id, execute the following command.
example:/config/policy/ingress-policy-1/#> no filter <id>
[no] match [MATCH]
-
Set match rule(s) specifying the policy when the filter action should be applied. It is possible to match on several match conditions within the same filter. However, if two match statements are entered using the same match condition. The older match statement will be overwritten.
Currently the following are supported options when using the match statement.
- no
- Remove a specific match condition.
- smac
- Match frames on the source MAC address field in the frame header. A wildcard (*) can be used to match on specific blocks of the MAC address.
- dmac
- Match frames on the destination MAC address field in the frame header. A wildcard (*) can be used to match on specific blocks of the MAC address.
- saddr
- Match frames on the source IP address field in the IP header. A CIDR (/) can be used to match on a range of IP addresses.
- daddr
- Match frames on the destination IP address field in the IP header. A CIDR (/) can be used to match a on range of IP addresses.
pos [POSITION]
- Position of the current filter in relation to other filter of the same ingress or egress policy. A lower position entails a higher priority. Filters are checked in the order of their respective positions, in ascending order. The position can not be the same as another filter. Valid positions include [1-1000].
action <accept|drop|trap>
-
Specify the action to be performed when a filter match is found. A newly created filter will default to drop if nothing else is specified.
- accept
- Let the matching packet pass through the filter.
- drop
- Let the matching packet be dropped and not pass the filter.
- trap
- Let the matching packet be trapped and sent to the CPU. Only recommended when certain packets need to be sent through the CPU. Only supported in ingress direction.
Port Specific Settings
The following context is used to configure and manage traffic filter policies for a specific port. In the port context, ingress and egress policies are applied to the given port.
example:/config/policy/#> port <PORT>
ingress-chain
-
Enter the ingress chain context.
Configure and manage ingress policies for the selected port.
egress-chain
-
Enter the egress chain context.
Configure and manage egress policies for the selected port.
Port Ingress and Egress Chain Specific Settings
The following context manages the ingress or egress chains of the specific port. Previously created ingress or egress policies are applied in the following context.
Note
Ingress polices can not be applied on a egress chain, and vice versa. If an identical filter should be placed in both ingress and egress direction. Two identical filters need to be created, one ingress filter and one egress filter.
To manage and configure ingress chains enter:
example:/config/policy/port-eth1/#> ingress-chain
To manage and configure egress chains enter:
example:/config/policy/port-eth1/#> egress-chain
[no] ingress <NAME|id> [pos POSITION] [vid VID]
-
Apply a previously created ingress policy to current port.
Note
This command is only available in the ingress-chain context.- NAME|id
- The name or id of the ingress policy.
- pos
- The position of the ingress policy for the current port. A lower position entails a higher priority. Policies are checked and evaluated in ascending order.
- vid
- The optional vid argument allows control of which VLANs the selected policy should act on. If no vid is specified the policy will for all VLANs.
[no] egress <NAME|id> [pos POSITION] [vid VID]
-
Apply a previously created egress policy to current port.
Note
- NAME|id
- The name or id of the egress policy.
- pos
- The position of the egress policy for the current port. A lower position entails a higher priority. Policies are checked and evaluated in ascending order.
- vid
- The optional vid argument allows control of which VLANs the selected policy should act on. If no vid is specified the policy will for all VLANs.
default-action <accept|drop>
-
Selection of action to be applied if there is no policies matching for a packet. The default-action is per default set to drop.
- accept
- If no policies match the incoming or outgoing packet, the packet will be passed.
- drop
- If no policies match the incoming or outgoing packet, the packet will be dropped.