terça-feira, 4 de agosto de 2015

Instalação do Linux ONL em Switches Bare Metal

Olá Pessoal.

Os switches bare metal, também conhecidos como caixas brancas, são switches em que o hardware e o software são vendidos separadamente, ou seja, é possível comprar simplesmente a caixa "vazia" (hardware) sem nenhum sistema operacional pré-instalado. Dessa maneira, pode-se optar por uma versão comercial ou mesmo distribuições gratuitas de um Sistema Operacional de Rede ou NOS, do inglês Network Operating System.

O Open Network Linux (ONL) é a distribuição Linux open-source mais tradicional que foi especificamente desenvolvida para ser instalada em switches bare metal. A vantagem de utilizar uma distribuição desenvolvida para caixas brancas é que ela vem carregada com drivers e funcionalidades específicas do hardware, como por exemplo suporte aos slots SFP (1GbE), SFP+ (10GbE), etc... Uma vantangem das caixas brancas abertas em relação ao tradicional modelo fechado das caixas pretas é que é possível personalizar via software as funcionalidades que o switch irá assumir, de maneira que a caixa pode executar funções de switch layer-2, de roteador layer-3, de firewall, etc.


O objetivo deste artigo é mostrar aos leitores os passos necessários para instalar o ONL em caixas brancas que sejam homologadas para operar com essa distribuição de NOS. Para fazer os testes de instalação do ONL tive acesso a um switch bare metal da Edge-Core, especificamente o modelo AS5600-52X, que se trata de um switch TOR (Top of Rack) para ambientes de Data Center que possui 48 portas 10GbE e 4 portas 40GbE. Esse equipamento, além de ser uma caixa branca bastante poderosa, é hardware homologado pela ONL. A relação completa de switches homologados pode ser encontrada no link abaixo:


A maioria dos switches bare metal homologados possuem o ONIE (Open Network Install Environment), um boot loader que deve ser utilizado para instalar o NOS desejado pelo usuário. Na prática o ONIE é um pequeno sistema operacional pré-carregado como firmware no switch para facilitar o processo de instalação do NOS desejado pelo administrador.

Há várias maneiras de instalar o ONL, seja localmente através do console (out-band) ou mesmo remotamente através da rede (in-band). Caso o leitor esteja interessado em outros métodos para instalar o ONL através da rede, recomendo a leitura da seguinte documentação: 


Nos testes em que fiz optei pela instalação local através do console, por isso estarei documentando esse processo que é mais rápido e mais fácil. Antes de começar é importante acessar o site do ONL (http://opennetlinux.org/binaries) para baixar os respectivos arquivos que sejam compatíveis com o processador do switch e copiá-los em um pen-drive. Para instalar o ONL são necessários dois arquivos, um com extensão .installer e outro .swi. No caso desse exemplo, utilizei os seguintes arquivos compatíveis com o processador FreeScale P2020 do AS5600-52X:

  • onl-271da8d-powerpc-all.2015.06.05.01.22.installer
  • onl-271da8d-powerpc-all-2015.06.05.01.22.swi

O primeiro passo é conectar o cabo serial de console no switch. Ao ligar o switch, na sequência do boot, basta pressionar <ENTER> para ativar o modo interativo do ONIE. Caso o usuário interrompa o processo de boot antes do seu término (o que pode acontecer por engano), basta digitar boot no prompt para que o boot seja continuado. Na sequência, basta montar a partição do pen-drive localmente e executar o script de instalação do ONL (destaque em amarelo).

** Installer Mode Enabled **

ONIE:/ # fdisk -l
(...) Saída Omitida: Identificar Partição do Pen-Drive
ONIE:/ # mount /dev/sdXX /mnt
ONIE:/ # cd /mnt
ONIE:/ # sh onl-271da8d-powerpc-all.2015.06.05.01.22.installer
 Open Network Installer running under ONIE.
 Installer Version: Open Network Linux e148b7a (powerpc.all,...)
 Detected platform: powerpc-...
 Installing in standalone mode.
 Unpacking Open Network Linux installer files...
 onl.powerpc-as5600-52x.loader
 (...) Saída Omitida

Obs.: Nos testes em que realizei com colegas da FEEC/Unicamp, tivemos um problema de nomenclatura do hardware observado na figura abaixo. O nome identificador da plataforma suportada pelo instalador disponível no site do ONL é powerpc-as5600-52x, mas o nome da plataforma nos novos switches AS5600-52X da EdgeCore é powerpc-accton-as5600-52x-r0. Para contornar esse problema optamos por parar o script de descoberta automática das imagens, alterar manualmente o nome da plataforma no arquivo /etc/machine.conf e, somente então, executar o instalador (.installer). Os comandos abaixo foram utilizados para realizar essa solução de contorno:

ONIE:/ # /etc/init.d/discover.sh stop
ONIE:/ # vi /etc/machine.conf 
(...) realizar alteração manual

Tela de Erro do Nome Identificador da Plataforma

A partir deste ponto todas as configurações do switch e suas interfaces são realizadas através do ONL que é uma distribuição Linux baseada em Debian, sendo que a conta padrão para realizar o primeiro acesso ao sistema consiste no usuário "root" e senha "onl", lembrando que é recomendada a alteração da senha logo no primeiro acesso. Vale o conhecimento prévio do administrador na principal distribuição Linux, principalmente nas ferramentas dos pacotes iproute2 (ex.: ip) ou net-tools (ex.: ifconfig, route, arp, etc), inclusive no que diz respeito à inserção de novos pacotes através do apt-get. É possível instalar o Quagga (ou BIRD) e tratar a caixa como um roteador com alta densidade de portas, assim como é possível programar novas funcionalidades.

Enfim, são várias as possibilidades! :-)

