# Cisco IOS

Cisco IOS (originalmente Internetwork Operating System) é o software usado na maioria dos roteadores Cisco Systems e atuais switches de rede da Cisco (versões anteriores usavam o CatOS). IOS é um pacote de roteamento, switching, internetworking e funções de telecomunicações totalmente integrado com um sistema operacional de computador multi-tarefa.
A interface de linha de comando do IOS fornece um conjunto fixo de palavras de comando - o conjunto disponível é determinado pelo "modo" e o nível de privilégio do usuário atual. "Modo de configuração global" fornece comandos para mudar a configuração do sistema, e "modo de configuração de interface" fornece comandos para mudar a configuração de uma interface específica. Todos os comandos são atribuídos a um nível de privilégio, variando de 0-15, e só podem ser acessados ​​por usuários com o privilégio necessário. Através do linha de comando, os comandos disponíveis para cada nível de privilégio pode ser definido.

## Versões

Cisco IOS é versionado usando três números e algumas letras, na forma geral a.b(c.d)e, onde:
* a é o número principal da versão.
* b é o número secundário da versão.
* c é o número da release, que começa em um e incrementa conforme novas releases da mesma versão a.b são liberadas.
* d (omitido na maioria das releases) é o número de compilação provisório.
* e (zero, uma ou duas letras) é o identificador de release, tal como nenhum (que designa a linha principal, veja abaixo), T (para Tecnologia), E (para empresa), S (para provedor de serviço), XA para uma funcionalidade especial, XB para uma funcionalidade especial diferente, etc.
Rebuilds - Muitas vezes uma reconstrução é compilada para corrigir um problema único e específico ou vulnerabilidade para uma dada versão do IOS. Por exemplo, 12.1(8)E14 é uma Rebuild, com o 14 denotando a 14ª reconstrução da versão 12.1(8)E. Rebuilds são produzidos para rapidamente reparar um defeito, ou para satisfazer os clientes que não querem atualizar para uma revisão principal posterior, porque eles podem estar executando infra-estrutura crítica sobre seus dispositivos, e, portanto, preferem minimizar mudanças e riscos.
Releases provisórias - São normalmente produzidas semanalmente, e formam um roll-up de recentes esforços de desenvolvimento. A página da Cisco na internet pode listar mais de um release provisório para corrigir um problema associado (a razão para isso é desconhecido para o público em geral).
Releases de manutenção - Releases testados que são disponibilizados e incluem melhorias e correções de bugs. A Cisco recomenda a atualização para versões de manutenção sempre que possível, sobre Rebuilds e Releases provisórias.

## Tipos

Releases do Cisco IOS são divididos em vários "tipos", cada uma contendo uma série de características diferentes. Tipos mapeiam em mercados distintos ou grupos de clientes que a Cisco tem como alvo.
* O tipo mainline é projetado para ser a versão mais estável que a empresa pode oferecer, e seu conjunto de recursos não se expande durante a sua vida. Atualizações são liberadas apenas para resolver bugs no produto. O tipo T anterior se torna a fonte para o tipo mainline - por exemplo, o tipo 12.1T se torna a base para a mainline 12.2. Portanto, para determinar os recursos disponíveis em uma release mainline particular, olhe para a release do tipo T anterior.
* O tipo T (Technology) recebe novos recursos e correções de bugs ao longo de sua vida, e é, portanto, potencialmente menos estável do que a mainline (Nas versões anteriores ao Cisco IOS Release 12.0, o tipo P serviu como o tipo Technology). A Cisco não recomenda o uso do tipo T em ambientes de produção a menos que haja urgência de implementar um novo recurso do IOS do tipo T.
* O tipo S (Service Provider) funciona apenas nos roteadores principais da empresa e é fortemente personalizado para clientes que são Provedores de Serviços.
* O tipo E (Enterprise) é personalizado para implementação em ambientes corporativos.
* O tipo B (Broadband Internet access) suporta recursos de banda larga baseada na internet.
* O tipo de funcionalidade especial X* (XA, XB, ...) precisa ser documentado.
São disponibilizados outros tipos de tempos em tempos, para atender necessidades específicas - como por exemplo, o tipo 12.0AA, que continha novo código, necessário para o produto Cisco AS5800.

## Pacotes / Conjuntos de Recursos

A maioria dos produtos Cisco IOS que funcionam também têm um ou mais "conjuntos de recursos" ou "pacotes", tipicamente oito pacotes de roteadores Cisco e cinco pacotes para switch de rede . Por exemplo, os lançamentos IOS Cisco destinados ao uso em switch Catalyst estão disponíveis como versões "padrão" (fornecendo apenas roteamento IP básico), versões "reforçadas" , que proporcionam suporte total de roteamento IPv4 , e versões "serviços avançados de IP" , que fornecem recursos avançados, bem como suporte a IPv6.
Cada embalagem individual corresponde a uma categoria de serviço, tais como
* Dados IP
* Voz e dados convergentes
* Segurança e VPN
Para obter informações adicionais sobre a Cisco IOS Packaging ver White Paper: Cisco IOS Reference Guide
O conjunto exato de recursos necessários para uma determinada função pode ser determinado usando Cisco Feature Set Browser.
Começando com a série 1900, 2900 e 3900 de roteadores ISR, a Cisco reviu o modelo de licenciamento do IOS. Roteadores vêm com Base IP instalado, e as licenças adicionais de pacote de recursos podem ser instaladas como adições bolt-on para expandir o conjunto de recursos do dispositivo. Os packs de recursos disponíveis são:
* Dados acrescenta recursos como BFD, SLAs IP, IPX, L2TPv3, Mobile IP, MPLS.
* Segurança adiciona funcionalidades como VPN, Firewall, IP SLAs, NAC.
* Comms Unificada adiciona recursos como CallManager Express, Gatekeeper, H.323, IP SLAs, MGCP, SIP, VoIP.

