Как «ip route get» определяет исходящий интерфейс

Интересно, что решает исходящий интерфейс. Вот моя установка

Eno1 - 192.168.3 0.2/24, Gateway - 192.168.30.1
Eno2 - 192.168.50.2/24,  Gateway - 192.168.50.1

Моя таблица маршрутизации выглядит так:

[root ~]# ip route
default
    nexthop via 192.168.30.2 dev eno1 weight 1
    nexthop via 192.168.50.2 dev eno2 weight 1
192.168.30.0/24 dev eno1 proto kernel scope link src 192.168.30.2 metric 100
192.168.50.0/24 dev eno2 proto kernel scope link src 192.168.50.2 metric 101

А также

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         hostname        0.0.0.0         UG        0 0          0 eno1
192.168.30.0    0.0.0.0         255.255.255.0   U         0 0          0 eno1
192.168.50.0    0.0.0.0         255.255.255.0   U         0 0          0 eno2

После этой конфигурации, когда я пытаюсь спросить ядро ​​​​Linux, какой интерфейс он будет использовать для случайного назначения… оно играет в игру в пинг-понг между eno1 и eno2.

[root@ ~]# ip route get 1.1.1.9
1.1.1.9 via 192.168.50.2 dev eno2 src 192.168.50.2
    cache
[root@ ~]# ip route get 1.1.1.10
1.1.1.10 via 192.168.30.2 dev eno1 src 192.168.30.2
    cache
[root@ ~]# ip route get 1.1.1.12
1.1.1.12 via 192.168.50.2 dev eno2 src 192.168.50.2
    cache
[root@-2 ~]# ip route get 1.1.1.13
1.1.1.13 via 192.168.30.2 dev eno1 src 192.168.30.2
    cache
[root@-2 ~]# ip route get 1.1.1.14
1.1.1.14 via 192.168.30.2 dev eno1 src 192.168.30.2

такое ощущение, что исходящий интерфейс выбирается рандомно помогите пожалуйста разобраться что решает исходящий интерфейс?

1 ответ
1

Это называется равноценным многолучевым распространением (ECMP).

Linux предназначен для распределения потоков пакетов по нескольким путям. Для отдельных пакетов этого не произойдет. Сетевой стек вычисляет хэш по подмножеству полей заголовка пакета. Вычисленный хэш будет использоваться для выбора следующего прыжка.

Обратите внимание, что балансировка не будет идеальной и на практике могут возникнуть значительные проблемы при развертывании, так как оно основано на маршрутах, а маршруты кэшируются. Это означает, что часто используемые IP-адреса всегда будут использовать один и тот же маршрут.

случайный1-й

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *