Les mecs en noir

Tags: , , , ,
No Comments »

Puisqu’on en parle, voici la liste de quelques MIBs nécessaires à l’utilisation d’OIDs “textuels” lors de l’interrogation via SNMP d’un Juniper J-Series, en particulier ceux relatifs à l’obtention d’informations sur le chassis et la pile BGP:

  • mib-SNMPv2-SMI.txt
  • mib-SNMPv2-TC.txt
  • mib-jnx-bgpmib2.txt
  • mib-jnx-chassis.txt
  • mib-jnx-exp.txt
  • mib-jnx-smi.txt
  • mib-rfc2571.txt
  • mib-rfc2575.txt
  • mib-rfc2851.txt

Ces derniers se téléchargent à partir de cette adresse.

Afin de les utiliser avec snmpwalk, il vous suffira de les déposer dans le repertoire ${HOME}/.snmp/mibs de votre machine UNIX; il est alors possible d’interroger votre équipement de cette façon:

imil@unixbox:~$ snmpwalk -v1 -m all -c public adresse.du.routeur jnxBgpM2PrefixInPrefixesAccepted
BGP4-V2-MIB-JUNIPER::jnxBgpM2PrefixInPrefixesAccepted.0.ipv4.1 = Gauge32: 359798
BGP4-V2-MIB-JUNIPER::jnxBgpM2PrefixInPrefixesAccepted.1.ipv4.1 = Gauge32: 296945

De la même façon, il faudra indiquer à votre NMS les differentes MIB à charger si vous souhaitez utiliser des noms lisibles au lieu de leur expression numerique. Par exemple, avec MRTG, à l’aide de la variable LoadMIBs.

Wesh bien ou bien ?

Tags: , ,
3 Comments »

Ça cause pas des masses ici hein… ouais ouais je sais, mais nan j’ai rien laché, je suis juste très accaparé par ma boite, beaucoup d’activité, beaucoup de clients, beaucoup de R&D. Difficile de trouver un instant libre ces temps cis.

Je profite de ce long week end pour noter ici un boût de conf pour lequel j’ai mis quelques heures à rassembler les pièces.
Comme vous vous en rappelez peut-être, ce sont des Juniper J2350 qui routent les paquets magiques de mon réseau pro, et comme l’activité s’accélère, je vais certainement passer au modèle supérieur, possiblement J6350 ou MX5, plus puissants, tant en terme de CPU que de quantité de mémoire.

Mais avant d’annoncer la facture, il me faut des données tangibles, et en particulier, justement, la mémoire et le CPU utilisés pour router 500Mbps par datacenter. Naturellement, ces routeurs supportent le protocole SNMP, l’activation de ce dernier est simplissime:

[edit]
foo@routeur# set snmp community public authorization  read-only 

On réduit l’accessibilité à ce protocole à une seule machine

[edit snmp]
foo@routeur# set community public clients 10.0.0.1/32

Enfin, on renseigne quelques valeurs de base

[edit snmp]
foo@routeur# set description "JUNOS J2350 - Equinix"
foo@routeur# set location "Equinix - Saint Denis"
foo@routeur# set contact "NBS-System - AS51335"

Moyennant quoi, gràce à la commande snmpwalk disponible dans la totalité de nos UNIX libres, nous pouvons visualiser l’ensemble de l’arbre des informations:

bar@unixbox$ snmpwalk -v1 -c public addresse.du.routeur

Ceci fait, il m’a fallu naviguer sur plusieurs sites officiels et non-officiels pour trouver les OID corresponsants au CPU et l’utilisation mémoire de ces équipements. Finalement, voici les 2 valeurs en question:

  • CPU load: 1.3.6.1.4.1.2636.3.1.13.1.8.9.1.0.0
  • Occuppation mémoire: 1.3.6.1.4.1.2636.3.1.13.1.11.9.1.0.0

Muni de ces valeurs, il est alors possible d’écrire un petit cfg MRTG. Pour le CPU:

