Vous êtes sur la page 1sur 17

Rapport Complexité

PROJET RO
COMPLEXITÉ
Problème d'acheminement dans un réseau informatique (Routage)

Elaboré par
KHLIFI Nizar

DRIDI Slim

BOUKHATTELA Bassem
09/07/2021
CLASSE DE 3CINFO GL2

INTRODUCTION

Plusieurs routes sont en général possibles pour atteindre un même destinataire. Une solution
manuelle est tout à fait acceptable et même recommandée pour de petits réseaux, ou bien pour des routes
qui changent très rarement. Par contre, pour de grands réseaux, il faut un algorithme automatique de choix
entre ces routes. L’objectif de ce paragraphe est de décrire quelques-unes des politiques de routage
utilisées pour l’interconnexion des réseaux. L’algorithme de routage doit trouver le « meilleur » chemin
pour aller d’un point source A à une destination B. Nous mettons « meilleur » entre guillemets pour
plusieurs raisons.

Il existe plusieurs critères pour définir la notion de meilleur chemin (on dit aussi le plus court chemin) :

— le moins cher (argent), le plus rapide (en temps), le plus grand débit, le plus sûr, passer par le moins
de nœuds possible, le plus court (en distance)…

Il n’y a aucune raison pour que ces différents critères aient le même optimum. Nous avons donc
à rechercher un optimum multicritère. Or un tel problème est N-P complexe et n’a, en général, pas de
solution exacte.

Il doit prendre en compte des critères d’optimisation globaux, c’est-à-dire qui ne concernent pas
un flot d’information particulier, mais le trafic global écoulé par le réseau. L’exploitant du réseau souhaite
que le terme « meilleur » soit compris au sens suivant :

— écoule le maximum de trafic, utilise équitablement les ressources, sert le plus de clients
possible, garantit l’équité entre les clients, évite les congestions...

Le choix doit être fait en temps réel, c’est-à-dire que l’algorithme de choix (de routage) ne doit
pas être « coûteux » au point par exemple d’augmenter démesurément le délai d’acheminement des
messages ou de saturer le réseau. Donc, le meilleur chemin peut être celui que l’on a découvert le plus
vite, même si cela n’optimise complètement aucun des critères précédents. La notion de coût ici recouvre
à la fois les délais et la charge réseau induite par l’algorithme. La situation d’un réseau change sans arrêt
et il n’est pas possible d’avoir une vue globale exacte à un instant « t », encore moins du futur. Donc une
décision prise à l’instant « t » peut être optimale mais ne l’est pas forcément à l’instant « t + ýτ ». Doiton
reconsidérer toute décision à chaque changement d’état ? Le réseau peut être vu comme un graphe G =
(V, N), où V est l’ensemble des voies et N l’ensemble des nœuds. Deux fonctions peuvent être
spécifiées : D (débit ou capacité), V->ℜ+ , définit le débit de la voie et C (coût), V->ℜ+ , définit le coût

1
de la voie. Soit un couplet (Γs , Γd ) de nœuds de Ν, réaliser un routage entre un nœud de Γs et un nœud
de Γd consiste à trouver un ensemble ∆ ⊆ V tel qu’il existe une suite (V1 ,V2 ,...Vn ) qui conduise du
nœud source au nœud destination.

1. Classification des protocoles de routage :

1. Informations centralisées ou reparties

1.1 Centralisées : Les routeurs connaissent la topologie complète, Link-State Routing Algorithm
1.2 Réparties
• Les routeurs ont une vue locale réseau.
• échange d’information entre voisins. Distance-Vector Routing Algorithm
2. Routages statiques ou dynamiques
• Statique : les routes changent lentement
• Dynamique : les routes changent rapidement (Périodiquement ou lors d’une
modification de cout).

2. Comprendre le sujet :

2.1 Historique 

Les réseaux informatiques ont mis beaucoup de temps à déployer le routage dans toute sa
dimension en raison des monopoles dans les télécommunications. Dans les années 1970 aux États-Unis,
lors de la numérisation du réseau d'AT&T (voir Réseau téléphonique commuté)1, IBM et DEC créent les
architectures SNA et DECnet, encore très centralisées et peu ouvertes. En France, le réseau Cyclades,
poussé par la CII et sa Distributed System Architecture, est plus ouvert et permet de partager les
ressources informatiques des centres universitaires et de grandes entreprises en forte croissance
comme EDF ou le Commissariat à l'énergie atomique, mais freiné par les prétentions du Réseau Transpac,
imposé par les PTT et orienté vers la commutation de circuits plutôt que le routage. La Distributed
System Architecture a cependant été reconnue par la création du Modèle OSI, encourageant l'étape
suivante, avec les protocoles TCP/IP.

