У меня есть два сервера 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