terça-feira, 25 de maio de 2010

Rodando VRRP no CentOS

Este post fala de como rodar o VRRP (RFC 2338) em Linux. Aqui é especialmente no CentOS, mas isso pode ser feito em qualquer outra distribuição Linux. É somente um ".tar.gz" e um make e já era. Para saber o propósito disso, imagine uma situação onde você quer redundância, tanto na parte de redes quanto em aplicações onde é necessário alta disponibilidade (Nas distros RHEL/CentOS, o VRRP é presente no Cluster Suite e para o LVS, para manter disponibilidade em ambientes de aplicativos em cluster...Corrija-me se precisar...). Com isso, podemos fazer com que um servidor web "tome conta" dos pedidos dos clientes enquanto um outro servidor está down ou para manter redundância de first-hop (Default Gateway) em uma rede. Segue uma topologia abaixo:



  • O que acontece?

    Nesta topologia, um dos servidores ou gateways têm uma prioridade definida. O que tiver maior valor, será o master. Sendo o master, logo ele irá responder pelo endereço virtual (192.168.100.23), até que por algum motivo, ele fique "offline" e um backup assuma o posto. Isso é feito através de multicast com pacotes UDP no endereço 224.0.0.18. Depois que o master "cai", o backup percebe que não há mais mensagens do master e o backup acaba tornando-se o master.

  • Instalando

    A instalação é bem simples. Em uma instalação mínima, vamos precisar dos pacotes make, gcc e do libpcap0-devel. Só instalar com o comando make e depois copiar o arquivo vrrpd em /usr/sbin (rodar como root) e o arquivo vrrpd.8 em /usr/share/man/man8/ do seu CentOS, para consultar no man pages ;). O mesmo pode ser feito na outra máquina, pois estamos falando de redundância aqui.

   [root@scooby ~]# tar  xvfz vrrpd-1.0.tar.gz 
   [root@scooby ~]# cd vrrpd-1.0
   [root@scooby ~]# make
   [root@scooby ~]# cp vrrpd /usr/sbin/
   [root@scooby ~]# cp vrrpd.8 /usr/share/man/man8/

  • Pondo para funcionar


    A configuração dele é bem simples. Para que ele funcione depois do boot, podemos pôr a linha de comando no arquivo /etc/rc.local onde -i especifica a interface , -p a prioridade (O valor maior será o master), -v para o grupo, pode ser usado quando tiver redes diferentes e o endereço IP a seguir é o endereço IP virtual que irá ser usado para os requests ou como default gateway de uma rede. Para mais informações podemos ver pelo man pages do vrrpd. Você pode ver os logs gerados pelo daemon vrrpd em /var/log/messages. Podemos ver quando um nó se tornou master e quando ele se tornou backup, devido alguma mudança de prioridade.


Note que o host que tiver maior prioridade (opção -p) , será eleito como master:

[root@shaggy ~]# vrrpd -i eth0 -p 46 -v 1 192.168.100.23
Remove a stale pid file /var/run/vrrpd_eth0_1.pid
[root@shaggy ~]#
[root@shaggy ~]# tail -f /var/log/messages
[...]
May 25 23:32:04 shaggy vrrpd: vrrpd version 0.4 starting...
May 25 23:32:05 shaggy vrrpd: VRRP ID 1 on eth0: we are now a backup router.
May 25 23:32:12 shaggy kernel: eth0: Using EEPROM-set media 100baseTx-FDX.
May 25 23:32:12 shaggy vrrpd: VRRP ID 1 on eth0: 192.168.100.21 is down, we are now the master router.
E o com menor prioridade... O backup:

