<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LayerscapeのトピックRe: DPAA2 DPDK RSS Hash on MPLS Inner IP</title>
    <link>https://community.nxp.com/t5/Layerscape/DPAA2-DPDK-RSS-Hash-on-MPLS-Inner-IP/m-p/2399484#M16801</link>
    <description>&lt;P&gt;Yes — your understanding is correct&amp;nbsp;&lt;STRONG&gt;for the DPDK DPAA2 PMD as used from&amp;nbsp;testpmd&amp;nbsp;today&lt;/STRONG&gt;&amp;nbsp;: hashing on the&amp;nbsp;&lt;STRONG&gt;MPLS label itself&lt;/STRONG&gt;&amp;nbsp;is supported, and hashing on&amp;nbsp;&lt;STRONG&gt;inner IP after PPPoE&lt;/STRONG&gt;&amp;nbsp;can work, but&amp;nbsp;&lt;STRONG&gt;MPLS inner IP RSS is not clearly exposed as a ready-to-use DPDK RSS mode&lt;/STRONG&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;The important nuance is this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;DPAA2 hardware is capable enough&lt;/STRONG&gt;&amp;nbsp;: the LX2160A parser can recognize MPLS, walk through an MPLS label stack, and then continue parsing to IPv4/IPv6 under some conditions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;DPAA2 key extraction also has “inner/last IP” fields&lt;/STRONG&gt;&amp;nbsp;: the distribution key mechanism can use&amp;nbsp;HDR_INDEX = 0xFF&amp;nbsp;, meaning “most inner / last header,” and the hardware defines&amp;nbsp;IPSRC_N&amp;nbsp;/&amp;nbsp;IPDST_N&amp;nbsp;for the last IP header.&lt;/LI&gt;
