共用方式為


在大型傳送卸載 (LSO) 中支援 NVGRE

NDIS 6.30 (Windows Server 2012) 使用一般路由封裝 (NVGRE) 引進網路虛擬化。 執行大型傳送卸載的 NDIS 迷你埠、通訊協定和篩選驅動程式和 NIC (LSO) 第 2 版 (LSOV2) 應該以支援 NVGRE 的方式執行。

注意 此頁面假設您已熟悉 卸載大型 TCP 封包分割中的資訊。

如果 NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFOIsEncapsulatedPacketTRUETcpIpChecksumNetBufferListInfo 頻外 (OOB) 資訊有效,這表示需要 NVGRE 支援,且 NIC 必須在 NVGRE 格式封包上執行 LSOV2 卸載,並具有下列條件:

若要在 LSOV2 中支援 NVGRE,通訊協定和篩選驅動程式必須進行下列變更:

  • 減少NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO中的MSS值。LsoV2Transmit結構,以考慮新的 GRE 標頭。
  • 傳送 TCP 承載長度,該長度可能不是減少 的 MSS 值的確切倍數。
  • 調整 NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO結構中的InnerFrameOffsetTransportIpHeaderRelativeOffsetTcpHeaderRelativeOffset值,以考慮 GRE 標頭。

NIC 和迷你埠驅動程式可以使用NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO結構中提供的InnerFrameOffsetTransportIpHeaderRelativeOffsetTcpHeaderRelativeOffset值。 NIC 或迷你埠驅動程式可能會在通道上執行任何所需的標頭檢查, (外部) IP 標頭或後續標頭來驗證這些位移。

迷你埠驅動程式必須處理 NDIS_TCP_SEND_OFFLOADS_SUPPLEMENTAL_NET_BUFFER_LIST_INFO的情況。InnerFrameOffset 可能位於與封包開頭不同的散佈收集清單中。 通訊協定驅動程式會保證所有前面加上的封裝標頭 (ETH、IP、GRE) 會實際連續,而且會位於封包的第一個 MDL 中。

通訊協定和篩選驅動程式無法確保 TCP 承載長度總計是減少 的 MSS 值的倍數。 因此,迷你埠驅動程式和 NIC 必須更新通道 (外部) IP 標頭。 NIC 必須根據NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO中減少的MSS值,產生盡可能多的完整大社區段。LsoV2TransmitOOB 資訊。 每個LSOv2 傳送只能產生一個子 MSS 區段。

迷你埠驅動程式必須執行下列動作:

  • 計算通道總和檢查碼, (外部) IP 標頭。
  • 為每個封包遞增通道 (外部) IP 標頭的 IP 識別碼 (IP 識別碼) 值。 第一個封包必須使用原始通道中的 IP 識別碼, (外部) IP 標頭。
  • 遞增每個封包之傳輸 (內部) IP 標頭的 IP 識別碼。 第一個封包必須使用原始傳輸 (內部) IP 標頭中的 IP 識別碼。
  • 計算 TCP 標頭和傳輸 (內部) IP 標頭總和檢查碼。
  • 請確定完整的標頭,包括封裝通道 (外部) 標頭新增至每個產生的封包。

卸載大型 TCP 封包的分割