[root@scooby ~]# vrrpd -i eth0 -p 45 -v 1 192.168.100.23
Remove a stale pid file /var/run/vrrpd_eth0_1.pid
[root@scooby ~]#
[root@scooby ~]# tail -f /var/log/messages
[...]
May 25 23:23:34 scooby vrrpd: vrrpd version 0.4 starting...
May 25 23:23:34 scooby vrrpd: VRRP ID 1 on eth0: we are now a backup router.
May 25 23:23:48 scooby kernel: eth0: Using EEPROM-set media 100baseTx-FDX.
May 25 23:23:49 scooby vrrpd: VRRP ID 1 on eth0: we are now the master router.
May 25 23:24:58 scooby kernel: eth0: Using EEPROM-set media 100baseTx-FDX.
May 25 23:24:58 scooby vrrpd: VRRP ID 1 on eth0: 192.168.100.22 is up, we are now a backup router.

Por hoje é só...

Abraços!

sexta-feira, 21 de maio de 2010

Topologia para brincar com Frame Relay! - Ponto-a-ponto

Segue uma topologia para brincar com Frame Relay!

Aqui usei dois PVCs ponto-a-ponto, emulando 3 roteadores 3745. O Roteador Campinas interliga Ubatuba e Trindade em circuitos diferentes (1:110 -> 2:101; 1:220 -> 3:202), sendo que cada um deles têm uma subrede diferente (192.168.XXX.0 /30, onde XXX reflete o número do DLCI de cada PVC na ponta do roteador Campinas).


Segue abaixo as configurações das interfaces:


  • Campinas:
Campinas#show run interface serial1/0
Building configuration...

Current configuration : 93 bytes
!
interface Serial1/0
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
end

Campinas#
Campinas#show run interface serial1/0.110
Building configuration...

Current configuration : 156 bytes
!
interface Serial1/0.110 point-to-point
 ip address 192.168.110.1 255.255.255.252
 frame-relay interface-dlci 110
end

Campinas#
Campinas#show run interface serial1/0.220
Building configuration...

Current configuration : 162 bytes
!
interface Serial1/0.220 point-to-point
 ip address 192.168.220.1 255.255.255.252
 frame-relay interface-dlci 220 CISCO
end

Campinas#
Campinas#show frame-relay pvc

PVC Statistics for interface Serial1/0 (Frame Relay DTE)

              Active     Inactive      Deleted       Static
  Local          2            0            0            0
  Switched       0            0            0            0
  Unused         0            0            0            0

DLCI = 110, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial1/0.110

  input pkts 18            output pkts 46           in bytes 1960
  out bytes 12104          dropped pkts 0           in pkts dropped 0
  out pkts dropped 0                out bytes dropped 0
  in FECN pkts 0           in BECN pkts 0           out FECN pkts 0
  out BECN pkts 0          in DE pkts 0             out DE pkts 0
  out bcast pkts 31        out bcast bytes 10544
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
  pvc create time 00:30:00, last time pvc status changed 00:29:00

DLCI = 220, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial1/0.220

  input pkts 11            output pkts 38           in bytes 1074
  out bytes 10588          dropped pkts 0           in pkts dropped 0
  out pkts dropped 0                out bytes dropped 0
  in FECN pkts 0           in BECN pkts 0           out FECN pkts 0
  out BECN pkts 0          in DE pkts 0             out DE pkts 0
  out bcast pkts 28        out bcast bytes 9548
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
  pvc create time 00:30:02, last time pvc status changed 00:29:01
Campinas#


  • Ubatuba:

Ubatuba#sh run interface serial 1/0
Building configuration...

Current configuration : 245 bytes
!
interface Serial1/0
 ip address 192.168.110.2 255.255.255.252
 encapsulation frame-relay
 no snmp trap link-status
 serial restart-delay 0
 frame-relay interface-dlci 101
end

Ubatuba#
Ubatuba#
Ubatuba#show frame-relay pvc

PVC Statistics for interface Serial1/0 (Frame Relay DTE)

              Active     Inactive      Deleted       Static
  Local          1            0            0            0
  Switched       0            0            0            0
  Unused         0            0            0            0