&lt;LI&gt;But&amp;nbsp;&lt;STRONG&gt;the public DPDK DPAA2 PMD documentation only says RSS is supported in general&lt;/STRONG&gt;&amp;nbsp;, and lists limitations like fixed RSS key and non-configurable RETA; it does notas a supported RSS combination. The Linux/SDK-facing hashing documentation lists ordinary fields such as Ethernet destination, VLAN, L3 protocol, IPv4 source/destination, and L4 ports, but not “IP after MPLS” as a selectable hash mode.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So:&amp;nbsp;&lt;STRONG&gt;not a silicon limitation, but likely a software/driver exposure limitation in the DPDK DPAA2 PMD path you are using.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What you can try&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; First confirm that DPAA2 sees the packet as “MPLS + inner IP”&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If the hardware parser does not mark the inner IPv4 header as present, RSS on inner IP cannot work.&lt;/P&gt;
&lt;P&gt;In DPDK, enable DPAA2 PMD logs:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;--log-level=pmd.net.dpaa2:debug&lt;/P&gt;
&lt;P&gt;Also check whether received packets get meaningful packet type information in your application or with&amp;nbsp;testpmd&amp;nbsp;, for example whether packets are classified only as MPLS or as MPLS plus inner IPv4.&lt;/P&gt;
&lt;P&gt;If the packet type stops at MPLS, the RSS hash cannot use inner IPv4 because, from the driver’s point of view, inner IPv4 was not parsed.&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt; Try being explicit in the flow pattern&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If you only configured RSS type&amp;nbsp;mpls&amp;nbsp;, that will naturally hash MPLS fields. Try a pattern that explicitly includes the inner IPv4 header:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;flow create 0 ingress \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; pattern eth / mpls / ipv4 / end \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; actions rss queues 0 1 end types ipv4 end / end&lt;/P&gt;
&lt;P&gt;If you want source/destination IP specifically, also try:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;flow create 0 ingress \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; pattern eth / mpls / ipv4 / end \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; actions rss queues 0 1 end types ip ipv4 end / end&lt;/P&gt;
&lt;P&gt;If that is rejected or accepted but still does not distribute based on the inner IPv4 addresses, then the PMD is probably not programming the DPAA2 distribution key as “last/inner IP.”&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; Try MPLS label values that help the parser&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If your MPLS traffic uses ordinary service labels, the parser may not know the payload is IPv4. For a controlled test, try MPLS Explicit NULL labels:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MPLS label&amp;nbsp;0&amp;nbsp;means IPv4 Explicit NULL.&lt;/LI&gt;
&lt;LI&gt;MPLS label&amp;nbsp;2&amp;nbsp;means IPv6 Explicit NULL.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The DPAA2 documentation says label&amp;nbsp;0&amp;nbsp;maps to IPv4 and label&amp;nbsp;2&amp;nbsp;maps to IPv6 when MPLS label interpretation is enabled&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;If RSS on inner IP works only with label&amp;nbsp;0&amp;nbsp;, then the problem is not RSS itself; the issue is that the parser was not being told that your MPLS payload is IP.&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;&lt;STRONG&gt; If you need this feature, the real fix is likely PMD work&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The DPAA2 hardware has the concepts needed for this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;HDR_INDEX = 0xFF&amp;nbsp;means “use the most inner header”.&lt;/LI&gt;
&lt;LI&gt;IPSRC_N&amp;nbsp;and&amp;nbsp;IPDST_N&amp;nbsp;are the source/destination address of the last IP header.&lt;/LI&gt;
&lt;LI&gt;The MPLS parser can advance beyond MPLS to IP when configured appropriately.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So a driver-level implementation would likely need to program the DPNI distribution profile to extract:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;inner/last IPv4 source address,&lt;/LI&gt;
&lt;LI&gt;inner/last IPv4 destination address,&lt;/LI&gt;
&lt;LI&gt;possibly inner L4 ports,&lt;/LI&gt;
&lt;LI&gt;after an MPLS parse path.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In practical terms:&amp;nbsp;&lt;STRONG&gt;this may require changing the DPAA2 DPDK PMD&lt;/STRONG&gt;&amp;nbsp;, not just changing a&amp;nbsp;testpmd&amp;nbsp;command.&lt;/P&gt;
&lt;P&gt;My conclusion: DPAA2 hardware can in principle reach “inner/last IP” fields, but MPLS-inner-IP RSS does not appear to be a ready-supported DPDK DPAA2 PMD feature on your stack; if explicit&amp;nbsp;eth / mpls / ipv4&amp;nbsp;RSS rules fail, the likely solution is a PMD/parser/distribution-profile change rather than a different&amp;nbsp;testpmd&amp;nbsp;command.&lt;/P&gt;</description>
    <pubDate>Tue, 28 Jul 2026 08:43:54 GMT</pubDate>
    <dc:creator>yipingwang</dc:creator>
    <dc:date>2026-07-28T08:43:54Z</dc:date>
    <item>
      <title>DPAA2 DPDK RSS Hash on MPLS Inner IP</title>
      <link>https://community.nxp.com/t5/Layerscape/DPAA2-DPDK-RSS-Hash-on-MPLS-Inner-IP/m-p/2399177#M16798</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm testing DPAA2 RSS capabilities with DPDK on a SolidRun LX2160A Clearfog CX.&lt;BR /&gt;I've found that it is able to hash on MPLS labels and PPPoE inner IP for example.&lt;BR /&gt;However it seems to not be able to hash on MPLS inner IP, am I right on this ?&lt;BR /&gt;This surprise me a bit because:&lt;BR /&gt;- It know what is a MPLS header because it is able to hash on MPLS labels&lt;BR /&gt;- It know how to get inner IP because it is able to hash on PPPoE inner IP&lt;/P&gt;&lt;P&gt;Could you confirm if it is supported or not to hash on MPLS inner IP ?&lt;/P&gt;&lt;P&gt;I'm quite newbie with NXP DPAA2 and NXP in general, so can you please explain your technical words.&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Mon, 27 Jul 2026 10:50:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/DPAA2-DPDK-RSS-Hash-on-MPLS-Inner-IP/m-p/2399177#M16798</guid>
      <dc:creator>dehml</dc:creator>
      <dc:date>2026-07-27T10:50:03Z</dc:date>
    </item>
    <item>
      <title>Re: DPAA2 DPDK RSS Hash on MPLS Inner IP</title>
      <link>https://community.nxp.com/t5/Layerscape/DPAA2-DPDK-RSS-Hash-on-MPLS-Inner-IP/m-p/2399484#M16801</link>
      <description>&lt;P&gt;Yes — your understanding is correct&amp;nbsp;&lt;STRONG&gt;for the DPDK DPAA2 PMD as used from&amp;nbsp;testpmd&amp;nbsp;today&lt;/STRONG&gt;&amp;nbsp;: hashing on the&amp;nbsp;&lt;STRONG&gt;MPLS label itself&lt;/STRONG&gt;&amp;nbsp;is supported, and hashing on&amp;nbsp;&lt;STRONG&gt;inner IP after PPPoE&lt;/STRONG&gt;&amp;nbsp;can work, but&amp;nbsp;&lt;STRONG&gt;MPLS inner IP RSS is not clearly exposed as a ready-to-use DPDK RSS mode&lt;/STRONG&gt;&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;The important nuance is this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;DPAA2 hardware is capable enough&lt;/STRONG&gt;&amp;nbsp;: the LX2160A parser can recognize MPLS, walk through an MPLS label stack, and then continue parsing to IPv4/IPv6 under some conditions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;DPAA2 key extraction also has “inner/last IP” fields&lt;/STRONG&gt;&amp;nbsp;: the distribution key mechanism can use&amp;nbsp;HDR_INDEX = 0xFF&amp;nbsp;, meaning “most inner / last header,” and the hardware defines&amp;nbsp;IPSRC_N&amp;nbsp;/&amp;nbsp;IPDST_N&amp;nbsp;for the last IP header.&lt;/LI&gt;