2.2 Difficultés du routage :

Des algorithmes de calcul de route sont nécessaires. Ils peuvent être réalisés de manière
centralisée ou distribuée. La politique de routage, mise en œuvre par l’algorithme de routage, doit éviter
plusieurs problèmes :

— la congestion, phénomène qui se produit lorsqu’un trafic trop important converge vers un
routeur ou une liaison qui ne peut l’écouler. Cette congestion locale risque alors de se propager vers les
routeurs adjacents et de conduire ainsi à un blocage du réseau global. On peut ici faire l’analogie avec ce

2
que l’on connaît bien dans les réseaux routiers (les bouchons). Un réseau congestionné a un débit global
faible, voire nul ;

— le contournement des éléments en panne, un routeur ou une liaison peuvent cesser de


fonctionner. Il faut informer les autres routeurs que cette voie est indisponible et proposer des routes
alternatives. Réciproquement, il faut récupérer l’usage de cette voie lorsque la réparation a été effectuée.
Ces adaptations aux modifications dynamiques doivent être opérées suffisamment rapidement pour être
efficaces et pas trop rapidement pour ne pas créer d’instabilité ;

— ne pas nécessiter que chaque routeur ait à connaître la topologie globale du réseau.
L’interconnexion de réseaux (publics ou locaux) entre eux est souvent le fait d’accords entre plusieurs
entités : sociétés, universités, administrations… pour construire un système de communication commun.
L’adhésion est volontaire et chacun souhaite rester maître chez lui. Il n’est donc pas, en général,
souhaitable ou acceptable de devoir créer une entité supérieure pour administrer le réseau. On cherche
pour satisfaire ce besoin à utiliser des algorithmes de routage qui se contentent d’utiliser les informations
qu’ils peuvent obtenir de leurs seuls voisins immédiats. Chaque administrateur d’une entité adhérente au
réseau n’a besoin de collaborer qu’avec les responsables des réseaux voisins auxquels il est raccordé.
Cela n’empêche pas par ailleurs que la structure de connexion du réseau soit réalisée de manière
hiérarchisée ;

— de chercher à atteindre des noms qui n’existent pas dans le réseau ou qui sont inaccessibles. Il
est nécessaire que chaque routeur ait une connaissance non pas de tous les noms individuels existant dans
le réseau, mais des espaces de noms qui peuvent être atteints en utilisant une voie de sortie du routeur,
sans préjuger de l’existence de ce nom ni de ce que fera le routeur suivant. Pour chaque voie de sortie
possible, le routeur connaît ou apprend dynamiquement l’espace de noms accessibles. Bien évidemment,
cet espace de noms change au cours de la vie du réseau.

Enfin, la complexité de l’algorithme doit rester modérée de façon à pouvoir être installé dans les
nœuds de commutation. Du fait de cette variété de critères, il existe de nombreux algorithmes de routage.
L’algorithme de routage du réseau d’un opérateur peut rester secret ou propriété de cet opérateur. En
principe, les utilisateurs n’ont pas besoin de le connaître. Par contre, pour interconnecter des réseaux
privés ou publics, il faut un algorithme de routage public et surtout un protocole public entre les nœuds
pour gérer cet algorithme.

3. Représentation matricielle du maillage

Le réseau maillé peut être représenté par une matrice source-destination (cf. figure 1.1.). Chaque
case de la matrice indique l’existence ou la non-existence d’une voie directe entre une source et une
destination. Les caractéristiques de la voie : débit, délai de propagation... sont fournies. Ici, les voies sont

3
supposées bidirectionnelles, ce qui fait que la matrice est symétrique. Ce ne serait pas le cas pour les
voies unidirectionnelles (sens unique). Trouver un chemin pour aller d’un nœud à un autre nœud consiste
à trouver un chemin dans cette matrice.

Le maillage est une structure statique dans la mesure où l’on n’ajoute (ou ne retire
définitivement) pas fréquemment de nouveaux nœuds ou de nouvelles voies entre les nœuds. Néanmoins,
cela se produit et doit être introduit dans la matrice. Pour un nouveau nœud, il faut ajouter une nouvelle
colonne et une nouvelle ligne. Par contre, la disparition temporaire d’une voie (panne, coupure) peut être
représentée simplement en mettant la caractéristique débit de cette voie à zéro et le délai à la valeur infini.
Il n’est pas nécessaire de modifier la matrice complète pour une panne temporaire.

