Я хочу знать, что на самом деле происходит, когда я отключаю свой ethernet. Что делает ОС на сетевом уровне? Очищает ли она таблицу маршрутизации или что-то в этом роде.
решение1
Ядро Linux описывает каждый адаптер Ethernet (физическое устройство или виртуальное) с помощью struct net_device
(структура net_device). У каждого struct net_device
есть набор, struct net_device_ops
который должен быть реализован драйвером устройства. Наиболее важные из них:
ndo_open()
. Вызывается при включении адаптера Ethernet (ip link set up dev <eth_dev>
).ndo_start_xmit()
. Вызывается при начале передачи данных через интерфейс.ndo_stop()
. Вызывается при установке адаптера Ethernet в положение OFF(ip link set down dev <eth_dev>
).
Итак, что же на самом деле происходит, когда устройство выходит из строя?
Существует набор процедур, которые реализованы в большинстве драйверов:
- остановить все очереди, связанные с определенным устройством.
- очистить записи таблицы ARP, относящиеся к конкретному устройству.
- отметьте статус интерфейса как
DOWN
(ip link show dev <eth_dev>
). - специфические функции устройства: очистка некоторых структур, буферов, перевод чипа контроллера Ethernet в спящий режим...