DLCI = 101, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial1/0

  input pkts 37            output pkts 17           in bytes 8448
  out bytes 1628           dropped pkts 0           in pkts dropped 0
  out pkts dropped 0                out bytes dropped 0
  in FECN pkts 0           in BECN pkts 0           out FECN pkts 0
  out BECN pkts 0          in DE pkts 0             out DE pkts 0
  out bcast pkts 2         out bcast bytes 68
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
  pvc create time 00:19:27, last time pvc status changed 00:18:23
Ubatuba#

  •  Trindade: 
Trindade#sh run interface serial 1/0
Building configuration...

Current configuration : 146 bytes
!
interface Serial1/0
 ip address 192.168.220.2 255.255.255.252
 encapsulation frame-relay
 no snmp trap link-status
 serial restart-delay 0
end

Trindade#
Trindade#show frame-relay pvc

PVC Statistics for interface Serial1/0 (Frame Relay DTE)

              Active     Inactive      Deleted       Static
  Local          1            0            0            0
  Switched       0            0            0            0
  Unused         0            0            0            0

DLCI = 202, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial1/0

  input pkts 22            output pkts 11           in bytes 4825
  out bytes 1074           dropped pkts 0           in pkts dropped 0
  out pkts dropped 0                out bytes dropped 0
  in FECN pkts 0           in BECN pkts 0           out FECN pkts 0
  out BECN pkts 0          in DE pkts 0             out DE pkts 0
  out bcast pkts 1         out bcast bytes 34
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
  pvc create time 00:10:37, last time pvc status changed 00:09:37
Trindade#

 Para quem estiver interessado em fazer algumas modificações ou correr riscos, o arquivo .net do GNS3 está aqui.

Abraços!

quarta-feira, 5 de maio de 2010

Como criar "plano de fundo" para os telefones IP 7940 da Cisco

Segue um pequeno "how-to" para criar algumas figuras que serão disponibilizadas para os telefones IP da Cisco. Note que aqui estou usando o modelo 7940, portanto, não será algo muito bonito de se ver e não será algo dinâmico via web/XML/etc, pois sou incompetente com linguagens de programação :)

Para isso, devemos baixar e instalar o SDK em http://developer.cisco.com/web/ipps e usar um aplicativo no DOS disponilizado no SDK, chamado gif2cip.exe, onde irá tranformar uma umagem GIF para um arquivo XML, com a extensão .cip, Note que a imagem GIF deverá ter a resolução de 133x65.

Para ser mais prático, salvaremos a figura em C:\CiscoIPServices\Tools, onde fica a ferramento onde iremos usar daqui a pouco. A figua original eu montei uma Kombi no site BussSelecta.com (http://www.busselecta.com/bus/) - Enjoy!

Essa será a kombi que irá aparecer no telefone...

Usando a ferramenta gif2cip, vamos converter a imagem kombi.gif para o arquivo kombi.cip:


    C:\CiscoIPServices\Tools Gif2Cip.exe kombi.gif kombi.cip


    Converting GIF kombi.gif to Cisco Image File kombi.cip
    Image is 116 by 65 pixels
    Image has a global color map with 256 colors. Mapping with nearest color match.
    Done!


    C:\CiscoIPServices\Tools

Quase pronto, podemos ver como ficou a imagem em uma outra ferramenta, no mesmo diretório, chamada ImageViewer.


Após isso, podemos pegar o arquivo .cip, renomear para .xml e disponilizar em um servidor web (Apache httpd, MS IIS, whatever...) e configurar no CallManager ou CallManager express uma URL (Aqui eu uso como idle URL em um CCME no dynamips...). Aqui segue o código XML (O blogger não está aceitando o código XML como deveria ser mostrado, daí esse link...)

 E agora, segue o trabalho final:


O telefone, sem a "tela de descanso..."


E agora, com a tela...

Por enquanto é só...Para saber mais sobre serviços XML para os telefones Cisco, aconselho dar uma olhada no site da Cisco, principalmente no primeiro link deste post... Tem bastante coisa lá... Abraços!