Des algorithmes itératifs ou récursifs sont capables de trouver l’ensemble des chemins possibles
entre tout couple de nœuds. On notera Ci,j= {c1 i,j, c2 i,j, ...c n i,j} l’ensemble des chemins entre le nœud
i et le nœud j, et ck i,j le ke chemin entre i et j

figure 1.1 : Matrice représentant le maillage du réseau

Parmi les n possibles. Notons que cette définition tolère les cycles et le passage par le même
nœud plusieurs fois. De ce fait Ci,j peut être infini. Pour le rendre fini, il faut interdire les cycles dans les
chemins (passage deux fois par une voie déjà parcourue). Du fait de l’interdiction de repasser par une
même voie, les nœuds qui n’ont que deux voies sont pour le routage, soit des points terminaux (ou
d’entrée), soit des simples répéteurs. C’est le cas des nœuds 5 et 8 sur notre exemple. Nous les conservons
car ils permettent d’atteindre des abonnés locaux et rendent l’exemple plus réaliste tout en lui conservant
une certaine simplicité.

4
figure 1.2 : Structure de notre réseau maillé exemple en supprimant la prise en compte de la topologie ; la valeur du
coût pour chaque voie est notée

La figure 1.2 montre le réseau maillé simplifié en le dépouillant de toute référence à une
topologie réelle. On notera que cette représentation favorise l’idée que le chemin le plus court est en
nombre de nœuds (ce qui est vrai uniquement si l’expression « plus court » considère le nombre de nœuds
ou voies traversés ou parcourus). Nous utiliserons désormais plus volontiers cette représentation
dépouillée.

5
4. Solution Proposée :

4.1 Le protocole de routage RIP

Le protocole de routage RIP est

• un protocole base sur les vecteurs de distances

• une version distribuée de l’algorithme de Bellman et Ford.

• décrit dans le RFC 1058 (Request for Comments : 1058)

• Itératif, asynchrone: chaque iteration locale est déclenchée par :

• un changement local de cout de liens

• Une réception de messages d’un voisin signifiant un changement decout de chemin.

• Reparti : Chaque noeud informe son voisin seulement quand un cout d’un chemin change.(notification
faite quand c’est necessaire)

Itératif : continue tanque il ya des informations a changer

Asynchrone: chaque noeud est indépendant

Distibué: aucun noeud n’a la vision complète du réseau

6
7
8
9
L'algorithme de Bellman-Ford résout le problème des plus courts chemins avec origine unique où
les poids des arcs peuvent avoir des valeurs négatives. Étant donné un graphe orienté pondéré G = (V, E),
de fonction de poids w, et une origine s, l'algorithme retourne une valeur booléenne indiquant s'il existe
un circuit de poids négatif accessible depuis s. S'il n'en existe pas, l'algorithme donne les plus courts
chemins ainsi que leurs poids

1: pour tout sommet v ∈ V faire // Initialisation

2: d[v] ← ∞, π[v] ← NIL

3: d[s] ← 0

4: pour i de 1 à |V | − 1 faire

5: pour tout arc (u, v) ∈ E faire // relâchement de l'arc (u, v)

6: si d[v] > d[u] + w(u, v) alors

7: d[v] ← d[u] + w (u, v), π[v] ← u

8: pour tout arc (u, v) ∈ E faire // détection des circuits négatifs

9: si d[v] > d[u] + w(u, v) alors

10: retourner Faux

11: retourner Vrai

La complexité de la solution

Il ya au plus N itération , chacune d’entre elles consiste a regarder les prédécésseurs de tous les
sommets,c’est-a-dire exactements les M arcs avec une liste d’adjacence comme structure de données de
graphe , cela garantit une complexité de O(N.M)

10
4.2 Solution: Protocole IS-IS (Intermediate system to intermediate system)

4.2.1 Qu’est-ce que ISIS?

IS-IS (Intermediate system to intermediate system) est un protocole de routage interne multi-


protocoles à états de lien. Ce protocole est défini dans la norme internationale ISO/CEI 10589:2002 de
l'Open Systems Interconnection (OSI). Bien qu'IS-IS ne soit pas un standard internet, l'Internet
Engineering Task Force (IETF)

IS-IS est un protocole à état de liens utilisé à l'intérieur d'un autonomous system (RFC 19302).


Les routeurs IS-IS maintiennent une vue topologique commune. La base de données topologique est
construite individuellement et ensuite partagée entre tous les routeurs. Les paquets sont transmis par le
plus court chemin. L'algorithme utilisé pour calculer les routes est l'algorithme SPF d'Edsger Dijkstra.

Le protocole IS-IS a été développé par Digital Equipment Corporation dans le cadre


