64
Escola Politècnica Superior Enginyeria Tècnica en Informàtica de Sistemes Treball de final de carrera Disseny i implementació d’un sistema de detecció de recursos i topologia de xarxa per a entorns Multicluster no dedicats Autor: Eduardo Juárez Sánchez Director: Josep Lluís Lérida Monsó Setembre del 2007

Disseny i implementació d’un sistema de detecció de

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Disseny i implementació d’un sistema de detecció de

Escola Politècnica SuperiorEnginyeria Tècnica en Informàtica de Sistemes

Treball de final de carrera

Disseny i implementació d’un sistema de

detecció de recursos i topologia de xarxa per a

entorns Multicluster no dedicats

Autor: Eduardo Juárez SánchezDirector: Josep Lluís Lérida Monsó

Setembre del 2007

Page 2: Disseny i implementació d’un sistema de detecció de

i

Page 3: Disseny i implementació d’un sistema de detecció de

RESUM

Degut a la gran quantitat de problemes que requereixen grans potències de càlculper obtenir els resultat en temps raonables, es van construir uns sistemes anomenatssupercomputadors. El principal inconvenient d’un supercomputador és el seu cost.

Per aquest motiu es va idear d’emprar ordinadors personals interconnectats entresi, nomenats Cluster, que juntament amb el software adequat donessin una velocitat decàlcul semblant a la dels supercomputadors amb l’avantatge de ser més econòmic i pertant d’ésser més accessibles.

Avui en dia aquests Clusters son emprats en àrees de recerca, centres facultatius,etc, com un únic sistema o amb varis Clusters interconnectats entre si, anomenat Mul-ticluster. El neguit principal dels responsables d’aquests sistemes, es d’optimitzar almàxim els recursos i per tant treure’n el màxim rendiment.

Per aconseguir això s’ha d’estudiar la interconnexió entre els sistemes per tal dedeterminar les possibles restriccions que es poden donar i disposar d’un mecanisme demonitorització de l’estat de la xarxa i dels nodes per tal de que el planificador d’aquestssistemes pugui valorar quin és el camí més ràpid per executar un determinat treball.

Aquest treball pretén resoldre aquestes carències, aportant un estudi de la xarxa del’àrea de treball d’aquest sistema Multicluster i un programa que permeti descobrir lesmàquines d’un domini i la seva capacitat de comunicació amb la resta.

ii

Page 4: Disseny i implementació d’un sistema de detecció de

iii

Page 5: Disseny i implementació d’un sistema de detecció de

Índex

1 Introducció 11.1 Conceptes previs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Motivació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Estat de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.1 Bing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.2 Cheops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.3 ENV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4 Objectius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5 Estructura del document . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Disseny i implementació de la eina de detecció 132.1 Disseny de la eina de detecció . . . . . . . . . . . . . . . . . . . . . 132.2 Implementació de la eina . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2.1 Implementació del sistema de descobriment de nodes . . . . 152.2.2 Implementació del sistema per detectar la topologia efectiva . 172.2.3 Implementació del sistema de detecció d’amples de banda . . 18

2.3 Implementació Client/Servidor . . . . . . . . . . . . . . . . . . . . . 192.3.1 Implementació del Client . . . . . . . . . . . . . . . . . . . . 202.3.2 Implementació del Servidor . . . . . . . . . . . . . . . . . . 23

3 Experimentació 253.1 Descubriment de nodes . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Càlcul d’amples de banda . . . . . . . . . . . . . . . . . . . . . . . . 273.3 Topologia efectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4 Conclusions i Treball Futur 364.1 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.2 Treball futur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

A Modes de funcionament Client/Servidor 38

iv

Page 6: Disseny i implementació d’un sistema de detecció de

B Script per filtrar i ordenar la taula ARP 39

C Llibrería Complements.h 41

D Funcions del Client 42

E Funcions del Servidor 51

Bibliografia 54

v

Page 7: Disseny i implementació d’un sistema de detecció de

Índex de figures

1.1 Marenostrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Custer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Multicluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Bing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5 Cheops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6 ENV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.7 Arbre topològic ENV . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1 Client/Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Taula ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4 Diagrama Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.5 Diagrama Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1 Servidor en automàtic . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2 Client en automàtic . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3 Captura Bing 172.16.2.3 . . . . . . . . . . . . . . . . . . . . . . . . 293.4 Captura BW 172.16.8.26 . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Captura Bing 172.16.8.26 . . . . . . . . . . . . . . . . . . . . . . . . 303.6 Gràfic comparatiu d’amples de banda . . . . . . . . . . . . . . . . . 313.7 Nodes detectats al Cluster . . . . . . . . . . . . . . . . . . . . . . . . 323.8 Topologia efectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.9 Diagrama topologia efectiva Cluster . . . . . . . . . . . . . . . . . . 333.10 Diagrama topologia efectiva alumnes . . . . . . . . . . . . . . . . . . 343.11 traceroute subxarxa alumnes . . . . . . . . . . . . . . . . . . . . . . 343.12 traceroute subxarxa Cluster . . . . . . . . . . . . . . . . . . . . . . . 343.13 Topologia efectiva de les subxarxes . . . . . . . . . . . . . . . . . . . 35

vi

Page 8: Disseny i implementació d’un sistema de detecció de

vii

Page 9: Disseny i implementació d’un sistema de detecció de

Índex de taules

3.1 Taula arp corresponent a la cerca per broadcast . . . . . . . . . . . . 253.2 Taula arp corresponent ping punt a punt . . . . . . . . . . . . . . . . 263.3 Dades gràfic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

viii

Page 10: Disseny i implementació d’un sistema de detecció de

ix

Page 11: Disseny i implementació d’un sistema de detecció de

Capítol 1

Introducció

1.1 Conceptes previs

Degut als avenços en els camps matemàtics i científics s’ha produït una demanda demillorar la capacitat de càlcul dels sistemes convencionals. Aquesta millora s’ha traduïten la creació de Supercomputadors.

Avui en dia, el disseny de Supercomputadors es sustenta en 4 tecnologies impor-tants:

• La tecnologia de registres vectorials, creada per Seymour Cray[4], considerat elpare de la supercomputació, va ser qui va inventar i patentar diverses tecnologiesque van permetre crear computadores amb una gran velocitat de càlcul. Aques-ta tecnologia permet la execució de moltes d’operacions aritmètiques de formaparal·lela.

• El sistema conegut com MPP (Massively Parallel Processors, Processadors Mas-sivament Parel·lels), que consisteix en l’utilització de cents a milers de micropro-cessadors.

• La tecnologia que gràcies a la popularització d’internet ha permès l’aparició deprojectes de computació distribuïda, en que mitjançant software especial s’apro-fita el temps ociós de milers d’ordinadors personals (PC’s) per realitzar granstasques amb baix cost. El software d’aquesta tècnica ha de ser capaç de dividirles tasques en blocs de càlcul completament independents que no es tornaran aunir ni comunicar en varies hores. Com exemples més emblemàtics d’aquestatecnologia podem trobar el Seti[5], BOINC[6] i Folding@home[7].

• La tecnologia de computació distribuïda, empra clusters de computadors d’usdomèstic i de baix cost, interconnectats en xarxes locals de baixa latència i ambun ample de banda gran.

1

Page 12: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 2

Pel seu gran cost, l’ús de supercomputadors està limitat a organismes governamentals,militars i grans centres d’investigació, on tenen aplicacions científiques com la simu-lació de processos naturals (predicció meterològica, anàlisi del canvi climàtic, entrealtres), criptoanàlisi, etc.

Un supercomputador es un tipus de computador molt potent i ràpid que és capaçde processar grans quantitats d’informació en poc temps i generalment està destinat adesenvolupar tasques concretes.

Figura 1.1: Marenostrum

Principals característiques d’un supercomputador són les següents:

• Velocitat de processament: milers de milions d’instruccions en punt flotant persegon.

• Requereixen instal·lacions especials i sistemes de refrigeració industrial.

• Només ho poden fer anar especialistes en el sector.

• L’impacte social d’aquests es gairebé nul, però sense aquestos no es podrien fercoses com calcular prediccions meteorològiques a grans distancies temporals oresoldre càlculs complexos que d’una altra forma es trigarien anys en resoldre.

• Tenen un elevat cost.

El terme Cluster per altra banda, s’aplica al conjunt de computadors construïtsamb hardware convencional i que es comporten com un sol computador. Aquestos

Page 13: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 3

juguen avui en dia un paper molt important en la solució de problemes en ciència i enenginyeria.

La tecnologia de Clusters ha evolucionat per ser emprats en activitats com super-càlcul, servidors Web, bases de dades d’alt rendiment, etc.

El còmput amb Clusters sorgeix com a resultat de la disponibilitat de micropro-cessadors econòmics d’alt rendiment, connectats mitjançant xarxes d’alta velocitat,l’aparició de software per computació distribuïda i el creixement de les necessitat depotència computacional.

Figura 1.2: Custer

Els principals requisits d’un cluster són:

1. Alt rendiment.

2. Escalabilitat.

3. Equilibri de càrrega.

