封包合併概述
某些IP第4版 (IPv4) 和IP第6版 (IPv6) 網路協定涉及將封包傳輸至廣播或多播位址。 這些封包是由 IPv4/IPv6 子網中的多部主機接收。 在大部分情況下,接收這些封包的主機不會對這些封包執行任何動作。 因此,接收這些不需要的多播或廣播封包會導致接收主機內發生不必要的處理和電力消耗。
例如,主機 A 會在 IPv6 子網內傳送鏈路本地多播名稱解析(LLMNR)請求,以解析主機 B 的名稱。 除了主機 A 之外,子網上的所有主機都會收到此 LLMNR 要求。 除了主機 B 之外,在其他主機上執行的 TCP/IP 通訊協定堆疊會檢查封包,並判斷封包不適合它。 因此,通訊協定堆疊會拒絕封包,並呼叫 NdisReturnNetBufferLists,以將封包傳回至迷你埠驅動程式。
從 NDIS 6.30 開始,網路介面卡可以支援 NDIS 封包合併。 透過合併隨機廣播或多播封包來減少接收中斷數目,系統上的處理額外負荷和耗電量會大幅降低。
封包聯合涉及下列步驟:
上層驅動程式,例如 TCP/IP 協議堆疊,定義了用於篩選廣播和多播封包的 NDIS 接收篩選器。 上層驅動程式會將這些篩選下載到支援封包合併的基礎下層的迷你埠驅動程式。 下載之後,迷你埠驅動程式會使用封包聯合接收篩選器來設定網路適配器。
如需這些篩選的詳細資訊,請參閱 封包聯合接收篩選器。
符合接收篩選條件的已接收封包會在網路介面卡上快取或 合併。 配接器不會產生合併封包的接收中斷。 相反地,轉接器會在發生另一個硬體事件時中斷主機。
當產生此中斷時,配接器必須通過中斷指示一個接收事件。 這可讓網路適配器處理網路適配器所接收的聯合封包。
例如,當發生下列其中一個事件時,支援封包聯合的網路適配器可能會產生接收中斷:
硬體定時器的到期,它的到期時間被設定為符合接收篩選條件的最大合併延遲值。
硬體聯合緩衝區內的可用空間會到達配接器指定的低水標記。
收到與聯合篩選條件不符的封包。
發生另一個中斷事件,例如傳送完成事件。
如需此程序的詳細資訊,請參閱 處理封包合併接收篩選器。
下列幾點適用於 NDIS 對於封包合併的支援:
NDIS 支援針對指派給實體網路適配器之預設 NDIS 埠 (埠 0) 上所接收封包的封包聯合。 NDIS 不支援指派給虛擬網路適配器的 NDIS 埠上的封包聯合。 如需詳細資訊,請參閱 NDIS 埠概觀。
NDIS 支援網路適配器預設接收佇列上所接收封包的封包聯合。 此接收佇列具有 NDIS_DEFAULT_RECEIVE_QUEUE_ID標識碼。