Samuel.

sábado, 1 de agosto de 2015

Atualização do Firmware IOS em Switches Cisco Catalyst

Olá Pessoal.

Em algum momento pode ser importante atualizar o firmware de um roteador ou switch da Cisco para carregá-lo com uma imagem mais recente do IOS, seja para manter os equipamentos da infraestrutura sempre com o firmware mais recente recomendado pela Cisco ou mesmo para o fim específico de correção de algum bug que esteja limitando a operação de alguma feature importante da caixa. Este artigo irá ajudar o leitor no processo de atualização do firmware de um Switch Cisco Catalyst 3560, lembrando que os mesmos passos servem como referência para atualizar outros modelos de switches e roteadores.


Etapa 1) Baixar a Nova Versão do Firmware

Antes de iniciar o processo de atualização do firmware é conveniente verificar a versão atual do IOS existente na memória flash switch, tarefa simples de ser realizada através dos comandos "show version" e "dir flash:". Na saída abaixo é possível observar que temos um Switch Catalyst WS-C3560-24PS (modelo) com a versão 12.2(37)SE1 do IOS. 

Switch# show version
(...) Saída Omitida

Switch   Ports  Model              SW Version              SW Image
------   -----  -----              ----------              ----------
*    1   26     WS-C3560-24PS      12.2(37)SE1             C3560-IPSERVICESK

Switch# dir flash: 
Directory of flash:/

    3  -rw-     8662192          <no date>  c3560-ipservicesk9-mz.122-37.SE1.bin
    2  -rw-       28282          <no date>  sigdef-category.xml
    1  -rw-      227537          <no date>  sigdef-default.xml
    4  -rw-        1096          <no date>  vlan.dat

64016384 bytes total (55097277 bytes free)

A última versão disponível e sugerida pela Cisco para esse modelo específico de switch é a 12.2(55)SE10, lançada em fev/2015. Nesse caso específico, iremos então baixar o arquivo "c3560-ipservicesk9-mz.122-55.SE10.bin". Através do site da Cisco, especificamente na opção Suporte|Downloads, é possível baixar a última versão de firmaware sugerida para o modelo específico do(s) switch(es) em produção. Ao baixar o firmware (extensão .bin) é importante anotar o resultado do hash MD5 fornecido nas informações do download. Depois que copiarmos a última versão do IOS no switch, seja através da rede ou mesmo localmente, realizaremos um procedimento de veriricação do hash MD5 para garantir que o arquivo não está corrompido e, somente então, seguiremos com a atualização do firmware. 