4. Alta disponibilitat.

La construcció dels ordinadors del Cluster es més fàcil i econòmica donada la sevaflexibilitat, poden tenir tots la mateixa configuració de hardware i sistema operatiu(Cluster homogeni), diferent rendiment però amb arquitectures i sistemes operatiussimilars (Cluster semi-homogeni) o tenir diferent hardware i sistema operatiu (Clusterheterogeni).

Page 14: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 4

Per a que un Cluster funcioni com a tal és necessari disposar d’un software quesigui capaç d’interactuar amb l’usuari i amb els processos per optimitzar el seu funci-onament. En general els components principals d’un Cluster són:

• Ordinadors o servidors, anomenats Nodes.

• Sistema operatiu , d’aquí en endavant SO.

• Xarxa d’interconnexió.

• Una capa d’abstracció entre l’usuari i el SO, anomenat Middleware, com perexemple OpenMOSIX[9], MOSIX, Cóndor, OpenSSI, etc.

• Protocols de comunicació i serveis.

• Aplicacions que poden ser paral·leles o no.

Al conjunt de Cluster interconnectats entre sí dins una intranet l’anomenem Multiclus-ter.

Figura 1.3: Multicluster

Page 15: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 5

Si avans parlàvem dels Clusters homogenis i heterogenis ara parlarem dels Multi-clusters homogenis i heterogenis. La homogeneitat o hetereogenitat en un Multiclusterve donada per la seva velocitat de connexió, és a dir, en la velocitat de les comunica-cions de tots els Nodes. Un Multicluster homogeni és un conjunt de Clusters intercon-nectats entre sí a la mateixa velocitat, per la seva part un Multicluster hetereogeni ésun conjunt de Clusters interconnectat entre sí a diferents velocitats. Un Multiclusterhetereogni és fàcil de trobar, per exemple en institucions que aprofiten nodes d’usuarino dedicats exclusivament al Cluster per executar tasques.

Els sistemes de computació en Cluster tenen un gran futur, ja que un usuari normaldesaprofita bona part dels recursos del seu ordinador, ja que generalment es dedica anavegar per internet, mirar el correu electrònic, utilitzar el processador de text, entred’altres programes que no tenen un consum de recursos elevat. Gràcies a programescom Seti1.1 vam poder veure com els usuaris acceptaven de bon grat treballar en unsistema de computació paral·lela. Aquest mateix sistema es podria aplicar a un en-torn acadèmic, empresarial, etc, ja que a grans trets els usuaris de les instal·lacionsinformàtiques d’aquests centres es corresponen al model d’usuaris anteriorment citat.

El gran avantatge que tenim és que qualsevol ordinador que tinguem dins de lanostra xarxa d’empresa, port formar part del nostre Cluster. Per contra el principal des-avantatge que tenim és que el planificador ha de disposar de mecanismes de deteccióde nodes on assignar les tasques, mecanismes de monitorització de l’estat de la con-nectivitat i de l’estat dels nodes, aixi com de la seva configuració per tal de dur a termeuna bona selecció dels recursos entre els nodes per tal de que pugui valorar quin és elcamí més ràpid.

1.2 Motivació

La motivació d’aquest treball és realitzar un sistema de detecció de nodes per a que elplanificador conegui tots els que estan disposats a rebre tasques, detectar la topologiaefectiva de la xarxa i coneixer l’estat de connectivitat entre els diferents elements quecomposen el sistema.

És ben segur que hi pot haver configuracions diferents entre els diferents clusters iles volem detectar. A més a més hi haurà elements d’interconnexió intermitjos que enspermetran l’accés a les diferents xarxes, routers, firewalls, etc. Tots aquest elementshan de ser detectats i estudiats per tal de conèixer la topologia real de la xarxa i laconfiguració dels elements que la composen.

Pel que fa al sistema de monitorització de l’estat de connectivitat dels nodes caldeterminar quin tipus de càlcul d’ample de banda volem fer servir, ja que hi ha dosmètodes:

Page 16: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 6

• El mètode no intrusiu consisteix a calcular el tràfic promig durant un interval detemps, és a dir, d’utilització aproximada del canal. Hi ha eines estadístiques comMRTG que poden calcular un promig sobre unes mostres del entorn en qüestió.MRTG consulta al router o switch emprant el protocol SNMP quants paquetshan passat, guarda aquesta dada en la seva base de dades i dibuixa un gràfic.

• El mètode intrusiu consisteix a calcula l’ample de banda ocupant una part d’a-quest, com es el cas del programa Bing1.

Hem de ser conscients que per poder calcular l’ample de banda pròpiament dit, ensveiem obligats a emprar una part d’aquest per realitzar les mesures, ja que no existeixsoftware que mesuri l’ample de banda sense ocupar part del canal per una raó simple:per poder sàpiguer l’ample de banda instantani és necessari emprar el canal per veurequina capacitat tenim disponible.

1.3 Estat de l’art

En aquesta secció es presentaran tres programes de lliure distribució que existeixenactualment per a la detecció d’amples de banda i per la creació de diagrames topològicsde xarxa. Aquets programes han servit de base per aquest treball ja que ens han aportatles idees principals de com realitzar la nostra eina.

Concretament és presentaran Bing que és un programa de càlcul d’amples de bandaentre dos nodes, Cheops que és un programa pel descobriment d’equips que a més amés ens crea un diagrama topològic de la xarxa i finalment ENV que és un programaper a la detecció de la topologia efectiva d’una xarxa.

1.3.1 Bing

És una eina que mesura l’ample de banda entre dos nodes basada en ping. Bing deter-mina la comunicació real en un canal enviant paquets de diferents mides i mesurant eltemps que triguen en arribar. Bing no ve instal·lat per defecte en les distribucions deLinux, per instal·lar-ho amb un apt-get install bing.

La comanda per executar Bing és:

$ bing [IP màquina inici] [IP màquina destí]

Amb això aconseguim que Bing enviï paquets cap a la màquina destí fins que no aca-bem el procés mitjançant la combinació de tecles Ctrl+C. Un cop finalitzem el pro-grama ens surten dades estadístiques sobre el número de bytes dels paquets que s’hanenviat i el temps que han trigat en milisegons, per últim ens dona l’ample de banda

1http://linux.about.com/cs/linux101/g/bing.htm

Page 17: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 7

estimat de la comunicació entre aquestes dues màquines. Aquestes dades les podemobservar en la Figura 1.4.

Figura 1.4: Bing

A continuació s’esposen els avantatges i els inconvenient que s’han trobat per lesnostres necessitats en concret.

• Avantatges

– Fàcil d’instal·lar i de fer anar.

– Et dona molta informació del procés.

• Inconvenients

– La finalització del programa s’ha de fer manualment.

– La informació que ens proporciona només serveix per obtenir l’ample debanda entre dos nodes i hauríem d’utilitzar software extern per automatitzarla tasca de consulta per obtenir-ne resultats de varis nodes.

Page 18: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 8

No va ser integrat en el nostre programa ja que de fer-ho dependríem d’instal·lar-ho entots els nodes als que volguessim integrar el nostre programa, així que s’ha agafat labase de com realitza els càlculs d’amples de banda per emprar-la en el nostre programa.

1.3.2 Cheops

És un programa de lliure distribució que serveix per detectar els nodes d’una xarxa amode d’escàner i el Sistema Operatiu d’aquestos i generar un diagrama topològic. Apart Cheops no només detecta els nodes sinó que és capaç de detectar les impressores,routers, etc.

Cheops és un programa ràpid ja que la detecció dels nodes la fa mitjançant pingsde broadcast.

L’execució de Cheops consta de dos passos en la Terminal (Shell de Linux):

1. Arrencar el servidor:

$ cheops-agent &

2. Arrencar el programa en si:

$ cheops-ng [IP del node on està arrencat el servidor]

En la figura 1.5 es pot veure un diagrama de xarxa fet amb aquest programa.

A continuació s’exposen les avantatges i els inconvenients que s’han trobat per lesnostres necessitats en contret.

• Avantatges

– Fàcil d’instal·lar i de fer anar.

– Et dona molta informació sobre els nodes.

• Inconvenients

– A l’hora d’instal·lar-ho demana unes llibreries concretes de l’entorn gràfic.

– És difícil realitzar modificacions en l’estructura del programa.

– No detecta tots els nodes, només els que responen a Pings de broadcast.

Aquest programa ha ajudat a obtenir una visió concreta de la xarxa on s’ha treballat,donant informació dels nodes i de la seva interconnexió. El dos inconvenients que hanfet que aquest programa no sigui integrat en la nostra aplicació es que és dificil demodificar i que no detecta tots els nodes de la xarxa.

Page 19: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 9

Figura 1.5: Cheops

1.3.3 ENV

L’ENV (Effective Network View) va ser desenvolupat per Gary Shao en la Universitatde California. És un programa realitzat en Python, basat en PEG (Python Extensionsfor the Grid) i forma part del projecte APPLES [14]. ENV va ser creat per descobrir latopologia efectiva de la xarxa, des del punt de vista del node. ENV empra GRIDML perrepresentar les dades que obté de la topologia de la xarxa. GRIDML està especialitzaten representar dades en format XML que han estat dissenyades per poder descriure lescaracterístiques físiques, que es poden observar en una xarxa constituïda per un sistemade computació GRID. ENV obté informació de les capes 2 i 3 dels routers sense emprarsistemes de baix nivell.