de DECnet Phase V. Il a été ensuite standardisé par l'ISO en 1992 sous ISO 10589 pour la communication
entre équipements réseau appelés Intermediate Systems (par opposition aux End Systems, les hôtes) par
l'ISO. Le but d'IS-IS était de permettre le routage de datagrammes en utilisant la pile de
protocole OSI appelée CLNS.
Le protocole a été développé a peu près en même temps que celui de l'IETF, OSPF. IS-IS a été ensuite
développé pour permettre le routage de datagrammes IP. Cette version d'IS-IS est alors appelée Integrated
IS-IS (RFC 11953), et permet également de router l'IPv6 (RFC 53084). Par la suite elle a encore évolué
en Multi-Topology IS-IS (RFC 51205) pour permettre de router plusieurs protocoles en même temps en
maintenant si besoin des topologies réseau différentes pour chacun (IPv4 et IPv6 notamment).
OSPF est le plus populaire des protocoles IGP, surtout dans les réseaux d'entreprises. IS-IS est moins bien
connu et est utilisé dans des grands réseaux de fournisseurs de services.
IS-IS a bénéficié d'un regain de popularité plus récemment, et est devenu une solution de rechange
possible à OSPF dans les réseaux d'entreprise. La stabilité6 et la scalabilité7 d'IS-IS sont des
caractéristiques qui font que ce protocole est préféré chez les fournisseurs de service.

4.2.2 Attributs des fonctions de routage

- Exact et simple

- Robuste et stable

- Optimal et juste

- IS-IS est moins bien connu et est utilisé dans des grands réseaux de fournisseurs de services.

- Le défi: comment choisir une route à travers un réseau

11
- ◦Utilise une table qui associe les nœuds de réseau aux lignes de sorties

- Utilise Algorithmes Dijkstra

4.2.3 Exemple d’un réseau de commutation de paquets :

4.2.3 Algorithme Dijkstra:

En théorie des graphes, l'algorithme de Dijkstra (prononcé [dɛɪkstra]) sert à résoudre le problème du plus


court chemin. Il permet, par exemple, de déterminer un plus court chemin pour se rendre d'une ville à une
autre connaissant le réseau routier d'une région. Plus précisément, il calcule des plus courts chemins à
partir d'une source vers tous les autres sommets dans un graphe orienté pondéré par des réels positifs. On
peut aussi l'utiliser pour calculer un plus court chemin entre un sommet de départ et un sommet d'arrivée.
L'algorithme porte le nom de son inventeur, l'informaticien néerlandais Edsger Dijkstra, et a été publié en
19593.
L'algorithme de Dijkstra permet de résoudre un problème algorithmique : le problème du plus
court chemin. Ce problème a plusieurs variantes. La plus simple est la suivante : étant donné un graphe
non-orienté, dont les arêtes sont munies de poids, et deux sommets de ce graphe, trouver un chemin entre
les deux sommets dans le graphe, de poids minimum. L'algorithme de Dijkstra permet de résoudre un
problème plus général : le graphe peut être orienté, et l'on peut désigner un unique sommet, et demander
d'avoir la liste des plus courts chemins pour tous les autres nœuds du graphe.
N = ensemble des nœuds du réseau
s = nœud source
T = ensemble des nœuds considérés par l’algorithme jusqu’à présent

12
w(i,j) = coût du nœud i au nœud j; w(i,i)=0 et w(i,j) = ∞ si les deux nœuds ne sont pas liés
directement; w(i,j) ≥ 0 si le deux nœuds sont liés directement
L(n) = coût du chemin le plus court du nœud s au nœud n, calculé jusqu’à présent

4.2.4 Algorithme Dijkstra étapes :

Étape 1: Initialisation

◦Initialise T = {s} , i.e. les nœuds considérés contient le nœud source

◦L(n) = w(s,n) pour n ≠ s, i.e. coût des chemins au début égale coût des liaisons

Étape 2: Prochain nœud

Trouvez le nœud voisin x qui n’est pas dans T, ayant le chemin le plus court du nœud s.
Ajoutez ce nœud x à T.

Étape 3: Mettre à jour les coûts

Si les voisins de w offre un chemin L(n) plus court, le nouveau chemin replace le vieux.

◦L(n) = min[L(n), L(x) + w(x, n)] for all n Ï T

Appliquons l’algorithme à l’exemple de réseau pour le nœud 1

4.2.5 Routage état de liaison :

◦Chaque routeur envoie un paquet d'état de liaison (LSP - link state packet) à ses voisins

◦Un routeur envoie son LSP ainsi que les LSP qu'il a reçus

13
◦Un routeur prend ses décisions d'acheminement à partir de l'information de sa base de données d'état de
liaison

