Übersicht über das Coalescing von Paketen
Bestimmte IP-Version 4-Protokolle (IPv4) und die IP-Version 6 (IPv6) beinhalten die Übertragung von Paketen an Broadcast- oder Multicast-Adressen. Diese Pakete werden von mehreren Hosts im IPv4/IPv6-Subnetz empfangen. In den meisten Fällen tut der Host, der diese Pakete empfängt, nichts mit diesen Paketen. Daher verursacht der Empfang dieser unerwünschten Multicast- oder Übertragungspakete unnötige Verarbeitung und Stromverbrauch innerhalb des empfangenden Hosts.
Beispiel: Host A sendet eine Anfrage zur Link-Local-Multicast-Namensauflösung (LLMNR) an ein IPv6-Subnetz, um den Namen von Host B aufzulösen. Mit Ausnahme von Host A wird diese LLMNR-Anforderung von allen Hosts im Subnetz empfangen. Mit Ausnahme von Host B prüft der TCP/IP-Protokollstapel, der auf den anderen Hosts ausgeführt wird, das Paket und bestimmt, dass das Paket nicht dafür vorgesehen ist. Daher lehnt der Protokollstapel das Paket ab und ruft NdisReturnNetBufferLists auf, um das Paket an den Miniporttreiber zurückzugeben.
Ab NDIS 6.30 können Netzwerkadapter das NDIS-Paket-Coalescing unterstützen. Durch die Reduzierung der Anzahl der Empfangsunterbrechungen durch die Zusammenführung zufälliger Übertragungen oder Multicastpakete wird der Verarbeitungsaufwand und der Stromverbrauch auf dem System erheblich reduziert.
Die Zusammenführung von Paketen umfasst die folgenden Schritte:
Übergeordnete Treiber, wie der TCP/IP-Protokollstapel, definieren NDIS-Empfangsfilter, die zur Filterung von Broadcast- und Multicast-Paketen verwendet werden. Die darüber liegenden Treiber laden diese Filter auf den darunter liegenden Miniport-Treiber herunter, der die Paketzusammenführung unterstützt. Nach dem Download konfiguriert der Miniport-Treiber den Netzwerkadapter mit den Paket-Coalescing-Empfangsfiltern.
Weitere Informationen zu diesen Filtern finden Sie unter Packet-Coalescing-Empfangsfilter.
Empfangene Pakete, die mit den Empfangsfiltern übereinstimmen, werden auf dem Netzwerkadapter zwischengespeichert oder coalesced. Der Adapter generiert keinen Empfangsunterbruch für koalierte Pakete. Stattdessen unterbricht der Adapter den Host, wenn ein anderes Hardware-Ereignis eintritt.
Wenn diese Unterbrechung generiert wird, muss der Adapter mit der Unterbrechung ein Empfangsereignis anzeigen. Auf diese Weise kann der Netzwerkadapter verschachtelte Pakete verarbeiten, die vom Netzwerkadapter empfangen wurden.
Beispielsweise kann der Netzwerkadapter, der die Paketverknalung unterstützt, einen Empfangsunterbruch generieren, wenn eines der folgenden Ereignisse auftritt:
Der Ablauf eines Hardware-Timers, dessen Ablaufzeit auf einen maximalen Coalescing-Delay-Wert des passenden Empfangsfilters festgelegt ist.
Der verfügbare Platz im Hardware-Coalescing-Puffer erreicht eine vom Adapter festgelegte Tiefstmarke.
Es wird ein Paket empfangen, das nicht mit einem Coalescing-Filter übereinstimmt.
Ein weiteres Interruptereignis, z. B. ein Sendeabschlussereignis, ist aufgetreten.
Weitere Informationen zu diesem Vorgang finden Sie unter Verarbeitung von Coalescing-Empfangsfiltern für Pakete.
Die folgenden Punkte gelten für die Unterstützung des Coalescing von Paketen durch NDIS:
NDIS unterstützt das Coalescing von Paketen, die über den Standard-NDIS-Port (Port 0) empfangen werden, der dem physischen Netzwerkadapter zugewiesen ist. NDIS unterstützt das Zusammenwachsen von Paketen auf NDIS-Ports, die virtuellen Netzwerkadaptern zugewiesen sind, nicht. Weitere Informationen finden Sie unter Übersicht der NDIS Ports.
NDIS unterstützt die Paketzusammenführung für Pakete, die in der Standard-Warteschlange des Netzwerkadapters empfangen werden. Diese Warteschlange hat eine ID von NDIS_DEFAULT_RECEIVE_QUEUE_ID.