Page 20: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 10

Figura 1.6: ENV

El mètode que empra per descobrir les característiques de la xarxa ha servit de baseper realitzar el sistema de detecció de xarxa compartida o xarxa distribuïda. El mètodeque empra amb una xarxa amb n nodes s’han de fer n∗(n−1)

2 càlculs d’ample de banda,entre cada parella de nodes des del primer fins a l’últim node que tinguem. Segonss’explica en [15] s’executa per cada parella de nodes, un test per calcular l’ample debanda existent entre ells i el node que executa el programa. Segons es comenta en l’ar-ticle [15] desprès de fer proves i amb els resultats extrets d’aquestes, van determinarque el llindar per diferenciar si dos nodes estan connectats a un HUB o a un Switch esdetermina comparant el 30% de l’ample de banda d’un node amb el resultat de la dife-rència de l’ample de banda del dos nodes. Es pot dir que aquestos es troben connectatsa un HUB si el resultat obtingut de la comparació anterior es superior al llindar esta-blert, ja que estar connectat a un HUB al calcular l’ample de banda la xarxa s’inundade paquets i fa baixar el rendiment d’aquesta. Per altre banda si no existeix aquestadiferència significativa, es pot dir que els nodes es troben connectats a un Switch i pertant no pertanyen al mateix entorn de col·lisió ja que el Swich encamina cada paquet alnode corresponent i per tant la xarxa el rendiment de la xarxa no es veu afectat.

Un cop determinat si els nodes estan en el mateix entorn de col·lisió o no, ENVcrea tres fitxers XML:

• El primer fitxer amb: nom del domini, IP’s dels nodes i els noms d’aquestos.

• El segon fitxer amb les característiques de software i hardware d’aquestos em-prant un benchmark extret de LINPACK.

• I en el tercer fitxer l’estructura topològica de la xarxa analitzada emprant l’einatraceroute per veure el número de salts que s’han de realitzar fins arribar al nodedestí. Amb aquest fitxer GRIDML pot generar un primer arbre de l’estructura.

Page 21: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 11

Figura 1.7: Arbre topològic ENV

A continuació s’exposen les avantatges i els inconvenients que s’han trobat per lesnostres necessitats en contret.

• Avantatges:

– Els resultats de les proves els emmagatzema en format XML i per tantpoden ser representats per qualsevol programa que interpreti XML.

– Descobreix la topologia efectiva de la xarxa.

• Inconvenients:

– Per treure la informació necessita els resultats del programa NWS (NetworkWeather Service) el qual és molt complicat d’instal·lar.

– En els resultats que extreu falta l’ample de banda entre els nodes que pelnostre treball és fonamental de sàpiguer.

Davant d’aquets inconvenients i veient que el sistema que empra per determinar latopologia efectiva dels nodes és fàcil d’implementar es va decidir implementar aquestsistema en la nostra eina.

1.4 Objectius

L’objectiu principal d’aquest treball és facilitar informació dels nodes i de la xarxasobre els quals es vol crear un sistema Multicluster.

El sistema Multicluster podrà estar format tant per màquines ubicades en diferentssubxarxes. Aquestes màquines poden ser dedicades exclusivament en un sistema Clus-ter com màquines compartides i en un entorn no dedicat, com per exemple aules d’a-lumnes. Per aquest motiu cal conèixer l’estat de comunicació d’aquestos per determi-nar les tasques poden realitzar en aquell moment.

Page 22: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 1. INTRODUCCIÓ 12

En el nostre cas, volem fer un sistema que permeti obtenir informació de la topolo-gia de xarxa i de la topologia efectiva.

L’objectiu principal d’aquest treball es divideix en els següents objectius més con-crets:

• Estudiar la infraestructura de hardware de les connexions d’una xarxa per tal depoder interconnectar diferents Clusters.

• Conèixer la capacitat de comunicació entre els nodes d’un sistema Multicluster.

• Disposar d’una eina que permeti detectar els ordinadors que formen part delnostre sistema, les seves capacitats.

1.5 Estructura del document

En el capítol 1 s’han introduït els conceptes bàsics per entendre què és un Supercom-putador, un Cluster i un Multicluster. En l’Estat de l’art s’han presentat tres programesque existeixen actualment per calcular amples de banda entre dos nodes i per crear dia-grames topològics dels nodes i de la xarxa. Per últim en aquest capítol s’expliquen elsobjectius principals del treball, així dels objectius de l’eina que s’ha desenvolupat.

En el capítol 2 es descriu el disseny i l’implementació de la eina de detecció. Enprimer lloc s’exposa el disseny de la nostra eina. En segon lloc s’explica l’implemen-tació de la nostra eina Client/Servidor.

En el capítol 3, es descriu l’entorn de l’experimentació i un anàlisi dels resultatsobtinguts.

En el capítol 4 es presenten les principals conclusions del treball realitzat i el treballfutur que se’n despren.

Page 23: Disseny i implementació d’un sistema de detecció de

Capítol 2

Disseny i implementació de laeina de detecció

En aquest capítol es descriu el disseny de la nostra eina i la seva implementació.

2.1 Disseny de la eina de detecció

L’estructura de la eina es representa en la figura 2.1.

Figura 2.1: Client/Servidor

13

Page 24: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 14

La nostra eina és un programa Client/Sevidor on el Servidor estarà situat en unamàquina escollida per l’usuari i els Clients s’executaran en un dels nodes dels Clustersdels que es vol obtenir la informació. D’aquesta forma ens assegurem que la nostraeina pot ser executada en múltiples VLANs.

Els Clients detectaran els nodes que participen en el nostre sistema Multicluster iobtindran la topologia efectiva de la xarxa on es troben. Això servirà per decidir si escalcula l’ample de banda d’un node, en el cas que ens trobem que estan connectats a unHUB o si s’ha de calcular l’ample de banda de tots els nodes en el cas de que estiguinconnectats a un Switch.

L’explicació per aquesta decició és que en una connexió mitjançant HUB al estaren un entorn de col·lisió, tots els nodes es veuen afectats de la mateixa manera pel tràficde la xarxa, per tant obtindrem el mateix resultat fent el promig de l’ample de banda detots els nodes que calculant l’ample de banda d’un d’aquets. Això ens permetrà reduirel nombre de càlculs d’ample de banda

Per l’altra banda en una connexió amb Switch, els nodes es consideren indepen-dents ja que no es veuen afectats de la mateixa forma pel trafic de la xarxa, ja que elSwitch distribueix els paquets al nodes als quals van destinats. Donat que el sistema ésheterogeni necessita consultar l’estat de cada connexió.

El mode de funcionament és descriu a continuació, el Servidor esperarà l’arribadadels missatges dels Clients, aquests missatges contindran la informació que han obtin-gut els Clients relativa als nodes. El Servidor emprarà threads per atendre les peticionsdels Clients, d’aquesta forma es garanteix que tots els Clients tinguin la resposta perpart del Servidor.

El programa Client/Servidor contarà amb dos modes de funcionament, el modemanual on l’usuari indicarà els paràmetres i un mode automàtic on el propi programas’autoconfigura.

Un dels problemes típics en xarxes de múltiples VLANs com és el cas tractat enaquest treball, són les proteccions entre les diferents subsxarxes, (veure figura 2.2).Aquests sistemes de seguretat impedeixen que eun node d’una subxarxa, per exemplela d’alumnes 172.16.0.0, pugui veure un node a la subxarxa de professors 10.50.0.0.

Per tal de resoltre aquest problema podem fer dues coses, la primera serà modi-ficar les IPTables per obrir un port de comunicació per tal de permetre que el nostreClient/servidor pugui comumicarse, la segona serà modificar les IPTables per tal depermetre que unes determinades IPs puguin atravessar-lo.

Page 25: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 15

Figura 2.2: Firewall

2.2 Implementació de la eina

A continuació s’explica la implementació de la nostra eina. En primer lloc s’explicacom s’ha realitzat la detecció dels nodes, la detecció de la topologia efectiva i per últimcom s’ha realitzat el càlcul d’amples de banda dels nodes. En segon lloc s’explicaràcom s’ha implementat el Client/Servidor.

2.2.1 Implementació del sistema de descobriment de nodes

Per tal de descobrir els nodes, el primer que s’ha de fer és determinar quin mecanismees vol emprar per detectar-los. En un primer punt tenim un mètode que consisteix enenviar mitjançant l’eina del sistema ping un paquet del tipus ICMP a broadcast, és adir a tots els nodes de la nostra xarxa. D’aquesta forma obtindrem les direccions IP detotes les màquines que tenim a l’abast dins de la nostra xarxa, en la taula ARP de lamàquina que ha realitzat el ping. Aquest sistema és molt ràpid però té un inconvenient,ja que no tots els Sistemes Operatius responen als pings de broadcast si abans no s’hahabilitat la opció.

