共用方式為


指出聯合區段

單一聯合單位 (SCU) 是一連串 TCP 區段,會根據聯合 TCP/IP 區段的規則所定義的規則,合併成單一 TCP 區段。 本節說明如何指出產生的聯合區段。

SCU 必須:

  • 呼叫 NdisMIndicateReceiveNetBufferLists來表示。

  • 看起來像是透過網路接收的一般 TCP 區段。

  • RFC 791第 3.1 節中所定義,不大於法律 IP 資料包長度上限。

    注意 由於具有 IPv6 延伸模組標頭的區段無法聯合 (請參閱 終止聯合) 的例外狀況, 因此 IPv6 資料包的 SCU 大小也會受限於法律資料包長度上限。

NIC 或迷你埠驅動程式應該在指出聯合區段之前,先重新計算 TCP 和 IPv4 總和檢查碼。 如果 NIC 或迷你埠驅動程式驗證 TCP 和 IPv4 總和檢查碼,但不會針對聯合區段重新計算它們,則必須在NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO結構中設定TcpChecksumValueInvalid 和 IpChecksumValueInvalid旗標。 此外,在此情況下,NIC 或迷你埠驅動程式可能會選擇性地將區段中的 TCP 和 IPv4 標頭總和檢查碼值零。

NIC 和迷你埠驅動程式必須一律在NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO結構中設定IpChecksumSucceededTcpChecksumSucceeded旗標,才能指出聯合區段。

如需聯合規則的詳細資訊,請參閱 聯合 TCP/IP 區段的規則

如需例外狀況的詳細資訊,請參閱 終止聯合的例外狀況

聯合預期會以最佳方式執行。 在某些情況下,硬體可能無法聯合,例如因為資源不足。 這裡所述的需求主要是指定何時不要聯合,以及如何聯合。

概括而言,NIC 和迷你埠驅動程式必須透過網路處理 TCP 區段的收據,如下所示:

  • 檢查傳入區段是否有例外狀況,如下所示:

    1. 如果沒有發生例外狀況,請檢查區段是否可以與每個規則針對相同 TCP 連線收到的最後一個區段聯合。

    2. 如果區段觸發例外狀況,或無法將它與先前收到的區段聯合,則個別指出該區段。

  • 在通訊協定驅動程式啟用 RSC 之前,NIC 和迷你埠驅動程式不得指出聯合區段,如 查詢和變更 RSC 狀態中所述。

  • 針對指定的 TCP 連線,從迷你埠配接器到主機 TCP/IP 堆疊的資料指示可能包含一或多個聯合區段,並以一或多個無法聯合的個別區段分隔。

  • NIC 和迷你埠驅動程式不得延遲 TCP 區段的指示,不論是否聯合。 具體來說,NIC 和迷你埠驅動程式不得延遲從一個延後程序呼叫 (DPC) 的區段指示到下一個,以嘗試聯合區段。

  • NIC 和迷你埠驅動程式可能會使用計時器來判斷聯合結束。 不過,處理延遲敏感性工作負載必須與 DPC 界限需求一樣有效。