## Arquitetura

Em todas as versões do Cisco IOS, roteamento de pacotes e encaminhamento de pacotes (comutação de pacotes) são funções distintas. Roteamento e outros protocolos são executados como processos do Cisco IOS e contribuem para o Routing Information Base (RIB). Isto é processado para gerar a tabela final de encaminhamento de IP (FIB, Forwarding Information Base), que é usado pela função de encaminhamento do roteador. Em plataformas de roteadores com encaminhamento baseado somente em software (e.g., Cisco 7200) a maior parte do tratamento de tráfego, incluindo a lista de controle de acesso de filtragem e encaminhamento, é feita em nível de interrupção usando o Cisco Express Forwarding (CEF) ou dCEF (Distributed CEF). Isto significa que o IOS não precisa fazer um processo de mudança de contexto para encaminhar um pacote. Funções de roteamento, tais como Open Shortest Path First (OSPF) ou Border Gateway Protocol (BGP) são executados no nível de processo. Em roteadores com hardware baseado em encaminhamento, como a série Cisco 12000, IOS calcula o FIB em software e o carrega no hardware de encaminhamento (como um Application-specific integrated circuit (ASIC) ou processador de rede), que executa a função de encaminhamento de pacotes.
Cisco IOS possui uma arquitetura "monolítica", o que significa que ele é executado como uma única imagem e todos os processos compartilham o mesmo espaço de memória. Não há proteção de memória entre processos, o que significa que bugs no código do IOS podem, possivelmente, corromper dados usados ​​por outros processos. Ele também conta com um escalonadore de processos do tipo execute até o final, o que significa que o kernel não antecipa um processo em execução - o processo deve fazer uma chamada de kernel antes que outros processos tenham a chance de executar. Para os produtos Cisco que exigiam uma disponibilidade muito alta, tal como o Cisco CRS-1, estas limitações não eram aceitáveis. Além disso, competitivos sistemas operacionais de roteadores que surgiram 10-20 anos após a IOS, como o Juniper JUNOS, foram projetados para não ter essas limitações. A resposta da Cisco foi desenvolver uma nova versão do Cisco IOS chamado IOS XR que oferecia modularidade e proteção de memória entre processos, threads leves, escalonamento preemptivo e a capacidade de reiniciar processos falhos independentemente. IOS XR utiliza um sistema operacional de tempo real, baseado em microkernel, de terceiros (QNX), e uma grande parte do código atual do IOS foi reescrito para tirar vantagem dos recursos oferecidos pela novo kernel. Mas a arquitetura microkernel remove do kernel todos os processos que não necessitam obrigatoriamente serem executados dentro do kernel, e os executa como processos similares a processos de aplicação. Através deste método, o IOS XR é capaz de atingir a alta disponibilidade desejada para a nova plataforma de roteador. Assim, IOS e IOS XR são bases de código muito diferentes, embora relacionados em funcionalidade e design. Em 2005, a Cisco introduziu o IOS XR sobre a plataforma da série Cisco 12000, estendendo a arquitetura microkernel do CRS-1 ao amplamente implementado roteador de núcleo da Cisco.
Em 2006, a Cisco disponibilizou o Software de Modularidade do IOS que estende o microkernel do QNX a um ambiente mais tradicional do IOS, mas ainda fornecendo os recursos de atualização do software que os clientes estão exigindo. Ele está atualmente disponível no switch Catalyst 6500 da empresa.

## Teclas de Atalho

* Ctrl-C - Cancelar o comando digitado.
* TAB - Completa o comando inserido.
* Ctrl-A - Move o cursor para o início da linha..
* Ctrl-E - Move o cursor para o fim da linha.
* Ctrl-U - Apaga a linha.
* Ctrl-P - Repete o comando anterior.
* Ctrl-Z - Termina o modo de configuração e retorna para o modo EXEC.
* Seta para cima - Permitir o usuário rolar para frente os comandos inseridos anteriormente.
* Seta para Baixo - Permitir o usuário rolar para trás os comandos inseridos anteriormente.
* Shift-? - Lista todos os comandos disponíveis para um modo de comando particular.
* Ctrl-Shift-6 - Sair da conexão atual e retornar ao prompt EXEC.

## Segurança e vulnerabilidade

Cisco IOS tem se mostrado vulnerável em relação ao transbordamento de dados (em inglês: buffer overflow) e outros problemas que têm afligido aplicações e sistemas operacionais.
O IOS precisa saber as senhas em texto descriptografado para certos usos (por exemplo, a autenticação CHAP). Senhas inseridas no CLI por padrão são fracamente convertidas como "type 7", tais como "Router (config) # username jdoe senha 7 0832585B1910010713181F ". Isto é projetado para evitar o "shoulder-surfing", ao ver configurações do roteador que não é seguro - as informações são facilmente decifradas usando um software chamado "GETPASS", disponível desde 1995, embora as senhas podem ser decodificadas pelo roteador usando a "chave de cadeia de comando", entrando uma senha "type 7" como chave e emitir um comando "show key" decifra o exemplo acima para "stupidpass", no entanto, o programa não irá descriptografar senhas "type 5" ou conjunto de senhas com o comando secreto habilitado, que usa salted MD5 hashes.
Nota: A Cisco recomenda que todos os dispositivos Cisco IOS implementem a autenticação, autorização e contabilidade modelo de segurança (AAA). AAA pode usar RADIUS, local e TACACS+ bancos de dados. No entanto, uma conta local é geralmente necessária para situações de emergência.