A continuació s’explica com s’ha d’habilitar la resposta a pings de broadcast si lamàquina en qüestió no ens contesta. El fitxer per habilitar o deshabilitar que la màquinaens contesti als ping de broadcast la trobem en el fitxer:

Page 26: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 16

$ /proc/sys/net/ipv4/icmp_echo_ignore_broadcast

Aquest fitxer es pot modificar únicament com a root i el mètode per fer-ho és el següent:

• Habilitar la opció de contestar a pings de broadcast:

$ echo 0 > proc/sys/net/ipv4/icmp_echo_ignore_broadcast

• Deshabilitar la opció de contestar a pings de broadcast:

$ echo 1 > proc/sys/net/ipv4/icmp_echo_ignore_broadcast

El motiu pel qual només es pot modificar l’arxiu mitjançant les comandes anteriors ésperquè la carpeta /proc conté arxius únicament de lectura i com no existeixen en elsistema d’arxius del SO, solament es poden modificar redireccionant la comanda echo.

Actualment la majoría de distribucions del SO Linux tenen deshabilitat la opció decontestar a pings de broadcast, és a dir, tenen el fitxer icmp_echo_ignore_broadcast

a valor 1 per temes de seguretat. Si aquests PC’s ho tinguessin habilitat es podriacomprometre la seva seguretat ja que fent un ping a broadcast aquestes quedarien aldescobert.

L’altre mètode d’escaneig consisteix en fer pings punt a punt, és a dir, enviar unping a cada node de la nostra xarxa. És un mètode que ens garanteix que detectaràtotes les màquines que tenim a l’abast ja que ping envia un datagrama de contesta-ció obligatòria del tipus ICMP ECHO_REQUEST. La màquina que rep el datagramaanterior, envia un datagrama del tipus ICMP ECHO_RESPONSE per contestar l’altredatagrama. Amb això aconseguim conèixer totes les màquines de la nostra xarxa. Percontrapartida temporalment parlant té un cost alt. Per exemple, si es vol escanejar unaxarxa 172.16.0.0 es tenen que fer pings a 64770 màquines. Aquest sistema serveix perdetectar màquines que tenen deshabilitada l’opció de contestar a pings de broadcast.

Aquest mètode a part del temps que triga en fer l’escaneig, és que en la taula ARP

no apareixen solament els nodes que ens han contestat, sinó que es llisten totes les di-reccions IP a les que s’ha enviat el ping. Per diferenciar les que ens han contestat de lesque no, cal mirar en l’arxiu ARP la columna anomenada HW address que es correspona l’adreça MAC (veure exemple en figura 2.3) i els nodes que ens han contestat tenenuna adreça MAC diferent a 00:00:00:00:00:00. Per tal d’excloure les IP dels nodes queno ens han contestat i fer una ordenació IP s’ha creat un script que es pot trobar enl’Apèndix B.

Page 27: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 17

Figura 2.3: Taula ARP

Un cop s’ha filtrat la taula ARP i em obtingut les direccions IPs dels nodes, es creaun fitxer anomenat arp.txt que conté les IPs ordenades dels nodes descoberts. Aquestfitxer, serà emprat posteriorment tant per detectar la topologia efectiva com per realitzarels càlculs d’amples de banda dels nodes.

2.2.2 Implementació del sistema per detectar la topologia efectiva

Un cop coneixem els nodes que tenim en la nostra xarxa, el següent pas és detectar latopologia efectiva d’aquestos. La topologia efectiva es correspon a comprovar si elsnodes són dependents o independents, que un node sigui dependent vol dir que estaconnectat a un HUB mentre que un node es independent si esta connectat a un Switch.Per entendre la dependència o independència s’explica el mètode de funcionament delsdos equips de xarxa esmentats.

Els HUBs o també coneguts com concentradors, quan els hi arriba un paquet de da-des l’envien a cadascun dels ports que tenen exceptuant el port pel qual els ha arribat elpaquet. Aquesta forma d’actuar repercuteix directament en el rendiment de la xarxa jaque aquest tràfic afegit genera més probabilitats de col·lisió. Una col·lisió es produeixquan un ordinador vol enviar informació i l’envia de forma simultània amb un ordina-dor que fa el mateix. Al xocar els dos missatges es perden i es necessari retransmetreun altre cop aquest. La probabilitat de col·lisió augmenta a mesura que afegim mésordinadors a la xarxa. Per aquest motiu és pot dir que els nodes que estan connectats aun HUB són dependents.

Els Switch quan reben un paquet, miren si coneixen la màquina a la qual va destinati l’envien pel port corresponent. D’aquesta forma el rendiment de la xarxa no es veualterat com en un sistema HUB i es pot dir que els nodes que estan connectats a unSwitch són independents.

El mètode que s’ha emprat per descobrir la topologia efectiva en la nostra eina ésel descrit en l’article [15]. En una xarxa amb n nodes s’han de fer n∗(n−1)

2 càlculsd’ample de banda, entre cada parella de nodes des del primer fins a l’últim node quetinguem. Aquests càlculs d’ample de banda s’han de realitzar al mateix temps percada parella de nodes del nostre fitxer arp.txt, per aquest motiu s’han implementat

Page 28: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 18

dos threads per realitzar el dos càlculs d’ample de banda concurrentment. Un copobtenim el resultat dels dos nodes, es calcula la diferència entre els amples de bandaresultants per diferenciar si sla connexió existent és en HUB o Switch. Segons escomenta en l’article [15] desprès de fer proves i amb els resultats extrets d’aquestes,van determinar que el llindar per diferenciar si dos nodes estan connectats a un HUBo a un Switch es determina comparant el 30% de l’ample de banda d’un node ambel resultat de la diferència de l’ample de banda del dos nodes. Si el resultat de lacomparació anterior és superior al llindar establert, podem dir que els nodes es trobenconnectats són dependents i es troben en mateix domini de col·lisió o HUB, per altrebanda si el resultat es inferior al llindar establer, els nodes es troben connectats a unSwitch i per tant son independents. Aquesta operació finalitza quan s’ha comprovatla connectivitat entre totes les parelles de nodes coneguts del fitxer arp.txt. Per talde fer més entenedora aquesta explicació a continuació hi ha l’algorisme emprat perdeterminar la topologia efectiva:

bw1=calcular_bw_node1(); #Obtenim l’ample de banda del

primer node

bw2=calcular_bw_node2(); #Obtenim l’ample de banda del

segon node

bw_aux=bw1 * 0.3; #Calculem llindar per determinar la

topologia efectiva

si [bw1 > bw2] fer

si (bw1 - bw2) > bw_aux llavors

print “Estem en un HUB”;

sino fer print “Estem en un SWITCH”;

fi

sino fer

si (bw2 - bw1) > bw_aux llavors

print “Estem en un HUB”;

sino fer print “Estem en un SWITCH”;

fi

fi

2.2.3 Implementació del sistema de detecció d’amples de banda

El següent pas un cop sabem la topologia efectiva és realitzar els càlculs d’amples debanda. Per realitzar el càlcul d’ample de banda dels nodes, emprem el fitxer arp.txt onsón els nodes detectats i enviem dos pings a cada node.

El primer ping enviat ens servirà per calcular la latència de la xarxa. La latència ésel retard temporal d’una xarxa produït en la propagació i transmissió dels paquets. Per

Page 29: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 19

tant la mida d’aquest ping de ser petita, en el nostre cas emprem un ping de 64 Bytes,que enviem cinc cops per obtenir les dades més ajustades a les condicions de la xarxa.I guardem el temps mínim de propagació que és la latència de la nostra xarxa.

El segon ping enviat ens servirà per calcular el temps que triga en ser enviat elpaquet. En aquest cas la mida del ping ha de ser més gran, en el nostre cas empremun ping de 1024 Bytes, que l’enviem cinc cops per obtenir les dades més ajustades ales condicions de la xarxa. En aquest cas guardem el temps mig emprat per realitzar latransferència.

Un cop tenim la latència i el temps de propagació del nostre ping de 1024 Bytes,estem en condicions de calcular l’ample de banda del node. Per calcular l’ample debanda s’ha utilitzat la formula genèrica, que és la següent:

bw = BitsTemps−Latencia

on:

• Bits, és el número de bits enviats en el nostre cas 1024Bytes x 8bits1Bytes = 8192bits.

• Temps, és el temps mig que ha trigat l’enviament del paquet de 1024Bytes.

• Latència, és la latència del canal que fa referència al temps mínim en l’enviamentd’un paquet petit de 64Bytes.

• bw, és l’ample de banda.

A l’hora de calcular l’ample de banda, com emprem el fitxer arp.txt com font delsnodes coneguts, ens podem trobar que hi ha màquines que estaven actives quan es varealitzar la detecció de nodes però que a l’hora de realitzar el càlcul de l’ample de bandaes poden trobar apagades. Per aquest motiu s’ha acordat de que totes les màquines queno contestin al ping el resultat del seu ample de banda i del temps serà igual a 0.

2.3 Implementació Client/Servidor

