Bert Hubert, Thomas Graf, Gregory Maxwell, Remco van Mook, Martijn van Oosterhout, Paul B Schroeder, Jasper Spaans, Pedro Larroy Linux Advanced Routing Traffic Control HOWTO Глава 1. Посвящение. Глава 2. Введение. 2.1. Ограничения и лицензионное соглашение 2.3. Что может предложить вам linux 2.5. Доступ к CVS и передача обновлений 2.6. Список рассылки 3.2. Краткий обзор iproute2 3.4.1. Просмотр списка сетевых интерфейсов с помощью утилиты ip 3.4.2. Просмотр списка ip-адресов с помощью утилиты ip 3.4.3. Просмотр списка маршрутов с помощью утилиты ip 3.5. ARP Глава 4. Правила - база политик маршрутизации 4.1. Простая маршрутизация по источнику. 4.2. Маршрутизация через несколько каналов/провайдеров. 4.2.1. Раздельный доступ 4.2.2. Распределение нагрузки. 5.1. Несколько общих замечаний о тоннелях: 5.3. GRE тоннели. 5.3.2. Тоннелирование IPV6. 5.4. Тоннели неядерного уровня. Глава 7. IPSEC: безопасная передача данных протоколами ip через Интернет 7.1. Пример ручного конфигурирования безопасного соединения между двумя хостами. 7.2. Пример автоматического конфигурирования безопасного соединения между двумя хостами. 7.2.1. Теория. 10.0.0.216 10.0.0.11 7.2.2.1. Известные проблемы и недостатки. 7.2.3.2. Настройка и запуск. 7.2.4. Как сохранить настройки туннеля в безопасности. 7.4. Другое программное обеспечение для работы с ipsec Глава 8. Маршрутизация групповых сообщений. Глава 9. Дисциплины обработки очередей для управления пропускной способностью 9.2. Простые бесклассовые дисцплины обработки очереди. 9.2.1.1. Параметры и использование 0 1 2 3 4 5 6 7 TELNET 9.2.2. Token Bucket Filter 9.2.2.1. Параметры и использование 9.2.2.2. Пример конфигурации 9.2.3.1. Параметры и использование 9.3. Какие типы дисциплин нужно использовать. 9.4. Терминология Classes Policing 9.5. Классовые дисциплины обработки очередей. 9.5.2. Элементы дисциплины: корень, дескриптор, родительские элементы и элементы одного уровня. 1:> 1:1> 1:12> 12:> 12:2 9.5.2.2. Как выполняется извлечение пакетов из очереди. 9.5.3.1. Параметры и порядок использования дисциплины PRIO. 9.5.4. Дисциплина CBQ. 9.5.4.1. Шейпинг в CBQ. 9.5.4.2. Характеристики классов в CBQ. 9.5.4.3. Параметры CBQ, управляющие характером заимствования. 9.5.4.5. Прочие параметры настройки CBQ: split и defmap. TC_PRIO… 0 9.5.5. Hierarchical Token Bucket 9.6. Классификация пакетов с помощью фильтров. 10:1 10:2 12:1 12:2 9.6.1. Ряд простых примеров фильтрации. 9.6.2. Наиболее употребимые способы фильтрации. По полю TOS 9.7.1. Пример конфигурирования. Глава 10. Распределение нагрузки по нескольким интерфейсам. 10.1. Предостережение. Глава 11. netfilter и iproute - маркировка пакетов. Глава 12. Расширенная фильтрация. 12.1. Классификатор u32. 12.1.1. Селектор u32. 12.1.2. Селекторы общего назначения. 12.1.3. Селекторы специального назначения. 12.2. Классификатор route. 12.3. Фильтры-ограничители трафика. 12.3.1.2. Token Bucket Filter. 12.3.3. Примеры. 12.4. Хеш-фильтры. 12.5. Фильтрация трафика IPv6. Глава 13. Параметры настройки сети в ядре. 13.2. Малоизвестные настройки. 13.2.2. Параметры настройки устройств. 13.2.3. Параметры сетевых политик. 13.2.4. Параметры маршрутизации. Глава 14. Специализированные дисциплины управления очередями. 14.3. DSMARK. 14.3.3. Основные принципы. 14.3.5. Как работает SCH_DSMARK. 14.3.6. Фильтр TC_INDEX. TC INDEX 0…15 14.4. Ingress qdisc. 14.6. Generic Random Early Detection. Глава 15. Решебник. 15.2. Защита от syn flood. 15.3. Ограничение пропускной способности для icmp-пакетов, с целью предотвращения dDoS атак. 15.4. Управление приоритетами для трафика различных типов. 15.5. Прозрачное проксирование с помощью netfilter, iproute2, ipchains и squid. НО Мы предлагаем 4-й вариант: Silom - настройка squid и ipchains 15.5.1. Схема движения пакетов после настройки. ИНТЕРНЕТ 15.6. Решение проблемы с Path MTU Discovery путем настройки MTU. 15.6.1. Решение 15.7. Решение проблемы с Path MTU Discovery путем настройки MSS. 15.8. Формирователь трафика: Низкая задержка, максимальная производительность. 15.8.1. Почему все так сложно? 15.8.2. Формирователь трафика на базе CBQ. DOWNLINK=800 15.8.3. Формирователь трафика на базе HTB. DOWNLINK=800 15.9. Ограничение скорости для отдельного хоста или подсети. 15.10. Пример подключения локальной сети к Интернет через nat, с организацией qos. 15.10.1. Начнем с оптимизации пропускной способности. CEIL=240 15.10.2. Классификация пакетов. 15.10.3. Дополнительная оптимизация 16.1. Бриджинг и iptables. 16.3.1. ARP и проксирование ARP Глава 17. Динамическая маршрутизация - OSPF и BGP. 17.1. Настройка ospf в zebra 17.1.1. Предварительные условия. 17.1.3. Запуск zebra 17.2. Настройка BGP4 с помощью ZEBRA. 17.2.2. Конфигурирование (пример). 17.2.3. Проверка конфигурации. 10.10.0.1 4 50 35 40 0 0 0 00:28:40 1 Глава 18. Прочие возможности. PRIO=5 Глава 19. Рекомендуемая литература. Глава 20. Благодарности. Оглавление
4.2.2. Распределение нагрузки. Второй вопрос заключается в балансировке нагрузки между двумя провайдерами. Это не сложно, если у вас уже настроен раздельный доступ, описанный в предыдущем разделе.
Вместо выбора одного из провайдеров в качестве маршрута по-умолчанию, вы настраиваете т.н. многолучевой (multipath) маршрут. В стандартном ядре это обеспечит балансировку нагрузки между двумя провайдерами. Делается это следующим образом (повторюсь, мы основываемся на примере из раздела Раздельный доступ):
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1
Результатом команды будет попеременный выбор маршрута по-умолчанию. Вы можете изменить параметр weight , так чтобы один из провайдеров получал большую нагрузку.
Обратите внимание, что балансировка не будет идеальной, так как она основывается на маршрутах, а маршруты кэшируются. Это означает, что маршруты к часто посещаемым сайтам не будут проходить через разных провайдеров.
Если вы действительно интересуетесь этим, вам стоит посмотреть на патчи Юлиана Анастасова (Julian Anastasov), расположеные по адресу http://www.ssi.bg/~ja/#routes. Они могут вам помочь.
Глава 5. GRE и другие тоннели. В ОС Linux поддерживаются 3 типа тоннелей. Это тоннелирование IP в IP, GRE тоннелирование и тоннели не-ядерного уровня (как, например, PPTP).