@@ -717,7 +717,7 @@ Ingress Table 19: Hairpin
717717- If logical switch has attached logical switch port of *vtep * type, then a
718718 priority-1000 flow that matches on ``reg0[14] `` register bit for the traffic
719719 received from HW VTEP (ramp) ports. This traffic is passed to ingress table
720- :ref: `Destination Lookup <ls-in-32 >`.
720+ :ref: `Destination Lookup <ls-in-33 >`.
721721
722722- A priority-1 flow that hairpins traffic matched by non-default flows in the
723723 :ref: `Pre-Hairpin <ls-in-17 >` table. Hairpinning is done at L2, Ethernet
@@ -978,7 +978,28 @@ refer to either the parent or child ports as applicable to this logical switch.
978978
979979.. _ls-in-26 :
980980
981- Ingress Table 26: ARP/ND responder
981+ Ingress Table 26: ARP/ND Pre-Lookup
982+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
983+
984+ For logical switches with EVPN enabled (``dynamic-routing-vni `` is set),
985+ this table performs a pre-lookup in the EVPN ARP side table using the
986+ ``chk_evpn_arp() `` action. If the target IP address matches an
987+ EVPN-learned entry, the resolved MAC is loaded into ``eth.dst ``
988+ and a regbit is set so that the ARP/ND responder table can generate a
989+ proxy reply.
990+
991+ - Priority-5 flows match broadcast ARP requests
992+ (``arp.op == 1 && eth.bcast ``) and multicast ND
993+ solicitations (``nd_ns_mcast ``), and call ``chk_evpn_arp(arp.tpa) ``
994+ or ``chk_evpn_arp(nd.target) `` respectively.
995+
996+ - A priority-0 fallback flow advances to the next table.
997+
998+ For switches without EVPN, only the priority-0 fallback flow is present.
999+
1000+ .. _ls-in-27 :
1001+
1002+ Ingress Table 27: ARP/ND responder
9821003~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9831004
9841005This table implements ARP/ND responder in a logical switch for known IPs. The
@@ -1208,12 +1229,23 @@ proxy ARP/ND behavior. It contains these logical flows:
12081229 These flows are required to respond to an ARP request if an ARP request is
12091230 sent for the IP *vip *.
12101231
1232+ - For logical switches with EVPN enabled, priority-40 flows provide ARP/ND
1233+ suppression for EVPN-learned addresses. These flows match when the EVPN
1234+ ARP pre-lookup (table 26) found a hit (``reg9[5] == 1 ``):
1235+
1236+ - An ARP suppression flow matches ``arp.op == 1 && reg9[5] == 1 `` and
1237+ generates an ARP reply using the MAC from ``eth.dst `` (loaded by
1238+ ``chk_evpn_arp() `` in the pre-lookup stage).
1239+
1240+ - An ND suppression flow matches ``nd_ns && reg9[5] == 1 `` and
1241+ generates an ND NA reply using the MAC from ``eth.dst ``.
1242+
12111243- One priority-0 fallback flow that matches all packets and advances to the next
12121244 table.
12131245
1214- .. _ls-in-27 :
1246+ .. _ls-in-28 :
12151247
1216- Ingress Table 27 : DHCP option processing
1248+ Ingress Table 28 : DHCP option processing
12171249~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12181250
12191251This table adds the DHCPv4 options to a DHCPv4 packet from the logical ports
@@ -1246,9 +1278,9 @@ options. This table also adds flows for the logical ports of type ``external``.
12461278
12471279- A priority-0 flow that matches all packets to advances to table 16.
12481280
1249- .. _ls-in-28 :
1281+ .. _ls-in-29 :
12501282
1251- Ingress Table 28 : DHCP responses
1283+ Ingress Table 29 : DHCP responses
12521284~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12531285
12541286This table implements DHCP responder for the DHCP replies generated by the
@@ -1301,9 +1333,9 @@ previous table.
13011333
13021334- A priority-0 flow that matches all packets to advances to table 17.
13031335
1304- .. _ls-in-29 :
1336+ .. _ls-in-30 :
13051337
1306- Ingress Table 29 DNS Lookup
1338+ Ingress Table 30 DNS Lookup
13071339~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13081340
13091341This table looks up and resolves the DNS names to the corresponding configured
@@ -1321,9 +1353,9 @@ IP address(es).
13211353 other kinds of packets, it just stores 0 into reg0[4]. Either way, it
13221354 continues to the next table.
13231355
1324- .. _ls-in-30 :
1356+ .. _ls-in-31 :
13251357
1326- Ingress Table 30 DNS Responses
1358+ Ingress Table 31 DNS Responses
13271359~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13281360
13291361This table implements DNS responder for the DNS replies generated by the
@@ -1346,9 +1378,9 @@ previous table.
13461378 (This terminates ingress packet processing; the packet does not go to the next
13471379 ingress table.)
13481380
1349- .. _ls-in-31 :
1381+ .. _ls-in-32 :
13501382
1351- Ingress table 31 External ports
1383+ Ingress table 32 External ports
13521384~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13531385
13541386Traffic from the ``external `` logical ports enter the ingress datapath pipeline
@@ -1373,9 +1405,9 @@ traffic from these ports.
13731405
13741406- A priority-0 flow that matches all packets to advances to table 20.
13751407
1376- .. _ls-in-32 :
1408+ .. _ls-in-33 :
13771409
1378- Ingress Table 32 Destination Lookup
1410+ Ingress Table 33 Destination Lookup
13791411~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13801412
13811413This table implements switching behavior. It contains these logical flows:
@@ -1532,9 +1564,9 @@ This table implements switching behavior. It contains these logical flows:
15321564 If there is no entry for ``eth.dst `` in the MAC learning table, then it stores
15331565 ``none `` in the ``outport ``.
15341566
1535- .. _ls-in-33 :
1567+ .. _ls-in-34 :
15361568
1537- Ingress Table 33 Destination unknown
1569+ Ingress Table 34 Destination unknown
15381570~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15391571
15401572This table handles the packets whose destination was not found or and looked up
@@ -1695,12 +1727,12 @@ In addition, the following flows are added.
16951727
16961728- A priority 34000 logical flow is added for each logical port which has DHCPv4
16971729 options defined to allow the DHCPv4 reply packet and which has DHCPv6 options
1698- defined to allow the DHCPv6 reply packet from :ref: `Ingress Table 28 : DHCP
1699- responses <ls-in-28 >`. This is indicated by setting the allow bit.
1730+ defined to allow the DHCPv6 reply packet from :ref: `Ingress Table 29 : DHCP
1731+ responses <ls-in-29 >`. This is indicated by setting the allow bit.
17001732
17011733- A priority 34000 logical flow is added for each logical switch datapath
17021734 configured with DNS records with the match ``udp.dst = 53 `` to allow the DNS
1703- reply packet from :ref: `Ingress Table 30 : DNS responses <ls-in-30 >`. This is
1735+ reply packet from :ref: `Ingress Table 31 : DNS responses <ls-in-31 >`. This is
17041736 indicated by setting the allow bit.
17051737
17061738- A priority 34000 logical flow is added for each logical switch datapath with
@@ -1843,7 +1875,7 @@ in ``ct_label.nf_id`` during request processing.
18431875 function group, a priority-99 flow matches ``reg8[21] == 1 && reg8[22] == 1 &&
18441876 reg0[22..29] == id `` and sets ``outport=P; reg8[23] = 1;
18451877 next(pipeline=ingress, table=T) `` where *P * is the ``outport `` of that network
1846- function and *T * is the ingress table :ref: `Destination Lookup <ls-in-32 >`.
1878+ function and *T * is the ingress table :ref: `Destination Lookup <ls-in-33 >`.
18471879 This redirects request packets matching ``to-lport `` ACLs with
18481880 network_function_group to the specific network function selected by the Pre
18491881 Network Function stage. The packets are injected back to the ingress pipeline
0 commit comments