Per implementar la nostra eina com s’ha comentat en el disseny d’aquesta ens vamdecantar per un sistema Client/Servidor.

L’estructura del Client/Servidor s’ha creat amb sockets i empra un protocol de co-municació UDP (protocol de comunicació orientat a datagrames). Per crear un sistemaClient/Servidor es pot fer mitjançant el protocol UDP o TCP. A continuació s’exposaràalgunes diferències entre els dos protocols per aclarir el perquè s’ha optat pel protocolUDP.

En el protocol UDP cada vegada que s’envia un datagrama, cal enviar un descriptordel socket local i la direcció del socket que rebrà el datagrama, per tant els missatges

Page 30: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 20

són més grans que en TCP. Com el protocol TCP està orientat a connexió, cal establiraquesta connexió entre els dos sockets abans de res, això implica un cert temps empleaten l’establiment de la connexió, cosa que no és necessari de fer en UDP.

En UDP, hi ha un límit en la mida dels datagrames, establert en 64 KiloBytes,que es poden enviar, mentre que TCP no té límit. Un cop s’ha establert la connexió,el parell de sockets llegeixen les dades immediatament, en el mateix ordre que s’hanrebut.

UDP és un protocol desordenat, no garanteix que els datagrames que s’han enviatsiguin rebuts en el mateix ordre pel socket de recepció. Al contrari, TCP és un protocolordenat, garanteix que tots els paquets que s’envien siguin rebuts en el socket de destíen el mateix ordre en que s’han enviat.

En resum, TCP sembla més indicat per l’implementació de serveis de xarxa comtelnet i la transmissió de fitxers ftp que necessiten transmetre dades amb una longitudindefinida. UDP és menys complex i té una menor sobrecàrrega sobre la connexió iaixò ho fa indicat per l’implementació d’aplicacions Client/Servidor en sistemes distri-buïts muntats sobre una xarxa local. Com el nostre Client/Servidor no ha de transmetredades molt grans, no volem generar molta sobrecàrrega en la connexió i s’implementaen una xarxa local vam optar per emprar el protocol UDP.

2.3.1 Implementació del Client

El Client ha estat implementat amb el llenguatge d’alt nivell C. Aquest realitzarà ladetecció dels nodes, el càlcul l’ample de banda dels nodes i la detecció de la topologiaefectiva.

A continuació s’explica el funcionament del Client, per ajudar a la comprensió delfuncionament d’aquest en la figura 2.4 es detallen els passos que realitza.

Page 31: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 21

Figura 2.4: Diagrama Client

Page 32: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 22

Les funcions que s’anomenaran a continuació, es troben detallades en codi a l’A-pèndix D.

El primer que ha de fer un Client és iniciar una connexió al Servidor, aquesta esrealitza mitjançant sockets. Si s’arrenca en mode automàtic espera l’arribada d’unmissatge del Servidor on l’indicarà els paràmetres per configurar la connexió. Perestablir la connexió cal indicar al socket la direcció IP del servidor i el socket ques’emprarà per establir aquesta comunicació en mode manual. Aquest socket ha de serigual al que utilitza el Servidor, sinó no hi hauria cap comunicació. En mode automàticnomés cal arrencar el Client com s’indica en l’apèndix A.

Un cop el Client ha establert el canal de comunicació amb el Servidor, aquest had’esbrinar la seva direcció IP mitjançant la funció void capturaip(struct dades *info).Això li servirà per detectar els nodes que té a l’abast mitjançant la crida a la funcióvoid ips(struct dades *info) aquestos es guarden en un fitxer anomenat “arp.txt”. Unavegada el Client coneix els nodes que té a l’abast ha de contar-los per tal de realitzarun bucle per calcular el seu ample de banda, això ho fa amb la crida a la funció void

countips(void). Entra en un bucle que no acaba fins que esgota la llista dels nodesconeguts, agafa mitjançant la funció void assignipnode(struct dades *info, int l) unaIP de node per calcular el seu ample de banda emprant la funció void BW(struct dades

*info), un cop a realitzat el càlcul de l’ample de banda del node, aquest es enviat alServidor emprant un missatge del tipus struct dades anomenat info amb les següentscaracterístiques:

• IP del servidor com una array de caràcters.

• IP del client com una array de caràcters.

• IP dels nodes coneguts com una array de caràcters.

• Ample de banda com un número real.

• Temps com un número real.

El Client espera a que el Servidor l’enviï la confirmació de que ha rebut el missatge,una vegada la rep el Client torna al bucle anterior.

Si el Client ha esgotat la llista del nodes coneguts, passa a la següent etapa delprograma que consisteix en determinar si els nodes es troben connectats amb un HUBo amb un SWITCH. Per realitzar aquesta operació s’inicialitza el comptador del bucleper agafar cada node de la llista de nodes coneguts, agafa el primer node i el següenti crea dos threads que criden a les funcions void send_ping_1(struct infomsn *inf) ivoid send_ping_2(struct infomsg *inf) respectivament, per calcular l’ample de bandad’aquests nodes mitjançant les funcions anomenades void BW1(struct infomsg *inf) i

Page 33: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 23

void BW2(struct infomsg *inf) respectivament. Un cop a finalitzat l’execució d’aqueststhreads, es comprova si els nodes es troben en un HUB o en un SWICH que és latopologia efectiva, la informació relativa a aquest procés la trobareu en la secció 2.2.2.

Un cop el client ha calculat l’ample de banda, envia el missatge al Servidor i aquestimprimeix per pantalla la IP del Client, la IP del node, el temps real emprat per calcularl’ample de banda (Temps - Latència) i l’ample de banda.

2.3.2 Implementació del Servidor

El Servidor ha estat implementat amb el llenguatge d’alt nivell C emprant amb filsd’execució (threads) per tal de poder atendre totes les peticions del Clients, d’altraforma el Servidor atendria una petició cada cop. El motiu d’aquesta implementació ésque al emprar el protocol orientat a datagrames UDP, aquest no té control de fiabilitatd’entrega de paquets i per tant si el Servidor estigués atenent a un Client i un altrel’envies una petició, el Servidor no s’adonaria i aquesta es perdria. La tasca consisteixen rebre les dades que l’envia el Client.

A continuació s’explica el funcionament del Servidor, per ajudar a la comprensiódel funcionament d’aquest, en la figura 2.5 es detallen els passos que realitza.

Les funcions que s’anomenaran a continuació, es troben detallades en codi a l’A-pèndix E.

El Servidor si arrenca en mode automàtic ha de capturar la seva direcció IP mitjan-çant la funció void capturaip(struct dades *info), per després detectar els nodes que téa l’abast mitjançant la crida a la funció void ips(struct dades *info) aquestos es guardenen un fitxer anomenat “arp.txt”. Una vegada el Client coneix els nodes que té a l’abastha de contar-los per tal de realitzar un bucle per calcular el seu ample de banda, aixòho fa amb la crida a la funció void countips(void). Entra en un bucle que no acabafins que esgota la llista dels nodes coneguts, agafa mitjançant la funció void assignip-

node(struct dades *info, int l) una IP de node per enviar un missatge del mateix tipusque el del Client, especificat en la secció anterior. Aquest missatge conté la direccióIP del servidor, per tal que el Client s’autoconfiguri i enviï els seus missatges a l’equipcorrecte.

A partir d’aquest punt el Servidor es comporta igual pels dos modes, el servidorobre el socket de comunicació i entra en un bucle infinit while(1) i escolta el socketa l’espera de la petició d’un Client. Quan arriba una petició de Client, el Servidorautomàticament crea un thread per cada petició de connexió dels Clients, d’aquestaforma s’assegura que s’atenen a tots els Clients. El Servidor imprimeix per pantalla lesdades que li arriben del Client.

Page 34: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 2. DISSENY I IMPLEMENTACIÓ DE LA EINA DE DETECCIÓ 24

Figura 2.5: Diagrama Servidor

Page 35: Disseny i implementació d’un sistema de detecció de

Capítol 3

Experimentació

En aquest capítol es mostren els resultats obtinguts pel sistema de detecció de nodes,pel sistema de càlcul d’amples de banda i detecció de la topologia efectiva. Les proveshan estat realitzades en una xarxa real, concretament s’ha analitzat dos subxarxes de laintranet de la UdL. La primera subxarxa és la xarxa d’alumnes, una xarxa hetereogèneaon hi han nodes connectats a 10Mbps i uns altres a 100Mbps. La segona, és unasubxarxa homogenea formada pels nodes del Cluster del grup de recerca GCD de laEPS.

3.1 Descubriment de nodes

En aquesta secció és mostren els resultat obtinguts en realitzar diferent proves de des-cobriment de nodes en la xarxa alumnes. En la primera prova s’ha realitzat el descobri-ment de nodes emprant el sistema de pings de broadcast, veure taula 3.1, mentre queen la segona prova realitzada s’ha emprant el sistema de pings punt a punt, veure taula3.2.

Taula 3.1: Taula arp corresponent a la cerca per broadcast

25

Page 36: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 26

Taula 3.2: Taula arp corresponent ping punt a punt

