• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Travail sur modèle SNMP Alcatel Omniswitch 6850 et remontée des mac
#1
Bonjour,

tout d'abord félicitation pour ce projet qui va nous permettre nous l'espérons de mettre en place un inventaire réseau complet dans notre entreprise.

Pour situer le contexte, nous sommes en architecture full alcatel (data / voip) et nous utilisons depuis quelques années le couple OCS/GLPI

Nous souhaitons inventorier les switchs OS6850.
Nous avons créé les modèles SNMP : la création/découverte/interrogation SNMP se fait bien : toutes les infos remontent dans GLPI (critère d'existence = MAC)

Nous avons ensuite travaillé sur la partie découverte des mac-address / ports des switchs et c'est là que nous bloquons.

- Le dico.pm a été modifié pour ajouter le modèle OS6850.
- le SNMPQuery.pm a été modifié pour la partie découverte des ports trunk (présent dans la mib en tant que .1.3.6.1.2.1.17.7.1.4.5.1.1.n°port avec comme valeur 0 ou 1)
- le SNMPQuery.pm a été modifié pour la partie mac-address : ajout d'un bloc pour les switchs alcatel qui appelle les fonctions du fichier créé Alcatel.pm (contenant GetMAC et TrunkPorts)
- le fichier Alcatel.pm est composé de la fonction TrunkPorts de Cisco.pm et de la fonction GetMAC de Threecom.pm (c'est inutile car j'aurai pu appeler les fonctions existantes, mais je souhaitais pouvoir les adapter et tracer un peu plus d'infos dans les logs)

Tout n'est pas vérifié (cela ne créé aucune liaison sur les switchs) et donc nous bloquons sur les points suivants :
- est-ce que la modif des fichiers .pm est prise en live sur l'agent ? (je partirai de ce principe, mes souvenirs de développeurs me disant que perl est un langage interprété) ou faut-il lancer l'agent en ligne de commande avec certains paramètres (/debug /devlib ?? si je comprends bien la doc) ou compiler qqc ?
- si oui comment peut-on ajouter des traces dans le log de l'agent pour contrôler qu'il passe bien dans les scripts créés ?
- y-a-t-il moyen d'écrire dans le logs ou ailleurs les valeurs du xml généré ?

Désolé pour toutes ces questions mais je ne suis pas expert en perl et je souhaite juste voir si j'arrive à faire avancer la partie Alcatel du projet.

Si cela aboutit (ou pas d'ailleurs) je peux vous fournir les éléments en cours à savoir : mibs/modèle SNMP, walks (cette partie là je maîtrise) et les fichiers modifiés / créés.

Merci d'avance si vous pouvez nous donner un petit coup de main.
  Reply
#2
Le smodifications sont prises en charge directement a la prochaine execution du perl.

Vous êtes sur que les oid pour recupérer les infos sont les meme que pour le getmac du 3Com (c'est différent suivant les constructeurs? Vous êtes sur que vous avez bien les bons OID dans le modèle SNMP?

Pour mettre des infos dans le log, utilisez comme ceci :
Code:
$logger->debug("No SNMPQuery Asked by the server. Exiting...");

J'espère que vous avez prévu de reverser Big Grin
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#3
Non les Oid ne sont pas les mêmes mais ont été modifiées en conséquence dans le modèle.
D'après le code Threecom il y a la même correspondance sans VLAN dans les walk pour dot1dTpFdbAddress et dot1dTpFdbPort pour ramener l'id du port

Si reverser est le fait de publier mes modifs sur le site, ce sera avec plaisir si vous m'indiquez comment faire : je ne maitrise pas trop tous ces outils de travail collaboratif de projet open source.

Je continue mes tests.
  Reply
#4
m'envoyer les patch des fichiers modifié suffira comme ca je l'integrerai.

Je pense que le mieux est de faire afficher les valeurs avec la commande précisée ci-dessus dand la partie Alcatel.pm et avancer comme ca Wink
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#5
Désolé pour le délai sur ce retour mais nous n'avons pas fini les tests avec mon stagiaire et je finalise seulement maintenant le code.

J'ai créé tout ce qu'il faut au fonctionnement que j'attends à savoir recherche des mac-address sur les ports des switchs (hors ports trunk)

Pour les ports trunk je ne sais pas comment fonctionne FI pour les cisco ...
Pour les switchs alcatel le problème est que sur les ports trunk remontent toutes les mac-address visibles à travers le réseau sur ces ports trunk donc impossible de savoir qu'elle mac-adress est réellement celle d'un autre switch ou des coeurs de réseau (nous avons 2 coeurs Alcatel 9700 et chaque pile de switch a un double attachement fibre optique à chacun des coeurs) : nous avons aussi les mac des pc / impr ... qui remontent sur les ports trunk.

J'ai donc filtré dans le code alcatel.pm de ne pas traiter les ports trunk.
Du coup je peux interroger tous mes switchs 6850 mais pas les coeurs 9700 (il n'ont que des ports trunk donc cela ne renvoie rien)

Pour ma part cela me suffit d'avoir les mac des ports des switchs non trunk uniquement :
si vous avez des billes pour le fonctionnement sous cisco ... je suis preneur pour voir ce que l'on peut améliorer.

J'espère finaliser entre aujourd'hui et vendredi les codes (2 fichiers modifiés + 1 nouveau + mib snmp + walk si vous le souhaitez) et je pourrai vous les envoyer en PM ?
Je suis reparti du code de l'agent 2.1.6-3.

Pour la mib : certains éléments ne sont pas disponibles ou utilisables comme :

- comments -> ne contient pas jusqu'à la toute dernière version, la chaine "alcatel"
je pointe donc sur contact qui contient par défaut "Alcatel-Lucent, http://alcatel-lucent.com/wps/portal/enterprise\"

- il n'y a pas de champ firmware : le numéro de firmware est contenu dans le champ description que vous utilisez vous pour "comments"
je fais donc pointer firmware vers le champ contact.

- je crois qu'il n'y a pas beaucoup d'autre spécificité par rapport à un switch cisco : je vous laisse comparer.
  Reply
#6
avec Cisco on gere les multiple mac, si c'est en trunk et qu'il y a un equipement en CDP sur ce port je connecte cet equipement et je ne m'occupe pas des MAC.

pour le PM oui sans problème
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#7
il n'y a pas de gestion CDP sur alcatel ou alors je n'ai pas creusé encore ce point

Je regarde
  Reply
#8
LLDP (format normalisé) ou le xxDP d'alcatel (j'ai pas le nom)?
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#9
Bonjour,

Ces modifications ont-elles été ajoutées au code de l'agent ?
Ayant un backbone en full alcatel, je suis très intéressé.

Je suis dispo si vous avez besoin de cobaye.
J'ai 3 OS9700E pour les cœurs, 18 OS6855-U24X pour les nœuds de distribution et des OS6400 pour les point d'accès.
  Reply
#10
Ben il faut avoir accès au matériel pour pouvoir coder quoi et comment le récupérer
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#11
Après quelques mois fort remplis, je reprends le dev sur les switch alcatel :

- la fonction Getmac est fonctionnelle et connecte les PC aux switchs
- la fonction Trunkport est fonctionnelle et ramène les ports fibre optique trunk des switchs

Je bloque sur la partie LLDP pour remplir le voisinage des switchs : le lldp alcatel est semble-t-il identique à celui des nortel (lldpRemChassisId qui ramène la mac du switch distant)
Mais je ne trouve pas dans le modèle SNMP comment récupérer/paramétrer cet OID (pas présent dans la liste déroulante Liaison champs)

Je suis en version GLPI 0.72 (migration prévue en 0.78 ou 0.80 sur le mois de septembre) / fusion inventory 2.2.2 server / 2.1.9.3 agent) : est-ce que le composant lldpRemChassisId peut-être ajouté à ces versions s'il n'existe pas ? (en base ...) ? sinon quelle version dois-je attendre/prendre ?

Merci de votre aide
  Reply
#12
Et y-a-t-il un moyen de compiler les sources que je modifie pour accélerer un peu le traitement et ne pas avoir à lancer le client en mode --devlib ?

Merci d'avance
  Reply
#13
Il y a eu des améliorations LLDP sur l'agent (en mode dev) et sur le plugin GLPI en 2.4.0.

Il est a noter que ces modifications sur l'agent seront dispo sur l'agent en version 2.2
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#14
Bonjour David,

après de longs mois surbookés, je reprends mes travaux sur la partie Alcatel et Fusion Inventory :
nous avons migré glpi en version 0.83.2, fusion inventory server en version 0.83+1.0 et l'agent en version 2.2.2-1

avec surprise et joie je me rends compte que la découverte et l'inventaire SNMP ont beaucoup évolués (ainsi que l'interface) et qu'avec quelques légères modifications côté agent je peux inventorier tout mon parc alcatel lucent (type 685x pour l'instant) et avoir :
- les associations de ports si le matériel est unique derrière le port
- les liaisons avec les coeurs de réseaux sur les ports trunk

- commençons par les problèmes rencontrés
j'utilise le snmp v3 sur mes switchs et j'ai l'erreur suivante sur la partie snmp : an empty privpassword was given ... alors qu'il est bien renseigné dans la base et dans le paramétrage, idem si je modifie SNMP.pm pour mettre le privpassword = username ce qui est le cas chez moi (accès en lecture uniquement) j'ai l'erreur sur le authpassword -> pouvez-vous vérifier pourquoi j'ai cette erreur ?
Cela fonctionne si je remplace les deux par username (valable pour mon contexte précis)

- Modification à faire pour gérer les alcatel : la partie LLDP pour les ports trunk et les remontées de MAC fonctionne comme pour les nortel :
il faut donc ajouter au fichier NetInventory.pm le code suivant dans my @ports_dispatch_table ligne 109 :
{
match => qr/Alcatel/,
trunk => __PACKAGE__ . '::Manufacturer::Nortel',
devices => __PACKAGE__ . '::Manufacturer::Nortel',
},

- pour la partie inventaire il faut ajouter le code suivant au fichier NetDiscovery.pm dans my @dispatch_table ligne 31 (pour certains switchs je n'ai pas service release qui apparait mais OS6850qqc) :
pour être plus générique (gestion des 6855 par exemple) il faut peut-être mettre 0S685 mais je ne peux pas tester n'en ayant pas dans mon parc.

{
match => qr/^\S+ OS6850/,
module => __PACKAGE__ . '::Manufacturer::Alcatel',
function => 'getDescription'
},



- Par contre les modèles suivants que vous fournissez ne sont pas complets (en terme de version dans les commentaires et en terme d'OID)
1526119 -> switch terminaux (type 685x)
9627368 -> coeurs de réseaux (type 9700)

il n'y a plus de bouton exporter à côté des modèles : comment puis-je les extraire pour vous les envoyer ?


Donc en gros si nous arrivons à faire fonctionner la v3 snmp, que je vous donne les modèles que j'ai et que vous commitez les changements indiqués nous aurons déjà un bon résultat.


- petites questions complémentaires pour avancer :
* peut-on faire remonter plusieurs matériels derrière un port (en fait nous avons des téléphones IP alcatel qui intègrent un switch et le pc est derrière) ?
en 2011 lors de mes tests cela créait dans les matériels inconnus un hub rattaché au port du switch et sur lequel était connecté la mac du téléphone et celle du pc / imprimante ...
avec la version actuelle ce n'est plus le cas.

* pour mes coeurs de réseau qui n'ont que des ports trunk, cela ne me ramène pas les switchs rattachés (en fait le tableau des ports fusinv SNMP est vide alors que les ports existent dans les ports réseaux glpi) : je vais creuser cette partie car cela fonctionne sur les swiths terminaux. Que dois-je vérifier en premier lieu ? le modèle SNMP qui si je comprends maintenant le fonctionnement des nouvelles versions est la seule chose qui différencie les remontées ?

Merci d'avance pour votre aide

Stéphane
  Reply
#15
1. je crois qu'on a quelques soucis avec le SNMP v3, il faut que je configure un de mes switch en v3 pour tester ça.

2. T'es certain que le LLDP fonctionne pareil? t'as testé + vérifié?

3. pour les OS6850qqc, on pourrait poser la question sur la mailling liste utilisateur de fusion

4. Les modèles exportés ne me servent à rien, il faut le snmpwalk pour faire ces modèles

5. Oui c'est géré ça, enfin que si le téléphone ne discute pas lldp/cdp et que les 2 mac (téléphone et ordinateur) sont bien dans GLPI. P

6. Pour les switch stacké, il faut tout faire évoluer FUsion et c'est un gros boulo
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#16
J'ai des OS6400-P48, OS6400-24, OS6850-24X, OS6850-48X, OS6850-U24X, OS6855-U24X, et des OS9700E sur mon parc.
Si je peux aider, indiquez moi comment.
  Reply
#17
Il nous faudrait le sysdescr de chacun
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#18
Voici les sysdescr:
OS6400-P48
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent OS6400-P48 6.4.3.640.R01 Service Release, October 11, 2010.
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent 6.4.4.463.R01 Service Release, March 02, 2012.

OS6400-24
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent 6.4.4.463.R01 Service Release, March 02, 2012.

OS6850-24X
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent OS6850-24X 6.4.3.640.R01 Service Release, October 11, 2010.

OS6850-48X
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent OS6850-48X 6.4.3.520.R01 GA, April 08, 2010.

OS6850-U24X
SNMPv2-MIB:ConfusedysDescr.0 = STRING: 6.3.4.514.R01 Service Release, October 29, 2009.

OS6855-U24X
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent OS6855-U24X 6.4.3.640.R01 Service Release, October 11, 2010.

OS9700E
SNMPv2-MIB:ConfusedysDescr.0 = STRING: Alcatel-Lucent OS9616/OS9716-CFM2 6.4.3.640.R01 Service Release, October 11, 2010.
  Reply
#19
bonjour David,

1. je crois qu'on a quelques soucis avec le SNMP v3, il faut que je configure un de mes switch en v3 pour tester ça.

ok

2. T'es certain que le LLDP fonctionne pareil? t'as testé + vérifié?
je vérifierai demain ou lundi mais cela m'a déjà rempli tous les ports avec les pc connus lorsqu'il n'y a qu'un pc derrière le port et c'est en comparant le code que je préparai à l'époque et celui du nortel actuel que j'ai vu les similitudes

3. pour les OS6850qqc, on pourrait poser la question sur la mailling liste utilisateur de fusion
et surtout si tu peux comparer les snmpwalk, ils devraient être identiques (ils le sont pour tous mes modèles OS9700 / OS6850-P24X, P24L, P48X, P48L, OS6850E-qqc)

4. Les modèles exportés ne me servent à rien, il faut le snmpwalk pour faire ces modèles
je te les enverrai en les commentant

5. Oui c'est géré ça, enfin que si le téléphone ne discute pas lldp/cdp et que les 2 mac (téléphone et ordinateur) sont bien dans GLPI. P
pas de lldp/cdp pour les tél IP alcatel lucent et pas de snmp non plus : par contre je ne les ai pas encore inventoriés (la plage IP où ils sont) : cela vient peut être de là.
pour complément de mon post précédent : les ports qui ont une double mac derrière sont bien référencés comme up par FI mais sans aucun rattachement ni de tél ni de PC


6. Pour les switch stacké, il faut tout faire évoluer FUsion et c'est un gros boulot
je n'ai que des switchs stackés et cela fonctionne sans souci :
- j'ai bien tous les ports de tous les switchs qui remontent
- par contre cela ne remonte comme info pour le stack que les infos du switch maître (celui dont la carte mère est active pour géré la pile)

J'enverrai aussi mes sysdescr : je les ai déjà ajouté aux 2 modèles alcatel.

encore merci pour ton aide
  Reply
#20
après contrôle ce soir :
après avoir purgé mon historique de ports connectés par l'ancienne version de l'agent que j'avais adapté il y a un an et qui fonctionnait presque, cela ne me remonte plus rien sur les ports et comme je suis reparti de zéro sur FI je n'ai plus les anciens matériels inconnus c'est pour ça que j'avais l'impression que les ports avec 2 mac address étaient vides

je me replongerai la semaine prochaine sur le code que j'avais fait pour l'inventaire snmp et je l'adapterai au nouveau format pour retester proprement

désolé pour la fausse nouvelle
  Reply
#21
Bonjour David,

j'ai repris mes tests et je vais avoir besoin de quelques informations pour comprendre ce qui ne va pas avec mon code :

- aucun souci pour les ports trunk ils sont bien détectés avec la fonction setTrunkPorts

- je galère sur les 2 autres fonctions setConnectedDevices et setConnectedDevicesMacAddress
Si j'ai bien compris la 1ère permet de repérer les ports CDP/LLDP et l'autre les ports classiques avec une ou des mac derrière.

Mes modifs sur l'agent ne fonctionnent pas pourtant il me semble que je renvoie les bonnes informations.

- setConnectedDevices : pour ce cas là le lldp (lldpRemChassisId et lldpRemPortId) chez alcatel me renvoie le port distant et la mac du switch distant (celle globale du swicth et non pas à celle du port physique).

Dans le snmpwalk je ne trouve pas d'autres informations correspondant au lldp/cdp.
Peux-tu me confirmer que sur les nortel cela renvoie directement le port distant et la mac du switch distant ?

Dans ce cas là je ne comprends pas pourquoi l'asscoiation ne se fait pas.

Exemple : pour le port ayant comme ifindex 1049, la mac vue est 00:e0:b1:ad:ce:1b (celle de mon switch distant) et le port distant est le 1049.


- setConnectedDevicesMacAddress : le cas qui m'intéresse le plus ...
ma fonction renvoie bien une ou plusieurs mac pour un port dans
my $connections = $port->{CONNECTIONS}->{CONNECTION}; push @$connections, { MAC => $mac };

Exemple le $mac est 00:50:56:8f:41:33 pour le $port->{ifindex} = 1034 (port remonté par FI avec comme nom 1/34 et id=1034)

Cette mac correspond à un des pc qui existe dans GLPI.

Qu'ai-je loupé ? qu'est ce qui ne serait pas correct dans ce que je renvoie ?


- dernière question pour aujourd'hui : sur mes coeurs de réseaux 9700 pour lesquels tous les ports sont trunk / LLDP, mes ports ne sont pas créés du tout alors qu'ils sont créés sur les switchs terminaux ... normal ?


Merci pour ton aide

Stéphane
  Reply
#22
- setConnectedDevices => normalement il récupère le nom, type de matos, ip et le sysdescr

pour les mac, ça se rajoute bien dans le XML qui est reçu par le serveur ?
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#23
le setConnectedDevices de cisco renvoie ce que tu dis : pas celui du nortel qui lui rempli :
my $connections =
$ports->{$array[2]}->{CONNECTIONS};

$connections->{CONNECTION}->{IFNUMBER} = $array[3];
$connections->{CONNECTION}->{SYSMAC} =
alt2canonical($chassisname);
$connections->{CDP} = 1;


Pour le xml reçu par le serveur : comment le récupérer / l'afficher ?

Merci
  Reply
#24
Ah oui pardon, t'a raison pour le LLDP :p

pour le XML, tu peux activer sur le serveur le mode debug (dans la config du plugin fusioninventory) qui va écrire tous les XML qu'il recoit dans glpi/files/_log/plugins/fusioninventory/ ou glpi/files/_log/
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#25
J'ai bien mis Extra Debug à oui dans la conf FI mais je ne trouve aucun xml dans glpi/files/_log/plugins/fusioninventory/ ou glpi/files/_log/

J'ai relancé apache au cas où...

Une idée ?

Merci

Après recherche dans d'autres répertoires je les ai trouvé dans /glpi/files/_plugins ...

J'ai bien des xml pour mes switchs mais aucun pour mes coeurs : je relance des tests.
Pour les switchs sur chacun des ports concernés par le trunk j'ai bien la section trunk de renseignée mais je n'ai rien pour les connexions : je pense donc que cela vient de la construction du xml côté agent.

Exemple pour un port trunk :
<PORT>
<IFDESCR>Alcatel-Lucent 1/45 6.4.2.880.R01</IFDESCR>
<IFINERRORS>0</IFINERRORS>
<IFINOCTETS>247114160</IFINOCTETS>
<IFINTERNALSTATUS>1</IFINTERNALSTATUS>
<IFLASTCHANGE>422 days, 23:28:14.00</IFLASTCHANGE>
<IFMTU>9216</IFMTU>
<IFNAME>1/45</IFNAME>
<IFNUMBER>1045</IFNUMBER>
<IFOUTERRORS>0</IFOUTERRORS>
<IFOUTOCTETS>279224023</IFOUTOCTETS>
<IFSPEED>0</IFSPEED>
<IFSTATUS>2</IFSTATUS>
<IFTYPE>6</IFTYPE>
<MAC>00:e0:b1:da:a5:02</MAC>
<TRUNK>1</TRUNK>
</PORT>

Exemple pour un port non trunk :
<PORT>
<CONNECTIONS/>
<IFDESCR>Alcatel-Lucent 1/19 6.4.2.880.R01</IFDESCR>
<IFINERRORS>1</IFINERRORS>
<IFINOCTETS>1057800617</IFINOCTETS>
<IFINTERNALSTATUS>1</IFINTERNALSTATUS>
<IFLASTCHANGE>413 days, 19:02:32.00</IFLASTCHANGE>
<IFMTU>9216</IFMTU>
<IFNAME>1/19</IFNAME>
<IFNUMBER>1019</IFNUMBER>
<IFOUTERRORS>0</IFOUTERRORS>
<IFOUTOCTETS>3368622553</IFOUTOCTETS>
<IFSPEED>1000000000</IFSPEED>
<IFSTATUS>1</IFSTATUS>
<IFTYPE>6</IFTYPE>
<MAC>00:e0:b1:da:a4:e8</MAC>
</PORT>

C'est bien dans ce xml que je devrai trouver la partie CONNECTIONS (vide actuellement <CONNECTIONS/>) qui me donne les LLDP et MAC connectées ?

Merci

Stéphane
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)