FRP (Flexible Receive Parser) Validation
This section explains how to enable an in-built programmable parser to parse the received Ethernet packet and provide an interface for users to configure rules in the parser.
The sample(QM) application shows how to configure parser rules for user-defined actions matched Rx packets.
FRP (Flexible Receive Parser)
Scope
There is a designated interface for FRP configuration, such as default 0, and this dedicated instance can configure any physical MAC controller instance of that hardware.
Abbreviations
- FRP -Flexible Receive Parser
- MAC - Medium access control
- MAC - Medium access control
- RSS - Receive side scaling
- IP - Internet protocol
- DUT - Device under test
- OK index(OKI)
- NIC - Next Instruction Control.
if (NIC==0) continue parse from OK Index else /*(NIC ==1)*/ continue sequentially (parse the next entry in the instruction table)
- L2 Filter - Layer 2 MAC address filter
Linux OS
Linux nvether_sample_app utility
QM sample application binary for Nvidia DUT (nvether_sample_app)
- Part of SDK release for reference
./nvether_sample_app
Look for string such as Version(4), which means 4.
FRP_ADD Command Syntax
AV+L:
nvether_sample_app <primary interface> frp_add <ID> <Match> <Type> <Filter Mode> <Offset> <OKI> <DMASel>
Parameters
- Id - FRP table ID to add (0 to 255)
-
Match - Match data is used for comparing
- MAX 12 bytes data
-
Type - Match data type
- 0 - Normal data
- 1 - L2 DA MAC
- 2 - L2 SA MAC
- 3 - L3 Source IP
- 4 - L3 Destination IP
- 5 - L4 UDP Source Port
- 6 - L4 UDP Destination Port
- 7 - L4 TCP Source Port
- 8 - L4 TCP Destination Port
- 9 - VLAN Tag
-
Mode - Filter mode for the entry
- 0 - Accept and route
- 1 - Reject and Drop
- 2 - Accept and Bypass FRP Route
- 3 - Link to OK Index
- 4 - Inverse the Match, Accept and route
- 5 - Inverse the Match, Reject and Drop
- 6 - Inverse the Match, Accept and Bypass FRP Route
- 7 - Inverse the Match, Link to OK Index
- Offset - Frame offset of Match data
- OKI - When NIC set give the value for Next Instruction
-
DMASel - Bit selection of DMA channels to route the frame
- Bit[0] - DMA channel 0
- ...
- Bit [N] - DMA channel N]
- Max N for EQOS HW is 7
- Max N for MGBE is 9
Example
- Add FRP rule to accept and route packets from 192.168.1.100
nvether_sample_app <primary interface> frp_add 0 C0A80164 4 0 0 0 1
- Add FRP rule to reject and drop packets from 192.168.1.100
nvether_sample_app <primary interface> frp_add 0 C0A80164 4 1 0 0 1
FRP_UPDATE Command Syntax
AV+L:
nvether_sample_app <primary interface> frp_update <ID> <Match> <Type> <Filter Mode> <Offset> <OKI> <DMASel>
- Id - FRP table ID to add (0 to 255)
-
Match - Match data is used for comparing
- MAX 12 bytes data
-
Type - Match data type
- 0 - Normal data
- 1 - L2 DA MAC
- 2 - L2 SA MAC
- 3 - L3 Source IP
- 4 - L3 Destination IP
- 5 - L4 UDP Source Port
- 6 - L4 UDP Destination Port
- 7 - L4 TCP Source Port
- 8 - L4 TCP Destination Port
- 9 - VLAN Tag
-
Mode - Filter mode for the entry
- 0 - Accept and route
- 1 - Reject and Drop
- 2 - Accept and Bypass FRP Route
- 3 - Link to OK Index
- 4 - Inverse the Match, Accept and route
- 5 - Inverse the Match, Reject and Drop
- 6 - Inverse the Match, Accept and Bypass FRP Route
- 7 - Inverse the Match, Link to OK Index
- Offset - Frame offset of Match data
- OKI - When NIC set give the value for Next Instruction
-
DMASel - Bit selection of DMA channels to route the frame
- Bit[0] - DMA channel 0
- ...
- Bit [N] - DMA channel N]
- Max N for EQOS HW is 7
- Max N for MGBE is 9
Example
- Add FRP rule to accept and route packets from 192.168.1.100
nvether_sample_app <primary interface> frp_add 0 C0A80164 4 0 0 0 1
- Update FRP rule to reject and drop packets from 192.168.1.100
nvether_sample_app <primary interface> frp_update 0 C0A80164 4 1 0 0 1
FRP_DEL Command Syntax
AV+L
./nvether_sample_app <primary interface> frp_del <ID>
Parameters
- Id - FRP table ID to add (0 to 255)
Example
- Delete FRP rule at ID 0.
nvether_sample_app <primary interface> frp_del 0
Additional Example Syntax
L2 DA accept Filtering and DMA route
- Delete Old FRP entries with frp_del command
nvether_sample_app <primary interface> frp_del 0
- Add FRP rule to ADD DA f2:3b:00:06:87:ff:
nvether_sample_app <primary interface> frp_add 0 f23b000687ff 1 0 0 0 0x10
L2 DA Reject Filtering and DMA route
- Add FRP rule to ADD DA f2:3b:00:06:87:ff:
nvether_sample_app <primary interface> frp_update 0 f23b000687ff 1 1 0 0 0x10
L2 MC DA Accept Filtering and Multiple DMA Channels Route
- DUT side Add/Update FRP rule to MC MAC 01:00:5E:01:01:01
-
nvether_sample_app <primary interface> frp_update 0 01005E010101 1 0 0 0 0x3FF
-
- DUT side Add/Update FRP rule to MC MAC 01:00:5E:01:01:01
nvether_sample_app <primary interface> frp_update 0 01005E010101 1 1 0 0 0x3FF
L2 BC DA Accept Filtering and Multiple DMA Channels
- DUT side Add/Update FRP rule for BC MAC FF:FF:FF:FF:FF:FF
nvether_sample_app <primary interface> frp_update 0 FFFFFFFFFFFF 1 0 0 0 0x3FF
L2 BC DA Reject Filtering
- DUT side Add/Update FRP rule for BC MAC FF:FF:FF:FF:FF:FF
nvether_sample_app <primary interface> frp_update 0 FFFFFFFFFFFF 1 1 0 0 0x3FF
L2 SA Reject filtering
- DUT side Add/Update FRP table 0 and 1 entry to ADD SA <<00:17:b6:00:00:00>>
nvether_sample_app <primary interface> frp_update 0 <<0017b6000000>> 2 1 0 0 0x8
- DUT Side Add/Update FRP table entry 0 and 1 for Source IP 192.168.1.3
nvether_sample_app <primary interface> frp_update 0 C0A80103 3 1 0 0 0x2
Enable VLAN accept filtering using FRP command
nvether_sample_app <primary interface> frp_update 0 0005 9 0 0 0 0x2
Enable VLAN reject filtering FRP commands
nvether_sample_app <primary interface> frp_update 0 0005 9 1 0 0 0x2
- Add FRP rule for L2 DA <<f2:3b:00:06:87:ff>> L2 SA and link both rules:
-
nvether_sample_app <primary interface> frp_add 0 <f23b000687ff> 1 0 0 0 0x10
-
nvether_sample_app <primary interface> frp_add 1 <f23b000687ff> 2 0 0 0 0x10
-
nvether_sample_app <primary interface> frp_update 0 <f23b000687ff> 1 4 0 0 0x10
-
- Add FRP rule for L2 DA <<f2:3b:00:06:87:ff>> L2 SA and link both rules:
-
nvether_sample_app <primary interface> frp_add 0 <f23b000687ff> 1 0 0 0 0x10
-
nvether_sample_app <primary interface> frp_add 1 <f23b000687ff> 2 1 0 0 0x10
- nvether_sample_app <primary interface> frp_update 0 <f23b000687ff> 1 4 0 0 0x10
-
L2 Address Filter Command Syntax
nvether_sample_app <interface name> l2_filter <filter_no> <enable/disable> <mac addr>
Filter_no
Index 0 to 31.
enable/disable
0 - to disable filter, 1 - to enable filter\n"
mac addr - MAC address(Ex - 94:18:82:71:ae:1d)]\n"
- Rx Packets are routed to the DMA channel, which is bound to the interface used for configuration.
- This feature can be used only with Ethernet virtualization enabled.
- As there are multiple default L2 addresses configured, use index numbers in reverse order reverse, such as 31, 30, 29, to avoid overwriting.
Example
- To add/enable AA:10:18:2b:8f:8a at index 9
-
eqos_0 l2_filter 9 1 AA:10:18:2b:8f:8a
-
- To delete/disable AA:10:18:2b:8f:8a at index 9
-
eqos_0 l2_filter 9 0 AA:10:18:2b:8f:8a
-