Я не могу указать вам исходный код, но таблица маршрутов интерпретируется следующим образом:
Более специфические маршруты - то есть те, которые имеют более конкретную маску сети (Genmask) - получают приоритет над теми, которые имеют более высокую маску сети.
Если у вас есть 2 записи для одного и того же маршрута с одной и той же маской сети, то меньшее число будет считаться более коротким расстоянием, и трафик будет отправлен на него.
В стандартной таблице маршрутизации нет динамических формул для расчета показателя на основе скорости интерфейса, это просто таблица, но вы можете изменить этот показатель. (В Ubuntu /etc /interfaces позволит вам указывать метрику опций с данной метрикой, аналогично OpenVPN позволяет вам указывать метрики маршрутов для данных маршрутов). Показатель 100, кажется, по умолчанию.
Обратите внимание, что вы можете настроить несколько таблиц маршрутизации и выполнять маршрутизацию от источника. Аналогичная логика применима, и я не верю, что углубление в это находится в рамках вопроса.