По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье вы познакомитесь с основами BGP и узнаете о его различных типах сообщений и состояниях. Все статьи из цикла про BGP: Построение маршрута протоколом BGP Формирование соседства в BGP Оповещения NLRI и политики маршрутизации BGP Масштабируемость протокола BGP Работа протокола BGP с IPv6 Полное руководство по BGP в PDF Ох как мы любим PDF 🙃 Для вашего удобства, весь цикл статей по BGP (Border Gateway Protocol) мы "упаковали" в документ формата PDF. Книга по BGP в PDF | 2.07 MB Видео: Основы BGP за 7 минут Обзор BGP Давайте посмотрим правде в глаза - Border Gateway Protocol невероятно уникален, особенно когда мы сравниваем его с другими протоколами маршрутизации. Самое первое, что делает BGP таким уникальным, - это то, что он наш единственный внешний шлюзовой протокол (EGP), широко используемый сегодня. Мы знаем, что у нас есть Interior Gateway Protocols (IGPs), и похожий на OSPF, работающий внутри автономной системы. Но BGP - это EGP, а это означает, что он (как правило) будет принимать префиксы, которые находятся внутри автономной системы, и отправлять их в другие автономные системы. На рисунке 1 показан пример топологии BGP. Именно поэтому протокол BGP является протоколом, который обеспечивает функционирование сети. Интернет-провайдеры (ISP) могут использовать BGP для перемещения префиксной информации между другими Интернет-провайдерами. Однако уникальные характеристики BGP на этом не заканчиваются. Одна из вещей, которая очень уникальна в протоколе, заключается в том, что он формирует пиринги (*равноправный информационный обмен) точка-точка с другими спикерами BGP, и вы должны создавать эти пиринги вручную. С протоколом пограничного шлюза (BGP) нет такой вещи, как автоматическое формирование соседства с целой кучей устройств на одном сегменте. Для каждого из устройств, с которыми BGP должен пиринговать, он делает это с помощью одного однорангового отношения, которое мы предпочитаем называть пирингом BGP. Еще одно очень уникальное свойство заключается в том, что BGP - это протокол прикладного уровня. По общему признанию, большинство сетевых инженеров поспорили бы, что это протокол сетевого уровня – и они проиграли бы этот спор! Как компонент прикладного уровня, BGP делает что-то блестящее. Он использует протокол управления передачей (TCP) для своих операций. Если мы рассмотрим EIGRP в качестве примера, то создателям пришлось приложить большие усилия, чтобы встроить надежность в сам протокол. Например, спикер EIGRP будет передавать многоадресные передачи, и, если это не сработает, он вернется к одноадресным передачам, чтобы попытаться обеспечить надежность. С помощью Border Gateway Protocol разработчики решили не включать в протокол все эти типы контроля надежности. Они просто полагаются на чудесную надежность коммуникаций TCP. В частности, BGP использует TCP- порт 179. Когда мы думаем о наших протоколах маршрутизации, мы знаем, что будет некоторое значение, которое будет служить метрическим значением для измерения расстояния. Например, в случае OSPF мы знаем, что метрикой является стоимость, а стоимость напрямую зависит от пропускной способности. BGP не работает таким образом. Протокол BGP использует атрибуты, а не только одного показателя. Одним из главных атрибутов протокола BGP называется атрибута AS_PATH. Это список всех автономных систем (AS), которые префикс должен был передать на своем пути, скажем, в вашу автономную систему. AS_PATH - это фактически запись всей информации о пути AS. Путь AS настолько важен для функции BGP, что протокол часто называют протоколом маршрутизации вектора пути. Обратите внимание, что это не протокол вектора расстояния (Distance Vector), а вектор пути (Path Vector). AS_PATH используется не только для определения наилучшего пути к месту назначения (т.е. более короткого пути AS), но и в качестве механизма предотвращения петель. Когда автономная система видит свой собственный номер AS в AS_PATH, она очень обеспокоена тем, что в коммуникациях может быть петля. Что- то еще, что делает BGP невероятно уникальным, - это тот факт, что, когда мы формируем пиринги внутри автономной системы, они называются внутренними пирингами BGP, а правила, которым следуют, являются внутренними правилами BGP (IBGP). Когда мы формируем пиринг между автономными системами, это называется протоколом внешнего пограничного шлюза (EBGP). (Примечание: в некоторых литературных источниках EBGP пишется как eBGP.) Помните, что причина, по которой BGP различает пиринг IBGP и пиринг EBGP, заключается в том, что эксплуатационные характеристики должны изменяться в зависимости от того, как выполняется пиринг. Например, мы заявили, что существует путь AS, который записывает автономные системы, которые передаются. Очевидно, что при пиринге EBGP, когда префикс передается от одного AS к другому AS, отправляющий AS должен поместить свою автономную систему в путь. Но с IBGP, префикс остается в AS, поэтому протокол BGP не обновляет значение AS. Вы можете вернуться к рисунку 1, чтобы увидеть эти различные типы пиринга в действии. Таким образом, правила меняются, когда мы говорим о IBGP против EBGP, чтобы быть последовательным и безошибочными. И уникальные свойства BGP просто не заканчиваются на этом. Типы сообщений BGP, форматы и соседние типы сообщений состояния соседства BGP Многие люди описывают протокол пограничного шлюза (BGP) как чрезвычайно сложный протокол, но я не согласна с этим. Видите ли, установка политик BGP и контроль распространения префиксов внутри BGP-это может быть довольно сложно. Но сам протокол, хотя и уникален, в основном прост в своей работе. В этом части статьи мы рассмотрим типы сообщений BGP. На рисунке 2 показаны различные типы сообщений BGP. Запомните первый шаг. Когда два спикера BGP хотят сформировать пиринг, они будут полагаться на протокол управления передачей (TCP). И, конечно, мы знаем, что будет three-way handshake (трехстороннее рукопожатие) с TCP, чтобы начать этот надежный сеанс связи. Что же происходит дальше? Так это то, что эти устройства будут обмениваться открытыми сообщениями. Открытое сообщение содержит очень важную информацию, основным компонентом которой является номер автономной системы однорангового узла. Это будет определять, является ли это пиринг IBGP или пиринг EBGP. Когда происходит обмен открытыми сообщениями, то спикеры BGP далее начинают обмениваться сообщениями Keepalive. Это, простой механизм, чтобы убедиться, что другой прибор жив, счастлив и здоров, и что пиринг в состоянии up. После этого спикеры BGP получают обновления для совместного использования, называемое сообщением Update. Если в какой-то момент времени что-то пойдет не так, спикеры BGP могут использовать простое сообщение Notification. Данное сообщение прерывает пиринг в результате ошибки, которая может произойти с BGP. Одним из очень интересных типов сообщений BGP является тип сообщения Route Refresh (обновления маршрута). Хотя этот тип сообщений не был включен в исходный стандарт BGP, большинство наших основных сетевых вендоров поддерживают Route Refresh. Route Refresh позволяют соседям обновлять, скажем, информацию о маршруте BGP или даже обновлять вещи после довольно серьезной реконфигурации политики, не разрушая пиринг и не влияя на пиринг каким- либо большим негативным образом. Рисунок 3 показывает эти типы сообщений в действии благодаря захвату Wireshark’ом обмена сообщениями BGP в нашем примере топологии из рисунка 1. Форматы сообщений BGP В этом части статьи мы еще больше узнаем об эксплуатационных характеристиках Border Gateway Protocol, более подробно рассмотрев типы сообщений BGP. Каждый тип сообщения имеет заголовок BGP. Этот заголовок показан на рисунке 4. Вы видите, что заголовок BGP имеет большое поле маркера. Можно подумать, что это чрезвычайно важно. Он имеет размер 16 октетов. Как оказалось, это поле будет заполнено у всех. Это связано с тем, что использование этого поля маркера было прописано в устаревшем стандарте. Первоначальная идея этого поля состояла в том, что его можно было бы использовать для обнаружения таких событий, как потеря синхронизации между двумя одноранговыми узлами, и также считалось, что это будет область, в которой может храниться аутентификационная информация. Почему это поле вообще имеется в BGP? Иногда, в очень редком случае, когда необходимо иметь обратную поддержку с каким-то действительно старым устройством BGP, которое ожидает эту информацию из поля маркера. Важными полями в заголовке, будут длина (Length) (то есть длина всего сообщения) и поля типа (Type). Поле Тип указывает, с каким типом сообщения BGP мы имеем дело. Если, например, в этом поле 1, вы имеете дело с открытым (Open) сообщением BGP. Значение 2 указывает на сообщение об обновлении (Update). А 3 означает уведомление (Notification). Значение 4 будет иметь сообщение Keepalive. 5 указывает на необязательное Route Refresh. То, что следует за информацией заголовка, конечно же, является данными, за одним важным исключением- это сообщение Keepalive. По определению, в сообщении Keepalive нет никаких данных. Теперь я надеюсь вы понимаете, что, когда ваша система хочет сформировать BGP-пиринг с другим устройством, она собирается отправить открытое сообщение. На рисунке 5 показан формат этих сообщений. Когда мы смотрим на формат открытого (Open) сообщения, мы замечаем, что там есть номер версии. Именно так BGP указывает на версию BGP, которую вы используете. Ваша система также отправит свой номер AS в открытом сообщении. Это очень важно для такого поведения IBGP по сравнению с EBGP. Существует значение Hold Time. Что же такое Hold Time? Когда маршрутизатор, с которым вы хотите свериться, получает Open сообщение, он смотрит время удержания (Hold Time), смотрит на свое собственное настроенное Hold Time, а затем использует меньшее из двух значений. Hold Time должно быть либо нулевым, либо не менее трех секунд. Есть поле BGP Identifier. Это Ваш BGP Router ID, и это уникальное значение, которое будет однозначно отличать вашу систему в пирингах BGP. Наконец, у нас есть дополнительные параметры (Optional Parameter), которые можно задать с помощью открытого сообщения. Там есть необязательная длина параметра (Optional Parameter Length), а затем сами параметры, дающие дополнительную гибкость работы с протоколом. Еще одно действительно важное сообщение, которое у нас есть, - это сообщение об обновлении (Update) BGP. На рисунке 6 показана эта структура сообщения. Сообщение об обновлении BGP содержит индикатор длины отозванных маршрутов (Withdrawn Routes Length). Это гарантирует, что сообщение обновления является средством для маршрутов, которые будут удалены из таблицы BGP соседа. Примечание: затем в сообщение об обновлении вставляется список изъятых маршрутов. Сообщение об обновлении содержит поля, которые используются для обмена информацией о префиксах сети с соседями и включают в себя очень важную атрибутивную информацию, связанную с префиксами. Помните, что эти атрибуты позволяют Вам принимать важные решения о том, как BGP будет фактически маршрутизировать информацию в сети. Хорошо известный атрибут, о котором мы уже упоминали, - это путь. Вы помните, что это список автономных систем, которые префикс передал на своем пути по всей инфраструктуре BGP. AS Path будет примером атрибута, который должен быть в сообщении об обновлении, когда он используется для отправки префиксов. Там может быть много атрибутов, которые мы используем, и это является причиной для Total Path Attribute Length в сообщении об обновлении. Сама информация о префиксе сети находится в поле NLRI. Это означает информацию о достижимости сетевого уровня (Network Layer Reachability Information). Вы можете вернуться к рисунку 3 и увидеть эти поля в реальном пакете, а также их содержимое. Создатели BGP сделали гениальную вещь. Они создали протокол для передачи NLRI таким образом, чтобы он был гибким по мере изменения сетей и необходимости передачи новой информации. BGP создан для того, чтобы сразу же запускать для нас такие вещи, как IPv6. Он также может легко переносить префиксы VPN IPv4 внутри чего-то вроде MPLS VPN. На рисунке 7 показаны поля сообщения уведомления (Notification). Самое первое поле - это код ошибки (Error Code). Затем поле Подкод ошибки (Error Subcode). Эти поля дают нам общий тип ошибки, а затем еще больше информации. Например, если в Error Code у нас есть значение 3, а затем в Error Subcode у нас есть значение 3, это указывает на то, что существует сообщение об ошибке обновления. Соседство BGP Точно так же, как мы можем многое узнать о работе BGP, изучая сообщения BGP и их форматы, мы также можем многое узнать о BGP, изучая различные состояния, через которые проходит пиринг BGP. На самом деле, они имеют решающее значение при устранении неполадок. Когда вы проанализируете протокол BGP, вы не удивитесь, узнав, что существует множество встроенных механизмов для обеспечения стабильности. Многие IGP спроектированы так, чтобы быть максимально быстро сходящимися. Это происходит потому, что в момент, когда происходит изменение внутри сети вашей организации, мы хотим sub-second сходимости других устройств, чтобы мы знали об этом изменении. BGP спроектирован по-другому. Таймеры имеют гораздо большую продолжительность, чем мы привыкли бы с нашим IGP, потому что мы хотим стабильности, жертвуя скоростью сходимости. В конце концов, BGP имеет дело с общедоступными таблицами маршрутизации интернета в развертываниях поставщиков услуг. Эти таблицы маршрутизации очень массивны. Нестабильность в этой среде приведет к катастрофе всего публичного Интернета. Когда вы изучите состояние соседства BGP, вы поймете для чего это. Относительно большое число состояний соседства BGP, показанных на рисунке 8, свидетельствует о тщательных усилиях по обеспечению стабильности протокола маршрутизации. Обратите внимание, что есть состояние простоя, когда устройство не инициирует ни одно из других состояний, и есть установленное состояние, когда оно полностью установлено со своим узлом. Что несколько удивительно, так это то, что есть все эти “промежуточные” состояния подключения, активного, открытого подтверждения (OpenConfirm) и активного. Состояние — подключения-это состояние, в котором устройство BGP ожидает завершения TCP- соединения с соседним устройством. В активном состоянии он пытается инициировать TCP - соединение со своим соседом. В состоянии OpenSent, как вы можете догадаться, он отправляет свое открытое сообщение и ждет ответа от своего соседа с его открытым сообщением. В режиме OpenConfirm, спикер BGP на самом деле ждет, Keepalive на основе успешного обмена открытыми сообщениями. Будем надеяться, что устройство BGP получит Keepalive. Если будет ошибка, он получит уведомление. Используя в Cisco CLI специальные команды, можно узнать все о состоянии BGP. Пример 1 показывает использование команды show ip bgp summary для проверки соседнего состояния. TPA1#show ip bgp summary BGP router identifier 10.10.10.1, local AS number 100 BGP table version is 3, main routing table version 3 Neighbor V AS MsgRcvd MsgSent TblVer InQ QutQ Up/down State/PfxRcd 10.10.10.2 4 200 0 0 1 0 0 00:00:00 Idle Обратите внимание на пример 1. Этот пиринг BGP находится в состоянии ожидания (параметр State/PfxRcd в состоянии Idle). Как только произойдет соединение значение IDLE заменится на 1 (Если ATL использует только один префикс с TPA 1).
img
Представим себе следующую задачу: необходимо сделать так, чтобы при входящем звонке клиент слышал музыку в трубке и одновременно с этим звонил телефон у секретаря. Допустим, что у нас нет IVR и мы просто хотим заменить скучные гудки на какую-нибудь приятную музыку пока клиенту кто-нибудь не ответит. Сделать это очень просто. Бежим в модуль Ring Group, закидываем туда нужные внутренние номера и в разделе Play Music On Hold и вместо категории Ring, которая и отправляет в трубку звонящего эти самые скучные гудки, ставим туда какую-нибудь приятную музыку, предварительно добавив новую категорию в модуле Music On Hold. Осталось только поставить новую ринг-группу на входящий маршрут и всё готово. Предельно просто. Сценарий №2 Что если мы хотим сообщить звонящему какую-либо информацию прежде чем он услышит музыку (пойдет вызов на секретаря)? Например, поприветствовать, сообщить имя своей компании и поблагодарить за звонок. Для этого всё в том же модуле Ring Group нужно поставить предварительно записанное сообщение в поле Announcement. Теперь, позвонив в нашу компанию, клиент услышит приветствие, а затем приятную музыку на ожидании, пока ему не ответит секретарь. Нужно отметить, что телефон у секретаря зазвонит только тогда, когда начнёт играть музыка на ожидании, пока проигрывается приветствие из опции Announcement, телефон секретаря будет молчать. Сценарий №3 Допустим, что речь диктора, записанная в нашем приветствии звучит 7 секунд, а для принятия звонка секретарю требуется в среднем 2 секунды. Мы хотим повысить вероятность того, что как только клиент прослушает приветствие, на его звонок сразу же ответят. Согласитесь, оперативность ответа на звонок создаёт у звонящего положительное впечатление о компании. Таким образом, нам нужно как-то задержать момент, когда у секретаря зазвонит телефон где-то на 5 секунд, в то время как звонящий будет слушать текст нашего приветствия. То есть, идеальный сценарий, которого мы хотим добиться следующий: Клиент позвонил в нашу компанию; Клиент слушает наше приветствие (7 секунд); На 5 секунде приветствия, у секретаря начинает звонить телефон; Через примерно 2 секунды, он принимает звонок и начинает общаться с клиентом; Иными словами, нам нужна некая "буферная зона", в которой будут звучать первые 5 секунд нашего приветствия, а на 2 последних секундах у секретаря звонил телефон. Сразу стоит оговориться, что стандартными средствами модулей Ring Group, Inbound Route и Announcement эту задачу решить нельзя. Но в этой статье мы покажем способ, который поможет вам эффективно управлять задержкой отправки сигнала вызова на телефоны, пока звонящий слушает приветствие. Итак, первая хитрость которой мы воспользуемся – это создание звукового файла, в котором речь приветствия и музыка будут звучать друг за другом. То есть, один звуковой файл – сначала текст приветствия, а затем музыка на ожидании, например, в течении 5 минут. Этот файл нужно добавить в новую категорию в модуле Music On Hold А теперь, к созданию той самой "буферной зоны", в которой будут звучат первые 5 секунд нашего звукового файла. Для этого, в модуле Extension нужно создать виртуальный внутренний номер Virtual Extension. Виртуальный внутренний номер – это номер на нашей IP-АТС, который не требует какой-либо регистрации на конечном устройстве (будь то стационарный телефон или просто софтфон), при его создании, система не запрашивает и не создаёт никакого пароля Secret А теперь самое главное – включаем и редактируем правила Follow Me для нашего виртуального внутреннего номера следующим образом. Здесь самыми важными параметрами являются: Initial Ring Time - время, в течение которого, звонок будет идти на этот номер, прежде чем уйдёт на номера из списка Follow-Me List . Это и есть те самые 5 секунд, на которые нам нужно задержать момент, когда у секретаря зазвонит телефон. Follow-Me List - номер, на который уйдёт звонок после времени, указанном в Initial Ring Time. В нашем примере, 1011 – это номер секретаря. Play Music On Hold - звуковой файл, содержащий приветствие и музыку на удержании. Можно выбрать любую стратегию обзвона типа ringall и её модификации. Теперь этот виртуальный внутренний номер можно повесить на входящий маршрут.
img
Хотим рассказать о простом способе организовать автоматический перенос файлов из директории в операционной системе Windows с одного сервера на другой. Логически, конфигурацию можно поделить на 3 этапа: Создание и шаринг сетевой папки; Формирование batch (cmd) скрипта; Настройка компоненты Task Scheduler для выполнения задач и раз в минуту; Приступаем к последовательной настройке. Создание сетевой папки (шаринг) Итак, дано: есть сервер А (источник файлов) и сервер Б (получатель файлов). На сервере А мы создали директорию, из которой мы будем забирать файлы. Мы назвали ее source, а на сервере Б, который является сервером назначения, мы создали директорию Destination, в которую мы будем складывать файлы. Разобрались. Подключаемся к серверу Б. Создаем директорию Destination, нажимаем на нее правой кнопкой мыши, выбираем Properties (свойства). В открывшемся окне, переходим во вкладку Sharing (общий доступ) и нажимаем кнопку Share (общий доступ). Вот как эта опция выглядит в русской и английском интерфейсах: После нажатия, необходимо выбрать группы пользователей, которым будет видна эта директория. Если нет особых требований к безопасности и это изолированный сетевой сегмент или лаборатория, то можно выбрать Everyone (все). После выбора нажимаем Share. Готово, вот что у нас получилось: На скриншоте выше красным цветом отмечен Network Path (сетевой путь). Это путь, по которому мы будем обращаться к этой папке. Сохраните его. Важно! Обратите внимание, что в Network Path, как правило, будет указан путь вида %ИМЯ_ХОСТА%/Destination, где %ИМЯ_ХОСТА% - это имя компьютера, на котором расположена папка Destination. Важно, чтобы это имя резолвилось (разрешалось в IP - адрес) на хосте, где будет размещена папка Source (это сервер А). Можете добавить это имя и IP – адрес в локальный файл C:WindowsSystem32driversetc в Windows. Батник – batch скрипт В самом начале статьи мы озвучили небольшой roadmap (дорожную карту) по нашим работам. На сервере А (источник файлов) создайте файл с названием movefiles.bat. Важно! Расширение файла movefiles должно быть именно bat В созданный файл добавляем следующий код: robocopy C:Source \%ИМЯ_ХОСТА%Destination *.* /E /XD \%ИМЯ_ХОСТА%Destination /move Если у вас не работает команда robocopy в скрипте, попробуйте заменить ее на xcopy Сохраняем скрипт в корневом каталоге диска С, например. Планировщик задач | Task Scheduler Открываем Task Scheduler в Windows. После открытия, нажимаем на Create Basic Task в меню справа. Даем имя и описание нашему заданию: В меню далее выбираем ежедневное выполнение нашего скрипта: Ставим выполнение задачи на 00:00:00: В Action выбираем Start a program: Далее, указываем путь до нашего скрипта, который создавали ранее - movefiles.bat: В финальном окне смотрим, что у нас получилось. Если все ОК, как у нас, то нажимаем Finish: Отлично. Переходим в свойства свежесозданной таски (задачи) и во вкладке General отмечаем Run whether user is logged on or not и чекбокс Run with highest privileges. Далее, там же, в свойствах, переходим во вкладку Triggers, двойным нажатием открываем свойства уже созданного там триггера (Daily) и делаем вот что: Отмечает чекбокс Repeat task every; В поле, сразу после Repeat task every вписываем 1 mnute; Нажимаем ОК. Тестируем Итак, давайте протестируем, что у нас получилось. На сервере А в папку Source кладем тестовый текстовый файл: Проверяем на сервере Б в директории Destination:
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59