&lt;LI&gt;But&amp;nbsp;&lt;STRONG&gt;the public DPDK DPAA2 PMD documentation only says RSS is supported in general&lt;/STRONG&gt;&amp;nbsp;, and lists limitations like fixed RSS key and non-configurable RETA; it does notas a supported RSS combination. The Linux/SDK-facing hashing documentation lists ordinary fields such as Ethernet destination, VLAN, L3 protocol, IPv4 source/destination, and L4 ports, but not “IP after MPLS” as a selectable hash mode.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So:&amp;nbsp;&lt;STRONG&gt;not a silicon limitation, but likely a software/driver exposure limitation in the DPDK DPAA2 PMD path you are using.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What you can try&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; First confirm that DPAA2 sees the packet as “MPLS + inner IP”&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If the hardware parser does not mark the inner IPv4 header as present, RSS on inner IP cannot work.&lt;/P&gt;
&lt;P&gt;In DPDK, enable DPAA2 PMD logs:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;--log-level=pmd.net.dpaa2:debug&lt;/P&gt;
&lt;P&gt;Also check whether received packets get meaningful packet type information in your application or with&amp;nbsp;testpmd&amp;nbsp;, for example whether packets are classified only as MPLS or as MPLS plus inner IPv4.&lt;/P&gt;
&lt;P&gt;If the packet type stops at MPLS, the RSS hash cannot use inner IPv4 because, from the driver’s point of view, inner IPv4 was not parsed.&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt; Try being explicit in the flow pattern&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If you only configured RSS type&amp;nbsp;mpls&amp;nbsp;, that will naturally hash MPLS fields. Try a pattern that explicitly includes the inner IPv4 header:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;flow create 0 ingress \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; pattern eth / mpls / ipv4 / end \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; actions rss queues 0 1 end types ipv4 end / end&lt;/P&gt;
&lt;P&gt;If you want source/destination IP specifically, also try:&lt;/P&gt;
&lt;P&gt;Copy&lt;/P&gt;
&lt;P&gt;flow create 0 ingress \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; pattern eth / mpls / ipv4 / end \&lt;/P&gt;
&lt;P&gt;&amp;nbsp; actions rss queues 0 1 end types ip ipv4 end / end&lt;/P&gt;
&lt;P&gt;If that is rejected or accepted but still does not distribute based on the inner IPv4 addresses, then the PMD is probably not programming the DPAA2 distribution key as “last/inner IP.”&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt; Try MPLS label values that help the parser&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If your MPLS traffic uses ordinary service labels, the parser may not know the payload is IPv4. For a controlled test, try MPLS Explicit NULL labels:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MPLS label&amp;nbsp;0&amp;nbsp;means IPv4 Explicit NULL.&lt;/LI&gt;
&lt;LI&gt;MPLS label&amp;nbsp;2&amp;nbsp;means IPv6 Explicit NULL.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The DPAA2 documentation says label&amp;nbsp;0&amp;nbsp;maps to IPv4 and label&amp;nbsp;2&amp;nbsp;maps to IPv6 when MPLS label interpretation is enabled&amp;nbsp;.&lt;/P&gt;
&lt;P&gt;If RSS on inner IP works only with label&amp;nbsp;0&amp;nbsp;, then the problem is not RSS itself; the issue is that the parser was not being told that your MPLS payload is IP.&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;&lt;STRONG&gt; If you need this feature, the real fix is likely PMD work&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The DPAA2 hardware has the concepts needed for this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;HDR_INDEX = 0xFF&amp;nbsp;means “use the most inner header”.&lt;/LI&gt;
&lt;LI&gt;IPSRC_N&amp;nbsp;and&amp;nbsp;IPDST_N&amp;nbsp;are the source/destination address of the last IP header.&lt;/LI&gt;
&lt;LI&gt;The MPLS parser can advance beyond MPLS to IP when configured appropriately.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So a driver-level implementation would likely need to program the DPNI distribution profile to extract:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;inner/last IPv4 source address,&lt;/LI&gt;
&lt;LI&gt;inner/last IPv4 destination address,&lt;/LI&gt;
&lt;LI&gt;possibly inner L4 ports,&lt;/LI&gt;
&lt;LI&gt;after an MPLS parse path.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In practical terms:&amp;nbsp;&lt;STRONG&gt;this may require changing the DPAA2 DPDK PMD&lt;/STRONG&gt;&amp;nbsp;, not just changing a&amp;nbsp;testpmd&amp;nbsp;command.&lt;/P&gt;
&lt;P&gt;My conclusion: DPAA2 hardware can in principle reach “inner/last IP” fields, but MPLS-inner-IP RSS does not appear to be a ready-supported DPDK DPAA2 PMD feature on your stack; if explicit&amp;nbsp;eth / mpls / ipv4&amp;nbsp;RSS rules fail, the likely solution is a PMD/parser/distribution-profile change rather than a different&amp;nbsp;testpmd&amp;nbsp;command.&lt;/P&gt;</description>
      <pubDate>Tue, 28 Jul 2026 08:43:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/DPAA2-DPDK-RSS-Hash-on-MPLS-Inner-IP/m-p/2399484#M16801</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2026-07-28T08:43:54Z</dc:date>
    </item>
  </channel>
</rss>