Com es pot veure, en la prova realitzada emprant pings de broadcast, veure taula3.1, hi han pocs nodes detectats ja que només contesten els nodes que tenen la opció derespondre a pings de broadcast, comentada en la secció 2.2.1, habilitada. En la segonaprova realitzada, veure taula 3.2, podem veure una petita mostra del nodes que ens hancontestat, com podem veure el número de nodes és molt superior a la prova realitzadaemprant pings de broadcast, éssent un total de 247 nodes detectats en 1 hora i mitja.

Page 37: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 27

Per tal d’aconseguir la taula mostrada en la taula 3.2 s’ha filtrat la informació obtingudamitjançant l’script de l’apèndix B, per només obtindre aquell que estan actius.

El principal inconvenient en utilitzar el sistema de detecció punt a punt és que eltemps varia en funció de la quantitat de nodes a detectar que pot ser molt gran endeterminades subxarxes, com per exemple, la xarxa d’alumnes en el nostre cas, on amés a més no totes les màquines estan disposades a col·laborar en el nostre Cluster.La solució òptima a aquest problema seria la utilització d’un dimoni que informi alServidor que aquell node vol participar en el nostre Multicluster.

3.2 Càlcul d’amples de banda

En aquesta secció es mostraran els resultat d’executar el nostre programa Client/Servidora la subxarxa alumnes en les diferents possibles configuracions manual i automàtica.A més a més es comparen els resultats obtinguts amb l’aplicació Bing descrita en lasecció 1.3, emprada per la majoria d’administradors de xarxa i de reconeguda fiabilitat.Els amples de banda calculats s’han fet a partir dels nodes que ens han contestat alspings de broadcast presents en el fitxer arp.txt, són nodes no dedicats i per tant ambmolta variabilitat.

Exemple de funcionament del sistema Client/Servidor i resultats:

Figura 3.1: Servidor en automàtic

Page 38: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 28

Figura 3.2: Client en automàtic

En les figures 3.1 i 3.2 podem comprovar el funcionament del servidor i clientrespectivament (aquestes captures de pantalla van ser realitzades el dia 23 d’Agost ales 17:30h). Acte seguit a la finalització del nostre programa es va llençar el programaBing comentat en la secció 1.3 per tal de comprovar la validesa dels resultats obtinguts,veure figura 3.3.

Page 39: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 29

Figura 3.3: Captura Bing 172.16.2.3

Com es pot veure en la prova realitzada amb el programa Client/Servidor, veurefigura 3.1, l’ample de banda corresponent al node 172.16.2.3 era 8.69Mbps mentre queel resultat que dona el Bing, veure figura 3.3, és de 8Mbps, amb una diferència de0.69Mbps.

Un altre exemple de com pot variar l’ample de banda, ho trobem en una provarealitzada amb el nostre programa el dia 28 d’Agost a les 17:22h, que és mostra en lafigura 3.4, i en la figura 3.5 amb el Bing on la diferència és de 2.42Mbps. Aquestes des-viacions són degudes a que ens trobem en un Cluster no dedicat on existeixen usuarislocals que fan que pugui variar les mesures preses en diferents instants de temps.

Figura 3.4: Captura BW 172.16.8.26

Page 40: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 30

Figura 3.5: Captura Bing 172.16.8.26

Per tal d’estudiar en detall aquest efecte de forma global, en la figura 3.6, es mos-tra una gràfica comparativa dels amples de banda obtinguts entre la nostra eina i elprograma Bing utilitzant 12 nodes. En la taula 3.3 es mostren els resultats obtinguts,representats gràficament en la figura 3.6.

Com es pot comprovar en la gràfica, els càlculs d’ample de banda obtinguts pelsdos programes són pràcticament iguals, obtenint una diferència promig del 3%.

Page 41: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 31

Figura 3.6: Gràfic comparatiu d’amples de banda

IP del node BW Client/Servidor(Mbps) BW Bing(Mbps)172.16.20.20 8.01 7.31172.16.20.11 7.84 7.26172.16.30.1 6.9 6.24172.16.3.100 46.95 39.38

172.16.2.3 8.69 8172.16.20.12 6.31 6.78172.16.40.6 7.23 6.6172.16.40.3 7.12 6.56172.16.0.200 7.72 7172.16.40.2 7.23 6.6172.16.2.1 8.66 7.93

172.16.8.26 1.7 4.12

Taula 3.3: Dades gràfic

3.3 Topologia efectiva

En aquesta fase de la experimentació obtindrem mitjançant la nostra aplicació la topo-logia efectiva de les diferents subxarxes estudiades en el nostre treball (Cluster GCD ialumnes).

Page 42: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 32

En la figura 3.7 es mostra la taula ARP generada a partir de la nostra eina i en lafigura 3.8 es mostra un fragment dels resultats de la topologia efectiva dectada de lasubxarxa del Cluster.

Figura 3.7: Nodes detectats al Cluster

Node 1 = 192.168.50.116Node 2 = 192.168.50.113És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.112És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.115És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.114És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.110És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.111És un SWITCHNode 1 = 192.168.50.116Node 2 = 192.168.50.108És un SWITCH

Figura 3.8: Topologia efectiva

Com podem veure en la figura 2.2.2, el resultat de la topologia efectiva segons el pro-grama és que tots els nodes del Cluster estan interconnectats mitjançant un Switch,

Page 43: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 33

cosa que concorda amb la realitat.Un exemple de l’estructura de l’arxiu XML que s’hauria de generar per aquesta

sortida del programa per poder fer una representació gràfica seria la següent:

<NETWORK type=”Structural”>

<LABEL ip=”192.168.50.1” name=”192.168.50.1” />

<MACHINE name=”loras0” />

<MACHINE name=”loras1” />

<MACHINE name=”loras2” />

<MACHINE name=”loras3” />

<MACHINE name=”loras4” />...

</NETWORK>

La representació gràfica que és generaria a partir del XML anterior seria la de la figura3.9.

Figura 3.9: Diagrama topologia efectiva Cluster

Per a la subxarxa d’alumnes, fent servir els resultats de la taula ARP que es mostraen la figura 3.2, i aplicant la detecció de la topologia efectiva al subconjunt d’adrecesd’una aula determinada obtenim la següent representació mostrada en la figura 3.10.

Page 44: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 34

Figura 3.10: Diagrama topologia efectiva alumnes

Un cop obtingudes les topologies efectives de les dues subxarxes, s’ha de comprovar siexisteix algun node d’unió. Per tal de comprovar-ho es farà ús de l’eina traceroute. Perrealitzar aquesta comprovació, s’ha d’executar traceroute en cada subxarxa, passant-licom a paràmetre la IP d’un node de l’altra subxarxa. En la figura 3.11, es pot observarcom s’ha detectat un equip intermig en la subxarxa d’alumnes. En la figura 3.12, esmostra com ha detectat 2 equips intermitjos. En els dos casos es pot observar que exis-teix un equip que fa de nexe d’unió entre les dues subxarxes, anomenat talarn.udl.es.

Figura 3.11: traceroute subxarxa alumnes

Figura 3.12: traceroute subxarxa Cluster

Page 45: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 3. EXPERIMENTACIÓ 35

En la figura 3.13 es pot veure el diagrama de la topologia efectiva de les dues subxarxesresultant del nostre estudi .

Figura 3.13: Topologia efectiva de les subxarxes

Page 46: Disseny i implementació d’un sistema de detecció de

Capítol 4

Conclusions i Treball Futur

4.1 Conclusions

En aquest treball s’ha descrit la forma i el mètode que s’ha utilitzat per descobrir nodesen una xarxa, com trobar la topologia efectiva i com calcular l’ample de banda delsnodes.

La configuració de xarxa en un sistema Cluster té un paper molt important en elrendiment d’aquest, per això és molt important estudiar la xarxa per tal de proporcio-nar informació a un planificador d’un entorn Multicluster. S’ha buscat la forma méseficient per detectar els nodes, calcular l’ample de banda, que s’ha fet de la formamenys intrusiva possible enviant paquets petits i determinant la topologia efectiva.

S’ha dissenyat i implementat un programa per la detecció de nodes, per trobarla topologia efectiva i per calcular l’ample de banda dels nodes buscat la forma méseficient.

La millor opció per saber quins nodes volen participar en el nostre sistema Multi-cluster és la implementació d’un dimoni que a la vegada que ens indica que aquell nodevol participar, hauria d’enviar informació relativa al hardware del node. Una l’altra for-ma de detectar quins nodes volen participar en el nostre sistema Multicluster és activarla contestació al ping de broadcast, l’únic inconvenient es que per defecte avui en diales distribucions de Linux aquesta opció la tenen deshabilitada i per habilitar aquestaopció és necessiten privilegis de root.

Per últim, s’ha provat que la eina creada en aquest treball funciona correctament ique els resultats que s’obtenen de la seva execució concorden amb els resultats obtin-guts amb les eines que habitualment utilitzen els administradors, com per exemple, enel càlcul de l’ample de banda obtingut per la nostra eina en comparació amb l’obtingutper la eina Bing.

36

Page 47: Disseny i implementació d’un sistema de detecció de