WorkDir: /var/www/mrtg
Target[routeur.cpu]: 1.3.6.1.4.1.2636.3.1.13.1.8.9.1.0.0&1.3.6.1.4.1.2636.3.1.13.1.8.9.1.0.0:public@routeur
RouterUptime[routeur.cpu]: public@routeur
MaxBytes[routeur.cpu]: 100
Title[routeur.cpu]: routeur CPU Load
PageTop[routeur.cpu]: routeur CPU Load %
Unscaled[routeur.cpu]: ymwd
ShortLegend[routeur.cpu]: %
YLegend[routeur.cpu]: CPU Utilization
Legend1[routeur.cpu]: Active CPU in % (Load)
Legend2[routeur.cpu]:
Legend3[routeur.cpu]:
Legend4[routeur.cpu]:
LegendI[routeur.cpu]:  Active
LegendO[routeur.cpu]:
Options[routeur.cpu]: growright,gauge,integer,nopercent

Et pour la RAM:

WorkDir: /var/www/mrtg
Target[routeur.memory]: 1.3.6.1.4.1.2636.3.1.13.1.11.9.1.0.0&1.3.6.1.4.1.2636.3.1.13.1.11.9.1.0.0:public@routeur
RouterUptime[routeur.memory]: public@routeur
MaxBytes[routeur.memory]: 100
Title[routeur.memory]: routeur Memory usage
PageTop[routeur.memory]: routeur Memory usage %
Unscaled[routeur.memory]: ymwd
ShortLegend[routeur.memory]: %
YLegend[routeur.memory]: Memory usage
Legend1[routeur.memory]: Memory usage %
Legend2[routeur.memory]:
Legend3[routeur.memory]:
Legend4[routeur.memory]:
LegendI[routeur.memory]:  Active
LegendO[routeur.memory]:
Options[routeur.memory]: growright,gauge,integer,nopercent

Quelques minutes plus tard, voici un argumentaire imparable pour munir votre backbone de routeurs d’une capacité supérieure !




Comme dirait quelqun que je connais… “Y’A PAS ASSEZ’D'MÉMOAAAAAAAAAAAAAAAR !”

Y’a moyen d’s'amuser

Tags: , ,
3 Comments »

Rien dans les manches, rien dans les poches :

imil@olive> show version 
Hostname: olive
Model: olive
JUNOS Base OS boot [9.3R3.8]
JUNOS Base OS Software Suite [9.3R3.8]
JUNOS Kernel Software Suite [9.3R3.8]
JUNOS Crypto Software Suite [9.3R3.8]
JUNOS Packet Forwarding Engine Support (M/T Common) [9.3R3.8]
JUNOS Packet Forwarding Engine Support (M20/M40) [9.3R3.8]
JUNOS Online Documentation [9.3R3.8]
JUNOS Routing Software Suite [9.3R3.8]

- Hm, oui, et alors ?
- Attends, attends.

imil@olive> ping 192.168.1.1    
PING 192.168.17.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.559 ms
^C
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.559/0.559/0.559/0.000 ms

- Mouais, super, et ?
- atteeeeends

imil@olive> show interfaces fxp0 terse 
Interface               Admin Link Proto    Local                 Remote
fxp0                    up    up  
fxp0.0                  up    up   inet     192.168.1.11/24

- fxp0 ?? comment ça fxp0 ?!
- Bah parce que :

imil@olive> start shell 
% dmesg|grep QEMU
CPU: QEMU Virtual CPU version 0.12.5 (2397.67-MHz 686-class CPU)
ad0: 8192MB  at ata0-master WDMA2

- hAOOOOOOOOOOOoooooooooooooooooon
- et ouais.

La doc est ici, et contrairement à ce qu’on peut y lire, je fais tourner un JUNOS 9.3R3.8 (le fameux) sur une base de FreeBSD 6.4. Suivez scrupuleusement la documentation, en particulier les sections Modify jinstall file et Watchdog panic immediately after boot, cette dernière étant indispensable si vous souhaitez, comme moi, faire votre test sous des versions récentes de KVM.

J’vous laisse baver sur la liste des features fonctionnelles.

“À vous d’inventer la vie qui va avec”

Un peu de réseau… ou presque

Tags: , , ,
8 Comments »

Au boulot, ce sont des routeurs Juniper J2350 qui se chargent d’acheminer les lutins de l’internet vers nos équipements. Depuis quelques temps, les routeurs en question s’occuppent entre autres d’annoncer nos plages d’IPs grâce au protocole BGP.