Soient n le nombre de noeuds et a le nombre d’arcs:


- L’étape de sélection du noeud qui devient permanent requiert au plus n opérations.
- On l’ a fait au plus n fois; donc cela demande un total d’au plus n² opérations.
- Le réajustement des distances demande qu’on examine chaque arc au plus une fois;
donc ce travail requiert ‘a ‘ opérations.

4.2.6 Compléxité de l’algorithme de Dijkstra:

Au total, l’algorithme effectue au plus n² + a opérations ≤ 2 n² opérations

O(nbNoeuds * ln (nbNoeuds) + nbLiaisons)

C’est une solution a complexité polynomiale

O(nlog(n) + a)

avec n : le nombre de routeurs

a le nombre de liaison entre les différents routeurs.

14
4.3 Solution: Protocole OSPF

OSPF calcule les plus courts chemins en trois étapes. A la première étape, chaque routeur calcule
le SPT pour la zone interne (intra-area stage). A la deuxième étape, il calcule les routes pour chaque
routeur à distance en choisissant un routeur à la frontière comme nœud intermédiaire basé sur des
informations du poids total (inter-area stage). En fin, la dernière étape, il calcule routes pour chaque nœud
externe en choisissant un routeur à la frontière d'AS comme nœud intermédiaire (external stage) . En
réalité, pour réduire la complexité du calcul de SPT, la plupart des vendeurs des routeurs limitent la taille
d'une zone entre 50 et 500 routeurs.

4.3.1 Exemple:

4.2.6 Compléxité de la solution:

C’est une solution a complexité polynomiale plus précisément: O (a+nlog (n))

Avec n le nombre de routeurs et a le nombre de liaison entre les différents routeurs.

15
CONCLUSION

C’est le rôle d’un algorithme spécifique de calculer la meilleure route possible entre tous les
couples de correspondants possibles. Cet algorithme est exécuté soit périodiquement, soit sur événement
réseau (exemple : panne de routeur). Cet algorithme peut être :

— centralisé : c’est-à-dire exécuté par un seul site de gestion qui envoie les résultats aux routeurs (cas des
tables de routage réparties). Il est évident que, si la table de routage est centralisée, le centre de gestion
effectue l’algorithme de recherche des chemins optimaux. Cette approche a l’avantage de fournir un
résultat cohérent à tout instant pour les choix de chemin. Si les tables sont réparties, le site ayant exécuté
l’algorithme distribue aux routeurs les résultats qui le concerne. Pendant ce temps, des décisions
cohérentes peuvent être prises puisque l’on ne peut pas garantir que tous les routeurs recevront leur
fraction de table simultanément. Les informations de changement d’état local à chaque routeur doivent
être envoyées au site de gestion ;

— distribué : chaque routeur effectue l’algorithme en fonction des informations locales et de celles qu’il
reçoit des autres routeurs. Les exécutions ne sont bien évidemment pas synchrones. Un changement peut
intervenir à tout instant en un point quelconque du réseau.

Les tables locales évoluent donc de manière différentes dans chaque routeur. Pour obtenir un
résultat cohérent, il faut que l’algorithme converge en un nombre d’échanges entre routeurs raisonnable.
La convergence de l’algorithme est toujours une fonction proportionnelle au nombre de routeurs. La
convergence prend un certain temps qui doit être inférieur à la durée entre deux invocations de
l’algorithme, sinon la solution va diverger.

Il est nécessaire que chaque routeur effectue en permanence une mesure des grandeurs qui vont
être utiles à l’exécution de l’algorithme de calcul des chemins. Ces grandeurs sont : le délai de traversée
du routeur, les activités des lignes dont il dispose, le délai d’acheminement des messages, le taux
d’utilisation des ressources locales, la tailles des files d’attente, etc. Elles vont permettre de calculer un
coût pour une liaison. C’est une fonction de coût global qui va être minimisée dans le calcul des tables de
routage. Une liaison coupée (en panne, absente…) aura un coût infini afin d’interdire ce chemin.

Il existe de nombreux algorithmes de routage .Nous n’avons donné ici que la philosophie des principes
utilisés. Les algorithmes de routage sont le plus brillant exemple d’algorithme réparti complexe. Ils
continuent à faire l’objet de nombreuses études pour les réseaux, les machines parallèles… Ils sont
indépendants des requêtes des utilisateurs et leur sont totalement transparents.

Il est important de se rappeler que la fonction de routage introduit des délais aléatoires pour la
transmission des messages dont les couches utilisatrices du service devront s’accommoder.

16

Vous aimerez peut-être aussi