CAPÍTOL 4. CONCLUSIONS I TREBALL FUTUR 37

4.2 Treball futur

Com a treball futur d’ampliació i millora d’aquest treball es plantegen els següentspunts:

• El programa Client/Servidor es podria modificar per tal de que pugui donar mésinformació dels nodes com el tipus CPU, quantitat de memòria RAM, etc, per talde que el planificador pugui filar més prim en l’elecció del millor node. Aque-ta modificació consistiria en que una vegada es realitza el càlcul de l’ample debanda del node es puges capturar informació rellevant ver els hardware i softwa-re del node. Aquesta ampliació es podria realitzar mitjançant l’us del dimonicomentat en l’apartat anterior a l’hora d’arrencar el node.

• És podria millorar el sistema per descobrir en quina xarxa es troben els nostrenodes, per tal de fer que el programa pugui realitzar un diagrama de la topologiaefectiva de la xarxa. Aquesta modificació consistiria en esbrinar de quin equipde xarxa penja cada node del nostre sistema i crear un fitxer XML per crear eldiagrama. Cal remarcar que una possible eina d’ajuda en aquest cas es tracerou-

te.

• És podria implementar una base de dades per emmagatzemar l’informació quearriba al Servidor. D’aquesta forma en una possible integració del programa enun planificador seria més fàcil ja que el planificador només hauria de consultaraquesta base de dades per obtenir la resposta desitjada.

• Una millora que es podria realitzar al programa es la seva integració en un entorngràfic, ja que de cara a l’usuari aquest seria més fàcil de configurar. També éspodria integrar un sistema per representar gràficament les dades obtingudes decada node ja que de cara a l’usuari seria molt més fàcil de veure l’estat d’aquest.

Page 48: Disseny i implementació d’un sistema de detecció de

Apèndix A

Modes de funcionamentClient/Servidor

• Mode manual, consisteix en indicar al Servidor quin port volem emprar per aestablir la comunicació amb el Client i al Client indicar-li la direcció IP delServidor i el port per establir la comunicació. En aquest mode s’ha d’arrencarprimer el Servidor.

– Comanda pel client:

$ ./client -m [IP servidor] [port]

– Comanda pel servidor:

$ ./server -m [port]

• Mode automàtic, el client i el servidor s’autoconfiguren per començar a trans-metre la informació. En aquest mode el Client ha d’estar aixecat avanç que elServidor. El Servidor troba els Clients i els envia un missatge amb la informa-ció per a que es configurin, un cop s’ha acabat aquest procés el Servidor estàpreparat per rebre peticions dels Clients.

– Comanda pel client:

$ ./client -a

– Comanda pel servidor:

$ ./server -a

38

Page 49: Disseny i implementació d’un sistema de detecció de

Apèndix B

Script per filtrar i ordenar lataula ARP

#!/bin/bash

i=0

nom=arp$i.txt

while [ $i -lt 255 ];

do

#Unifiquem tots els arxius generats en la recerca

#en un anomentat aux.txt

echo $nom

cat $nom >> aux.txt

let i+=1

nom=arp$i.txt

done

#Ordenem per IP el fitxer aux.txt

sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 aux.txt>aux_1.txt

#Eliminem els arxius temporals creats per facilitar

#la tasca

rm -f arp*.txt

rm -f aux.txt

echo "Filtrant i ordenant..."

#Filtrem les adrecesMAC dels nodes que no ens han contestat

for ((i=0; i<=64123; i++)) do

RESULTAT=(‘awk ’{print $4}’ aux_1.txt | sed -n ”$i’p’‘)

if [ $RESULTAT != "00:00:00:00:00:00" ]; then

#Generem un fitxer anomenat ips.txt que conté les IP’s

39

Page 50: Disseny i implementació d’un sistema de detecció de

APÈNDIX B. SCRIPT PER FILTRAR I ORDENAR LA TAULA ARP 40

#dels nodes que hem descobert

cat aux_1.txt | sed -n ”$i’p’ >> ips.txt

fi

done

rm -f aux_1.txt

echo FET!!!

Page 51: Disseny i implementació d’un sistema de detecció de

Apèndix C

Llibrería Complements.h

#define DEBUG_SERVER

#define DEBUG_CLIENT

struct dades{

char ip[16];

char ips[16];

float bw;

char ipnode[16];

double temps;

};

41

Page 52: Disseny i implementació d’un sistema de detecció de

Apèndix D

Funcions del Client

• Funció capturaip()

void capturaip(struct dades *info){

int j=0;

char c;

char* capip="/sbin/ifconfig | awk ’{print

$2}’|cut -d ’:’ -f2 -s | sed -n ’1p’";

FILE* ip;

ip=popen(capip, "r");

while((c=getc(ip))!=EOF){

if(c==’\n’){}

else{

info->ip[j]=c;

j++;

}

}

info->ip[j]=’\0’;

pclose(ip);

}

• Funció ips()

void ips(struct dades *info){

char capipnode[25], countlin[33], aux_ip[16];

int count=0, i=0, y=0, z=1;

int vsys;

char comanda[LONGDADES];

FILE* paux;

42

Page 53: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 43

/*Agafem la IP de broadcast*/

for(i=0;count<2;i++){

if(info->ip[i]==’.’){

info->ips[i]=info->ip[i];

count++;

}

else info->ips[i]=info->ip[i];

}

info->ips[i]=’\0’;

strcat(info->ips,"255.255");

strcpy(capipnode,"ping -c 2 -b ");

strcat(capipnode, info->ips);

#ifndef DEBUG_CLIENT

printf("capipnode %s\n", capipnode);

#endif

popen(capipnode, "r");

#ifndef DEBUG_CLIENT

printf("\nAra pots provar l’existencia del arxiu /proc/net/arp\n");

#endif

/*creem un fitxer amb el contingut de la taula arp*/

sprintf(comanda,"cat /proc/net/arp > arp.txt");

if ( (paux=popen(comanda,"w")) == NULL) {

perror("Error en la creació del arxiu\n");

}

}

• Funció countips()

