Как ядро ​​Linux выбирает виртуальный интерфейс net при получении пакета от физического NI C? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть два сервера Linux, и я создаю интерфейс macvlan из физического NI C eth0 на каждом сервере. И я также настраиваю IP-адрес macvlan и настраиваю их, чтобы они могли пинговать друг друга.

При вызове функции получения TCP / IP ядра, например netif_rx() -> netif_rx_action() -> process_backlog() -> netif_receive_skb -> __netif_receive_skb_core(), я не могу найти код, который выбирает правильный виртуальный macvlan net устройство, когда физический NI C получает пакет.

Итак, мой вопрос: как Linux это делает?

Вот моя версия ядра:

[root@docker-pull ~]# uname -a
Linux docker-pull 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
...