Introduction à TCP/IP et aux routeurs de type IOS (Cisco)

Alexandre Dulaunoy (adulau@metatix.com)

Version 0.1

Table des matières

1 Introduction 1 1.1 Modèle OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Modèle TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 TCP / UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.2 IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.3 ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Routage IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 Routage dynamique . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Services UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4.1 DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Services TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.5.1 SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.2 POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Router CISCO 6

2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 Processus de démarrage . . . . . . . . . . . . . . . . . . . . . 8

2.2 Software (IOS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.1 Porte console . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.2 Interpreteur de commande (CLI exec) . . . . . . . . . . . . . 9 2.2.3 Les fichiers de configuration . . . . . . . . . . . . . . . . . . . 9 2.2.4 Images IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.5 Configuration générale des interfaces . . . . . . . . . . . . . . 9

2.3 Gestion des problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1 Introduction

1.1 Modèle OSI

Le but de l’OSI(ISO) est de créer un modèle idéal ou chaque couche effectue une tâche définie et dépend des services de la couche inférieure. Chaque couche donc fournit ses propres services à la couche supérieure.

Couche physique (1) La couche physique transfère les bits à travers un canal de communication. Ses bits encodés peuvent être en numérique mais aussi en analogique. Cette couche transmet les bits venant de la couche de données à l’interface physique et inversément. (support physique : Paire torsadée, coaxial, FO...)

Couche liaison de données (2) La couche liaison de données prend les données de la couche physique et fournit ses services à la couche réseau. Les bits reçus sont assemblés en trames^{1}. (liaison possible : Ethernet, Frame Relay, X.25, PPP...)

Couche réseau (3) La couche réseau gère les connexions entre les noeuds du réseau. Un routeur, par exemple, travaille au minimum dans cette couche. Dans le modèle TCP/IP, la fonction de la couche réseau est assurée par IP^{2}. (IPv4 ou IPv6)

Couche transport (4) La couche de transport offre des services supplémentaires par rapport à la couche réseau. Cette couche garantit l’intégrité des données. Son travail consiste à relier un sous-réseau non fiable à un réseau plus fiable. Dans le modèle TCP/IP, la fonction de la couche transport est assurée par TCP^{3} et par le protocole UDP^{4}.

Couche session (5) La couche de session gère les connexions entre les applications coopérantes. Le modèle TCP/IP ne possède pas de couche de session car TCP fournit une grande partie des fonctionnalités de session. Mais le service NFS, par exemple, peut utiliser le protocole RPC qui lui, est dans la couche de session. Beaucoup d’applications TCP n’utilisent pas les services de la couche session.

Couche présentation (6) La couche de présentation gère la représentation des données. Pour représenter les données, il existe ASCII, EBCDIC... Un langage commun doit être utilisé pour une bonne compréhension entre les différents noeuds du réseau. Par exemple, il existe le langage ASN.1 pour la représentation des données en SNMP (XDR pour NFS, Base64 pour SMTP...). Plusieurs applications TCP n’utilisent pas les services de cette couche.

Couche d’application (7) La couche d’application fournit les protocoles et les fonctions nécessaires pour les applications clients. Il existe un nombre important de services fournis par la couche d’application. Dans le modèle TCP/IP, on peut citer comme services : FTP,SMTP,POP3,HTTP^{5}.

1Unité logique de bits assemblés.

2Internet Protocol

3Transmission Control Protocol

4User Datagram Protocol

5Nous montrerons des exemples d’intéraction avec ces services, un peu plus loin.

1.2 Modèle TCP/IP

1.2.1 TCP / UDP

TCP et UDP sont les deux protocoles principaux dans la couche de transport. TCP et UDP utilisent IP comme couche réseau. TCP procure une couche de transport fiable, même si le service qu’il (IP) utilise ne l’est pas. TCP est orienté connexion, c’est-à-dire qu’il réalise une communication complète entre 2 points. Cela permet d’effectuer une communication client/serveur, par exemple, sans se préoccuper du chemin emprunté.

UDP émet et reçoit des datagrammes^{6}. Cependant, contrairement à TCP, UDP n’est pas fiable et n’est pas orienté connexion. Il est utilisé pour les résolutions DNS et aussi pour TFTP.

1.2.2 IP

IP est le protocole principal de la couche réseau. Il est utilisé à la fois par TCP et UDP. Chaque bloc de données TCP,UDP, ICMP et IGMP qui circule est encapsulé dans de l’IP. IP est non fiable et n’est pas orienté connexion (contrairement à SNA par exemple).

Par non fiable, nous voulons dire qu’il n’existe aucune garantie pour que le datagramme IP arrive à la destination. Si, par exemple, un datagramme IP arrive à un routeur saturé, le routeur efface le paquet et envoie un message ICMP “unreachable” à la source. La fiabilité d’une connexion doit être maintenue par TCP.

“Pas orienté connexion”, signifie que IP ne maintient aucune information d’état concernant les datagrammes successifs. Le trajet des datagrammes pour atteindre B à partir de A, n’est peut être pas le même. Les datagrammes peuvent également arriver dans le désordre par exemple. L’avantage majeur de cette technique du moindre effort, c’est la grande tolérance, notamment, vis-à-vis des pannes de l’infrastructure.

Masque de sous-réseau 1.2.3 ICMP

6unité d’information

ICMP est souvent considéré comme faisant partie de la couche IP. ICMP communique des messages (erreurs, modification, information). La commande “ping”, qui permet de voir si une machine répond, utilise ICMP (echo).

          PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
          64 bytes from localhost.localdomain (127.0.0.1) : icmp_seq=0 ttl=255 time=0.1 ms
          64 bytes from localhost.localdomain (127.0.0.1) : icmp_seq=1 ttl=255 time=0.1 ms
          64 bytes from localhost.localdomain (127.0.0.1) : icmp_seq=2 ttl=255 time=0.1 ms
          64 bytes from localhost.localdomain (127.0.0.1) : icmp_seq=3 ttl=255 time=0.1 ms
          64 bytes from localhost.localdomain (127.0.0.1) : icmp_seq=4 ttl=255 time=0.1 ms
          --- localhost.localdomain ping statistics ---
          5 packets transmitted, 5 packets received, 0% packet loss
          round-trip min/avg/max = 0.1/0.1/0.1 ms

Une fonctionnalité intéressante de ICMP est le “redirect”. Il est courant de n’avoir qu’un default gateway sur une workstation mais celle-ci doit atteindre plusieurs réseaux sans passer par le même gateway. La solution est de créer toutes les routes statiques sur le default gateway. Lorsque la workstation veut atteindre une destination passant par un autre gateway, le default gateway émet un ICMP redirect. Ce n’est pas le seul cas d’utilisation, il sert aussi lors de changement de la topologie (ligne down, ...).

1.3 Routage IP

1.3.1 Concept

En théorie, le routage IP est simple, particulièrement dans le cas d’une workstation. Si une machine de destination est directement connectée à une autre machine (par exemple : une liaison PPP) ou sur un réseau partagé (par exemple : Ethernet), alors le datagramme IP est envoyé sans intermédiaire à cette destination. Par contre, le routage est plus complexe sur un routeur ou sur un machine avec plusieurs interfaces.

Le routage IP est effectué sur le base de “saut à saut” (hop to hop routing). Les étapes du routage IP peuvent être découpées de cette manière :

1. Recherche, dans une table de routage, de l’entrée associée à l’adresse IP de destination. S’il trouve une correspondance entre la table de routage et l’adresse de destination, le datagramme IP est envoyé au routeur de “saut suivant”(nexthop router). Ce cas de figure est utilisé pour les liaisons point à point.

2. Recherche, dans la table de routage, de l’entrée correspondant exactement à l’indentificateur du réseau de destination. Si cette adresse est localisée, envoi du paquet au routeur de saut suivant indiqué ou à l’interface directement connecté (par exemple : si l’interface existe sur le routeur). C’est ici aussi que l’on tient compte des masques de sous-réseau.

3. Recherche, dans la table de routage, de l’entrée par défaut. Envoi du paquet au routeur “de saut suivant” si cette entrée est configurée.

Si le déroulement de ces 3 phases est correct, alors le datagramme IP est délivré au prochain routeur ou host. Par contre, si cela n’est pas le cas, un message ICMP (host unreachable ou network unreachable) est envoyé au host d’origine et le datagramme IP est jeté.

Voici une sortie de la table de routage d’un routeur CISCO :

          lab-bt#sh ip route
          Codes : C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
                 D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
                 N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
                 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
                 i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate
          default
                 U - per-user static route, o - ODR

          Gateway of last resort is 0.0.0.0 to network 0.0.0.0
          C    128.253.0.0/16 is directly connected, Ethernet0
               10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
          S       10.130.10.3/32 is directly connected, BRI0
          S       10.130.10.0/32 [1/0] via 10.130.10.3
          C       10.132.0.0/16 is directly connected, Loopback0
          S*   0.0.0.0/0 is directly connected, BRI0
          lab-bt#

1.3.2 Routage dynamique

Lorsqu’un réseau atteint une taille assez importante, il est très lourd de devoir ajouter les entrées dans les tables de routage à la main. La solution est le routage dynamique. Cela permet de mettre à jour les entrées dans les différentes tables de routage de façon dynamique.

RIPv1(Routing Information Protocol) C’est le protocole (distance vector protocol) le plus vieux mais qui est toujours implanté sur beaucoup de sites. C’est un protocole de type IGP (Interior Gateway Protocol) qui utilise une algorithme permettant de trouver le chemin le plus court. Il supporte un maximum de 15 noeuds traversés (il n’est pas adapté au réseau de grande taille). Il fonctionne par envoi de messages toutes les 30 secondes. Les messages RIP permettent de dresser une table de routage.

RIPv2 (Routing Information Protocol) C’est une version améloriée pour ajouter le support des sous-réseaux (subnets), des liaisons multipoints et de l’authentification.

EIGRP Ce protocole (Hybrid link-state & distance vector protocol) de routage a été developpé par Cisco pour améliorer RIP et le rendre plus stable. Il fonctionne très bien mais il est bien sûr uniquement compatible avec les produits Cisco.

OSPF(Open Shortest Path First) C’est la deuxième génération de protocole de routage (Link-state protocol). Il est beaucoup plus complexe que RIP mais ses performances et sa stabilité sont supérieures. Le protocole OSPF utilise une base de données distribuées, qui garde en mémoire l’état des liaisons. Ces informations forment une description de la topologie du réseau et de l’état de l’infrastructure. Le protocole RIP est adapté pour des réseaux de taille raisonnable par contre OSPF est de meilleure facture pour les réseaux de taille importante (par exemple ISP).

BGP (Border Gateway Protocol) BGP est utilisé sur Internet pour le routage entre, par exemple, les différents systèmes autonomes OSPF. Ce protocole a été créé pour des besoins propres à Internet suite à la grande taille du réseau lui-même.

IDRP (Interdomain Routing Protocol - IPv6)

1.4 Services UDP

1.4.1 DNS

1.5 Services TCP

1.5.1 SMTP

SMTP fournit un mécanisme d’échanges et de transports pour le courrier électronique entre 2 hosts. Le protocole utilisé est très simple et existe depuis de nombreuses années. Il a évolué pour suivre les évolutions du courrier électronique.

Voici un exemple de session SMTP :

          [root@localhost /]# telnet unix.be.EU.org 25
          Trying 195.207.52.100...
          Connected to unix.be.EU.org.
          Escape character is '^]'.
          220 ns.synoptic.be ESMTP Sendmail 8.9.1/8.9.1; Fri, 19 May 2000 11 :58 :46
          +0200
          HELO .
          250 ns.synoptic.be Hello [195.74.211.67], pleased to meet you
          MAIL FROM :<alexandre.dulaunoy@ibt.be>
          250 <alexandre.dulaunoy@ibt.be>... Sender ok
          RCPT TO :>^[[D
          553 ... Unbalanced '>'
          RCPT TO :<adulau@be.linux.org>
          250 <adulau@be.linux.org>... Recipient ok
          DATA
          354 Enter mail, end with "." on a line by itself
          test
          .
          250 LAA10999 Message accepted for delivery
          QUIT
          221 ns.synoptic.be closing connection
          Connection closed by foreign host.

Nous utiliserons telnet pour essayer une connexion sur un serveur smtp (port 25). La commande telnet permet de définir le port de connexion (par défaut c’est 23 (telnet)).

HELO .

Cette commande permet de réaliser le “handshake” entre le serveur et le client. La réponse du serveur est positive (code 250).

MAIL FROM :<alexandre.dulaunoy@ibt.be>

Le “mail from” définit l’origine du message. Il est à noter que la majorité des serveurs SMTP demande un domain valide (cf. SPAM).

RCPT TO :<adulau@be.linux.org>

Comme pour le “mail from”, le “rcpt to” définit le (ou les) destinataire(s) du message.

Ensuite, le “DATA” définit le début du message (encodé ou pas). le “.” termine le contenu du message. Ensuite le serveur SMTP confirme l’acception du message. Vous pouvez ensuite faire la même chose ou faire un “QUIT” pour quitter la session TCP.

1.5.2 POP3

2 Router CISCO

2.1 Hardware

2.1.1 Structure

Unité centrale (CPU) L’unité centrale, ou le microprocesseur, est responsable de l’exécution du système d’exploitation (chez Cisco, c’est IOS) du routeur. Le système d’exploitation prend aussi bien en charge les protocoles que l’interface de commande via une session telnet. La puissance du microprocesseur est directement liée à la puissance de traitement du routeur .

Mémoire Flash La flash représente une sorte de ROM effaçable et programmable. Sur beaucoup de routeurs, la flash est utilisé pour maintenir une image d’un ou plusieurs systèmes d’exploitation. Il est tout à fait possible de maintenir plusieurs images sur la même flash (suivant la taille de la flash). La mémoire flash est pratique car elle permet une mise à jour de la mémoire sans changer des “chips”. La flash peut se présenter sous forme de barette mais aussi sous forme de carte.

ROM La ROM contient le code pour réaliser les diagnostics de démarrage (POST : Power On Self Test). En plus, la ROM permet le démarrage et le chargement du système d’exploitation contenu sur la flash. On change rarement la ROM. Si on la change, on doit souvent enlever des “chips” et les remplacer.

RAM La RAM est utilisé par le système d’exploitation pour maintenir les informations durant le fonctionnement. Elle peut contenir les tampons (buffer), les tables de routage, la table ARP, la configuration mémoire et un nombre important d’autres choses. Et comme c’est de la RAM, lors de la coupure de l’alimentation, elle est effacée.

NVRAM (RAM non volatile) Le problème de la RAM est la non-conservation des données après la coupure de l’alimentation. La NVRAM solutionne le problème, puisque les données sont conservées même après la coupure de l’alimentation. L’utilisation de la NVRAM permet de ne pas avoir de mémoire de masse (Disques Durs, Floppy). Cela évite donc les pannes dues à une partie mécanique. La configuration est maintenue dans la NVRAM.

Portes I/O La structure même d’un routeur est l’ouverture donc l’interfaçage vers le monde extérieur est important. Il existe un nombre impressionant d’interfaces possibles pour un routeur (Liaison série asynchrone, synchrone, ethernet, tokenring, ATM, Sonet, FO, ...). La vitesse du bus qui interconnecte les I/O avec les différents composants du routeur marque aussi la puissance de traitement du routeur.

2.1.2 Processus de démarrage

2.2 Software (IOS)

2.2.1 Porte console

La configuration de base d’un routeur Cisco (et des autres aussi) se fait en général via la porte console. La porte console, sur un routeur, est configuré comme une interface DTE (Data Terminal Equipment). Mais la porte RS232 d’un PC est aussi une interface DTE^{7}, c’est pour cela que vous ne pouvez pas connecter un cable série directement sur la porte console. La solution est d’utiliser un cable croissé (entre le fil 2 & 3) avec les différents fils de signaux. Le cable de console est souvent fournis en standard avec les routeurs Cisco.

La connexion s’effectue, en standard, à 9600bauds avec 8 bits de data, 1 bit stop et pas de parité. Vous pouvez utiliser votre émulateur de terminal favoris^{8}.

2.2.2 Interpreteur de commande (CLI exec)

L’interpreteur de commande, comme son nom le dit, est responsable de l’interprétation des commandes que vous tapez. La commande interprétée, si elle est correcte, réalise l’opération demandée.

          Reply to request 4 from 128.253.154.110, 4 ms
          Reply to request 4 from 128.253.154.204, 1 ms
          lab-bt#sh arp
          Protocol  Address          Age (min)  Hardware Addr   Type   Interface
          Internet  128.253.154.204         0   0080.c723.989f  ARPA   Ethernet0
          Internet  128.253.154.110         0   0040.951a.24c4  ARPA   Ethernet0
          Internet  128.253.154.116         -   0010.7bc2.07cf  ARPA   Ethernet0
          Internet  128.253.154.2           0   0000.4d21.8405  ARPA   Ethernet0
          Internet  128.253.154.9           0   0040.055a.9476  ARPA   Ethernet0
          lab-bt#

Si lors de la configuration initiale un (ou des) password a été configuré, vous devez introduire ce password pour accéder à l’interpreteur de commande.

Il y a 2 modes d’execution sur un routeur Cisco :

1. Le mode utilisateur (prompt : >)

2. Le mode privilégié (prompt : #)

Lors de la connexion initiale avec le routeur, vous arrivez dans le mode utilisateur. Pour passer au mode privilégié, vous devez introduire la commande enable et ensuite introduire un mot de passe. Le mode utilisateur sert uniquement à la visualisation des paramètres (pas de la configuration) et des différents status du routeur. Par contre, le mode privilégié permet, en plus de la visualisation des paramètres, la configuration du routeur et le changement de paramètres dans la configuration.

L’interpreteur de commande des routeurs Cisco est très souple et vous permet de demander les commandes disponibles. Vous désirez savoir les commandes qui commence par ho, rien de plus simple, ho? <enter>. Il est aussi possible d’utiliser l’expansion de commande comme sous Unix (avec la touche de tabulation). Si il n’y pas de confusion possible, vous pouvez utiliser les abbréviations de commande. Par

exemple, sh ip int brie au lieux de show ip interface brief. Cela permet de

gagner du temps et de rendre la vie un peu plus facile.

2.2.3 Les fichiers de configuration

Dans un routeur cisco (en général), il existe différents fichiers de configuration. Il y a un fichier de configuration dans la nvram (startup-config), qui est lu au démarrage du routeur et copier en mémoire. Il y a un autre fichier de configuration dans la mémoire vive (running-config).

2.2.4 Images IOS

2.2.5 Configuration générale des interfaces

2.3 Gestion des problèmes

7Un équipement de terminal est souvent DTE, c’est-à-dire qu’il reçoit un signal d’horloge et se synchronise dessus. Le DCE donne un signal. Il est possible de configurer une interface série pour qu’elle devienne DCE (clock rate 64000 par exemple).

8Hyperterminal (win32), cu (Unix), minicom, reflection...