int countips(void){

char countlin[33], c, aux[4];

int i=0, linies;

FILE* lin;

strcpy(countlin,"wc -l arp.txt | awk

’{print $1}’");

lin=popen(countlin,"r");

if(lin==NULL){printf("Error: Arxiu no

trobat\n");}

while((c=getc(lin))!=EOF){

Page 54: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 44

aux[i]=c;

i++;

}

aux[i]=’\0’;

printf("\n");

pclose(lin);

linies=atoi(aux)-1;

return linies;

}

• Funció asignipnode()

void asignipnode(struct dades *info, int l){

char ipnod[46];

char c;

FILE* ipnode;

unsigned int j=0;

sprintf(ipnod, "more arp.txt | awk ’{print

$1}’ | sed -n ’%dp’",l);

ipnode=popen(ipnod,"r");

while((c=getc(ipnode))!=EOF){

if(c==’\n’){}

else{

info->ipnode[j]=c;

j++;

}

}

info->ipnode[j]=’\0’;

pclose(ipnode);

}

• Funció BW()

void BW(struct dades *info){

int j=0, i=0, count;

float bw=0;

char x[6], c, d;

double L=0, t=0;

char calcul[72], calcul2[72];

FILE* calc;

FILE* calc2;

Page 55: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 45

sprintf(calcul, "ping -c 5 %s | awk ’{print

$4}’ | sed -n ’10p’| cut -d ’/’ -f1,2", info->ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 64B\n");

#endif

calc=popen(calcul, "r");

d=getc(calc);

if(d==(-1)){L=0;}

else{

while((c=getc(calc))!=’/’){

x[j]=c;

j++;

}

L=atof(x);

pclose(calc);

}

j=0;

sprintf(calcul2, "ping -s 1016 -c 5 %s |

awk ’{print $4}’ | sed -n ’10p’| cut -d ’/’ -f1,2",

info->ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 1024B\n");

#endif

calc2=popen(calcul2, "r");

d=getc(calc);

if(d==(-1)){info->bw=0; info->temps=0;}

else{

while((c=getc(calc2))!=’/’){

x[j]=c;

j++;

}

j=0;

while((c=getc(calc2))!= EOF){

x[j]=c;

j++;

}

t=atof(x);

pclose(calc2);

/*Fiquem el temps i la latencia en segons i

dividim per 2 ja que el rtt es d’anada i tornada*/

Page 56: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 46

L=L/2000; /*Latencia*/

t=t/2000; /*temps*/

/*Calculem el BW*/

bw=((1024*8)/(t-L))/1000000;

info->temps=(t-L);

/*Fiquem les dades al missatge*/

info->bw=bw;

}

}

• Funció send_ping_1()

void send_ping_1 (struct infomsg *inf)

{

#ifndef DEBUG_CLIENT

printf("Fill1\n");

#endif

#ifndef DEBUG_CLIENT

printf("IPnode: %s\n", &inf->inf1.ipnode);

#endif

BW1(inf); /*Cridem a la funció per obtenir

l’ample de banda*/

#ifndef DEBUG_CLIENT

printf("IP client: %s\n", &inf->inf1.ipnode);

printf("BW1 de client->node: %.2f Mbps\n", inf->inf1.bw_threads);

#endif

pthread_exit(0);

}

• Funció send_ping_2()

void send_ping_2 (struct infomsg *inf)

{

#ifndef DEBUG_CLIENT

printf("Fill2\n");

#endif

#ifndef DEBUG_CLIENT

printf("IPnode: %s\n", &inf->inf2.ipnode);

#endif

BW2(inf);/*Cridem a la funció per obtenir l’ample de banda*/

Page 57: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 47

#ifndef DEBUG_CLIENT

printf("IP client: %s\n", &inf->inf2.ipnode);

printf("BW2 de client->node: %.2f Mbps\n", inf->inf2.bw_threads);

#endif

pthread_exit(0);

}

• Funció BW1()

void BW1(struct infomsg *inf){

int j=0, i=0, count;

float bw=0;

char x[6], c, d;

double L=0, t=0;

char calcul[72], calcul2[72];

FILE* calc;

FILE* calc2;

#ifndef DEBUG_CLIENT

printf("IPNODE BW1: %s", inf->inf1.ipnode);

#endif

sprintf(calcul, "ping -c 5 %s | awk ’{print

$4}’ | sed -n ’10p’| cut -d ’/’ -f1,2",

&inf->inf2.ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 64B\n");

#endif

calc=popen(calcul, "r");

d=getc(calc);

if(d==(-1)){L=0;}

else{

while((c=getc(calc))!=’/’){

x[j]=c;

j++;

}

L=atof(x);

pclose(calc);

}

j=0;

sprintf(calcul2, "ping -s 1016 -c 5 %s |

Page 58: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 48

awk ’{print $4}’ | sed -n ’10p’| cut -d ’/’ -f1,2",

&inf->inf2.ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 1024B\n");

#endif

calc2=popen(calcul2, "r");

d=getc(calc);

if(d==(-1)){inf->inf1.bw_threads=0; inf->inf1.temps=0;}

else{

while((c=getc(calc2))!=’/’){

x[j]=c;

j++;

}

j=0;

while((c=getc(calc2))!= EOF){

x[j]=c;

j++;

}

t=atof(x);

pclose(calc2);

/*Fiquem el temps i la latencia en segons i

dividim per 2 ja que el rtt es d’anada i tornada*/

L=L/2000; /*Latencia*/

t=t/2000; /*temps*/

/*Calculem el BW*/

bw=((1024*8)/(t-L))/1000000;

inf->inf1.temps=(t-L);

/*Fiquem les dades al missatge*/

inf->inf1.bw_threads=bw;

#ifndef DEBUG_CLIENT

printf("L %d, t %d\n",L,t);

printf("bw1 bw: %.2f Mbps\n",inf->inf1.bw_threads);

#endif

}

}

• Funció BW2()

void BW2(struct infomsg *inf){

Page 59: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 49

int j=0, i=0, count;

float bw=0;

char x[6], c, d;

double L=0, t=0;

char calcul[72], calcul2[72];

FILE* calc;

FILE* calc2;

#ifndef DEBUG_CLIENT

printf("IPNODE BW2: %s", inf->inf2.ipnode);

#endif

sprintf(calcul, "ping -c 5 %s | awk ’{print

$4}’ | sed -n ’10p’| cut -d ’/’ -f1,2",

&inf->inf2.ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 64B\n");

#endif

calc=popen(calcul, "r");

d=getc(calc);

if(d==(-1)){L=0;}

else{

while((c=getc(calc))!=’/’){

x[j]=c;

j++;

}

L=atof(x);

pclose(calc);

}

j=0;

sprintf(calcul2, "ping -s 1016 -c 5 %s |

awk ’{print $4}’ | sed -n ’10p’| cut -d ’/’ -f1,2",

&inf->inf2.ipnode);

#ifndef DEBUG_CLIENT

printf("\t Enviant paquet de 1024B\n");

#endif

calc2=popen(calcul2, "r");

d=getc(calc);

if(d==(-1)){inf->inf2.bw_threads=0; inf->inf2.temps=0;}

else{

while((c=getc(calc2))!=’/’){

Page 60: Disseny i implementació d’un sistema de detecció de

APÈNDIX D. FUNCIONS DEL CLIENT 50

x[j]=c;

j++;

}

j=0;

while((c=getc(calc2))!= EOF){

x[j]=c;

j++;

}

t=atof(x);

pclose(calc2);

/*Fiquem el temps i la latencia en segons i

dividim per 2 ja que el rtt es d’anada i tornada*/

L=L/2000; /*Latencia*/

t=t/2000; /*temps*/

/*Calculem el BW*/

bw=((1024*8)/(t-L))/1000000;

inf->inf2.temps=(t-L);

/*Fiquem les dades al missatge*/

inf->inf2.bw_threads=bw;

#ifndef DEBUG_CLIENT

printf("L %d, t %d\n",L,t);

printf("bw2 bw: %.2f Mbps\n",inf->inf2.bw_threads);

#endif

}

}

Page 61: Disseny i implementació d’un sistema de detecció de

Apèndix E

Funcions del Servidor

• Funció capturaip()

void capturaip(struct dades *info){

int j=0;

char c;

char* capip="/sbin/ifconfig | awk ’{print

$2}’|cut -d ’:’ -f2 -s | sed -n ’1p’";

FILE* ip;

ip=popen(capip, "r");

while((c=getc(ip))!=EOF){

if(c==’\n’){}

else{

info->ip[j]=c;

j++;

}

}

info->ip[j]=’\0’;

pclose(ip);

}

• Funció ips()

void ips(struct dades *info){

char capipnode[25], countlin[33], aux_ip[16];

int count=0, i=0, y=0, z=1;

int vsys;

char comanda[LONGDADES];

FILE* paux;

51

Page 62: Disseny i implementació d’un sistema de detecció de

APÈNDIX E. FUNCIONS DEL SERVIDOR 52

/*Agafem la IP de broadcast*/

for(i=0;count<2;i++){

if(info->ip[i]==’.’){

info->ips[i]=info->ip[i];

count++;

}

else info->ips[i]=info->ip[i];

}

info->ips[i]=’\0’;

strcat(info->ips,"255.255");

strcpy(capipnode,"ping -c 2 -b ");

strcat(capipnode, info->ips);

#ifndef DEBUG_CLIENT

printf("capipnode %s\n", capipnode);

#endif

popen(capipnode, "r");

#ifndef DEBUG_CLIENT

printf("\nAra pots provar l’existencia del arxiu /proc/net/arp\n");

#endif

/*creem un fitxer amb el contingut de la taula arp*/

sprintf(comanda,"cat /proc/net/arp > arp.txt");

if ( (paux=popen(comanda,"w")) == NULL) {

perror("Error en la creació del arxiu\n");

}

}

• Funció countips()

int countips(void){

char countlin[33], c, aux[4];

int i=0, linies;

FILE* lin;

strcpy(countlin,"wc -l arp.txt | awk

’{print $1}’");

lin=popen(countlin,"r");

if(lin==NULL){printf("Error: Arxiu no

trobat\n");}

while((c=getc(lin))!=EOF){

Page 63: Disseny i implementació d’un sistema de detecció de

APÈNDIX E. FUNCIONS DEL SERVIDOR 53

aux[i]=c;

i++;

}

aux[i]=’\0’;

printf("\n");

pclose(lin);

linies=atoi(aux)-1;

return linies;

}

• Funció asignipnode()

void asignipnode(struct dades *info, int l){

char ipnod[46];

char c;

FILE* ipnode;

unsigned int j=0;

sprintf(ipnod, "more arp.txt | awk ’{print

$1}’ | sed -n ’%dp’",l);

ipnode=popen(ipnod,"r");

while((c=getc(ipnode))!=EOF){

if(c==’\n’){}

else{

info->ipnode[j]=c;

j++;

}

}

info->ipnode[j]=’\0’;

pclose(ipnode);

}

Page 64: Disseny i implementació d’un sistema de detecció de

Bibliografia

[1] O’reilly Network Safari Bookself. http://safari.oreilly.com

[2] The Linux Documentation Project. http://www.tldp.org

[3] Michael Bauer. Building Secure Servers with Linux. O’reilly. 2003

[4] Seymour Cray. http://www.cray.com/about_cray/seumourcray.html

[5] Seti. http://setiathome.ssl.berkeley.edu

[6] BOINC. http://boinc.berkeley.edu

[7] Folding@home. http://folding.standford.edu

[8] Rocks. http://www.rocksclusters.org/wordpress/

[9] OpenMOSIX. http://openmosix.sourceforge.net/

[10] MOSIX. http://www.mosix.org/

[11] Cóndor. http://www.cs.wisc.edu/condor/

[12] OpenSSI. http://openssi.org/cgi-bin/view?page=openssi.html

[13] Cheops. http://www.marko.net/cheops/

[14] Projecte APPLES. http://apples.ucsd.edu

[15] Gary Shao, Francine Berman, Richard Wolski. Using Effective Network Views to

Promote Distributed Application Performance. PDPTA 1999: 2649-2656

54