По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет! Мы уже рассказывали про операционные системы для устройств Cisco – IOS, IOS-XE, CatOS. В этой статье мы рассмотрим NX-OS и IOS-XR, а также сравним их с традиционной IOS. На верхнем уровне их можно соотнести так: Cisco IOS: используется в borderless сетях (то есть это сети, которые позволяют кому угодно, где угодно и с любого устройства подключаться к корпоративной сети). Например, маршрутизатор ISR2 Cisco 3900 Series использует Cisco IOS; Cisco NX-OS: используется в коммутаторах Cisco Nexus, расположенных в центрах обработки данных. Например, коммутатор Cisco Nexus 7000 работает под управлением Cisco NX-OS; Cisco IOS-XR: используется на маршрутизаторах провайдеров связи. Например, маршрутизатор Cisco XR 12000 Series использует Cisco IOS-XR. Cisco IOS Хотя имя «IOS» появилось позже, операционная система относится к середине 1980-х годов. Cisco IOS была разработана с использованием языка программирования C и имела несколько ограничений, указывающих на то, когда она была разработана. Например, он не поддерживал симметричную многопроцессорную обработку. В результате одна инструкция должна была быть завершена до того, как начнется выполнение другой. Еще одним огромным архитектурным ограничением было использование общего пространства памяти, в результате которого один неправильный процесс мог нанести ущерб другим процессам маршрутизатора. У некоторых платформ марщрутизаторов были обходные пути. Например модульный маршрутизатор Cisco 7513 – он может быть оснащен модулем универсального интерфейса (VIP), который позволяет отдельным линейным картам запускать собственные экземпляры Cisco IOS. Это обеспечило некоторый уровень балансировки нагрузки и избыточности. Еще одна версия Cisco IOS - это IOS-XE, которая запускает Cisco IOS в Linux. В качестве примера можно найти Cisco IOS-XE, работающую на маршрутизаторе Cisco ASR 1000 Series. Благодаря набору функций Linux, Cisco IOS-XE добавляет поддержку симметричной многопроцессорности и отдельных пространств памяти. Однако, помимо своих Linux-подходов, Cisco IOS-XE в основном похожа на традиционную Cisco IOS. Cisco NX-OS Первоначально имевшая название SAN-OS (где акроним SAN обозначался как Storage Area Network), NX-OS предлагает некоторые обширные архитектурные улучшения по сравнению с традиционными Cisco IOS. Хотя первоначально это была 32-разрядная операционная система, с тех пор она превратилась в 64-разрядную ОС. В отличие от Cisco IOS, NX-OS не использует одно пространство памяти и поддерживает симметричную многопроцессорность. Она также имеет превентивную многозадачность, что позволяет высокоприоритетному процессу получить время процессора перед процессом с более низким приоритетом. NX-OS построена на ядре Linux, и поддерживает язык Python для создания сценариев на коммутаторах Cisco Nexus. Кроме того, она имеет несколько функций высокой доступности (high availability), и не загружает сразу все ее функции. Вместо этого можно указать, какие функции вы хотите активировать. Устранение ненужных функций освобождает память и процессор для тех функций, которые вам нужны. Однако когда дело доходит до конфигурации, существует много сходства между NX-OS и Cisco IOS. Cisco IOS-XR Первоначально разработанная для 64-разрядной работы, IOS-XR предлагает множество улучшений, обнаруженных в NX-OS (например, симметричная многопроцессорность, отдельные пространства памяти и активация только тех сервисов, которые необходимы). Однако, хотя NX-OS построена на ядре Linux, IOS-XR построен на микроядре QNX Neutrino Microkernel. Функция IOS-XR, которой нет в NX-OS, - это возможность иметь один экземпляр операционной системы, управляющей несколькими шасси. Кроме того, поскольку IOS-XR ориентирована на среды провайдеров, она предлагает поддержку таких интерфейсов, как DWDM и Packet over SONET. В то время как конфигурация IOS-XR имеет некоторое сходство с традиционной IOS, различия намного заметнее, чем различия в NX-OS. Например, когда вы закончили вводить команды конфигурации, вам необходимо зафиксировать свои изменения, чтобы они вступили в силу и до выхода из режима конфигурации. Примеры конфигурации Чтобы проиллюстрировать некоторые основные конфигурации этих трех операционных систем, рассмотрим следующие примеры. Эти команды были предоставлены маршрутизатору Cisco IOS, коммутатору NX-OS и экземплярам маршрутизатора IOS-XR, работающим в Cisco VIRL. В каждом из следующих примеров показана текущая версия маршрутизатора или коммутатора. Затем мы входим в глобальный режим конфигурации и изменяем имя хоста маршрутизатора или коммутатора, а затем создаем интерфейс Loopback 0, назначая IP-адрес этому интерфейсу, выходя из режима привилегий и выдавая команду show ip interface brief. При назначении IP-адресов интерфейсам Loopback на устройствах следует заметить, что Cisco IOS требует, чтобы маска подсети была введена в десятичной системе с точками, в то время как NX-OS и IOS-XR поддерживают ввод маски подсети с использованием слеша. Также нужно обратить внимание, что перед выходом из режима конфигурации необходимо выполнить команду commit на IOS-XR. Кроме того, только когда мы применяем эту команду, применяется наша обновленная конфигурация имени хоста. IOS: Router>show version Cisco IOS Software, C2900 Software (C2900-UNIVERSALK9-M), Version 15.1(4)M4, RELEASE SOFTWARE (fc2) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2012 by Cisco Systems, Inc. Compiled Thurs 5-Jan-12 15:41 by pt_team ROM: System Bootstrap, Version 15.1(4)M4, RELEASE SOFTWARE (fc1) cisco2911 uptime is 40 seconds System returned to ROM by power-on System image file is "flash0:c2900-universalk9-mz.SPA.151-1.M4.bin" Last reload type: Normal Reload This product contains cryptographic features and is subject to United States and local country laws governing import, export, transfer and use. Delivery of Cisco cryptographic products does not imply third-party authority to import, export, distribute or use encryption. Importers, exporters, distributors and users are responsible for compliance with U.S. and local country laws. By using this product you agree to comply with applicable laws and regulations. If you are unable to comply with U.S. and local laws, return this product immediately. A summary of U.S. laws governing Cisco cryptographic products may be found at: http://www.cisco.com/wwl/export/crypto/tool/stqrg.html If you require further assistance please contact us by sending email to export@cisco.com. Cisco CISCO2911/K9 (revision 1.0) with 491520K/32768K bytes of memory. Processor board ID FTX152400KS 3 Gigabit Ethernet interfaces DRAM configuration is 64 bits wide with parity disabled. 255K bytes of non-volatile configuration memory. 249856K bytes of ATA System CompactFlash 0 (Read/Write) License Info: License UDI: ------------------------------------------------- Device# PID SN ------------------------------------------------- *0 CISCO2911/K9 FTX15246R1P Technology Package License Information for Module:'c2900' ---------------------------------------------------------------- Technology Technology-package Technology-package Current Type Next reboot ----------------------------------------------------------------- ipbase ipbasek9 Permanent ipbasek9 security None None None uc None None None data None None None Configuration register is 0x2102 Router>en Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hostname IOS-ROUTER IOS-ROUTER(config)#interface loopback0 IOS-ROUTER(config-if)# %LINK-5-CHANGED: Interface Loopback0, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up IOS-ROUTER(config-if)#ip address 10.1.1.1 255.255.255.255 IOS-ROUTER(config-if)#end IOS-ROUTER# %SYS-5-CONFIG_I: Configured from console by console IOS-ROUTER#show ip int brief Interface IP-Address OK? Method Status Protocol GigabitEthernet0/0 unassigned YES unset administratively down down GigabitEthernet0/1 unassigned YES unset administratively down down GigabitEthernet0/2 unassigned YES unset administratively down down Loopback0 10.1.1.1 YES manual up up Vlan1 unassigned YES unset administratively down down IOS-ROUTER# NX-OS: switch#show version Cisco Nexus Operating System (NX-OS) Software TAC support: http://www.cisco.com/tac Copyright (c) 2002-2010, Cisco Systems, Inc. All rights reserved. The copyrights to certain works contained herein are owned by other third parties and are used and distributed under license. Some parts of this software are covered under the GNU Public License. A copy of the license is available at http://www.gnu.org/licenses/gpl.html. Software BIOS: version 1.3.0 loader: version N/A kickstart: version 5.0(2)N2(1) [build 5.0(2)N2(1)] system: version 5.0(2)N2(1) [build 5.0(2)N2(1)] power-seq: version v1.2 BIOS compile time: 09/08/09 kickstart image file is: bootflash:/sanity-kickstart kickstart compile time: 12/6/2010 7:00:00 [12/06/2010 07:35:14] system image file is: bootflash:/sanity-system system compile time: 12/6/2010 7:00:00 [12/06/2010 08:56:45] Hardware cisco Nexus5010 Chassis ("20x10GE/Supervisor") Intel(R) Celeron(R) M CPU with 2073416 kB of memory. Processor Board ID JAF1228BTAS Device name: BEND-2 bootflash: 1003520 kB Kernel uptime is 0 day(s), 3 hour(s), 30 minute(s), 45 second(s) Last reset Reason: Unknown System version: Service: plugin Core Plugin, Ethernet Plugin, Fc Plugin switch# conf t Enter configuration commands, one per line. End with CNTL/Z. switch(config)# hostname NEXUS-SWITCH NEXUS-SWITCH(config)#interface loopback0 NEXUS-SWITCH(config-if)# ip address 10.2.2.2/32 NEXUS-SWITCH(config-if)#end NEXUS-SWITCH# show ip int brief IP Interface Status for VRF “default” (1) Interface IP Address Interface Status Lo0 10.2.2.2 protocol-up/link-ip/admin-up NEXUS-SWITCH# IOS-XR: RP/0/RP/CPU0:router# show version Mon May 31 02:14:12.722 DST Cisco IOS XR Software, Version 4.1.0[Default] Copyright (c) 2010 by Cisco Systems, Inc. ROM: System Bootstrap, Version 2.100(20100129:213223) [CRS-1 ROMMON], router uptime is 1 week, 6 days, 4 hours, 22 minutes System image file is "bootflash:disk0/hfr-os-mbi-4.1.0/mbihfr-rp.vm" cisco CRS-8/S (7457) processor with 4194304K bytes of memory. 7457 processor at 1197Mhz, Revision 1.2 2 Management Ethernet 8 GigabitEthernet 12 SONET/SDH 12 Packet over SONET/SDH 1 WANPHY controller(s) 1 TenGigE 1019k bytes of non-volatile configuration memory. 38079M bytes of hard disk. 3607592k bytes of disk0: (Sector size 512 bytes). 3607592k bytes of disk1: (Sector size 512 bytes). RP/0/RP/CPU0:router#conf t RP/0/RP/CPU0: router(config)#hostname IOS-XR-ROUTER RP/0/RP/CPU0: router(config)#interface loopback0 RP/0/RP/CPU0: router(config-if)#ip address 10.3.3.3/32 RP/0/RP/CPU0: router(config-if)#commit RP/0/RP/CPU0: IOS-XR-ROUTER (config-if)#end RP/0/RP/CPU0: IOS-XR-ROUTER (config)#show ip int brirf Interface IP-Address Status Protocol Vrf-Name Loopback0 10.3.3.3 Up Up default MgmtEth0/0/CPU0/0 unassigned Shutdown Down default GigabitEthernet0/0/0/0 unassigned Shutdown Down default RP/0/RP/CPU0: IOS-XR-ROUTER#
img
Насколько часто вы попадаете в замкнутый цикл из ошибок при разработке приложения в PHP? Ошибка исчезает, а потом появляется в другом блоке кода, или баги постоянно сменяют друг друга. Самое неприятное обстоятельство - вернуться к багу, который был исправлен несколько часов назад. Когда отлаживание алгоритма начинает приносить раздражение - о конструктивном подходе к задаче можно забыть. Именно для того, чтобы не дать вам забросить перспективную разработку или просто выполнить поставленную задачу, существует возможность использовать PHPUnit тестирование. Что такое PHPUnit тестирование? С Unit или же "модулем" плотно связано понимание процесса тестирования. Модуль - это работающая часть кода, функционал которой можно протестировать автономно. Соответственно, PHPUnit тестирование представляет собой последовательную проверку всех модулей приложения на корректность выполнения их алгоритмов. Тесты можно прописать один раз и впоследствии использовать после внесения любых изменений. Преимущества модульного тестирования Вот несколько неоспоримых преимуществ Unit-тестирования: Оперативная проверка правок. Довольно удобно проверять работоспособность модуля немедленно после его изменения. Операция займет несколько секунд. Облегченная передача кода другому разработчику. Если вы прекратили разработку продукта и ее продолжит другой специалист, то процесс передачи пройдет намного легче. Безопасное редактирование. Если вы боитесь, что изменения модулей могут повлечь за собой глобальную проблему для системы в целом, то без предложенного Unit-тестирования обойтись будет очень сложно. Использование PHPUnit тестирования Использовать модульное тестирование достаточно просто. Ниже будет описано, как установить и запустить первый тест. Установка Элементарный способ установить библиотеку PHPUnit - выгрузить его по каналу PEAR. Для этого нужно вписать: "1 pear config-set auto_discover 1" "2 pear install pear.phpunit.de/PHPUnit" Для пользователей, которые хотят иметь углубленное понимание по этому процессу подойдет ручной вариант установки через официальный сайт PHPUnit. Запуск Любой тест запускается при помощи вызова команды phpunit. Укажите php-файл как в примере ниже: "1 phpunit /path/to/tests/RemoteConnectTest.php" После этого, запущенный тест вернет результат: "1 PHPUnit 2.5 by Aloizii MagaRich" "2 ." "3 Time: 1 second" "4 Tests: 1, Assertions: 1, Failures 0" Итог представляет из себя краткие статистические данные по работе теста, такие как время операции, количество тестов, утверждений и ошибок. Также во второй строке можно заметить знак ".", сигнализирующий о том, что тест завершился успешно. Это общий итог операции. Ниже представлены другие варианты вывода, если тест: "F" - не выполнен. "I" - невозможно закончить. "S" - пропущен. Стандартные тесты Также приведем список стандартных вариантов тестирования, которые можно использовать в 80% ситуаций. Название каждого теста начинается с упомянутого ранее утверждения или Assert: "True/AssertFalse". Используется для выявления корректности значений на соответствие true/false. "Equals". Проверяет равенство. "GreaterThan". Сопоставляет переменные (присутствует большее количество вариаций этого сравнения). "Contains". Тестирует правильность содержания переменной. "Type". Исследует тип переменной. "Null". Проверяет равенство null. "FileExists". Подтверждает существование файла. "RegExp". Тестирует регулярность выражения. Модульное тестирование: почему нет? Почему все разработчики не используют PHPUnit тестирование? Закономерный вопрос, когда дело касается такого эффективного инструмента. Вот несколько распространенных причин: Тестирование затратно по времени. Написание строк с тестом занимает время, которое можно было уделить построению общей структуры приложения. Однако в конечном счете продукт будет дополняться. Несколько часов добавления теста на раннем этапе сэкономит больше времени на стадии доработки или сопровождения. Использовать модульные тесты - скучно. Конечно, прогонять проверку каждого модуля в большой разработке - это рутина, особенно по сравнению с ее созданием. Но поддержка 100% работоспособности - это элемент такта, который может позволить себе только настоящий профессионал. Уверенность в то, что код будет работать без проверок. Возможно, что автор досконально знает свой код и может оперативно исправить любой баг. Однако если с приложением будет работать другой человек, то не факт, что он сможет вникнуть во все нюансы так же быстро. Как можно заметить, все причины, перечисленные выше, скорее, продиктованы ленью и непониманием предмета, нежели практичностью и здравым смыслом.
img
Одним из преимуществ и популярности EIGRP является его быстрая конвергенция в случае сбоя связи. Однако одно, что может замедлить эту конвергенцию, - это конфигурация таймера. Именно этому посвящена эта статья, которая является третьей в серии статей о понимании EIGRP. Предыдущие статьи из цикла про EIGRP: Часть 1. Понимание EIGRP: обзор, базовая конфигурация и проверка Часть 2. Про соседство и метрики EIGRP Часть 2.2. Установка K-значений в EIGRP Следующие статьи из цикла: Часть 4. Пассивные интерфейсы в EIGRP Часть 5. Настройка статического соседства в EIGRP Часть 6. EIGRP: идентификатор роутера и требования к соседству Начнем наше обсуждение таймеров EIGRP с рассмотрения ситуации, когда два соседа EIGRP непосредственно связаны друг с другом. Если физическая связь между ними не работает, подключенный интерфейс каждого роутера отключается, и EIGRP может перейти на резервный путь (то есть возможный маршрут преемника). Такая ситуация показана на следующем рисунке: Роутеры OFF1 и OFF2, показанные на приведенном выше рисунке, соединены друг с другом. Поэтому, если кабель между ними обрывается, каждый из интерфейсов роутера, соединяющихся с этим звеном, отключаются, и EIGRP понимает, что он просто потерял соседа и начинает перестраиваться. Однако нарушение связи между несколькими соседями EIGRP не всегда так очевидно. Например, рассмотрим вариант предыдущей топологии, как показано ниже: Обратите внимание, что между роутерами OFF1 и OFF2 был подключен коммутатор (SW4) на рисунке выше. Если происходит сбой соединения между коммутатором SW4 и роутером OFF1, роутер OFF2 не сразу осознает это, потому что его порт Gig0/1 все еще находится в состоянии up/up. В результате роутер OFF2 может продолжать считать, что роутер OFF1 - это наилучший путь для доступа к сети, такой как 192.0.2.0 /24. К счастью, EIGRP использует таймеры, чтобы помочь EIGRP-спикер роутерам определить, когда они потеряли связь с соседом по определенному интерфейсу. Таймеры, используемые EIGRP, - это таймеры Hello и Hold. Давайте задержимся на мгновение, чтобы изучить их работу, потому что таймер Hold не ведет себя интуитивно. Во-первых, рассмотрим таймер Hello. Как вы можете догадаться, это определяет, как часто интерфейс роутера отправляет приветственные сообщения своему соседу. Однако таймер Hold интерфейса - это не то, как долго этот интерфейс ожидает получения приветственного сообщения от своего соседа, прежде чем считать этого соседа недоступным. Таймер Hold - это значение, которое мы посылаем соседнему роутеру, сообщая этому соседнему роутеру, как долго нас ждать, прежде чем считать нас недоступными. Эта концепция проиллюстрирована на рисунке ниже, где роутер OFF2 настроен с таймером Hello 5 секунд и таймером Hold 15 секунд. Два больших вывода из этого рисунка таковы: Таймер Hello роутера OFF2 влияет на то, как часто он посылает приветствия, в то время как таймер Hold роутера OFF2 влияет на то, как долго роутер OFF1 будет ждать приветствий роутера OFF2. Указанное время Hello и Hold является специфичным для интерфейса Gig 0/1 роутера OFF2. Другие интерфейсы могут быть сконфигурированы с различными таймерами. Поскольку таймер Hold, который мы отправляем, на самом деле является инструкцией, сообщающей соседнему роутеру, как долго нас ждать, а не как долго мы ждем Hello-сообщения соседа, причем у каждого соседа может быть свой набор таймеров. Однако наличие совпадающих таймеров между соседями считается лучшей практикой для EIGRP (и является требованием для OSPF). Чтобы проиллюстрировать конфигурацию и проверку таймеров EIGPR, допустим, что роутер OFF1 имел таймер Hello 1 секунду и таймер Hold 3 секунды на своем интерфейсе Gig 0/1 (подключение к OFF2). Затем мы захотели, чтобы роутер OFF2 имел таймер Hello 5 секунд и таймер Hold 15 секунд на своем интерфейсе Gig 0/1 (подключение к роутеру OFF1). Такая конфигурация укрепляет понятие того, что соседи EIGRP не требуют совпадающих таймеров (хотя лучше всего иметь совпадающие таймеры). В следующем примере показана эта конфигурация таймера для роутеров OFF1 и OFF2. OFF1#conf term Enter configuration commands, one per line. End with CNTL/Z. OFF1(config)#int gig 0/1 OFF1(config-if) #ip hello-interval eigrp 1 1 OFF1(config-if) #ip hold-time eigrp 1 3 OFF1(config-if) #end OFF1# OFF2#conf term Enter configuration commands, one per line. End with CNTL/Z. OFF2(config)#int gig 0/1 OFF2 (config-if) #ip hello-interval eigrp 1 5 OFF2 (config-if) #ip hold-time eigrp 1 15 OFF2(config-if) #end OFF2# Команда ip hello-interval eigrp asn h_intls вводится на каждом роутере для установки таймеров Hello. Параметр asn определяет настроенную автономную систему EIGRP равным 1, и таймер Hello для роутера OFF1 настроен равным 1 секунде, в то время как таймер Hello для роутера OFF2 настроен равным 5 секундам. Аналогично, команда ip hold-time eigrp asn ho_t вводится на каждом роутере для установки таймеров Hold. Опять же, обе команды задают автономную систему 1. Таймер Hold роутера OFF1 настроен на 3 секунды, в то время как таймер Hold роутера OFF2 настроен на 15 секунд. В обоих случаях таймер Hold EIGRP был настроен таким образом, чтобы быть в три раза больше таймера Hello. Хотя такой подход является обычной практикой, он не является обязательным требованием. Кроме того, вы должны быть осторожны, чтобы не установить таймер Hold на роутере со значением меньше, чем таймер Hello. Такая неверная конфигурация может привести к тому, что соседство будет постоянно "падать" и восстанавливаться. Интересно, что Cisco IOS действительно принимает такую неправильную конфигурацию, не сообщая ошибки или предупреждения. EIGRP использует таймер Hello по умолчанию 5 секунд и таймер Hold по умолчанию 15 секунд на LAN интерфейсах. Однако в некоторых ситуациях на интерфейсах, настроенных для Frame Relay, таймеры по умолчанию будут больше. Далее, посмотрим, как мы можем проверить настройки таймера EIGRP. Команда show ip eigrp neighbors, как показано в примере ниже, показывает оставшееся время удержания для каждого соседа EIGRP. Обратите внимание в приведенном выше примере, что значение в столбце Hold равно 2 секундам для роутера OFF1 (то есть 10.1.1.1) и 13 секундам для роутера OFF3 (то есть 10.1.1.10). Эти цифры говорят нам о не настроенных таймерах Hold. Они говорят нам, сколько времени остается до того, как роутер OFF2 отключит этих соседей, в отсутствие приветственного сообщения от этих соседей. Роутер OFF2 перезапускает свой обратный отсчет времени Hold для роутера OFF3 до 15 секунд (таймер Hold роутера OFF3) каждый раз, когда он получает Hello сообщение от OFF3 (которое OFF3 отправляет каждые 5 секунд на основе своего таймера Hello). Поэтому, если вы повторно выполните команду show ip eigrp neighbors на роутере OFF2, вы, вероятно, увидите оставшееся время Hold для роутера OFF3 где - то в диапазоне 10-14 секунд. Однако, поскольку роутер OFF1 настроен с таймером Hold 3 секунды и таймером Hello 1 секунды, оставшееся время Hold, зафиксированно на роутере OFF2 для его соседства с роутером OFF1, обычно должно составлять 2 секунды. Мы можем видеть настроенные значения таймера Hello и Hold для интерфейса роутера, выполнив команду show ip eigrp interfaces detail interface_id, как показано в примере ниже. Вы можете видеть в выходных данных, что интерфейс Gig 0/1 на роутере OFF2 имеет таймер Hello 5 секунд и таймер Hold 15 секунд. Отлично, это закрепили. Теперь почитайте про пассивные интерфейсы в EIGRP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59