Si l’établissement des sessions eBGP avec nos fournisseurs d’accès n’a posé aucun problème, l’établissement de la session iBGP entre nos differents routeurs montrait une charge CPU, mais surtout une consommation mémoire anormales, jusqu’à provoquer recemment le crash de l’un d’entre eux.

J’ai toujours été fasciné par l’inutilité des services support des constructeurs ou autres grosses structures, et Juniper ne déroge pas à la règle. De fait, je décide donc d’exposer mon problème non pas au support officiel, qui mettra déjà une bonne 15aine de jours à comprendre ce que je veux bien dire par “iBGP”, mais plutot aux forums communautaires du fabriquant. Bien evidemment, comme dans tous les forums de la terre, on obtient en premier lieu quelques réponses des “know-it-all” qui vous ressortent le contenu d’une plaquette marketing: “I would agree, a J2320 is not designed to take a full set of routes.”, mais avec un minimum de patience, on finit par tomber sur quelqun qui sait de quoi il parle.

Un utilisateur catégorisé “Recognized Expert” me dit la chose suivante : “I have used also J2320 routers with 2x full feed on them. Works good. But I downgraded to the last JUNOS 9.3 that runs only in packet mode. That saves a couple of RAM.”

Et c’est là le tournant de l’histoire. En effet, lorsque je reçus mes jouets, je m’aperçus qu’ils tournaient sur une version bien ancienne de JunOS (le système d’exploitation dérivé de FreeBSD qui fait fonctionner ces routeurs), et comme tout bon administrateur impatient, je me jette sur les mises à jours. Grossière erreur. Ce que m’explique le monsieur du forum, c’est que depuis les releases 9.3R4 de JunOS, le démon en charge du forwarding de paquets n’est plus fwdd mais flowd_hm, une nouvelle mouture qui ne fonctionne plus en simple “mode paquet”, mais établit des sessions (stateful) afin d’inspecter le traffic (l’explication ici).

Le downgrade m’effrayant un peu, je tente 1001 méthodes pour alléger ce démon, mais rien n’y fait, ses 481M de taille font toujours souffrir mes routeurs. La seule solution: downgrader.

Bien évidemment, cette opération s’est réalisée dans la douleur; en effet, ce fameux mode flow based a impliqué des entrées dans la configuration du routeur qui ne sont pas backward compatibles. En particulier, une section zones qui définit des zones de sécurité, et plus précisemment, qui a le droit de “sortir” ou pas, et dans les versions supérieures à 9.3R3, sans cette section, le routeur est aveugle et ne peut pas récupérer sa mise à jour. L’espace du disque flash équipant le J2350 étant limité, il n’était pas possible de télécharger la mise à jour pour l’appliquer localement, j’étais donc obligé d’effectuer l’upgrade à travers le réseau, mais cette opération était vouée à l’échec puisque la mise à jour échouait en raison de l’incompatibilité de la configuration en place avec les versions antérieures. Quadrature du cercle.

Mais voila: JunOS est un UNIX, et Juniper a eu la bonne idée de laisser l’accès à cet UNIX (FreeBSD, donc) par le biais de la commande start shell.

Ainsi, tout en gardant la configuration running activée, je m’en vais modifier le fichier /config/juniper.conf.gz pour en retirer la section security, incompatible avec le downgrade. Un gunzip -c, vi, gzip plus tard, je peux tranquillement invoquer la commande CLI:

foo> request system software add validate no-copy unlink ftp://serveur/junos-jseries-9.3R3.8-domestic.tgz

Et constater que la “mise à jour” s’effectue parfaitement.

Notez qu’afin de ne pas générer de la charge inutile, j’ai au préalable désactivé les annonces vers mes voisins BGP grâce à la commande :

foo# deactivate protocol bgp group ma-session neighbor ip.de.mon.voisin
foo# commit

Un foo> request system reboot plus tard, j’admire :

--- JUNOS 9.3R3.8 built 2009-05-12 22:33:43 UTC

Et constate que cette pourriture de démon flowd_hm a disparu, avantageusement remplacé par fwdd, et que le routeur répond désormais au quart de tour, même avec toutes ses sessions BGP chargées.

Morale de l’histoire: avant de te jeter sur la dernière version d’un soft, vérifie que t’en as bien besoin… (version longue de “if it works, don’t fix it”).

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE