1

そのため、現在、Receive Side Scaling (RSS) オフロードが DPDK (Data Plane Development Kit) 内で機能する方法を理解することに取り組んでいます。したがって、基本的に、選択したオフロードに応じて、ハッシュ値を計算し、それを使用して、特定の CPU コアにバインドされている特定のキューにパケットを配置します。

したがって、これに関して2つのクエリがあります。

  • の RSS オフロードを使用すると**ETH_RSS_IPV6_EX**、0 以外のハッシュ値を取得できません。これは、Mellanox カードがこのオフロードをサポートしているにもかかわらず、選択した RSS オフロードに従ってパケットが無効と見なされることを意味します。次の Scapy パケットを送信しましたが、まだハッシュが 0 になりつつあります: sendp(Ether(dst="AA:AA:BB:BB:CC:DD")/IPv6(dst="a:a:a:a:a:a:a:b",src="a:a:a:a:a:a:a:c",nh=60)/IPv6ExtHdrDestOpt(nh=43,options=HAO(hoa="a:a:a:a:a:a:a:d"))/IPv6ExtHdrRouting(nh=59,type=2,addresses=["a:a:a:a:a:a:a:e"]),iface="enp4s0f0",count=1). (どのパケットを操作するかについて、https://docs.microsoft.com/en-us/windows-hardware/drivers/network/rss-hashing-types#ndis_hash_ipv6_exからこのリソースを取得しましたが、これらの RSS オフロードと DPDK が持っているもの。) このEX用語は、RSS オフロードで何を意味しますか。

  • それとは別に、DPDK 内にある RSS オフロードを一度に 1 つずつ説明しているリソースを教えてもらえますか?参考になります):

    #define ETH_RSS_IPV4               (1ULL << 2)
    #define ETH_RSS_FRAG_IPV4          (1ULL << 3)
    #define ETH_RSS_NONFRAG_IPV4_TCP   (1ULL << 4)
    #define ETH_RSS_NONFRAG_IPV4_UDP   (1ULL << 5)
    #define ETH_RSS_NONFRAG_IPV4_SCTP  (1ULL << 6)
    #define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << 7)
    #define ETH_RSS_IPV6               (1ULL << 8)
    #define ETH_RSS_FRAG_IPV6          (1ULL << 9)
    #define ETH_RSS_NONFRAG_IPV6_TCP   (1ULL << 10)
    #define ETH_RSS_NONFRAG_IPV6_UDP   (1ULL << 11)
    #define ETH_RSS_NONFRAG_IPV6_SCTP  (1ULL << 12)
    #define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << 13)
    #define ETH_RSS_L2_PAYLOAD         (1ULL << 14)
    #define ETH_RSS_IPV6_EX            (1ULL << 15)
    #define ETH_RSS_IPV6_TCP_EX        (1ULL << 16)
    #define ETH_RSS_IPV6_UDP_EX        (1ULL << 17)
    

ご不明な点がございましたら、お気軽にお問い合わせください。

前もって感謝します。

Edit_1 (Vipin のコメントに応えて):

  1. この構造 (ETH_RSS_IPV6_EX) で RSS を有効にしています。

    static struct rte_eth_conf port_conf = { .rxmode = { .mq_mode = ETH_MQ_RX_RSS, .max_rx_pkt_len = RTE_ETHER_MAX_LEN, .split_hdr_size = 0, .offloads = DEV_RX_OFFLOAD_CHECKSUM, }, .rx_adv_conf = { .rss_conf = { .rss_key = .rss_key = ETH_VRSh6, = . //ETH_RSS_IP //オリジナル、//AU: ハッシュ アプリケーションの変更 }, }, .txmode = { .mq_mode = ETH_MQ_TX_NONE, }, };

  2. 私が使用している DPDK バージョンは 20.08 です。

  3. 使用されている NIC は Mellanox ConnectX-5 です

  4. DPDK l3fwd アプリケーションをベースとして使用し、それをテストしています。

4

2 に答える 2