Obs.: Fique atento que cada modelo específico de switch terá diferentes versões do IOS e é importante ser cauteloso ao baixar as versões corretas antes de seguir com o procedimento de atualização do firmware.

Etapa Opcional) Remover a Antiga Imagem do IOS

Embora essa etapa não seja obrigatória, é comum a memória flash não ter muito espaço em equipamentos antigos. Nesse exemplo específico nossa memória flash tem espaço suficiente para armazenar a nova imagem que possui apenas 12.16MB, já que do total de 64MB estão livres 55MB. Mesmo assim, há situações em que é conveniente liberar algum espaço da flash antes de armazenar a última versão do firmware, procedimento que pode ser realizado com o comando "delete":

Switch# delete flash:/c3560-ipservicesk9-mz.122-37.SE1.bin
Switch# dir flash: 
Directory of flash:/

    2  -rw-       28282          <no date>  sigdef-category.xml
    1  -rw-      227537          <no date>  sigdef-default.xml
    4  -rw-        1096          <no date>  vlan.dat

64016384 bytes total (63759469 bytes free)

Obs.: CUIDADO ao realizar esse procedimento de remoção da imagem do firmware em uso, uma vez que o switch ficará inutilizado em caso de boot inesperado. Na próxima etapa iremos copiar a nova versão do firmaware na flash e atualizar a informação do caminho de boot para que o switch possa ser reinicializável novamente. Nesse exato momento estamos com uma "caixa fria" em nossas mãos! :-o É sempre mais seguro manter na flash ambas as versões em uso e a nova do IOS até que o procedimento de atualização do firmware esteja concluído, embora nem sempre seja possível...

Epata 2) Copiar o Firmware IOS no Switch e Atualizar o Caminho de Boot

Um método prático de copiar o novo firmware no switch é através de um servidor TFTP que pode ser instalado em alguma máquina administrativa que esteja operando como um repositório de firmwares na rede ou até mesmo temporariamente no próprio notebook do administrador. Caso o leitor não conheça o serviço TFTP, recomendo a leitura do artigo abaixo em que explico como utilizar TFTP para transferir arquivos de configuração para switches/routers, já que a transferência de binários segue a mesma lógica.


Switch# copy tftp: flash:
>Address or name of remote host? <Endereço IP do Servidor TFTP>
>source filename? c3560-ipservicesk9-mz.122-55.SE10.bin
>Destination filename? c3560-ipservicesk9-mz.122-55.SE10.bin

Para verificar se o firmware foi devidamente copiado:

Switch# dir flash: 
Directory of flash:/

    3  -rw-    12749374          <no date>  c3560-ipservicesk9-mz.122-55.SE10.bin
    2  -rw-       28282          <no date>  sigdef-category.xml
    1  -rw-      227537          <no date>  sigdef-default.xml
    4  -rw-        1096          <no date>  vlan.dat

64016384 bytes total (51010095 bytes free)

Agora chegou a hora de verificar se o firmware não foi corrompido durante o download da página da Cisco ou mesmo durante o processo de transferência para o switch. Realizaremos um procedimento de veriricação do hash MD5 para garantir que o arquivo não está corrompido, sendo que a sequência numérica resultante deve ser igual àquela informada na página da Cisco:

Switch# verify /md5 flash:/c3560-ipservicesk9-mz.122-55.SE10.bin
(...)
verify /md5 (flash:c3560-ipservicesk9-mz.122-55.SE10.bin) = dcdc5647204459ac65cef367c2cd84fb

A etapa mais IMPORTANTE é informar o caminho da nova imagem do firmware:

Switch(config)# boot system switch all flash:/c3560-ipservicesk9-mz.122-55.SE10.bin

Por fim, basta salvar as configurações e reinicializar nosso switch que agora é "bootável"! 
Assim temos uma "caixa quente" novamente! :-)

Switch# write mem
Switch# reload

Depois de reinicializado o switch podemos verificar o novo firmware em execução:

Switch# show version

(...) Saída Omitida

Switch   Ports  Model              SW Version              SW Image
------   -----  -----              ----------              ----------
*    1   26     WS-C3560-24PS      12.2(55)SE10            C3560-IPSERVICESK

É isso, tenham cuidado com os testes! ;-)

Samuel.