The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка и тестирование протокола BGP с пакетом Quagga (zebra) (zebra route bgp cisco)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: zebra, route, bgp, cisco,  (найти похожие документы)
From: info@netup.ru Newsgroups: NetUP (http://www.netup.ru) Date: Mon, 11 Sep 2007 18:21:07 +0000 (UTC) Subject: Настройка и тестирование протокола BGP с пакетом Quagga (zebra) Оригинал: http://www.netup.ru/BGP_Cisco_Gentoo_Linux_Quagga.php Настройка и тестирование протокола BGP на базе оборудования Cisco и Gentoo Linux с пакетом Quagga (zebra) Содержание * Введение * Использованные сокращения * Описание протокола BGP * Описание тестового стенда * Настройка Cisco для использования BGP * Установка и настройка Quagga в Gentoo Linux * Тестирование работы протокола BGP * Выводы * Ссылки Введение В настоящей статье детально рассмотрены механизмы функционирования протокола динамической маршрутизации BGP. Приведены инструкции по настройке маршрутизаторов Cisco и пакета Quagga на базе Gentoo Linux. Собран работающий стенд, в котором связность между сетями осуществляется благодаря маршрутам, анонсированным по протоколу BGP. На базе этого стенда проведены испытания переключения на резервный канал при падении основного. Протокол BGP является основным в Интернете и благодаря ему осуществляется доступность провайдеров во всем мире. Рано или поздно каждый серьезный провайдер столкнется с настройкой именно этого протокола. Надеемся, что изложенный в данной статье материал окажет хорошую помощь техническим специалистам при настройке динамической маршрутизации по протоколу BGP. Внимание! В статье использованы фиктивные адреса сетей, а так же номера автономных систем. Для использования протокола BGP в реальной сети Интернет необходимо произвести регистрацию автономной системы и блока IP-адресов. Для этого можно воспользоваться услугами компании НетАП по регистрации. Более подробно о данной услуге можно найти по ссылке - http://www.netup.ru/Autonomous_System_Registration.php Использованные сокращения В данной статье использованы следующие сокращения: * AS - Autonomic System, автономная система; * BGP - Border Gateway Protocol, протокол пограничного маршрутизатора; * eBGP - Exterior BGP, обмен маршрутами между автономными системами по протоколу BGP; * iBGP - Interior BGP, обмен маршрутами внутри автономных систем по протоколу BGP; * IGP - Interior Gateway Protocol, протокол внутреннего маршрутизатора; * MED - Multi-exit discriminator, атрибут маршрутизаторов Cisco, используемый в случаях, когда две автономные системы соединяются несколькими линиями или с помощью нескольких маршрутизаторов; Описание протокола BGP Протокол BGP (Border Gateway Protocol; RFC-1265-1268,1467,1655,1771,1772) разработан компаниями IBM и CISCO. Пара BGP-соседей устанавливает между собой соединение по протоколу TCP, порт 179. Соседи, принадлежащие разным AS, должны быть доступны друг другу непосредственно; для соседей из одной AS такого ограничения нет, поскольку протокол внутренней маршрутизации обеспечит наличие всех необходимых маршрутов между узлами одной автономной системы. BGP-маршрутизаторы обмениваются сообщениями об изменении маршрутов. Максимальная длина таких сообщений составляет 4096 октетов, а минимальная 19 октетов. Каждое сообщение имеет заголовок фиксированного размера. Объем информационных полей зависит от типа сообщения. Формат заголовка Рис. 1. Формат заголовка сообщения BGP. Поле маркер содержит 16 октетов и его содержимое может легко интерпретироваться получателем. Маркер может использоваться для обнаружения потери синхронизации в работе BGP-партнеров. Поле длина имеет два октета и определяет общую длину сообщения в октетах, включая заголовок. Значение этого поля должно лежать в пределах 19 - 4096. Поле тип представляет собой код разновидности сообщения и может принимать следующие значения: * OPEN - начало соединения * UPDATE - обновление данных * NOTIFICATION - оповещение * KEEPALIVE - проверка связи После того как связь на транспортном протокольном уровне установлена, первое сообщение, которое должно быть послано - это OPEN. При успешном прохождении этого сообщения партнер должен откликнуться сообщением KEEPALIVE. После этого возможны любые сообщения. Кроме заголовка сообщение OPEN содержит следующие поля: Формат сообщения OPEN Рис. 2. Формат сообщения OPEN. Поле версия описывает код версии используемого протокола, на сегодня для BGP он равен 4. Двух-октетное поле моя автономная система определяет код AS отправителя. Поле время сохранения характеризует время в секундах, которое отправитель предлагает занести в таймер сохранения (после получения сообщения OPEN BGP-маршрутизатор должен выбрать значение времени сохранения, обычно меньшее из полученного в сообщении OPEN и значения, определенного при конфигурации системы (0-3сек); оно определяет максимальное время в секундах между сообщениями KEEPALIVE и UPDATE или между двумя UPDATE-сообщениями). Каждому узлу в рамках BGP приписывается 4-октетный идентификатор (BGP-identifier, задается при инсталляции и идентичен для всех интерфейсов локальной сети). Сообщения типа UPDATE используются для передачи маршрутной информации между BGP-партнерами. Этот тип сообщения позволяет объявить об одном новом маршруте или о закрытии группы маршрутов, причем объявление об открытии нового и закрытии старых маршрутов возможно в пределах одного сообщения. Сообщение UPDATE всегда содержит стандартный заголовок и может содержать другие поля в соответствии со схемой: Формат сообщения UPDATE Рис. 3. Формат сообщения UPDATE. Если длина списка отмененных маршрутов равна нулю, ни один маршрут не отменен, а поле отмененные маршруты в сообщении отсутствует. Поле отмененные маршруты имеет переменную длину и содержит список префиксов IP-адресов маршрутов, которые стали недоступны: длина префикса (в битах), равная нулю, означает, что префикс соответствует всем IP-адресам, а сам имеет нулевой размер. Предусмотрены следующие разновидности кодов типа атрибута: * ORIGIN (код 1) - стандартный обязательный атрибут, который определяет происхождение путевой информации. Генерируется автономной системой, которая является источником маршрутной информации. * AS_PATH (код 2) - также является стандартным обязательным атрибутом, который составлен из совокупности сегментов пути. Атрибут определяет автономные системы, через которые доставлена маршрутная информация. Каждый сегмент AS_PATH состоит из трех частей: тип сегмента пути, длина сегмента пути и оценка сегмента пути. * NEXT_HOP (код 3) - стандартный обязательный атрибут, определяющий IP-адрес пограничного маршрутизатора, который должен рассматриваться как цель следующего шага на пути к точке назначения. * MULTI_EXIT_DISC (код 4) - представляет собой опциональный непереходной атрибут, который занимает 4 октета и является положительным целым числом. Величина этого атрибута может использоваться при выборе одного из нескольких путей к соседней автономной системе. * LOCAL_PREF (код 5) - является опциональным атрибутом, занимающим 4 октета. Он используется BGP-маршрутизатором, чтобы сообщить своим BGP-партнерам в своей собственной автономной системе степень предпочтения объявленного маршрута. * ATOMIC_AGGREGATE (код 6) - представляет собой стандартный атрибут, который используется для информирования партнеров о выборе маршрута, обеспечивающего доступ к более широкому списку адресов. * AGGREGATOR (код 7) - опциональный переходной атрибут с длиной в 6 октетов. Атрибут содержит последний код автономной системы, который определяет агрегатный маршрут (занимает два октета), и IP-адрес BGP-маршрутизатора, который сформировал этот маршрут (4 октета). Информация о работоспособности соседних маршрутизаторов получается из KEEPALIVE-сообщений, которые должны посылаться настолько часто, чтобы уложиться во время, отведенное таймером сохранения (hold). Обычно это время не должно превышать одной трети от времени сохранения, но не должно быть и меньше 1 секунды. Если выбранное значение времени сохранения равно нулю, периодическая посылка KEEPALIVE-сообщений не обязательна. NOTIFICATION-сообщения посылаются, когда обнаружена ошибка. BGP-связь при этом немедленно прерывается. Помимо заголовка NOTIFICATION-сообщение имеет следующие поля: Формат сообщения NOTIFICATION Рис. 4. Формат сообщения NOTIFICATION. Код ошибки представляет собой одно-октетное поле и указывает на тип данного сообщения. Возможны следующие коды ошибки: * Ошибка в заголовке сообщения * Ошибка в сообщении OPEN * Ошибка в сообщении UPDATE * Истекло время сохранения * Ошибка конечного автомата (рассинхронизация) * Прерывание Одно-октетное поле cубкод ошибки предоставляет дополнительную информацию об ошибке. Каждый код ошибки может иметь один или более субкодов. Если поле содержит нуль, это означает, что никаких субкодов не определено. Описание тестового стенда Для тестирования работы протокола BGP специалистами компании НетАП был собран тестовый стенд, включающий в себя четыре автономные системы: * AS 65001, включающая в себя сеть 192.168.100.0/24 * AS 65002, включающая в себя сети 172.16.100.0/24; 172.16.102.0/24; 172.16.103.0/24 * AS 65003, включающая в себя сеть 192.168.200.0/24 * AS 65004, включающая в себя сеть 172.16.101.0/24 В качестве маршрутизаторов было использовано 3 сервера с операционной системой Gentoo Linux и один маршрутизатор Cisco 3640. Схема стенда приведена на рисунке: Схема тестового стенда Рис. 5. Схема стенда для тестирования работы протокола BGP. Настройка Cisco для использования BGP Минимальная конфигурация Для простой конфигурации маршрутизатора Cisco для работы с протоколом BGP используются следующие команды: router bgp 65003 neighbor 172.16.101.2 remote-as 65004 neighbor 172.16.102.1 remote-as 65002 network 192.168.200.0 Команда router bgp [AS] присваивает маршрутизатору номер его автономной системы и включает обмен BGP-маршрутами между автономными системами. Команда neighbor [ip-address] remote-as [AS] добавляет запись в таблицу соседних BGP-маршрутизаторов с указанием IP-адреса маршрутизатора и номера автономной системы, к которой он принадлежит. Команда network [ip-address] указывает маршрутизатору на необходимость анонсировать указанную сеть как доступную через данный маршрутизатор. Выбор оптимального маршрута При выборе наилучшего пути к сети назначения в BGP применяется несколько критериев, каждый из которых может быть настроен вручную. Алгоритм выбора маршрута состоит из следующих этапов: * Для каждой записи в таблице соседних BGP-маршрутизаторов проверяем, достижим ли соответствующий узел и отбрасываем узлы, которые недоступны. * Выбираем путь с наибольшим весом. * Если вес одинаков, выбираем путь с максимальным значением параметра LOCAL_PREF. * Если значения LOCAL_PREF равны и путь инициирован внешним (не локальным) маршрутизатором, выбираем кратчайший AS_PATH. * Если длины AS_PATH равны, выбираем наименьший код ORIGIN. * Если коды атрибута ORIGIN равны, выбираем путь с наименьшим значением атрибута MED. * Если атрибуты MED одинаковы, eBGP предпочитается iBGP. * Если пути одинаковы, выбираем ближайшего соседа IGP. * Если расстояния одинаковы, выбираем наименьший ID маршрутизатора. Настройка атрибута Weight Атрибут Weight (вес) является метрикой и позволяет системному администратору вручную присваивать определенный вес всем маршрутам, информация о которых получена от партнеров BGP. Чем больше вес, тем лучше путь. Данная метрика особенно полезна, когда маршрутизатор соединен с несколькими автономными системами. Вес остается локальным параметром для того маршрутизатора, на котором он сконфигурирован. Когда информация о маршрутах поступает из многих источников, атрибут может применяться для того, чтобы маршрутизатор предпочитал определенный интерфейс всем остальным. Атрибут конфигурируется с помощью команды: neighbor <IP-адрес> weight <вес> Допустимые значения веса лежат в диапазоне 0 - 65535. Значение по умолчанию равно 32768. Диагностика сети BGP После настройки протокола BGP можно воспользоваться рядом команд для проверки конфигурации и диагностики сети. Эти команды также можно использовать для изучения процесса маршрутизации BGP: * show ip bgp - отображает всю информацию, относящуюся к конфигурации BGP для выбранного интерфейса; * show ip bgp neighbors - выводит информацию обо всех сконфигурированных соседях BGP, представляет детализированные статистические данные, относящиеся к каждому соседнему маршрутизатору; * show ip bgp paths - отображает всю маршрутную информацию для локального маршрутизатора; * show ip bgp summary - отображает состояние всех соединений BGP. Пример вызова команды show ip bgp: Router#show ip bgp BGP table version is 67, local router ID is 172.16.101.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.16.100.0/24 172.16.102.1 0 0 65002 i * 172.16.101.2 0 65004 65002 i r 172.16.101.0/24 172.16.102.1 0 65002 65004 i r> 172.16.101.2 0 0 65004 i r> 172.16.102.0/24 172.16.102.1 0 0 65002 i r 172.16.101.2 0 65004 65002 i *> 172.16.103.0/24 172.16.102.1 0 0 65002 i * 172.16.101.2 0 65004 65002 i *> 192.168.100.0 172.16.102.1 0 65002 65001 i * 172.16.101.2 0 65004 65002 65001 i Установкаи настройка Quagga в Gentoo Linux Установка Quagga Quagga - пакет программ, реализующих протоколы маршрутизации, основанные на TCP/IP. Имеется поддержка таких протоколов, как RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 и BGP-4+.В дополнение к традиционному протоколу IPv4, Quagga также поддерживает протоколы маршрутизации для IPv6. Quagga позволяет осуществлять функции маршрутизации на отдельно взятом компьютере, обмениваясь маршрутной информацией с соседями и соответствующим образом изменяя таблицу маршрутов ядра. Вы имеете возможность динамически изменять конфигурацию Quagga и просматривать информацию о текущей конфигурации. Для установки пакета Quagga воспользуйтесь следующей командой: emerge quagga Пакет quagga включает в себя набор демонов для работы с различными протоколами маршрутизации (ripd, bgpd, ospfd и др.), а также демон zebra, который непосредственно служит для формирования таблицы маршрутизации и перераспределения маршрутов между различными протоколами. Конфигурационные файлы quagga доступны в папке /etc/quagga. Ниже приведены конфигурационные файлы для всех трех маршрутизаторов, использованных на тестовом стенде. Сервер amalfi.netup Пример файла zebra.conf: hostname amalfi password zebra enable password zebra log file /var/log/zebra.log interface eth0 interface eth1 ip forwarding line vty Пример файла bgpd.conf: hostname amalfi_bgpd password zebra router bgp 65001 bgp router-id 10.1.2.4 network 192.168.100.0/24 neighbor 10.1.2.8 remote-as 65002 log stdout Сервер sat.netup Пример файла zebra.conf: hostname sat password zebra enable password zebra log file /var/log/zebra.log interface eth0 interface eth1 ip forwarding line vty Пример файла bgpd.conf: hostname sat_bgpd password zebra router bgp 65004 bgp router-id 172.16.103.2 network 172.16.101.0/24 neighbor 172.16.103.1 remote-as 65002 neighbor 172.16.101.1 remote-as 65003 log stdout Сервер streamer.netup Пример файла zebra.conf: hostname streamer password zebra enable password zebra log file /var/log/zebra.log interface eth0 interface eth1 ip forwarding line vty no exec-timeout Пример файла bgpd.conf: hostname streamer_bgpd password zebra router bgp 65002 bgp router-id 10.1.2.8 network 172.16.100.0/24 network 172.16.102.0/24 network 172.16.103.0/24 neighbor 10.1.2.4 remote-as 65001 neighbor 172.16.102.2 remote-as 65003 neighbor 172.16.103.2 remote-as 65004 log stdout Запуск Quagga После завершения настройки необходимо выполнить запуск соответствующих демонов командами: /etc/init.d/zebra start /etc/init.d/bgpd start Управление демонами возможно по протоколу telnet, аналогично управлению маршрутизатором cisco. Для этого необходимо подключиться к порту 2601 (для демона zebra) или к порту 2605 (для демона bgpd) и ввести соответствующие пароли, которые вы указали в конфигурационных файлах. Пример выполнения команды show ip route bgp на маршрутизаторе amalfi: amalfi# show ip route bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route B>* 172.16.100.0/24 [20/0] via 10.1.2.8, eth0, 00:12:45 B>* 172.16.101.0/24 [20/0] via 10.1.2.8, eth0, 00:12:15 B>* 172.16.102.0/24 [20/0] via 10.1.2.8, eth0, 00:12:45 B>* 172.16.103.0/24 [20/0] via 10.1.2.8, eth0, 00:12:45 amalfi# exit На показанном примере видно, что маршрутизатор успешно получил по протоколу BGP список всех доступных ему автономных систем. Тестирование работы протокола BGP Простой обмен информацией о маршрутах Итак, на стенде мы имеем два независимых маршрута от AS 65003 до AS 65001: * AS 65004 -> AS 65002 -> AS 65001 * AS 65002 -> AS 65001 Первый маршрут доступен через интерфейс Ethernet0/0: interface Ethernet0/0 ip address 172.16.101.1 255.255.255.0 Второй маршрут, соответственно, через интерфейс Ethernet0/1: interface Ethernet0/1 ip address 172.16.102.2 255.255.255.0 Изначально оба маршрута работоспособны и, согласно алгоритму выбора маршрута (см. выше) должен быть выбран маршрут 2 (65002 -> 65001). Проверим это, воспользовавшись на маршрутизаторе Cisco командной traceroute: Router#traceroute 192.168.100.1 Type escape sequence to abort. Tracing the route to 192.168.100.1 1 172.16.102.1 12 msec 48 msec 0 msec 2 192.168.100.1 [AS 65001] 0 msec 0 msec 4 msec Теперь отключим короткий маршрут, для чего выключим на Cisco соответствующий сетевой интерфейс: interface Ethernet0/1 shutdown После этого весь трафик до AS 65001 должен пойти по резервному каналу. Проверим это с помощью команды traceroute: Router#traceroute 192.168.100.1 Type escape sequence to abort. Tracing the route to 192.168.100.1 1 172.16.101.2 0 msec 0 msec 0 msec 2 172.16.103.1 [AS 65002] 0 msec 56 msec 0 msec 3 192.168.100.1 [AS 65001] 4 msec 0 msec 4 msec После восстановления основного канала необходимо подождать некоторое время (около 5-10 секунд), прежде чем Cisco обнаружит, что соединение восстановилось. Индикатором этого служит следующая запись журнала: .Jan 2 13:33:15.448: %BGP-5-ADJCHANGE: neighbor 172.16.102.1 Up Как только маршрутизатор обнаружит восстановление основного канала, весь трафик снова пойдет по этому, более короткому пути. Использование "весов" маршрутов Иногда использование длины маршрута в качестве основного критерия отбора неприемлимо. Так, например, у вас может быть два канала в Интернет - дешевый основной и дорогой резервный. При этом, маршрут по дешевому каналу длиннее. Что делать в этом случае? На помощь придет возможность указания весов маршрутов. Зададим длинному пути больший вес, чтобы он использовался в качестве основного. Для этого введем следующие команды: ! Входим в режим редактирования параметров BGP router bgp 65003 ! Задаем веса neighbor 172.16.101.2 weight 200 neighbor 172.16.102.1 weight 100 Теперь, в случае, когда доступно оба канала, маршрутизатор выберет более длинный маршрут, поскольку он имеет больший вес: Router#traceroute 192.168.100.1 Type escape sequence to abort. Tracing the route to 192.168.100.1 1 172.16.101.2 0 msec 0 msec 0 msec 2 172.16.103.1 [AS 65002] 0 msec 56 msec 0 msec 3 192.168.100.1 [AS 65001] 4 msec 0 msec 4 msec Введение ограничений на импорт и экспорт маршрутов Очень часто возникает необходимость ограничить список маршрутов, получаемых от того или иного BGP-узла. Действительно, любой узел может заявить, что через него доступна та или иная подсеть, при этом не предоставляя реального маршрута до указанной сети. Это делает реальной угрозу атак типа <<отказ в обслуживании>>, спуфинга и других видов атак. Для защиты от этих проблем вам необходимо определить степень доверия к каждому из соседних BGP-узлов и, в соответствии с этим, ограничить список маршрутов, которые будут получены от него. Остальные маршруты будут проигнорированы. Ограничения по номеру автономной системы задаются с помощью списков доступа по параметру as-path: ip as-path access-list <идентификатор> permit <регулярное выражение> Здесь регулярное выражение задает шаблон, по которому будет срабатывать правило. Например, для ограничения по автономной системе 65004, выражение будет иметь вид ^65004$. Кроме того, можно добавить ограничение по адресу сети с помощью параметра prefix-list: ip prefix-list <имя> seq <номер> permit <адрес подсети> Где <имя> название списка адресов, <номер> порядковый номер записи в списке, < адрес подсети> адрес сети и маска. Теперь необходимо привязать списки к конкертному BGP-соседу. Ключевое слово "in" в настройках указывает на то, что правила фильтрации применяются к адресам анонсированным с данного маршрутизатора. В случае если указано ключевое слово "out", то фильтры применяются к адресам анонсируемым нами на данный маршрутизатор. В режиме редактирования параметров BGP это можно сделать следующими командами: ! Для ограничения по автономным системам neighbor <адрес узла> filter-list <ID правила> ! Для ограничения по префиксу сети neighbor 10.1.2.4 route-map <имя route-map> in route-map <имя route-map> permit 10 match ip address prefix-list <имя prefix-list> Посмотрим, как можно реализовать данный пример на нашем стенде. Для этого на маршрутизаторе streamer.netup введем ограничения на получаемые сети от маршрутизатора amalfi.netup. Разрешим анонсировать только сеть 192.168.100.0/24 и для большей наглядности настроим amalfi.netup на анонсирование новой, фиктивной сети 10.20.30.0/24. Для этого на streamer.netup изменим конфигурационный файл /etc/quagga/bgpd.conf следующим образом: router bgp 65002 bgp router-id 10.1.2.8 network 172.16.100.0/24 network 172.16.102.0/24 network 172.16.103.0/24 neighbor 10.1.2.4 remote-as 65001 neighbor 10.1.2.4 route-map AMALFI in neighbor 172.16.102.2 remote-as 65003 neighbor 172.16.103.2 remote-as 65004 ! ip prefix-list AMALFI_IP_LIST seq 6 permit 192.168.100.0/24 route-map AMALFI permit 10 match ip address prefix-list AMALFI_IP_LIST На amalfi.netup в конфигурационный файл /etc/quagga/bgpd.conf добавим экспорт фиктивной сети 10.20.30.0/24: router bgp 65001 bgp router-id 10.1.2.4 network 192.168.100.0/24 network 10.20.30.0/24 neighbor 10.1.2.8 remote-as 65002 После применения настроек, проверим какие сети были анонсированы с amalfi.netup. Для этого выполним следующую команду на streamer.netup: streamer# show ip route bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route B>* 172.16.101.0/24 [20/0] via 172.16.103.2, eth0, 00:02:20 B>* 192.168.100.0/24 [20/0] via 10.1.2.4, eth0, 00:02:24 Как и ожидалось информация о фиктивной сети 10.20.30.0/24 не попала в маршрутную информацию. При этом информация о сети 192.168.100.0/24 осталась без изменений и доступна в списке маршрутов. Выводы Протокол BGP замечательно выполняет задачи по управлению маршрутизацией в глобальных сетях, таких как Интернет. Тестирование показало быструю реакцию оборудования на потерю связи по тому или иному каналу, а также очень гибкие возможности настройки. А такая возможность как фильтрация принимаемых и отправляемых машрутов позволяет использовать BGP в качестве инструмента по оптимизации путей прохождения трафика в Интернете. Согласно данной статье очень удобно использовать протокол BGP для обеспечения резервирования Интернет-канала. Переключение между основным и резервным каналом происходит очень быстро, благодаря чему задержка в предоставлении услуги будет минимальной и пользователи провайдера по достоинству оценят качество сервиса. Ссылки * Сайт проекта Quagga в Интернет http://www.quagga.net/ * RFC 1771, "A Border Gateway Protocol 4 (BGP-4)" http://www.ietf.org/rfc/rfc1771.txt * Семенов Ю.А. "Протоколы Интернет", глава посвященная протоколу BGP http://book.itep.ru/4/44/bgp44114.htm * Тодд Леммл, Шон Одом, Кевин Уоллес. "CCNP: Маршрутизация. Учебное руководство". © 2001 SYBEX Inc.; © Изд. "Лори", Москва, 2002

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру