Ich möchte wissen, was tatsächlich passiert, wenn ich mein Ethernet ausschalte. Was macht das Betriebssystem auf Netzwerkebene? Leert es die Routing-Tabelle oder etwas in der Art?
Antwort1
Der Linux-Kernel beschreibt jeden Ethernet-Adapter (physisches Gerät oder virtuell) durch struct net_device
(Struktur net_device). Jeder struct net_device
hat eine Reihe von struct net_device_ops
Funktionen, die vom Gerätetreiber implementiert werden sollten. Die wichtigsten davon:
ndo_open()
. Wird aufgerufen, wenn Sie den Ethernet-Adapter auf EIN ( ) stellenip link set up dev <eth_dev>
.ndo_start_xmit()
. Wird aufgerufen, wenn Sie mit der Datenübertragung über die Schnittstelle beginnen.ndo_stop()
. Wird aufgerufen, wenn Sie den Ethernet-Adapter auf OFF( ) setzenip link set down dev <eth_dev>
.
Was passiert also wirklich, wenn das Gerät ausfällt?
Es gibt eine Reihe von Routinen, die in den meisten Treibern implementiert sind:
- Stoppen Sie alle Warteschlangen, die sich auf ein bestimmtes Gerät beziehen.
- Löschen Sie ARP-Tabelleneinträge, die sich auf ein bestimmtes Gerät beziehen.
- Markieren Sie den Schnittstellenstatus als
DOWN
(ip link show dev <eth_dev>
). - gerätespezifische Funktionen: Löschen einiger Strukturen und Puffer, Versetzen des Chips des Ethernet-Controllers in den Ruhezustand …