handout cours reseaux i - P-FB Site pédagogique P-FB
Transcription
handout cours reseaux i - P-FB Site pédagogique P-FB
8 Master 1ère année 9 10 11 12 UE Réseaux Avancés I — P-F. Bonnefoi Version du 13 décembre 2015 Table des matières 1 2 3 4 5 6 7 Abstraction du réseau : les «couches» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La notion de protocole La pile TCP/IP La programmation Socket ou la programmation de la couche 4 . . . . . . . . . . . . . . . . . . . . . . Fondamentaux – réseaux diffusion et point-à-point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le réseau TCP/IP Adressage des matériels : Adresse IPv4 et Adresse MAC Routage direct & indirect, encapsulation & fragmentation Le DNS, «Domain Name Server» : Principe de délégation Configuration manuelle d’une machine pour l’accès à Internet Conception de réseaux : la segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problème de croissance d’Internet La segmentation : les commandes «classiques» Segmentation : domaine de diffusion et de collision Segmentation des réseaux locaux : le pont ou «bridge» Segmentation des réseaux locaux : commutation et switch, les VLANs L’algorithme de routage : généralisation du premier pas . . . . . . . . . . . . . . . . . . . . . . . . . . . Routage : routeur & table de routage Diffusion dans un réseau : Multicast et classe D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le format du datagramme IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Encapsulation du datagramme IP ⇒ fragmentation ? Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 2 9 13 13 Fragmentation Quelques métriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Du réseau «Circuit-Switched» au réseau «Packet-switched» Mode «Circuit virtuel» matériel : ATM, Asynchronous Transfer Mode Les contraintes de gestion des communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuit virtuel vs datagramme Protocole TCP, Transmission Control Protocol RFC 793 . . . . . . . . . . . . . . . . . . . . . . . . . . TCP : Segmentation TCP : le format du segment TCP : établissement d’une connexion TCP : la fermeture TCP : l’automate de fonctionnement TCP : le RST TCP : Améliorations par l’utilisation d’options TCP : détection de l’entrée en congestion du réseau UDP, User Datagram Protocol, RFC 768 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UDP vs TCP Le Firewall : la décision d’autoriser ou non le traitement du datagramme . . . . . . . . . . . . . Firewall : le plan de la présentation des usages QoS, «Quality of Service» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les flux «temps réel» QoS : Integrated Services vs Differentiated Services Qos & GNU/Linux : Les queuing disciplines 38 43 44 55 56 65 Qos & GNU/Linux : Classless qdiscs Qos & GNU/Linux : Classful qdiscs Qos & GNU/Linux : La commande tc, ou «traffic control» Qos & GNU/Linux : un exemple avec HTB Qos & GNU/Linux : combiner qdisc et iptables Qos & GNU/Linux : routage suivant la QoS Qos & GNU/Linux : combiner plusieurs interfaces, «load sharing» QoS & Gnu/Linux : simuler des conditions réseaux avec netem 26 32 33 35 — 13 décembre 2015 — 1 Présentation générale du contenu du cours Le réseau : différents points de vue ⋆ vision programmeur : un système de «couches OSI, Open Systems Interconnection» : ⋄ de la couche physique, n°1, à la couche applicative n°7 ; ⋄ des protocoles de communications à maîtriser : TCP, UDP, SMTP, POP, SSH etc. ; ⋆ vision humaine et géographique : ⋄ des échanges au sein de la même structure «humaine» (entreprise, université, etc) : ⋆ matériels administrés par la même autorité : segmentation du réseau, DNS «Domain Name System» local, etc. ⋆ demande de performances de haut niveau : QoS, partage d’accès à des ressources, applications distribuées, etc. ⋄ des échanges entre réseaux répartis sur la planète : ⋆ de l’organisation : organisme internationaux, DNS, etc. ⋆ des réseaux interconnectés : INTERconnected NETworks : du routage de haut niveau avec BGP, etc. ⋆ vision théorique : ⋄ réseau «point à point» vs «diffusion» ; ⋄ des mesures : latence, gigue, débit, bande passante, etc. ⋄ des principes : contrôle de flux, contrôle de congestion, contrôle d’erreur, etc. ⋆ vision sécurité : ⋄ surveillance du réseau : détection et identification du trafic, protection contre les attaques ; ⋄ filtrage des échanges ; ⋄ mise en place de tunnels d’échanges sécurisés ; ⋆ vision concepts fondamentaux : ⋄ adressage : niveau 2, IPv4, IPv6, VLAN, MPLS ; ⋄ switching ou commutation : sélectionner une sortie pour un paquet en entrée ; ⋄ forwarding ou relayage : sélectionner intelligemment une sortie pour un paquet en entrée ; ⋄ routing ou routage : construire une route pour l’acheminement d’un paquet. Plan de la partie Protocoles 1 Abstraction du réseau : les «couches» Organisation en série de couches But réduire la complexité de conception. Les réseaux sont organisés en série de couches ou niveaux, chacune étant construite sur la précédente. Rôle d’une couche offrir certains services aux couches plus hautes, en leur masquant l’implémentation de ces services. Relation entre couches sur différentes machines : La couche 𝑛 d’une machine gère la conversation avec la couche 𝑛 d’une autre machine. Notion de «protocole» : Les règles et conventions utilisées pour cette conversation sont connues sous le nom de «protocole de la couche 𝑛 » : − Un protocole est un accord entre les parties sur la façon de communiquer ; − Toute violation du protocole rend la communication extrêmement difficile voire impossible. Notion de «processus pairs» : Les couches correspondantes sur différentes machines sont appelés processus pairs, peer. Ce sont les processus pairs qui communiquent à l’aide du protocole. En réalité, aucune donnée ne passe directement de la couche n d’une machine à la couche n d’une autre machine, mais chaque couche passe par les données et les contrôle à la couche qui lui est immédiatement inférieure. ?? La notion de protocole Un protocole humain et un protocole machine « demander l’heure à quelqu’un » et « demander une ressource sur un serveur Web ». Éléments importants ▷ Notion de service et d’interface ; ▷ Modèle OSI et pile de protocoles TCP/IP ; ▷ Modélisation de protocole ; ▷ Problème de synchronisation et de programmation. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Les protocoles définissent : ⋆ le format des données échangées ; ⋆ l’ordre des messages émis et reçus entre les entités réseaux; ⋆ ainsi que les réactions à ces messages. Un protocole correspond à un comportement qui évolue en fonction des données échangées. — COMPLÉMENT COMPLÉMENT ▷ Notion de couches et de processus pairs ; 13 décembre 2015 — 2 Les couches Exemple de protocole Le protocole SMTP, «Simple Mail Transfer Protocol» xterm bonnefoi@msi:~$ socat - tcp:smtp.unilim.fr:25 220 smtp.unilim.fr ESMTP Sendmail 8.13.1/8.13.1; Thu, 15 Sep 2011 15:28:24 +0200 HELO msi.unilim.fr 250 smtp.unilim.fr Hello www.msi.unilim.fr [164.81.60.6], pleased to meet you La commande «socat» permet de simplement établir une connexion TCP avec le serveur que l’on a désigné sur le port indiqué. MAIL FROM: <[email protected]> 250 2.1.0 <[email protected]>... Sender ok RCPT TO: <[email protected]> 250 2.1.5 <[email protected]>... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: Message Message de test envoye directement ! . 250 2.0.0 p8FDSOJe031646 Message accepted for delivery QUIT 221 2.0.0 smtp.unilim.fr closing connection bonnefoi@msi:~$ Notion d’interface : entre chaque couche adjacente existe une interface. L’interface définit : ⋆ les opérations élémentaires, appelées «primitives» ; ⋆ les services que la couche inférieure offre à la couche supérieure. La définition des interfaces doit être claire : ∘ chaque couche réalise un ensemble de fonctions bien définies ; ∘ le changement d’implémentation d’une couche est transparent : il suffit à la nouvelle implémentation d’offrir exactement à sa voisine du dessus le même ensemble de services que l’ancienne Exemple : changement d’une carte réseau, passage d’une connexion filaire à du sans-fil… L’ensemble des couches et protocoles est appelé architecture réseau. Au niveau de la conception du réseau : ▷ les spécifications de l’architecture doivent contenir suffisamment d’information pour permettre d’écrire le logiciel ou de construire le matériel pour chaque couche de manière qu’il obéisse correctement au protocole approprié ; ▷ ni les détails de mise en œuvre, ni les spécifications de l’interface ne font partie de l’architecture puisqu’ils sont invisibles à l’extérieur. ▷ il n’est pas nécessaire que les interfaces de toutes les machines du réseau soient identiques, pourvu que chaque machine puisse utiliser correctement les protocoles (windows et GNU/Linux par exemple). L’ensemble des protocoles utilisés par un système, avec un protocole par couche, est appelé souvent «pile de protocoles». Exemple de protocole Le protocole HTTP, «Hyper Text Transfer Protocol» xterm bonnefoi@msi:~$ socat - tcp:www.unilim.fr:80 HEAD / HTTP/1.0 HTTP/1.1 200 OK Programmation d’une couche : primitives de service et programmation Socket a. Le serveur indique qu’il est prêt et d’accord pour établir une connexion à l’aide de l’instruction accept ; b. le client demande l’accès au service de connexion au travers d’une instruction connect : ⋄ ce connect réalise la primitive de service : requête ; ⋄ des paquets sont échangés à travers les interfaces; ?? Date: Thu, 15 Sep 2011 14:01:18 GMT Server: Apache Vary: Cookie,Accept-Encoding Composed-By: SPIP 1.9.2j @ www.spip.net + article_pdf(0.1) Last-Modified: Thu, 15 Sep 2011 14:01:18 GMT Content-Type: text/html; charset=utf-8 Content-Language: fr bonnefoi@msi:~$ Le protocole POP, «Post Office Protocol» xterm bonnefoi@msi:~$ socat - tcp:pop.unilim.fr:110 +OK courriel Cyrus POP3 v2.2.13-Debian-2.2.13-14.xm.1 server ready <299345444.1316380363@courriel> USER bonnefoi +OK Name is a valid mailbox PASS bob -ERR [AUTH] Invalid login ^C bonnefoi@msi:~$ c. la réception de ces paquets sur le serveur déclenche une indication sur l’OS d’Alice qui possède déjà l’autorisation d’accepter la connexion, etc. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — COMPLÉMENT COMPLÉMENT Connection: close 13 décembre 2015 — 3 Marsic • Rutgers University Le modèleIvanen couches : le modèle OSI «illustré» Les Couches Deux concepts importants 7: Application 4: Transport Cette technique d’abstraction permet de passer : ▷ d’un problème insoluble : la conception d’un réseau global, ▷ à plusieurs problèmes solubles : la conception de chaque couche. 3: Network 2: Link Il existe aussi celui, plus simple, de la pile TCP/IP. Seul la pile TCP/IP a été implémentée. • Dialog control • Synchronization 5: Session Le concept abstrait de processus pair est crucial pour la conception des réseaux. • Reliable (TCP) • Real-time (RTP) • Source-to-destination (IP) • Routing • Address resolution • Wireless link (WiFi) • Wired link (Ethernet) MAC • Radio spectrum • Infrared • Fiber • Copper 1: Physical Introduction to Computer Networking 44 OSI PART I Networking Basics Figure 1-15: reference architecture for communication protocol layering. 0 The OSI Lemodel modèle OSI, «Open Systems Interconnection» 14 Application Layer 7 Presentation Layer 6 Session Layer 5 ⋆ sert de référence pour décrire le fonctionnement du réseau : ⋄ 5 couches présentes dans TCP/IP : Physique, Liaison de données, Réseau, ⋄ 2 couches «applicatives» dans TCP/IP : Session, Présentation ; Transport, Application ; ⋆ chaque couche réalise un travail distinct avec des «moyens» interchangeables (pro- tocoles, technologies) : ⋄ Physique : technologie WiFi, Ethernet, Bluetooth, etc. Transport Layer 4 ⋄ Liaison de données : trame 802.3/Ethernet II ; ⋄ Réseau : datagramme IPv4, IPv6 ; Network Layer 3 ⋄ Transport : UDP, «User Datagram Protocol», TCP, «Transmission Control Protocol», SCTP, «Stream Control Transmission Protocol», etc. Layer 2 Data Link ⋄ Application : navigateur Web, logiciel de messagerie. etc. Chapter 1 Introduction to Computer Networking ⋆ Présentation : encodage des données, représentation ; 48 Chapter 1 Internetworking ⋆ Session : ouverture/fermeture de session, identification des utilisateurs… Layer 1 Physical u FIGUR E 1 .11 Peer communication three of the seven layers Communication «Pair à Pair» etbetween encapsulation FIGURE tworking functions at the two lowest layers of the OSI model, Layer 1 Layer 2 (Data Link). However, to some degree Layer 3 (Network) plays a nerally for the TCP/IP protocol capabilities. Here’s how each layer is used: 1. 2 8 ?? • Data translation (MIME) • Encryption (SSL) • Compression 6: Presentation L’ensemble des couches a été normalisées par l’ISO en 7 couches. Ce modèle a été appelé OSI (Open System Interconnection). pter 1 • Application services (SIP, FTP, HTTP, Telnet, ) COMPLÉMENT COMPLÉMENT a. Relation entre communication virtuelle et effective b. Différence entre protocoles et interfaces Exemple les processus pairs de la couche 5 conçoivent leur communication de façon horizontale, grâce au protocole fournis par la couche 4 : ⋆ chacun des processus utilise : ∘ une procédure appelée «envoi à l’autre côté», ∘ une procédure «réception de l’autre côté», ⋆ en réalité : ces procédures communiquent avec les couches inférieures par l’intermédiaire de l’interface 3/4, et non, comme elles en donnent l’impression, avec l’autre côté ! 22 La pile TCP/IP "#$! %$&$'! ()*$+%! ,)'! -$! ,.',$/01)((*! .+2)'34$5! 0.! 0#+$$! %1-2+.1/%6! 73+%08! ()*$+%! 98! :8! )'5! ;< /#*%3,)(8!(3'=8!)'5!'$0>.+=<)+$!0#$!!"#$%&'()*++%&#(,-."&)6!"#$*!5$)(!>30#!0#$!/#*%3,)(!)%/$,0%! .?!@.&3'2!5)0)!?+.@!.'$!5$&3,$!0.!)'.0#$+8!%1,#!)%!$($,0+3,)(!%/$,3?3,)03.'%8!/#*%3,)(!,.''$,03.'%8! FTP DNS SSH SNMP /#*%3,)(!)55+$%%3'28!$0,6!A$,.'58!()*$+%!B8!C8!)'5!D<%$%%3.'8!/+$%$'0)03.'8!)'5!)//(3,)03.'<,)'! Application -$! 0#.12#0! .?! )%! *)"&( )*++%&#( ,-."&)6! "#$*! )((.>! 3'0$+./$+)-3(30*! )@.'2! 1'+$()0$5! %.?0>)+$! %*%0$@%6!"#3+58!()*$+!E<0#$!0+)'%/.+0!()*$+<$'%1+$%!$'5F0.F$'5!+$(3)-($!5)0)!0+)'%@3%%3.'8!>#3($! HTTP TFTP DHCP SMTP ()*$+!:!@)*!$'%1+$!+$(3)-($!5)0)!0+)'%@3%%3.'!.'!)!%3'2($!(3'=6! G#$'!,.@/)+$5!0.!0#$!0#+$$F()*[email protected]$(!H7321+$!9F99I8!JAK!()*$+%!98!:!,.++$%/.'5!0.!()*$+!98!0#$! L3'=!()*$+8!3'!0#$!0#+$$F()*[email protected]$(6!JAK!()*$+!;!,.++$%/.'5%!0.!()*$+!:8!0#$!M$0>.+=!()*$+8!3'!0#$! Transport UDP TCP Others 0#+$$F()*[email protected]$(6!73')((*8!JAK!()*$+%!E8!B8!C8!)'5!D!,.++$%/.'5!0.!()*$+!;8!0#$!N'5F0.F$'5!()*$+8! 3'!0#$!0#+$$F()*[email protected]$(6! IP Support "#[email protected]$(!%$+&$%!@)3'(*!)%!)!+$?$+$',$!?.+!0#3'=3'2!)-.10!/+.0.,.(!)+,#30$,01+$!3%%1$%6!"#$+$! IPv4 IP NAT Routing )+$! '.! ),01)(! /+.0.,.(! 3@/($@$'0)03.'%! 0#)0! ?.((.>! 0#$!Protocols: JAK! @.5$(6! O$,)1%$! 30! 3%! 5)0$58! K! >3((! ICMPv4 Protocols: Network @)3'(*!1%$!0#$!0#+$$F()*[email protected]$(!3'!0#$!+$%0!.?!0#3%!0$P06! ICMPv6 RIP, OSPF, IPv6 ! IPSec Neighbor Discovery BGP Data encapsulation Application PDU ARP Presentation HY, the Physical layer) consists of bit-level data streams and computer Session Upper layer data APPLICATION APPLICATION Direct Connection ardware connecting the devices together. This hardware includes network Segment Transport TCP header Upper layer data PRESENTATION PRESENTATION SESSION wireless access points, and bridges. SESSION In the case of ards, cables, switches, IP header Data Packet Network TRANSPORT etworking, radio TRANSPORT frequency (RF) usesDirect air Connection as the medium for wireless comNETWORK NETWORK LLC header Data FCS ns. The Physical DATA layerLINK consists of two sublayers: the DATA Physical Layer ConverLINK Frame Data Link PHYSICAL ocol (PLCP) andPHYSICAL Physical Medium Dependent (PMD). The PLCP, the higher MAC header Data FCS Direct Connection layers, is the interface between the PMD and Media Access Control (MAC) Physical Bits 0101110101001000010 Encapsulation The PMD is the lower sublayer at the bottom of the protocol stack and is Each segment is then handed to the Network layer for network addressing and routing e for transmitting the data onto the wireless medium. through the internetwork. Logical addressing (for example, IP) is used to get each segment Encapsulation to the correct network. The Network layer protocol adds a control header to the segment Data Link layer) is responsible for organizing the bit-level data for communicahanded down from the Transport layer, and what you have now is called a packet or dataCoursof encapsulation «Réseauxis toAvancés I» – layer P-F. –between http://p-fb.net/ The purpose allowand Application dataBonnefoi communication gram. Remember that the Transport and Network layers work together to rebuild a data en devices on a network and detecting correcting Physical layer errors. two stations on a network using the lower layers as a support system. As data moves down host, but it’s not part of their work to place their PDUs on a local stream on a receiving Link the layer consists of two sublayers: the Logical Link Control (LLC) network sublayer segment—which is the only way to get the information to a router or host. OSI model from the source to the destination, it is encapsulated. As data moves back the Data Link layer that’s responsible for taking packets from the Network layer and a Access Control (MAC) communication is accomup the OSI model fromsublayer. the source The to thebit-level destination, it is decapsulated. Each It’s layer adds a placing them on the network medium (cable or wireless). The Data Link layer encapsulates RARP ! Data Link Physical Protocols and Links Determined by Underlying Network (includes SLIP and PPP) FIGURE 1.22 Attention : TCP/IP protocols layers. BGP Note the position of some protocols between layers.4, «Transport». ⋆ certains protocoles comme RIP,and OSPF, utilisent des protocoles de niveau ⋆ le protocole ARP est entre les couches 2 et 3. With few exceptions, the TCP/IP protocol suite does not really define any low-level protocols below the network layer. TCP/IP usually specifies how to put IP packets into — and how to get them out again. Many RFCs define IP mapping into these lower13 frames layer protocols. We’ll talk more about this mapping process in Chapter 2. décembre 2015 — 4 As it was mentioned before, the OSI model is more of a theoretical model and it is very useful in the learning process. On the other hand, the Internet was built on the 7&3,3PRGHODQGVR7&3,3LVWKHPRVWSRSXODUGXHWRLWVXVDJHDQGLWVSURWRFROV TCP/IP vs OSI Modélisation de protocole Protocoles de haut niveau Les protocoles dans le monde TCP/IP sont décrits dans les RFC «Request For Comment». RFC 1945 pour HTTP, RFC 821 pour SMTP et 1032 pour DNS, etc. Un protocole est la définition de règles pour la communication entre deux entités paires. Il est défini par : ⋆ un certain nombre de primitives (listen, socket, bind…), ⋆ la définition d’un ordre d’échange d’utilisation de ces primitives (bind doit être utilisé après socket), ⋆ la définition d’un ensemble de question/réponse attendu (un accept réussi après un connect) Toute violation du protocole entraîne l’échec de la communication, mais peut également bloquer l’émetteur et/ou le récepteur. Il est nécessaire de faciliter : ▷ la conception : définir les primitives, l’ordre d’échange et les interactions entre émetteur et récepteur ; ▷ la validation : vérifier qu’il fonctionne en permettant un dialogue tel qu’il a été décidé ; ▷ la correction : faire en sorte qu’il soit possible de sortir ou d’éviter une situation de blocage ; La solution : a. Élaboration de scenarii pour définir le protocole ; b. Modélisation du fonctionnement du protocole ; c. Obtention d’une spécification formelle du protocole. Les moyens : Utilisation d’automate fini et de réseaux de Pétri. Pas de couche «Présentation» et de couche «session» dans TCP/IP par rapport à OSI. Some similarities between the two models are: x Networking Fundamentals %RWKPRGHOVDUHOD\HUHGPRGHOVDQGKDYHWKHEHQHÀWVRIOD\HUHG Let VVHHDQH[DPSOHLQD7&3,3QHWZRUN TCP/IP : couches, protocoles communication models.et routage x Both models have application layers, even if they include different services. x Both models have transport and network layers that have comparable functionality. x Both models use packet-switching technologies instead of circuit-switching. Some differences between the two models are: x 7&3,3FRPELQHVWKHWKUHHXSSHUOD\HUVRIWKH26,PRGHOLQDVLQJOHOD\HU thus being more oriented towards the transmission protocols. x 7KHGDWDOLQNDQGSK\VLFDOOD\HUVIURPWKH26,PRGHODUHFRPELQHGLQD VLQJOHOD\HULQWKH7&3,3PRGHO 1RZDGD\VWKH26,PRGHOGRHVQ WKDYHOLYHDSSOLFDWLRQVDV7&3,3GRHVEXWLWLVWKH VWDUWLQJSRLQWRIHYHU\QHWZRUNLQJPRGHOEHFDXVHRILWVEHQHÀWV 7&3,3ORRNVVLPSOHUEHFDXVHLWKDVIHZHUOD\HUVWKDQWKH26,PRGHO+RZHYHU FRPPXQLFDWLRQXVLQJ7&3,3PDWFKHVDOOWKHOD\HUVLQWKH26,PRGHO $SDFNHWRULJLQDWLQJIURPKRVW;ZLOOJHWWRKRVW<E\WUDYHUVLQJURXWHUV$%DQG& Modélisation de protocole Organisation des échanges ⋆ choix du modèle de conception générale : ⋆ choix du type de communication : centralisé ou répartie, « client/serveur » ou « égal à égal » orienté connexion ou datagramme, TCP ou UDP Comportement du serveur si nécessaire ∘ gestion d’un seul client à la fois ; ∘ gestion de plusieurs clients simultanément ; Durée du déroulement du protocole ⋆ le protocole est limité à une seule transaction ; ⋆ le protocole peut s’étendre sur plusieurs transactions : Comment mémoriser les étapes du protocole ? Imaginer des scénarii d’usage du protocole ∘ dérouler le fonctionnement suivant les différents comportements prévus ; ∘ en cas d’erreur de l’interlocuteur, du réseau (pertes de messages, arrivée des données dans le désordre, etc.) ; Formaliser le protocole ⋆ définir le format des échanges ; ⋆ combiner les différents scénarii pour définir le comportement complet ; choisir le comportement pour la fiabilité du protocole (éviter les blocages, garantir la disponibilité, se protéger des comportements malveillants, etc.). Chaque matériel dispose d’une pile TCP/IP, plus ou moins complète. /HW VVD\IRUH[DPSOHWKDWKRVW;LVDZHEVHUYHUUHSO\LQJWRDUHTXHVWRULJLQDOO\ [ 25 ] initiated from host Y. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 7KH+773'VHUYHU;/D\HUUHVSRQGVWRWKHUHTXHVWE\VHQGLQJD+70/IRUPDWWHG SDJH;/D\HUWRKRVW<7KHVHUYHUKDVPDQ\UHTXHVWVWKDWLWDQVZHUVDWWKDW — 13 décembre 2015 — 5 Modélisation d’une transaction : «Message Sequence Charts» ⋆ utilisés pour modéliser les échanges au cours du temps entre un nombre fini de processus. ⋆ permettent de définir des «scenarii» pour détailler le comportement d’un protocole sur des exemples de cas concrets. les différents acteurs ⋆ ⋆ ⋆ ⋆ ⋆ un scenario d’échange le protocole La modélisation d’un protocole avec un automate fini une transaction complète des événements (en orange) : réception et émission placé sur chaque processus ; des échanges : des flêches ; le contenu des messages : étiquette sur les flêches. un ordre sur les échanges ; le MSC permet de : ⋄ définir des exigences ; ⋄ détecter les mauvais comportements. Modélisation d’une transaction : «Message Sequence Charts» Limitations ⋆ modélisation limitée à une transaction ou à une session complète (plusieurs transactions la suite) ; Pour décrire tout le protocole, il faut envisager de nombreux scenarii, voire tous les scenarii possibles! Lorsque plusieurs échanges sont nécessaires pour une même transaction ou lorsque plusieurs transactions sont nécessaires pour une même session : − nécessité de mémoriser «où on en est» par rapport à ces différents échanges/transactions : ⋄ chaque mémorisation peut modifier le scenarii : reprendre une transaction peut être impossible à partir d’un certain temps, une session peut s’interrompre automatiquement au bout d’un certain temps, etc. ⋄ pour chaque mémorisation il faudrait reprendre et définir tous les scenarii... Un scenario décrit un cas d’usage ou «use case» : il sert à illustrer, pour une situation donnée comment le protocole va se comporter. Pour décrire complètement le protocole il faut un outil permettant de décrire son « comportement » global en tenant compte des « mémorisations » possibles : la modélisation par automate à nombre fini d’états. Le protocole HTTP, «HyperText Transfer Protocol», RFC 1945 ⋆ protocole «texte» : échange de lignes de commandes au format ASCII 7bits ; ⋆ utilise le protocole de transport entre le client et le serveur de type TCP. ⋆ très simple, ce qui explique sa popularité et sa facilité de mise en oeuvre. Différentes versions : ∘ HTTP/0.9 version de base avec requête/réponse le document est renvoyé directement ; ∘ HTTP/1.0 version normalisée (RFC 1945) avec comme amélioration, l’ajout d’en-tête pour la description des ressources échangées (utilisation du format MIME RFC822), d’informations supplémentaires envoyées par le client (format de données supporté ou désiré, description de la version et de la marque du navigateur...) ∘ HTTP/1.1 ajout de connexions persistantes entre le client et le serveur en vue de l’échange de plusieurs ressources par l’intermédiaire de la même connexion (transfert des différents éléments d’un même document composite). xterm pef@darkstar:~$ socat stdio tcp:libpfb.so:80 GET /toto HTTP/1.0 Host: libpfb.so HTTP/1.0 404 Not Found Date: Sun, 08 Sep 2013 18:21:17 GMT Server: Apache Set-Cookie: fe_typo_user=794333b9b1f8709f82d91220c245dc30; path=/ Set-Cookie: PHPSESSID=i5n97e4jf7ll8mn4v0hhn2rv30; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Length: 26 Connection: close Content-Type: text/html <h1>Page not found!</h1> Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 6 Le protocole HTTP, «HyperText Transfer Protocol», RFC 1945 Le protocole HTTP Une pile de protocole ⋆ ⋆ ⋆ ⋆ Le protocole HTTP Utilisation du «mode connecté» : protocole de transport TCP, encapsulant le protocole HTTP pour échanger un descripteur de format MIME, encapsulatn un contenu formaté HTML, … Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ protocole « utilisateur » ou abstrait : consultation d’une page web ; protocole de transport : TCP ; protocole d’échange : HTTP ; format d’échange : MIME. Le protocole HTTP Rapport entre les différents protocoles Le protocole abstrait est celui qui intéresse l’utilisateur (ici, Alice), c-à-d. « naviguer sur le Web ». L’unité élémentaire de ce protocole est la transaction (Alice charge une page Web). Le navigateur d’Alice réalise plusieurs échanges au format HTTP pour récupérer les contenus multimédia. La notion de session décrit l’ensemble des transactions qui ont un certain lien entre elles. Par exemple : entrer dans le magasin virtuel, s’identifier, remplir son caddie, payer et quitter le site. — 13 décembre 2015 — 7 Le protocole HTTP : la notion de session Utilisation de cookies, de données de formulaires, de contenus JSON, d’URL particulière (REST), etc. Le protocole UPnP, «Universal Plug and Play» ⋆ HTTPU, «HTTP unicast» ⋆ HTTPMU, «HTTP multicast» 0000 01 00 5E 7F FF FA B4 07 F9 F3 3A 73 08 00 45 60 ..^.......:s..E` 0010 00 F9 00 00 40 00 04 11 DA 04 A4 51 07 44 EF FF [email protected].. 0020 FF FA 07 6C 07 6C 00 E5 F1 76 4E 4F 54 49 46 59 ...l.l...vNOTIFY 0030 20 2A 20 48 54 54 50 2F 31 2E 31 0D 0A 48 6F 73 * HTTP/1.1..Hos 0040 74 3A 20 32 33 39 2E 32 35 35 2E 32 35 35 2E 32 t: 239.255.255.2 0050 35 30 3A 31 39 30 30 0D 0A 4E 54 3A 20 75 72 6E 50:1900..NT: urn 0060 3A 6E 75 6C 6C 73 6F 66 74 2E 63 6F 6D 3A 64 65 :nullsoft.com:de 0070 76 69 63 65 3A 41 6E 64 72 6F 69 64 3A 31 0D 0A vice:Android:1.. 0080 4E 54 53 3A 73 73 64 70 3A 61 6C 69 76 65 0D 0A NTS:ssdp:alive.. 0090 43 61 63 68 65 2D 43 6F 6E 74 72 6F 6C 3A 6D 61 Cache-Control:ma 00a0 78 2D 61 67 65 3D 33 30 0D 0A 4C 6F 63 61 74 69 x-age=30..Locati 00b0 6F 6E 3A 68 74 74 70 3A 2F 2F 31 36 34 2E 38 31 on:http://164.81 00c0 2E 37 2E 36 38 3A 33 34 34 38 38 0D 0A 69 64 3A .7.68:34488..id: 00d0 39 37 37 34 64 35 36 64 36 38 32 65 35 34 39 63 9774d56d682e549c 00e0 0D 0A 6E 61 6D 65 3A 73 61 6D 73 75 6E 67 20 47 ..name:samsung G 00f0 54 2D 49 39 30 30 30 0D 0A 70 6F 72 74 3A 33 34 T-I9000..port:34 0100 34 38 38 0D 0A 0D 0A 488 ?? COMPLÉMENT COMPLÉMENT Le protocole SMTP HTTP over UDP Programmation d’un protocole : le problème de la synchronisation Des processus qui échangent des messages ▷ synchrones ⋄ l’émetteur attend que le récepteur ait reçu le message (envoyer un fax par exemple) ; ⋄ le récepteur qui attend un message est bloqué jusqu’à sa réception ; ⋄ Avantage : l’émetteur et le récepteur sont dans un état connu ; ⋄ Inconvénient : fort couplage entre les processus. ▷ asynchrones ⋄ l’émetteur n’est pas bloqué en attente de réception (poster une lettre) ; ⋄ le récepteur peut fonctionner suivant deux modes : ⋆ réception bloquante si pas de message ; ⋆ réception non bloquante avec témoin de réception (boîte aux lettres américaine) ; ⋄ Avantage : l’émetteur et le récepteur sont indépendants au cours du temps ⋄ Inconvénients : ⋆ pas d’acquittement implicite ⋆ pas de relation entre les états de l’émetteur et du récepteur ⋆ difficultés en cas d’erreurs ! Solution : le modèle de l’Invocation à distance, «Remote Procedure Call» ou «rendez-vous» ∘ correspond à la demande d’exécution d’une fonction à un autre processus (téléphoner) ; ∘ est accompagnée d’un passage de messages entre processus ; ∘ comme pour l’appel d’une fonction : ⋄ l’appelant attend la réponse de l’appelé (la réponse est facultative) ; ∘ correspond au modèle client/serveur ; ∘ peut être mis en oeuvre par messages synchrones ou asynchrones (utilisation de tampons, modèle producteur/consommateur). Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 8 Synchronisation distante vs locale Modèle producteur/consommateur en mode message asynchrone Plan de la partie Programmation Socket Deux points de vue simultanés □ asynchronisme entre sites distants : propagation sur le réseau (le réseau n’est pas modélisé mais il pourrait l’être) ; □ synchronisation locale sur les tampons d’émission et de réception. Éléments importants Asynchronisme entre l’émetteur et le récepteur ⋆ L’émetteur ⋄ effectue un envoi ; ⋄ reprend son exécution immédiatement après. Le message est transmis par le réseau de façon asynchrone par rapport à l’émetteur. ⋆ Le récepteur ⋄ décide de traiter un message ; ⋄ prend le premier message disponible ; ▷ TSAP, «Transport Service Access Point» ; ▷ Mode «orienté connexion» vs mode datagramme ; ▷ Protocoles TCP et UDP ; ▷ Mode «client/serveur» ; Le message était dans une file d’attente de réception. Synchronisation et programmation : comment ça marche dans l’OS ? 2 La programmation Socket ou la programmation de la couche 4 Synchronisation locale Une interface de programmation définie pour mettre en place simplement des communications : ⋆ chaque communication a lieu avec : ⋄ un interlocuteur : communication «point à point», ou «unicast» ; ⋄ plusieurs interlocuteurs : communication par «diffusion» ou «multicast» ; ⋆ la communication correspond à l’échange de données entre les interlocuteurs : ⋄ des données en continu : flux d’octets de taille indéfinie, non connue à l’avance ; ⋄ des paquets : données de taille fixe et réduite connue à l’avance. Deux types de communication uniquement en TCP/IP Le processus émetteur a fourni l’adresse d’un tampon (contenant le message) partagé avec l’interface réseau. Différents cas possibles : ▷ l’émetteur reste bloqué tant que le message n’a pas été envoyé (attente du tampon redevenu libre) ; ⟹ émission bloquante (celle que l’on utilisera en TP ! ) ▷ l’émetteur reste bloqué tant que le message n’a pas été recopié dans l’interface réseau ; ⟹ émission bloquante moins longtemps (pas accessible en Python) ▷ l’émetteur reprend le contrôle alors que l’interface réseau utilise le tampon, il sera avertit par un signal quand il sera réutilisable. ⟹ émission non bloquante (déconseillée dans le cas d’un échange : on n’a pas de garantie sur l’émission effective, et on peut attendre une réponse qui ne viendra jamais) Le processus récepteur a fourni l’adresse d’un tampon partagé avec l’interface réseau. Différents cas possibles : ▷ le récepteur reste bloqué tant qu’un message reçu n’a pas été écrit dans le tampon ; ⟹ réception bloquante (celle que l’on utilisera en TP !) ▷ le récepteur continue son exécution et se bloque quand il ne peut plus avancer sans message reçu ; ⟹ réception non bloquante + attente (déconseillé car compliqué à mettre en œuvre) ▷ le récepteur continue mais il peut savoir si un message a été reçu ; ⟹ réception non bloquante + opération de test de message (déconseillé, car débouche souvent sur de l’«attente active») Attention Gestion du buffer d’envoi et de réception dans le protocole TCP : rôle du bit PUSH ! Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 1. mode «connecté» ⋄ elle ne concerne que deux interlocuteurs : un de chaque côté (point à point) ; ⋄ les données arrivent les unes après les autres dans «l’ordre d’émission» ; ⋄ la communication est bi-directionnelle (dans les deux sens) ; ⋄ elle est «full-duplex», les deux interlocuteurs peuvent échanger simultanément ; ⋄ il y a une garantie contre la perte de données. C’est le mode offert par le protocole TCP, «Transmission Control Protocol». 2. mode «datagramme» ⋄ elle peut concerner un ou plusieurs interlocuteurs (unicast ou multicast) ; ⋄ les données sont groupées dans des paquets de taille limitée ; ⋄ il peut y avoir des pertes de paquets. C’est le mode offert par le protocole UDP, «User Datagram Protocol». Attention Le mode «connecté» est simulé par TCP sur un réseau en mode «datagramme». — 13 décembre 2015 — 9 Notion de port : multiplexage et identification d’un processus Les «Sockets» Berkeley utilisées dans TCP/IP Modèle Client/Serveur Objectifs ⋆ fournir des moyens de communications entre processus, IPC, «Inter Processus Communication», utilisable en toutes Un logiciel «serveur» attend la communication en provenance d’un logiciel «client». Localisation du logiciel serveur ⋆ masquer les détails d’implémentation des couches de transport ; ⋆ fournir une interface d’accès qui se rapproche des accès fichiers pour simplifier la programmation circonstances : échanges locaux sur la même machine (boucle) ou sur le réseau. ∘ ∘ ∘ ∘ un ordinateur est localisable sur Internet grâce à son adresse IP ; un ordinateur ne possède habituellement qu’une adresse IP joignable ; un ordinateur peut exécuter plusieurs programmes qui peuvent vouloir communiquer simultanément ; il faut multiplexer ces communications en «sachant» avec quel programme communiquer : notion de «port» ! À chaque processus communiquant est associé un port La notion de socket ou de «prise» C’est un point d’accès pour les services de transport : ⋄ Elle possède un type : Quel protocole de transport va être utilisé ? Pour quel mode de communication ? ⋄ Elle permet d’utiliser un ensemble de primitives de service ; ⋄ Elle encapsule des données : un descripteur et des files d’attente des messages en entrée et en sortie ; ⋄ Elle est identifiée par un nom unique : le TSAP, c-à-d «le numéro de port» et une @IP. Le protocole TCP Pour une communication en «mode connecté» : ⋆ un Serveur qui attend la connexion du client ; ⋆ un Client qui effectue la connexion au serveur. Pour localiser le Serveur ? Connaître le numéro de port où attend la communication ! Comment connaître le numéro de port ? ⋆ C’est un protocole de transport fiable, en mode connecté, en mode bidirectionnel. ⋆ Une socket TCP peut être utilisée par plusieurs connexions TCP simultanément du côté serveur : ⋄ on peut traiter simultanément plusieurs clients ; ⋄ on peut configurer une «file d’attente» des clients : si un client se présente il est mis en attente ou renvoyer direc- Le point sur les communications sur un ordinateur : ⋆ chaque communication est associée à un seul programme donné (logiciel de messagerie, navigateur web, client de chat, etc) ; ⋆ chaque communication se fait suivant un protocole donné (SMTP, POP pour récupérer le courrier, HTTP, etc) ; ⋆ chaque protocole est associé à un «serveur» particulier : serveur SMTP pour l’envoi de courrier, serveur Web, serveur FTP, etc. ⋆ un numéro de port identifie un serveur donné : il faut rendre standard les numéros de port ! Exemple : http : 80, ftp : 21, smtp : 25, DNS : 53 etc, la liste dans le fichier /etc/services. Le client veut communiquer avec un serveur donné ? il utilise le port standard associé ! ⋆ Une communication est identifiée par le couple d’adresse IP/port, TSAP, des deux extrémités : 𝑇 𝑆𝐴𝑃u�u�u�u�u�u� ⟺ 𝑇 𝑆𝐴𝑃u�u�u�u�u�u�u� ⋆ Un échange TCP est un flot continu d’octets. Les données sont reçues dans l’ordre de leur transmission. tement. Une optimisation de TCP est de temporiser l’envoi des données dans des tampons pour augmenter la taille des envois, mais il est possible de demander l’émission immédiate des données. !"##$%&"#'(!) Connexion TCP La notion de numéro de port : «multiplexer» les communications Notion de numéro de port ⋄ différentes communications peuvent avoir lieu pour des protocoles différents, donc des programmes différents, ⋄ chaque communication sur une machine est identifiée par un TSAP, «Transport Service Access Point», c-à-d un donc des numéros de port différents ; couple (@IP, numéro de port). On ajoute également la notion de numéro de port : ⋆ il varie de 1 à 65535 (sur 16 bits) ; ⋆ il est associé à un seul programme ; ⋆ du côté de la machine cliente, il peut prendre n’importe quelle valeur ; ⋆ du côté de la machine serveur, il permet à la machine cliente de désigner le programme que l’on veut contacter ; Le port permet de multiplexer les communications : ∘ chaque datagramme sera identifié par le TSAPu�u�u�u�u�u� duquel il transporte les données ; ∘ tous les datagrammes utilisent le même lien de communication ; ∘ lors de leur arrivée sur la machine destination, ils sont identifiés par leur TSAPu�u�u�u�u�u�u�u�u�u�u� et remis au bon processus. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ "#$%&'()*)+),-./)0122%314 Comment un ordinateur peut-il voir plusieurs communications simultanément ? ! — 13 décembre 2015 — 10 Le protocole TCP ou la communication «orientée connexion» Une communication «orientée connexion» correspond à : 18 Chapter 1 Internetworking ▷ une demande d’accord de la part de l’interlocuteur avant de lui envoyer des données, c-à-d une 1/2 connexion ; ▷ un envoi de données sans perte et sans erreur ; ▷ une communication bi-directionnelle (d’un interlocuteur vers l’autre et vice-versa) et «full duplex» (chaque interlocuteur F I G U R E 1 . 9 Establishing a connection-oriented session peut communiquer simultanément avec l’autre) ; The three-way handshake «The three-way handshake», correspond à l’établissement d’une communication depuis le client vers le serveur : ∘ une demi-connexion du client vers le serveur ; ∘ une demi-connexion du serveur vers le client ; u Sender Les «Sockets» Berkeley utilisées dans TCP/IP Schéma de fonctionnement en TCP Serveur Client 1 socket 2 bind 3 listen 4 accept recv, send 5 6 close 1 socket 2 connect recv, send 3 4 close Receiver SYN SYN/ACK ACK Le protocole UDP Connection established Data transfer (Send bytes of segments) Celui quiofinitie la in communication est le client. Here’s a summary the steps the connection-oriented session—the three-way handshake—pictured Figure 1.9: la communication est le serveur. Celuiinqui attend 1. 2. 3. The first “connection agreement” segment is a request for synchronization. Firewall & Filtrage The second segments acknowledge the request and establish connection parameters— the rules—between hosts. These segments request that the receiver’s sequencing is synfiltrée) : chronized Communication here as well so that a autorisée bidirectional(non connection is formed. Si le client le LAN et Itlenotifies serveur Internethost that The final segment also isest an dans acknowledgment. thesur destination À noter : la demande de 1/2 connexion du serveur (SYN), ainsi que the connection agreement has been Intérieur accepted and the actual connection has been ⟹ Communication ⟶that Extérieur son acceptation de la demande de 1/2 connexion du client (ACK), established. Data transfer can now L’appartenance dubegin. Client au LAN est déduite sont transmises dans le même message, d’où la simplification en 3 It sounds pretty simple, but things don’t always flow so smoothly. Sometimes during grâce à la présence du «SYN». a transfer, congestion can occur because a high-speed computer is generating data traffic échanges seulement. a lot faster than the network can transfer. A bunch of computers simultaneously sending datagrams through a single gateway or destination can also botch things up nicely. In the latter case, a gateway or destination can become congested even though no single source caused the problem. In either case, the problem is basically akin to a freeway bottleneck— too much traffic for too small a capacity. It’s not usually one car that’s the problem; there are simply too cars on that freeway. Lesmany différentes étapes pour l’établissement de la connexion : So, what happens when a machine receives a flood of datagrams too quickly for it to Les instructions réseaux à utiliser sont indiquées dans un cadre en fin de ligne. process? It stores them in a memory section called a buffer. But this buffering action can Réseau 1. Leonly serveur attend surarelepart SAP serveur, numéro solve the problem if the datagrams of a[@IP small burst. If not and the datagram de port] deluge continues,socket, a device’s memory eventually be exhausted, its flood capacity will be bind,will listen, accept exceeded, and it will react by discarding any additional datagrams that arrive. Client Serveur 2. Le client obtient automatiquement un numéro de port libre (par ex. 3456) No huge worries here, though. Because of the transport function, network flood control Port 3456 Port 8080 socket systems really work quite well. Instead of dumping data and allowing the data to be lost, Les «Sockets» Berkeley utilisées dans TCP/IP Réseau Client Nouvelle connexion Serveur Port 3456 Port 8080 socket initiale 3. Le client se connecte au serveur connect Le système d’exploitation du client et du serveur, mémorise la connexion par un couple : (𝑇 𝑆𝐴𝑃u�u�u�u�u�u� ⟺ 𝑇 𝑆𝐴𝑃u�u�u�u�u�u�u� ) [@IP client, 3456] ⟺ [@IP serveur, 8080] Cette connexion peut être affichée avec la commande Unix « netstat» ou «ss» sous Linux. ⋄ C’est un protocole de transport non fiable, sans connexion. ⋄ L’échange de données se fait par datagrammes : un «datagramme UDP» = un «datagramme IP». ⋄ L’ordre dans lequel les paquets sont envoyés peut ne pas être respecté lors de leur réception. Schéma de fonctionnement en UDP Serveur 1 socket 2 bind recvfrom, sendto 3 4 close Client 1 socket recvfrom, sendto 2 3 close Les «Sockets» Berkeley utilisées dans TCP/IP Les primitives de l’interface socket ⋆ socket : permet de créer un TSAP, «Transport Service Access Point», c-à-d un nouveau point d’accès de service de transport Trois paramètres d’appel : 1-famille d’adresses utilisée : 1 AF_UNIX (communication locale à une machine) 2 AF_INET (communication réseau avec IPv4) 3 AF_INET6 (communication réseau avec IPv6) 2-type de service demandé : 1 SOCK_STREAM (flot d'octets en mode connecté) 2 SOCK_DGRAM (datagramme en mode non connecté) 3-protocole de transport utilisé 1 IPPROTO_TCP 2 IPPROTO_UDP 3 IPPROTO_ICMP Le prototype de la fonction socket : Remarques :˙ ⋄ La primitive de programmation accept retourne au serveur une nouvelle socket associée à la connexion avec le client. C’est par cette socket que l’on communique avec le client. ⋄ Le serveur peut recevoir la connexion de nouveaux clients sur la socket initiale. Un serveur peut avoir plusieurs communications simultanées avec différents clients. Chacune de ces communications correspond à un couple différent de TSAP (le même du côté du serveur associé à un TSAP côté client différent pour chaque communication). Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 1 #include <sys/types.h> 2 #include <sys/socket.h> 3 #include <netinet/in.h> 4 5 int socket(int famille, int type, int protocole); — 13 décembre 2015 — 11 Les «Sockets» Berkeley utilisées dans TCP/IP Le choix d’un numéro de port n’est pas systématique lors de la création de la socket : □ un client n’a pas besoin de fixer un numéro de port particulier (choisi automatiquement par le système) ; □ un serveur qui attend des connexions doit définir sur quel numéro de port il les attend. ⋆ bind : permet d’attribuer un numéro de port à la socket. Trois paramètres d’appel : ⋄ le numéro de descriptif de la socket (retourné par la fonction socket) ; ⋄ une structure de données adresse de socket de type sockaddr_in ; ⋄ la taille de cette structure ; Exemple d’utilisation : 1 #include <sys/socket.h> { 2 struct sockaddr_in short sin_family; 3 u_short sin_port; 4 struct in_addr sin_addr; 5 char sin_zero[8]; 6 }; 7 1 struct sockaddr_in adresse_socket; 2 adresse_socket.sin_family = AF_INET; 3 adresse_socket.sin_port = 16; 4 /* Conversion htonl dans le sens reseau */ 5 adresse_socket.s_addr = htonl(INADRR_ANY); 6 7 if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) 8 { /* cas d'erreur */ } 9 if (bind(s, &sin, sizeof(sin)) < 0) 10 { /* cas d'erreur */ } Les «Sockets» Berkeley utilisées dans TCP/IP ⋆ listen : ⋄ Utilisée dans le mode connecté lorsque plusieurs clients sont susceptibles de demander une ou plusieurs connexions avec le serveur. ⋄ Il permet de fixer le nombre d’appel maximum que pourra traiter le serveur avant de les rejeter (les appels non gérés immédiatement sont alors mis en attente). 1 int listen (int descripteur_socket, int max_connection); ⋆ accept : ⋄ Utilisée dans le mode connecté, permet de se bloquer en attente d’une nouvelle demande ⋄ Après l’accept, la connexion est complète entre les deux processus. ⋄ Pour chaque nouvelle connexion entrante, la primitive accept renvoie un pointeur sur une de connexion. nouvelle socket de structure identique à la précédente : ⋆ la socket originale sert à établir une nouvelle connexion ; ⋆ la nouvelle socket permet l’échange avec le client associé. 1 #include <sys/types.h> 2 #include <sys/socket.h> 3 int accept (int nouvelle_socket, struct sockaddr_in *adresse_client, int longueur_adresse_client); 4 5 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Les «Sockets» Berkeley utilisées dans TCP/IP ⋆ connect : ⋄ Cette primitive permet à un client de se connecter à un serveur. ⋄ Elle ouvre une connexion entre le client et le serveur. ⋄ On doit lui fournir l’adresse IP du serveur (la partie locale est renseignée automatiquement). ⋄ Pour chaque opération d’écriture/lecture, seul le descripteur de la socket est à fournir à chaque fois. 1 #include <sys/types.h> 2 #include <sys/socket.h> 3 int connect(int descripteur_socket, struct sockaddr_in *adresse_serveur, 4 int longueur_adresse); 5 ⋆ send, recv ⋄ Ces primitives permettent l’échange d’information au travers de la socket. ⋄ Elles s’utilisent de la même façon que les instructions read et write sur fichier avec une option supplémentaire pour préciser des options de communication. 1 #include 2 #include 3 4 int send 5 int recv <sys/types.h> <sys/socket.h> (int socket, char *zone, int longueur_zone, int options); (int socket, char *zone, int longueur_zone, int options); Les options permettent d’indiquer si les données urgentes, etc. Les «Sockets» Berkeley utilisées dans TCP/IP : version Python Le client 1 import os, socket, sys 2 3 adresse_symbolique_serveur = 'localhost' # la machine elle-meme 4 adresse_serveur = socket.gethostbyname(adresse_symbolique_serveur) 5 numero_port_serveur = 6688 6 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 7 ma_socket AF_INET6 pour IPv6 8 9 try: ma_socket.connect((adresse_serveur, numero_port_serveur)) #SAP 10 designant le serveur 11 except Exception, message: print "probleme de connexion", message 12 sys.exit(1) 13 14 15 while 1: entree_clavier = raw_input(':>') 16 if not entree_clavier: 17 break 18 ma_socket.sendall(clavier) 19 20 21 ma_socket.close() — 13 décembre 2015 — 12 Les «Sockets» Berkeley utilisées dans TCP/IP : version Python Le serveur 1 import sys, os, socket, select 2 3 masque_acces = '' # filtre les clients, ici aucun n'est filtre 4 numero_port_serveur = 6688 # identique à celui du client 5 = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 6 ma_socket socket.IPPROTO_TCP) # ou AF_INET6 7 8 # Permet de ne pas attendre pour réutiliser le numéro de port 9 ma_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) 10 11 # Accroche le numéro de port à la socket 12 ma_socket.bind((masque_acces, numero_port_serveur)) 13 14 # Configure la file d'attente 15 ma_socket.listen(socket.SOMAXCONN) 16 17 # L'accept renvoie une nouvelle socket 18 (nouvelle_connexion, tsap_depuis) = ma_socket.accept() 19 print "Nouvelle connexion depuis ", tsap_depuis 20 while 1: ligne = nouvelle_connexion.recv(1000) # au plus 1000 21 if not ligne : 22 break 23 print ligne 24 25 connexion.close() 26 ma_socket.close() Plan de la partie Fondamentaux 3 Fondamentaux – réseaux diffusion et point-à-point Le réseau en mode «diffusion» Les réseaux à diffusion, broadcast network, n’ont qu’un seul canal de communication que toutes les machines partagent. Computer Cable Computer Une machine envoie de petits messages qui sont reçus par toutes les autres machines : (a) (b) ⋆ dans le message un champ d’adresse permet d’identifier le destinataire ⋆ à la réception du message, une machine teste ce champ : ⋄ si le message est pour elle, elle le traite ; ⋄ sinon, elle l’ignore. Fig. 1-7. Two broadcast networks. (a) Bus. (b) Ring. Exemple : un couloir sur lequel débouche un certain nombre de portes de bureau. quelqu’un sort dans le couloir et appelle une personne, tout le monde entend l’appel mais une seule personne répond à l’appel cas des annonces dans les gares ou les aéroports Deux topologies de réseaux : diffusion et point-à-point Le réseau en mode «diffusion» Contraintes ⋆ chaque machine appartenant au réseau doit disposer d’une adresse. Avantages Éléments importants ▷ Deux topologies théoriques : diffusion et «point-à-point» ; ▷ Les réseaux utilisés et le matériel d’interconnexion ; ▷ La gouvernance d’Internet : les organisations et les RFCs ; ▷ Le réseau TCP/IP : adressage, encapsulation, routage direct & indirect ; ▷ Le DNS : global et local ; ▷ La configuration du poste de travail. ∘ envoyer un message vers tout le monde en utilisant une adresse particulière : Ce message est traité par toutes les machines. Ce procédé est appelé «diffusion générale» ou «broadcasting». ∘ transmettre un message à un sous-ensemble de machines : Ce procédé est appelé «diffusion restreinte» ou «multipoint» ou «multicast». Une façon de faire consiste à utiliser les n bits d’adresse de la manière suivante : ⋆ associer un bit à l’indication de mode multipoint ⋆ utiliser les n-1 bits restants pour l’identification du groupe. ⋆ permettre à chaque machine d’appartenir à un ou plusieurs groupes. ∘ connaître le temps de transmission d’un message : permet de simplifier des algorithmes de communication : «je suis sûr que le récepteur a reçu mon message, mais je ne connais pas son état et s’il a pu le traiter.» Inconvénients ⋆ la rupture du support de transmission entraîne l’arrêt du réseau. Le «hub» ou «switch» tombe en panne. ⋆ la panne d’un des matériels connectés au réseau ne provoque pas de panne du réseau (en général…). Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 13 L’adressage dans un réseau à diffusion Les caractéristiques des réseaux «point-à-point» Le support physique relie seulement une paire d’équipements à la fois. Dans le cas d’Ethernet, mais aussi de WiFi, de Bluetooth… La communication est : ▷ directe si les deux équipements sont connectés entre eux ; ▷ indirecte sinon : quand deux équipements veulent communiquer, ils le font par l’intermédiaire des autres nœuds du réseau. Chaque carte réseau possède une adresse matérielle appelée adresse MAC (Medium Access Control) : ▷ unique par rapport à toutes les cartes réseaux existantes ! ▷ exprimée sur 48 bits ou 6 octets. ⋄ Syntaxe : 08:22:EF:E3:D0:FF ⋄ Adresse de Broadcast : FF:FF:FF:FF:FF:FF (en IPv4). Pour garantir l’unicité : a. des «tranches d’adresses» sont affectées aux différents constructeurs : 00:00:0C:XX:XX:XX Cisco 08:00:20:XX:XX:XX Sun 08:00:09:XX:XX:XX HP 00:09:BF:XX:XX:XX Nintendo 00:D0:F1:XX:XX:XX Sega Le besoin de «routage» Unicité id. constructeur sur 3 octets Sun Cisco Comment choisir par quels intermédiaires passer, ce qui s’appelle du «routage» ? Cas d’un réseau en «étoile» L’algo. de routage est simple : le site central reçoit et renvoie tous les messages. Le fonctionnement est simple, mais la panne du site central paralyse tout le réseau. Cas d’une «boucle simple» chaque nœud recevant un message de son voisin en amont le réexpédie à son voisin en aval. Pour que le message ne tourne par indéfiniment, il est retiré par le nœud émetteur. Si l’un des nœuds tombe en panne, le réseau est bloqué. Une solution partielle est d’utiliser une «double boucle». ... HP id. carte sur 3 octets ... ... ... ... ... ... ... ... Ce préfixe est appelé OUI, «Organization Unique Identifier». La liste est consultable à http://standards.ieee.org/regauth/oui/index.shtml. b. chaque constructeur numérote différemment chaque carte réseau qu’il construit. Avantage impossible de trouver deux fois la même adresse dans un même réseau Inconvénient elle ne donne aucune information sur la localisation d’une machine «dans quel réseau est la machine avec qui je veux parler ?» Solution Problème ? Ça se complique, on a deux possibilités : Maillage régulier l’interconnexion est totale (plus besoin de passer par un intermédiaire) la fiabilité est maximale le coût en câblage est maximal Maillage irrégulier l’interconnexion n’est plus totale la fiabilité diminue le routage des messages peut devenir complexe impossible de prévoir le temps de transfert d’un nœud à l’autre. utilisation de l’adresse IP ! Les caractéristiques des réseaux «point-à-point» Réseau de grande taille :combiner «point-à-point» et «diffusion» Réseaux en mode «point à point» Subnet ▷ diffusion : réseau de petite taille, LAN, Router Host Local Area Network ; Exemple :Ethernet ▷ point-à-point : réseau d’interconnexion, constitué uniquement de routeur et de ligne de tranmission Exemple : liaison satellite. ▷ la combinaison des deux : WAN, Wide Area Network. LAN (a) (b) (c) Ces réseaux sont formés d’un grand nombre de connexions entres les machines prises deux à deux. Le trajet des communications est rendu plus complexe : ▷ pour aller de la source au destinataire, un message doit alors passer par un plusieurs intermédiaires. ▷ il existe plusieurs routes de longueurs différentes pour joindre ces deux machines, il est nécessaire d’utiliser de bons algorithmes d’acheminement des messages ; Fig. 2-20. (a) Fully-interconnected network. (b) Centralized switch. (c) Two-level hierarchy. Inconvénient Fig. 1-9. Relation between hosts on LANs and the subnet. Inter(connexion)Net(work) : ⋆ du client à la maison ; ⋆ de la ligne téléphonique au POP, «Point of Presence» vers ATM ; ⋆ en passant par l’ISP, Internet Service Provider ; ⋆ au réseau national : backbone ; ⋆ par une connexion à un réseau, Network Access Point ; Client ⋆ vers le LAN de l’entreprise… le temps de transfert d’un message devient presque impossible à prévoir. Regional ISP Backbone POP NAP Telephone system Server farm Corporate LAN Router Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — Fig. 1-29. Overview of the Internet. 13 décembre 2015 — 14 broken, the entire LAN goes down. Troubleshooting a bus network is performed by something known as the half-split method. A network engineer “breaks” or separates the link at about the halfway point and measures the resistance on both ends. If the segment measures 50 ohms, there is a good chance that side of the LAN segment is functioning correctly. If the resistance measurement is not 50 ohms, it signals a problem with that part of the LAN segment. The engineer continues with this method until the exact location of the problem is identified. Figure 1.6 illustrates an example of the bus topology. 28 Les différents types de réseaux utilisés 1. 6 Le matériel d’interconnexion Example of the bus topology Computer Network Topologies File Server 9 50 Ohm Terminator 50 Ohm Terminator Troubleshooting the Bus Topology I remember many years ago I was called to troubleshoot a problem on a small local area network using a bus topology. The network consisted of a network file server, about 20 client stations, and a few network printers. The users complained of intermittent problems with the network. After spending some time looking over the network, I decided to test the bus using the half-split method and checked to verify that the cable was reporting the correct resistance using a volt-ohm-milliamp Network Printer (VoM) meter. Sure enough, one side Computer of the network cable reported the correct resistance reading, but the other side was giving intermittent results. ⋆ ancienne technologie : n’existe plus actuellement ; ⋆ représentation «conceptuelle» d’un LAN, «local ⋆ réseau à diffusion : ⋄ tout matériel connecté peut communiquer avec area network» ; ⋄ un matériel décide de manière autonome tous les autres : «multiple access» ; Computer quand il transmet : il peut y avoir des collisions d’accès, et il faut s’en protéger : «collision detection», «collision avoidance», etc. After spending some time repeating the troubleshooting method, I was able to determine the problem. It turns out that someone had run the coax (bus) cable underneath a heavy plastic office chair mat and one of the little pegs used to protect the flooring was causing the intermittent connection as it struck the cable when the user moved their chair around the mat. I quickly replaced and rerouted the section of cable in question. It is a good thing I was there during the normal business operating hours when the person was moving around in the chair or I might have never found the problem. Ah, the joys of troubleshooting a bus topology. Ring The ring topology is rarely used with LANs today, but it is still widely used by Internet service providers (ISPs) for high-speed, resilient backhaul connections over fiber-optic Anneau links. In theou ring«ring» topology, each device connects to two other devices, forming a ring patF I G U R E 1 . 7 An example of the ring topology tern. Ring topologies in LANs may use a token-passing access method, in which data Server d’accès Internet ou ISP, «Internet Service Protravels around theFilering in one direction. Only oneutilisé device atchez a timeles willfournisseurs have the opportunity to transmit data. Because this access method does not use collision detection, it will vider», pour des liaisons rapides en fibre optique ; Computer commonly outperform the bus topology, achieving higher data rates than are possible Computer using a collision detection access method. Each computer the ring topology can act as aà deux autres matériels : chaqueonmatériel est connecté repeater, a capacity that allows for a much stronger signal. Figure 1.7 shows an example of les données sont transmises dans un seul sens : elle «tourne» sur l’anthe ring topology. ⋆ ⋆ Computer Computer Chapter 1 c01.indd 8 ⋄ un matériel ne peut transmettre que lorsque c’est son tour : un jeton neau entre les différents matériels ; d’autorisation circule dans l’anneau pour autoriser les transmissions (on parle de «token ring») ; ⋄ un seul matériel communique à la fois, pas de collision : les perfor8/25/2012 maximal 3:00:25 PM mances sont meilleures, le débit est atteint. Computer 10 ⋄ Introduction to Computer Networking Star The star topology, as shown in Figure 1.8, is the most commonly used method of connecting devices together on a LAN today. It consists of multiple devices connected by a central 8/25/2012 3:00:25 PM connection device. Common central connection devices include hubs, switches, and wireless access points, although hubs are rarely used today. The hub provides a single broadcast domain similar to a bus topology. However, the switch and wireless access point both have intelligence—the ability to decide which port specific network traffic can be sent to. A big advantage over the bus and ring topologies is that if a connection is broken or damaged the entire network is not down; only a single device in the star topology is affected. However, the central connection device such as a switch or wireless access point can be considered a potential central point of failure. c01.indd 9 Les différents types de réseaux utilisés Étoile ou «star» F I G U R E 1. 8 A common star topology using either wired or wireless devices File Server Network Printer ⋆ la topologie la plus courante pour définir un LAN : plusieurs 11 The OSI Model matériels connectés à un nœud de connexion central : ⋄ un «hub» : un seul domaine de diffusion ; or device failure and a cost savings compared to full redundancy. Mesh technology can ⋄ toun «switch» ou un point d’accès sans fil : le nœud a la caoperate with both wired and wireless infrastructure network devices. The amendment the IEEE 802.11 standard for mesh networking is 802.11s. This amendment was ratified in pacité de mettre en relation deux matériels voulant com2011 and is now part of the IEEE 802.11-2012 standard. Manufacturers currently are using proprietary Layer 2 routing protocols, forming muniquer entre eux (commutation ou «switching») ; a self-healing wireless infrastructure (mesh) in which edge devices can communicate. ⋆ avantage : si un matériel est en panne, le réseau continue à foncManufacturers of enterprise wireless networking infrastructure devices provide support for mesh access points (APs) such that the mesh APs connect back to APs that are directly tionner. Computer Computer Wireless Computers Computer Wireless Access Point wired into the network backbone infrastructure. This is a form of wireless distribution system (WDS) deployment. The APs or wireless controllers in this case are used to configure both the wired and mesh APs. Wireless Computers F I G U R E 1. 9 Mesh networks can be either wired or wireless devices. Mesh Réseau maillé ou «Mesh» Each device in a mesh topology (Figure 1.9) has one or more connections to other devices that are part of the mesh. This approach provides both network resilience in case of link ⋆ chaque matériel possède une ou plusieurs connexions avec les autres ⋆ cette topologie offre une meilleur : ⋄ une meilleure résistance, «resilience», en cas de rupture d’un lien matériels ; Mesh Routers c01.indd 10 8/25/2012 3:00:25 PM ⋄ une économie de moyens par rapport à une redondance totale de connexion ou de panne d’un matériel ; u Internetworking □ le répéteur ou «repeater» : ⋄ correspond au «hub» : un répéteur multiport ; ⋄ regénére, réamplifie la transmission physique et la relaie vers tous les ports (pour en augmenter la distance, lutter contre les atténuations) … ⋄ tous les hôtes connectés ⋆ font parti du même domaine de collision ; Chapter 1 Internetworking ⋆ font parti du même domaine de diffusion ; 26 ⋆ partagent le débit du réseau. F I G U R E 1 .17 A hub in a network A B C D u Allas devices in the same collision domain. □ le pont ou «bridge» : Bridges and switches read each frame it passes through the network. The layer 2 device the same broadcast ⋄ «divise» le domaine de collision en sous-domaines then: puts the source hardware addressAll indevices a filter in table and keeps trackdomain. of which port the Devices share the same bandwidth. frame was received on. This information (logged in the bridge’s or switch’s ⋆ relaie une trame d’un sous-domaine de collision à un autre seulement si l’émetteur et le destinataire sont dans filter table) is Download from Wow! eBook <www.wowebook.com> Le F I Gbus URE Chapter 1 what helps the machine determine the location of the specific sending device. Figure 1.16 deux sous-domaines différents (un domaine par port, avec un nombre très limité de ports) ; showsHubs, a switchlike in an internetwork. repeaters, don’t examine any of the traffic as it enters and is then t ted out to the other parts of the physical media. Every device connected to the h F hubs, IGURE 1 .1 6 A switch in an internetwork must listen if a device transmits. A physical star network—where the hub □ le «switch» : device and cables extend in all directions out from it—is the type of topology a h ⋄ bridge multi-ports, réalisant le travail en «hardware» : Visually, the design really does resemble a star, whereas Ethernet networks run a ⋆ circuits électronique dédiés : rapide et intelligent ; bus topology, ⋆ parallélisme : plusieurs trames relayées simultanément entre meaning that the signal has to run through the network from end des ports différents : débit aggrégé très élevé ⋆ apprend le sous-domaine où chaque hôte est localisé grâce à son adresse MAC ; ⋄ ⋄ ⋄ ⋄ Forwarding modes: Store-and-forward Bandwidth: 48 Gbps for GS724TS, 96 Gbps for GS748TS chaque segment/port a son propre domaine de collision ; tous les segments sont dans le même domaine de diffusion ; ne bloque pas les trames en «brodcast» ou en «multicast» ; évite les boucles avec STP, «Spanning Tree Protocol». Hubs and repeaters can be used to enlarge the area covered by LAN segment, although I do not recommend this. LAN switches able for almost every situation. 1 2 3 4 Ethernet Networking Each segment has its own collision domain. All segments are in the same broadcast domain. Les liens de communication Ethernet is a business contention-based media location, access method allows all hosts The real estate is all about location, location,that and it’s the same way foron a n share same of a link. is popular because it’s readily both layerthe 2 and layerbandwidth 3 devices. Though both Ethernet need to be able to negotiate the network, it’s scala crucial to remember that they’re concerned very different parts of it. Primarily, layer ing that it’s comparatively easy to with integrate new technologies, such as upgrading ⋆ un seul émetteur d’un coté du lien ; 3 machines (such as routers) need to locate specific networks, whereas layer 2 machines Ethernet to Gigabit Ethernet, into an existing network infrastructure. It’s also re (switches and bridges) need to eventually locate specific devices. So, networks are to rout⋆ un seul récepteur de l’autre côté du lien ; simple to implement in the first place, and with it, troubleshooting is reasonably ers what individual devicesou are to switches bridges. And routing tables that “map” ⋆ contrôle des échanges MAC «Medium Access Control» : «flow control» deand flux ;and Physical Ethernet uses contrôle both Link layer devices specifications, and thi theforward. internetwork are for routers whatData filter tables that “map” individual are for ⋆ exemples : PPP, tunnels, Ethernet Gigabit, switch switches full duplex and … bridges. will give you both the Data Link layer and Physical layer information you need t After aimplement, filter table is built on the layer and 2 device, it will forward framesnetwork. only to the segtively troubleshoot, maintain an Ethernet Le lien à diffusion, «broadcast link» ment where the destination hardware address is located. If the destination device is on the segment as the frame, the layer 2 device will block the frame from going to any other ⋆ de multiples matériels accèdent en émission et ensame réception au support de communication, «Multiple Access» ; segments. If the destination is on a different segment, the frame can be transmitted only to ⋆ chaque matériel reçoit une copie du message émisthat ; segment. This is called transparent bridging. When:term aCSMA/CD switch interface receivessense aisframe with a destination hardware that isn’t ⋆ contrôle des échanges MAC «Medium Access Control» «Carrier access with Col- address The collision domain anMultiple Ethernet term that refers to a particular netw found in the ;device’s filter table, it forwards the frame to all connected segments. If the lision Detection», CSMA/CA «...with Collision avoidance» scenario wherein one device sends a packet out on a network segment, thereb unknown device that was sent the “mystery frame” replies to this forwarding action, the ⋆ exemples : Ethernet 10/100Mbits, hub, WiFi, bluetooth … switch updates its filter table regarding that device’s location. But in the event the destination address of the transmitting frame is a broadcast address, the switch will forward all Les différents liens sous Linux broadcasts to every connected segment by default. Le lien point à point, «point to point» Collision Domain root@starfox:~# ip link 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:89:01:44 brd ff:ff:ff:ff:ff:ff 8: mon_pt_a_pt: <POINTOPOINT,NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT link/sit 10.1.1.1 peer 192.168.1.1 ⋆ les liens peuvent être filaire ou sans fil ou un mélange des deux. (maillage complet) ; Wireless Mesh Routers The OSI Model Dans le cas du WDS, «Wireless Distribution System», un AP, «access point», du maillage sert d’intermédiaire de connexion vers des APs connectés au réseau filaire «backbone». Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Before we continue with wireless LAN technology, you should have some background on computer networking theory. The basics of a computer networking discussion start with the OSI model. The Open Systems Interconnection (OSI) model has been around for several decades. It describes the basic concept of communications in the computer network environment. There are seven layers to the OSI model. Each layer is made up of many protocols and — 13 décembre 2015 — 15 La technologie Ethernet 802.3 ou Ethernet II Ethernet □ «Half-Duplex» ⋄ à l’origine dans la norme IEEE 802.3 Ethernet ; ⋄ «CSMA/CD» : ⋆ éviter les collisions ; ⋆ retransmettre les trames en cas de collision ; ⋄ utilise une paire de fils dans le câble pour une transmission alternée dans les deux sens ; ⋄ 30-40% d’efficacité : 30 Mbps à 40 Mbps ; □ «Full-Duplex» ⋄ utilise une liaison «point à point» entre l’émetteur et le récepteur ; ⋄ plus de collisions possibles ; ⋄ exige un «switch» et non un «hub», avec un port «dédié» pour l’hôte : ⋆ un switch et un autre switch ; ⋆ un hôte et un autre hôte à l’aide d’un câble croi⋆ un switch et un hôte ; sé (le croisement est réalisé automatiquement ⋆ un routeur et un autre routeur ; par une interface gigabit avec l’option «Auto⋆ un switch et un routeur ; MDIX») ; ⋄ utilise deux paires de fils dans le câble pour une transmission simultanée dans les deux sens ; ⋄ 100% d’efficacité possible dans les deux directions : ⋆ 20 Mbps pour de l’Ethernet 10Mbps : ⋆ 200 Mbps pour de l’Ethernet 100Mbps ; □ Comment la carte choisit entre les deux modes et le débit ? la «négociation» et un mécanisme d’auto-détection. La commande «ethtool» La carte Ethernet et sa configuration root@starfox:~# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes Différentes organisations ⋆ IEEE, «Institute of Electrical and Electronics Engineers» : organisation internationale chargée de superviser le développement et l’adaptation de standards internationaux. Par exemple dans le cadre des communications sans fil avec l’IEEE 802.11. ⋆ ANSI, «American National Standards Institute» : organisation non gouvernementale à but non lucratif contribuant à l’élaboration de standards pour l’industrie en protégeant les intérêts du public. Par exemple, le code ASCII, American Standard Code for Information Interchange. ⋆ EIA, «Electronic Industries Association» : organisation à but non lucratif proche de l’ANSI dédiée à la résolution des problèmes de fabrication de composants électroniques. La prise du «twisted-pair» appelé RJ-45. ⋆ ISO, «International Standards Organization» : le nom vient du grec «isos» qui veut dire «égaux», organisation de standardisation internationale dont les membres appartiennent à des comités de standardisation de différents pays. Elle est basée sur le volontariat (pour les Etats-Unis, c’est l’ANSI qui participe). Dans le cadre des réseaux, sa contribution principale est le modèle OSI : «Open Systems Interconnection Reference Model» qui sert de base à l’analyse et la conception des protocoles de communication. ⋆ ITU-T, «International Telecommunications Union-Telecommunication Standards Sector» : permettre une infrastructure mondiale non seulement dans les réseaux de données mais également dans la téléphonie, PSTN, «public switched telephone network». 20 PART I Networking Basics Les Nations Unies ont formées un comité le CCITT, «Consultive Committee for International Telegraphy and Telephony» compris dans l’ITU, «International Telecommunications Union». Tout communication qui traverse les frontières d’un pays doit se conformer aux recommandations de l’ITU-T. demonstrations of successful implementation, a draft Une technologie comme ATM, «Asynchronous Transfer Internet Mode» eststandard—After un standard ITU-T. ⋆ Des forums : promouvoir une technologie et sa standardisation. standard becomes an Internet standard. CHAPTER 1 Protocols and Layers 19 RFCs—Not all drafts are intended for the “standards track” (and Experimental Exemple le MEF, «Metro Ethernet Forum». ⋆ Obligations de se conformer aux régulateurs nationaux, comme FCC, «Federal Communications Commission» quiThese sur- RFCs should not affectleInternet operation comprise experimental RFCs. a huge number are not). Work related to an experimental situation that does be implemented as part ofsans anyfil. functional Internet service. veille,ispar exemple, desisdifférents le cas feedback required (mostl’utilisation of the feedback provided infréquences the drafting dans process). Eachde transmission RFC is edited, assigned a number, and available to all. Not all RFCs are standards, even Informational RFCs—Some RFCs contain general, historical, or tutorial informathose that define protocols. tion and rather This book will make heavy use of RFCs to explain all aspects of TCP/IP the than instructions. so a few details are in order. RFCs have various maturity levels that they go Les Internet, «Request for Comment» & l’IETF, «Internet Engineering Task Force» RFCs further classified into one of five requirement levels, as shown in Figure 1.6. through in their lifetimes, according to their requirement levels. The RFCare life-cycle are shown in Figure 1.5. that the timeline not always □maturity IETF levels :organisme responsable duNote développement desdoes standards de apply, l’Internet. Required—These RFCs must be implemented by all Internet systems to ensure or is not applied in a uniform fashion. ⋄A specifi son propre système de standardisation des protocoles utilisés par les matériels connectés à Internet. cation can fall into one of six maturity levels, after which it minimum passes to his-conformance. For example, IPv4 and ICMP, both discussed in detail in Les protocoles sont aplus proches de l’utilisateur que du matériel. However, there are very few required RFCs. torical status and is usefulconcernés only for tracking protocol’s development. Following intro-are required this (applications) book, protocols. duction as an Internet draft, the specification can be a: Les documents de références □ Les standards Internet : des spécifications testées et qui Recommended—These doivent être suivies. RFCs are not required for minimum conformance, but are Proposed standard—The specification is now stable, and For example, FTP is a recommended protocol. ⋄ la procédure d’élaboration est stricte : well understood,very useful. sufficiently interesting to the Internet community. The specification is now ⋆ «Internet : document de travail, souvent statutinparticulier et deare durée vie d’auand plus 6 mois ; usually tested anddraft» implemented by several groups, if thismodifié has notsans already Elective—RFCs this category notde required not recommended. However, happened the draft level.travaillent à partir de ces «drafts» systems ⋆ lesatdéveloppeurs ; can use them for their benefit if they like, so they form a kind of ⋆ un draft peut être publié sous la forme d’un RFC (juste une appellation, il n’y a plus besoin de retour ou feedback). Draft standard—After at least two successful and independent implementations, “option set” for Internet protocols. proposed standard elevated to alibrement draft standard. Without complications, ⋄the RFC identifiée parisun numéro, consultable et, suivant le niveau de requirements, obligatoire, ou pas. Limited Use—These RFCs are only used in certain situations. Most experimental and with modifications if specific problems are uncovered, draft standards nor⋄mally Tous les RFCs ne sont pas des standards, même ceux définissant desthis protocoles entiers. RFCs are in category. become Internet standards. ⋄ Après un certain temps, la RFC peut arriver à maturité et finir dans les «RFC historiques». Internet Draft Experimental RFCs Required: All systems must implement Informational RFCs Proposed Standard Six months Recommended: All systems should implement Draft Standard On remarque que la commande nous renseigne sur l’interface «eth0» : ⋆ le gigabit Ethernet uniquement en «Full Duplex» ; ⋆ le support du «câble croisé». Elective: Not required nor recommended Four months Internet Standard Historic RFCs FIGURE 1.5 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ RFC Requirement Levels — Limited Use: Used in certain situations, such as experimental Not Recommended: Systems should not implement FIGURE 1.6 13 décembre 2015 — 16 The RFC life cycle. Many experimental RFCs never make it to the standards track. RFC requirement levels. There are very few RFCs that are required to implement an Internet protocol suite. La gouvernance d’Internet : les organismes responsables □ InterNIC, «Internet Network Information Center» entre 1992-1998 : ⋄ organisme public américain chargé de la gestion centrale des adresses et des noms de domaines Internet et de l’accréditation d’un organisme homologue dans chaque pays, les organismes délégués : ⋆ AfriNIC (Afrique), ⋆ APNIC (Asie, Pacifique), ⋆ ARIN (Amérique du Nord), ⋆ LACNIC (Amérique du Sud, îles Caraïbes), ⋆ RIPE NCC (Europe, Moyen-Orient) ⋆ NIC France ou afnic, NIC Angleterre, etc. □ ICANN, «Internet Corporation for Assigned Names and Numbers» : ⋄ Organisation créée en octobre 1998, pour s’ouvrir à la concurrence ⋄ traite les noms de domaine et leur délégation (par exemple VERISIGN Inc. : zone « .com ») ; ⋄ exploitation des serveurs de la racine du DNS (ceux qui font autorité) ; ⋄ allocation de blocs de numéro IP ; ⋄ en France, les prestataires (fournisseurs d’accès) font l’intermédiaire avec l’afNIC □ IANA, «Internet Assigned Numbers Authority» : ⋄ tient l’annuaire : adresses IP & numéros de protocoles ; ⋄ adresses IP et numéros d’AS : déléguées aux RIR régionaux, «Regional Internet Registries» ; ⋄ numéros de protocoles et de ports (entre 1 et 1023) ; ⋄ déléguées aux LIRs, «Local Internet Registry» (eg. FAI). □ Les «Registrar» : ⋄ Un registrar (bureau d’enregistrement) est une société ou une association permettant le dépôt de noms de domaine internet, ⋄ Il faut payer un certain montant pour acquérir et protéger un nom de domaine. dans les TLD, «Top Level Domain», où il n’y a pas de vente directe. □ GIP Renater (Groupement d’Intérêt Public) : ⋄ Réseau de la recherche en France, «Réseau National de télécommunications pour la Technologie l’Enseignement et la Recherche» Le réseau TCP/IP La conception Contraintes du protocole IP «Internet Protocol» RFC 791 : ⋆ utiliser la topologie réseau point à point (pour permettre des grandes distances c’est obligatoire) ; ⋆ la panne d’un équipement du sous-réseau ne doit pas entraîner une rupture du réseau ; ⋆ privilégier la disponibilité du réseau : il doit servir au maximum. Le but est que les transactions continuent : ▷ du moment que l’ordinateur source et l’ordinateur destination fonctionnent ; ▷ même si certains routeurs ou certaines lignes de transmission tombent en panne (origine militaire de la création d’Internet par le DoD états-uniens). Les moyens ∘ définir une architecture très souple pour pouvoir mettre en œuvre des applications très diverses comme le transfert de fichiers ou la transmission de la parole en temps réel (TCP et UDP) ; ∘ faciliter le routage : construire une méthode simple et rapide (opérations binaires par exemple) ; ∘ permettre le regroupement de machines pour les gérer ensemble (regroupement en réseau) ; ∘ faciliter le travail de l’administrateur (sisi…). Adressage des matériels : Adresse IPv4 et Adresse MAC Adressage pour le protocole IP (IPv4) Chaque ordinateur et chaque routeur du réseau Internet possède une adresse IP. L’adresse IP est décomposée en deux parties <id. réseau><id. machine> : ⋆ un identifiant de réseau ; ⋆ un identifiant d’ordinateur appartenant à ce réseau. Chaque est adresse IP doit être unique pour permettre de la localiser sur la planète. ⋆ Il existent différentes répartitions des 32 bits entre identifiant réseau et identifiant machine : ⋄ ces différentes répartitions définissent un ensemble de classes de réseaux ; ⋄ ces classes ne sont plus utilisées en CIDR, où on indique uniquement le nombre de bits de la partie réseau ; Propriétés ▷ elle est codée sur 32 bits. �������������������������������������������� ▷ elle est représentée par commodité sous forme, «déci- ��� male pointée» de 4 entiers variant entre 0 et 255 séparés par des points exemple : 164.81.1.4 � �� � ��� � � �������� � �������� � �������� � ��������� ������� � ������ ������������������������������ ▷ un organisme officiel, le NIC, «Network Information Center», est seul habilité à délivrer des numéros d’identi118 PART II Core Protocols fication des réseaux. THE IPV4 ADDRESS ▷ il y a, en général, une seule adresse IP par interface réseau. The IPv4 address is a network layer concept and has nothing to do with the addresses Dans le cas d’un routeur interconnectant 2 réseaux différents, il possède une adresse IP pour chacune de ses that the data link layer uses, often called the hardware address on LANs. IPv4 addresses interfaces connectées àmust un be réseau. mapped to LAN hardware addresses and WAN serial link addresses. However, there is no real relationship between LAN media access control (MAC) or WAN serial addresses in the frame header and the IPv4 addresses used in the packet header, Répartition (adresse link réseau, adresse with the special exceptionmachine) of multicast addresses. IPv4 addressing scheme established in RFC 791 is known as classful Les classes de réseaux définies The paroriginal un «préfixe» addressing. The 32 bits of the IPv4 address fall into one of several classes based on the value of the initial bits in the IPv4 address. The major classes used for addresses were A, B, and C. Class D was (and is) used for IPv4 multicast traffic, and Class E was “reserved” for experimental purposes. Each class differs in the number of IPv4 address bits assigned to the network and the host portion of the IP address. This scheme is shown in Figure 4.2. Note that with Class A, B, and C, we are referring to the size of the blocks being allocated as well as the region from which they were allocated by IANA. However, Classes D and E refer to the whole respective region. Multicast addresses, when they were assigned for applications, for example, were assigned one at a time like (for instance) port numbers. (We’ll talk about port numbers in a later chapter.) In the rest of this chapter, references to Classes A, B, and C are concerned with address space sizes and not locations. The 4 billion (actually 4,294,967,296) possible IPv4 addresses are split up into five sont peu The utilisées. Exemple 3.0.0.0/8, General classes. five classes are not: equal in size, and AS80, Class A GE-CRD covers a full- half of the Electric whole Les adresses de classe A Aux niveaux des adresses IP Number of Addresses: 32-bit Address Starts with: % of Address Space Class A 0 (0–127) 231 5 2,147,483,648 50 Class B 10 (128–191) 230 5 1,073,741,824 25 Class C 110 (192–223) 229 5 536,870,912 12.5 Class D 1110 (224–239) 228 5 268,435,456 6.25 Class E 1111 (240–255) 228 5 268,435,456 6.25 First byte Second byte Third byte Company. Fourth byte FIGURE 4.2 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Classful IPv4 addressing, showing the number of addresses possible and percentage of the total address space for each class. Class D is still the valid IPv4 address range used for multicasting. — 13 décembre 2015 — 17 !"#$%%$%&'(&#)%$#*)$%&+,-#&"$%&-%./$%&+.#012-31$#% 4$%&."#$%%$%&+.#012-315#$% Adresses IP réservées pour des usages particuliers #$%&'()$%%$%&*$)+$,,$-,&(.$//$0,1$)23 ! Correspondance entre @MAC et @IP : le protocole ARP ($%&$-456%&($&+$%%'7$%&+18,69($%,6-','6)$% Ces adresses permettent d’effectuer : (:%67-$)&8'&+'0;6-$&051)'-,$ (:%67-$)&8$&):%$'1&051)'-,< ⋆ des envois de messages multi-destinataires ; ⋆ désigner la machine courante ; ⋆ désigner le réseau courant. ! X51,&O&Y:)5 ZP5)(6-',$1)&8169+E+$ ! X51,&O&Y:)5 6(<&($&+'0;6-$ [-&5)(6-',$1)&%1)&8$&):%$'1&8169+E+$ X51,&O&> I(<&($&):%$'1 >?@ \6//1%65-&86+6,:$&'1&):%$'1&8169+E+$ X51,&O&> ]5+^)$&M1$805-M1$ \6//1%65-&(6)67:$&4$)%&0$&):%$'1 U5108$ 67."#$%%$&"$&8,-23$&=>?@<A<B<CD&*$)+$,&(.$//$0,1$)23 !"#$%&'()(*(+,-.(/011$203 L’adresse de «boucle» (127.X.Y.Z) permet d’effectuer : ($%&05++1-60',65-%&6-,$)9*)57)'++$&%1)&8'&+E+$&+'0;6-$ ($%&,$%,%&($&857606$8%&):%$'1F< ⋄ des communications inter-programme sur la même machine !"#$%&'$%&"$%()*%('$%+",-'.$%#'%$/#.%+"$%01'(('2'#.%123$%$-0%('%01$'"-4 G<G<G<G&$%,&1,686%:&*')&1-$&+'0;6-$&*51)&05--'H,)$&%'&*)5*)$&'()$%%$&IJ&85)%&(.1-&*)50$%%1%& ⋄ des tests de logiciels réseaux. Dans ces cas là, les paquets ne sont pas réellement émis sur le réseau. (.'+5)K'7$<&5(('%6'70"%$'%+0/&-0'0%-#'%"60'$$'%89%+"0%(:3#.'02163"30'%6:-#'%"-.0'%2"&;3#'4 D’autres adresses particulières : ⋄ 0.0.0.0 est utilisé par une machine?LL<?LL<?LL<?LL&$%,&1-$&'()$%%$&($&(6//1%65-&850'8$&0')&$88$&(:%67-$&,51,$%&8$%&+'0;6-$%&(1&):%$'1& pour connaître sa propre adresse IP lors d’un processus d’amorçage (BOOTP). '1M1$8&'**'),6$-,&8.5)(6-',$1)&M16&1,686%$&0$,,$&'()$%%$<&+"$%6'%&/##"3$$"#&'%6-%01$'"-< Elle devra se procurer une adresse IP par l’intermédiaire d’une autre machine. 6$%&."#$%%$%&+,-#&#)%$.-&+#1*)&,-&190#.9$0&=%'-%&'00N%&(6)$0,&O&8P$F,:)6$1)D ⋄ 255.255.255.255 est une adresse de diffusion locale car elle désigne toutes les machines du réseau auquel appar8$%&'()$%%$%&($&08'%%$&Q&($&>G<G<G<G&O&>G<?LL<?LL<?LL&=>G<G<G<GRSD&T tient l’ordinateur qui utilise cette 8$%&'()$%%$%&($&08'%%$&U&($&>@?<>V<G<G&O&>@?<W><?LL<?LL&=>@?<>V<G<GR>?D&T& adresse. pas besoin de connaissance du réseau. 8$%&'()$%%$%&($&08'%%$&#&($&>"?<>VS<G<G&O&>"?<>VS<?LL<?LL&=>"?<>VS<G<GR>VD< !" Réseaux privés, RFC1918 ! ! ! ! ! ! ! Les adresses pour réseau privé ou intranet (sans accès direct à l’extérieur) : ⋆ les adresses de classe A de 10.0.0.0 à 10.255.255.255 (10.0.0.0/8) ; ⋆ les adresses de classe B de 172.16.0.0 à 172.31.255.255 (172.16.0.0/12) ; ⋆ les adresses de classe C de 192.168.0.0 à 192.168.255.255 (192.168.0.0/16). Ces réseaux ne sont pas «routés», ni diffusés dans le cas de BGP...mais faire attention ! xterm $ whois -h riswhois.ripe.net 192.168.0.0 route: 192.0.0.0/3 origin: AS3303 Combiner réseau à diffusion et réseau IP Faire le point… ∘ sur un réseau à datagramme, il circule…des datagrammes ! ; ∘ le réseau à datagramme est appelé réseau IP : il utilise des algorithmes, des formats de données définis dans la ∘ un réseau à diffusion fait circuler des messages de nature différente : les trames (on parle de trame Ethernet ou norme IP, «Internet Protocol» ; ∘ IEEE 802.3) ; un datagramme doit emprunter un réseau à diffusion pour atteindre un ordinateur : ⋄ principe d’encapsulation : le datagramme est «inclus» dans une trame Ethernet : ⋄ à l’adresse IP d’une machine doit correspondre l’identifiant de cette machine dans le réseau à diffusion : une adresse MAC : ⋆ l’adresse MAC est attachée à la carte réseau et est choisie par le constructeur de cette carte ; ⋆ l’adresse IP est choisi par l’administrateur réseau suivant la configuration qu’il veut donner à son réseau ; Comment faire la correspondance entre @MAC et @IP ? a. c’est l’ordinateur qui connaît l’adresse MAC de sa carte réseau ; b. c’est l’ordinateur qui connaît son adresse IP ; c. Qui peut dire à quelle adresse IP correspond tel adresse MAC ? L’ordinateur lui même ! Transmission physique des datagrammes IP On appelle « couche liaison de données », le logiciel chargé de : ▷ la mise en correspondance des adresses IP avec les adresses spécifiques des interfaces physiques ▷ l’encapsulation des datagrammes IP afin qu’ils puissent être transmis sur un support physique particulier. Correspondance entre adresses physiques et adresses IP Le protocole ARP “Address Resolution Protocol” : il fournit une correspondance dynamique entre une adresse IP connue et l’adresse matérielle lui correspondant. Fonctionnement : ▷ ARP exploite les possibilités de diffusion : Lorsque le protocole IP doit envoyer un datagramme à un équipement relié à un réseau à diffusion, la couche liaison de donnée consulte sa mémoire cache pour voir si l’adresse IP distante y est mise en correspondance avec une adresse physique. ⋄ Si c’est le cas le datagramme IP est émis immédiatement, enveloppé dans une trame Ethernet envoyée à l’adresse physique destination (@MAC). ⋄ Sinon la couche liaison de données construit une requête ARP. ▷ Lorsqu’un message ARP est reçu, la couche liaison de donnée fait : ⋄ une première vérification pour vérifier si l’adresse IP de l’émetteur se trouve déjà dans la mémoire cache ⋄ une seconde vérification pour voir si l’adresse IP demandée correspond à l’adresse IP locale, si ce n’est pas ARP locale sinon il y a mise à jour de la mémoire cache, le cas le message est détruit, sinon si le message ARP est une requête, une réponse ARP est envoyée. Illustration d’ARP Comment échanger réellement sur un réseau local à diffusion ? ⋆ Les machines ont chacune une carte réseau ; ⋆ Chaque carte a une adresse MAC unique donnée par le constructeur ; ⋆ Chaque machine dispose d’une adresse IP donnée par l’administrateur du réseau. What’s the MAC address of 10.10.12.52? Tell 10.10.12.166, okay ? 1 3 Here’s my MAC address... Ethernet LAN ARP Request Broadcast 4 Inxclient 10.10.12.166 bsdserver 10.10.12.77 wincli2 10.10.12.222 CE6 10.10.12.1 ARP Request Sent and Reply Processed Not me! (request ignored) Not me! (request ignored) Not me! (request ignored) (These two devices can cache the sender’s MAC and IP addresses.) d. Définition d’un protocole pour « questionner » les ordinateurs : ARP, «Address Resolution Protocol» winsvr2 10.10.12.52 2 Hey! That’s me! (reply sent unicast) La machine 10.10.10.166 demande l’@MAC de la machine 10.10.12.52. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 18 Chapter 8 • Internet Protocols Illustration d’ARP : les échanges IP: 192.200.96.21 MAC: 01-23-45-67-89-AB 365 IP: 192.200.96.22 MAC: 00-01-03-1D-CC-F7 IP: 192.200.96.20 MAC: 49-BD-2F-54-1A-0F Sender ARP Request: to FF-FF-FF-FF-FF-FF ARP Reply Sender MAC: A3A3-B0B0-2121-A1A1-6060-35 Sender IP: 192.200.96.23 Target MAC: 0101-2323-4545-6767-8989-AB Target IP: 192.200.96.21 IP: 192.200.96.23 MAC: A3-B0-21-A1-60-35 ARP and response example. ⋄Figure La 8-17: requête derequest la machine «192.200.96.21» demande l’@MAC de la machine ⋄!!"!!"!!"!!"!!"!!#$%&'(%)*+(%,'-,%*.)/%,'(%01%-++2(//%2(345(/%.5,'%-)%671%3-89(,%8*),-5)5):% La réponse de la machine 192.200.96.23 donne la réponse @MAC A3:B0:21:A1:60:35. 192.200.96.23 ; ,'(%2(/3*)+(2;/%<6=%-++2(//#%&'(%2(34>%5/%/(),%,*%,'(%?@(25(2;/%<6=%-++2(//A%-B-54-C4(%D2*E%,'(% 671%2(?@(/,#% !5:@2(%F"GF%/'*./%,'(%671%3-89(,%D*2E-,%D*2%E-335):%01BH%-++2(//(/%,*%<6=%-++2(//(/#%0)%,'5/% 8-/(A% ,'(% 671% 3-89(,% /5I(% 5/% JF% C>,(/#% 671% 8-)% C(% @/(+% D*2% *,'(2% 95)+/% *D% E-335):/A% .5,'% +5DD(2(),%-++2(//%/5I(/A%-/%/,-)+-2+5I(+%C>%,'(%06K6%Lhttp://iana.org/$#%&'(%3-89(,%D5(4+/%-2(M% Illustration d’ARP •%N-2+.-2(%&>3(M%/3(85D5(/%,'(%45)9"4->(2%32*,*8*4%,>3(#%!*2%(O-E34(A%,'(%8*+(%D*2%P,'(2)(,%5/%G#% Le protocole RARP “Reverse Address Resolution Protocol” •% 12*,*8*4% &>3(M% /3(85D5(/% ,'(% @33(2% 4->(2% 32*,*8*4% D*2% .'58'% ,'(% 671% 2(?@(/,% 5/% 5),()+(+#% !*2% Il réalise l’opération inverse : (O-E34(A%01BH%5/%()8*+(+%-/%QOQFQQ#% ∘ une machine sans adresse IP connue peut envoyer une requête RARP pour demander son adresse IP. ∘•%N-2+.-2(%R():,'M%4():,'%L5)%C>,(/$%*D%-%'-2+.-2(%-++2(//#%P,'(2)(,%-++2(//(/%/5I(%5/%S%C>,(/%LHF% une machine particulière (un serveur gérant le réseau) lui répond et lui affecte son adresse IP. ∘C5,/$#% cette machine dispose d’une table de correspondance : (adresse physique, adresse IP). Le protocole RARP est utile pour amorcer une station sans disque, un Terminal X-Window, ou une imprimante. Layer 3: •% 12*,*8*4% R():,'M% 4():,'% L5)% C>,(/$% *D% -% 4*:58-4% -++2(//% *D% ,'(% )(,.*29" End-to-End Pour consulter la table ARP 4->(2%32*,*8*4#%01BH%-++2(//%/5I(%5/%H%C>,(/%LTJ%C5,/$#% Sous Linux Layer 2: •% U3(2-,5*)M% xterm /3(85D5(/% ,'(% *3(2-,5*)% .'-,% ,'(% /()+(2% 5/% 3(2D*2E5):M% G% D*2% Network pef@solaris:~$ ip neighbor 2(?@(/,A%J%D*2%2(34>#% 192.168.42.254 dev eth0 lladdr 00:07:cb:cc:d4:e5 STALE •%V()+(2%N-2+.-2(%6++2(//M%'-2+.-2(%L<6=$%-++2(//%*D%,'(%/()+(2#% 192.168.42.122 dev eth0 lladdr 64:b9:e8:d2:23:ba REACHABLE Layer 1: Link Sous Windows •%V()+(2%12*,*8*4%6++2(//M%@33(2"4->(2%32*,*8*4%-++2(//%*D%,'(%/()+(2A%(#:#% Address Resolution Protocol (ARP) 01#% •% &-2:(,% N-2+.-2(% 6++2(//M% '-2+.-2(% L<6=$% -++2(//% *D% ,'(% 5),()+(+% 2(8(5B(2#% &'5/% D5(4+% 5/% 5:)*2(+%5)%2(?@(/,%*3(2-,5*)/#% •%&-2:(,%12*,*8*4%6++2(//M%@33(2%4->(2%32*,*8*4%-++2(//%*D%,'(%5),()+(+%2(8(5B(2#% &'(% :2-3'58% *)% ,'(% 25:',% /'*./% 671% -/% -% 45)9"4->(2% 32*,*8*4#% &'5/% 5/% /*E(.'-,% 8*),2*B(2/5-4% C(8-@/(% 671% @/(/% -)*,'(2% 45)9"4->(2% 32*,*8*4% D*2% /()+5):% 671% 3-89(,/A% -)+% 671% +(-4/% .5,'% )(,.*29"4->(2A%01%-++2(//(/#%&'(%2(-/*)%,*%84-//5D>%671%-/%-%45)9"4->(2%32*,*8*4%5/%,'-,%5,%*3(2-,(/% *B(2% -% /5):4(% 45)9% 8*))(8,5):% )*+(/% *)% ,'(% /-E(% 4*8-4"-2(-% )(,.*29#% W)459(% )(,.*29"4->(2% 32*,*8*4/A%5,%+*(/%)*,%/3-)%E@4,534(%'*3/%-)+%+*(/%)*,%/()+%3-89(,/%-82*//%5),(2E(+5-,(%)*+(/#% Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Pour envoyer un datagramme d’une source vers une destination, il faut savoir localiser la machine destination. Deux possibilités : ▷ les deux machines font partie du même réseau local : on parle de routage direct (sur Ethernet, on utilisera le protocole ARP et l’envoi direct sur le réseau à diffusion) ; ▷ les deux machines ne font pas partie du même réseau local : on parle de routage indirect. On doit passer par un intermédiaire qui permet de sortir du réseau local pour aller vers l’extérieur : le routeur (ou appelé «passerelle» ou gateway). Pour faire du routage direct ou indirect pour un datagramme Target Sender MAC: 0101-2323-4545-6767-8989-AB Sender IP: 192.200.96.21 Target IP: 192.200.96.23 Routage direct & indirect, encapsulation & fragmentation ▷ ▷ ▷ ▷ savoir si les deux machines font partie du même réseau local ; connaître l’@IP d’un routeur de sortie ; remettre le datagramme à la machine destination si elles sont dans le même réseau locale ; remettre le datagramme au routeur sinon. Comment savoir si Source et Destination sont dans le même réseau ? Il faut comparer l’ <id. réseau> des deux adresses : si c’est la même alors les deux sont dans le même réseau local. Comment remettre le datagramme au routeur Il faut utiliser le mécanisme d’encapsulation d’un datagramme dans une trame : ▷ la trame sert à remettre des données d’une machine connectée à un réseau local à une autre machine connectée au même réseau locale ; ▷ la trame possède une @MAC de destination indépendante de l’@IP : il est possible d’envoyer la trame à une machine dont l’@IP ne correspond pas à son @IP ! Par exemple : on peut envoyer une datagramme à destination de l’extérieur du réseau local à l’@MAC du routeur. Attention : les attaques MiTM, «Man-in-the-Middle», opèrent sur l’association @MAC ⇔ @IP du routeur ! Savoir si deux machines appartiennent au même réseau local En utilisant la notion de classe Il suffisait de comparer les <id. réseau> des deux @IP suivant la répartition donnée par la classe, mais… La notion de sous-réseau ou Subnetting But Avantages Partition d’un réseau en différents sous-réseaux. Éviter d’avoir recours à plusieurs réseaux (de classe A, B, ou C) pour disposer de réseaux autonomes au sein d’une même entité Exemple : l’université de Limoges avec les machines du site de Condorcet, du campus de Vanteaux, de La Borie… Mise en œuvre Définition de sous-réseaux en découpant <id. machine> en deux parties : <id. de réseaux sur r bits><id. de sous-réseau sur s bits><id. de machine sur m bits>, avec r + s + m = 32. Le découpage par multiple de 8bits facilite le travail des routeurs, mais n’est pas obligatoire. Une machine connectée à un sous-réseau doit connaître : ∘ son @IP ; ∘ le nombre de bits attribués à l’<id. réseau + sous-réseau> et à <id. machine> ; Remarque : l’ensemble des sous-réseaux d’un même réseau est vu de l’extérieur comme un unique réseau (gestion du courrier…). Masque de sous-réseau (subnet mask) c’est un mot de 32 bits contenant : ⋆ des bits à 1 à la place de l’identificateur de réseau et de sous-réseau, ⋆ des bits à zéro au lieu et place de l’identificateur de machine. Ainsi, 255.255.255.0 indique que les premiers 24bits désignent le sous-réseau. Nouvelle notation CIDR : @IP / nombre de bits pour identifiant réseau Exemple : 164.81.55.0/24 pour désigner un réseau ou bien 164.81.55.12/24 pour une machine. — 13 décembre 2015 — 19 Algorithme de routage : choix entre direct ou indirect Le premier routeur ou la «passerelle» : sortir du réseau local Localisation de la machine destinataire Sous Windows Chaque ordinateur connecté au réseau Internet dispose : − d’une @IP ; − d’un masque de sous-réseau (indiquant la répartition des 32 bits d’@IP entre <id. réseau><id. machine>). Lors de l’envoi d’un paquet de S à destination d’une machine D, l’algorithme de routage est : ⋆ combinaison avec l’opérateur binaire «ET», &, de l’@IP de S et du masque de sous-réseau de S ; ⋆ combinaison avec l’opérateur binaire «ET», &, de l’@IP de D et du masque de sous-réseau de S ; ⋆ comparaison entre ces deux valeurs : ⋄ Si 𝑀𝑎𝑠𝑞𝑢𝑒(𝑆)&@𝐼𝑃(𝑆) == 𝑀𝑎𝑠𝑞𝑢𝑒(𝑆)&@𝐼𝑃(𝐷) alors envoi en direct sur le réseau local ⋄ Sinon c’est un routage indirect : envoi par l’intermédiaire d’un routeur de sortie du réseau local. Commande ipconfig Nouvelle version : la notion de préfixe Actuellement, on ne tient plus compte de la notion de classe (CIDR : Classless Inter-Domain Routing), on indique la répartition <id. réseau><id. machine> directement à l’aide d’un «/n». Exemple : 164.81.128.34/18 où /18 indique l’affectation des 18 premiers bits de l’adresse pour indiquer le réseau (notation : 255.255.192.0 pour un masque). D’où : 𝑆𝑖 𝑝𝑟𝑒𝑓 𝑖𝑥𝑒(𝑡𝑎𝑖𝑙𝑙𝑒u� , @𝐼𝑃(𝑆)) == 𝑝𝑟𝑒𝑓 𝑖𝑥𝑒(𝑡𝑎𝑖𝑙𝑙𝑒u� , @𝐼𝑃(𝐷))⟹ 𝑟𝑜𝑢𝑡𝑎𝑔𝑒 𝑑𝑖𝑟𝑒𝑐𝑡 Commande route print Mise en œuvre du routage direct Utilisation du réseau à diffusion et donc de la fameuse @MAC et du protocole ARP… Mise en œuvre du routage indirect ▷ il faut connaitre l’adresse d’un routeur de sortie ; ▷ il faut remettre le datagramme à ce routeur en routage direct. CHAPTER 5 Address Resolution Protocol Le premier routeur ou la «passerelle» : sortir du réseau local Sous Linux Commandes ip address & ip link permet de connaître la configuration des interfaces actives : carte réseau, pont (bridge), interface virtuelle… xterm pef@solaris:~$ ip link show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff pef@solaris:~/RESEAUX_I/FIREWALL$ ip address show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff inet 192.168.42.83/24 brd 192.168.42.255 scope global eth0 inet6 fe80::211:deff:fead:beef/64 scope link valid_lft forever preferred_lft forever Pour : ⋆ activer une interface : sudo ip link set dev eth0 up ⋆ désactiver : sudo ip link set dev eth0 down ⋆ enlever les adresses IP associées à une interface : sudo ip address flush dev eth0 Commande ip route xterm pef@solaris:~$ ip route 137.204.212.128/25 dev bridge_dmz proto kernel scope link src 137.204.212.129 137.204.212.0/25 dev bridge_internal proto kernel scope link src 137.204.212.1 192.168.42.0/24 dev eth0 proto kernel scope link src 192.168.42.83 metric 1 169.254.0.0/16 dev eth0 scope link metric 1000 default via 192.168.42.254 dev eth0 proto static On remarque que la route par défaut pointe vers 192.168.42.254, c-à-d que tout datagramme qui n’est pas destiné à un réseau connu de la table de routage sera transmis vers le routeur associé à cette adresse. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 147 Routage & ARP : Quatre cas de figure Sending Host Sending Host ARP bsdclient LAN Inxserver CEO Receiving Host Receiving Router Case 3: Find the address of a router on the same subnet as the source router. Case 4: Find the address of a host on the same subnet as the source router. Sending Router ARP CE0 ARP Wincli1 LAN Sending Router 1. hôte vers hôte : l’émetteur est un hôte qui veut envoyer un paquet à un autre hôte dans le même réseau local. Dans ce cas, l’@IP de destination est connue et l’@MAC de destination doit être trouvée. Case 2: Find the address of a router on the same subnet as the source. Case 1: Find the address of a host on the same subnet as the source. ARP CE6 LAN LAN PE5 2. hôte vers routeur : l’émetteur est un hôte et veut envoyer un paquet à un autre hôte n’appartenant pas au réseau local. Il doit consulter la table de routage, «forwarding table» ou «Forwarding Information Base», pour trouver l’@IP du routeur. L’@IP du routeur est connue et l’@MAC du routeur doit être trouvée. bsdserver Receiving Router Receiving Host 5.2 3.FIGURE routeur vers routeur : l’émetteur est un routeur et veut «faire suivre» un paquet à un autre routeur connecté dans le même Fourréseau ARP scenarios. local.Note that routers employ ARP just as hosts do, and that an ARP stays on the same subnet as the sender. La table de routage est utilisée pour trouver l’@IP du routeur. L’@IP du routeur est connue et l’@MAC du routeur destination doit être trouvée. Router to router—The ARP sender is a router and wants to forward a packet to the: same LAN. Aest forwarding (routing) is used to find 4. another routeurrouter vers on hôte l’émetteur un routeur et veuttable «faire suivre», «forward», un paquet vers un hôte dans le même réseau the IP address of the router. In this case, the IP address of the router is known local. and the MAC address of the destination router must be found. L’@IP de l’hôteARP est connue, est contenue le paquet et l’@MAC de l’hôte doit être trouvée. Router to host—The sender is elle a router and wants dans to forward a packet to a host on the same LAN. In this case, the IP address of the host is known (from Attention the IP destination address on the packet) and the MAC address of the host must be le found. «...dans même réseau local» ! ⟹ ARP ne sert quand dans un réseau Let’s look at Case 1 in detail because the others are more or less variations on this basic theme. In Case 1, ARP is used when a host wants to send to another host on the same IP subnet and the MAC address of the destination is not already known. We’ll start the LAN2 host lnxclient sending a short message to winsrv2 (it doesn’t really matter what the message is). Because this is the first time that these devices have communicated in a long time, an ARP request is broadcast on LAN2 and the sender waits for a reply. — local. 13 décembre 2015 — 20 Encapsulation en technologie Ethernet Routage direct illustré Le réseau à diffusion utilise une technologie différente du réseau IP : ⋆ il dispose de ses propres adresses : @MAC ; ⋆ il utilise des messages sous un format particulier : la trame Ethernet ou IEEE 802.3 : MAC header octets : 6 6 2 @MAC dest @MAC src EtherType 0 à 1500 0 à 46 4 Data Pad FCS Chaque machine est identifiée par : ⋆ une adresse de niveau 2 (@MAC) ; ⋆ une adresse de niveau 3 (@IP) ; ⋆ un réseau d’appartenance (connu à l’aide du préfixe «/n» ou du masque réseau, netmask). Où : ⋄ @MAC destination puis @MAC source : ⟹ le récepteur détermine immédiatement s’il est destinataire ; ⋄ EtherType (valeur>1536) : ⋆ 0x0800 pour un datagramme IPv4, 0x08DD pour un datagramme IPv6, 0x806 pour un message ARP, 0x888E pour du 802.1x, 0x8100 pour du VLAN… ⋆ mais, si la valeur < 1500 ⟹ trame 802.3 avec LLC, «Logical Link Control» ; ⋄ Data : les données de la trame, complétées éventuellement par du bourrage (la longueur de ce champ est comprise entre 0 et 1500 octets) ; ⋄ PAD ou bourrage : octets de bourrage sans signification, insérés si la longueur du champ Data est insuffisante (inférieure à 46 octets) ; ⋄ FCS, frame check sequence ou Checksum : champ pour la détection d’erreurs (rarement transmis aux programmes). Attention ⋆ Si le FCS est incorrect alors la trame n’est pas transmise au système d’exploitation. ⋆ La trame a une taille de 64 à 1518 octets (6 + 6 + 2 + 46 + 4 = 64 à 6 + 6 + 2 + 1500 + 4 = 1518). !"#$%&'()'($#(*#+,-.'()/-"'(,.#0'(1('"*#+&-$#,23"(4,.#0'(456(4786999 Encapsulation :#+,-.'()/-"'(,.#0'(;($/#2)'()'(<2.'&=#.> Les datagrammes IP sont encapsulés dans des trames Ethernet : ⋆ la trame contient une @MAC source et une @MAC de destination ; ⋆ le datagramme contient une @IP source et une @IP destination et des données ; ⋆ la trame contient le datagramme IP. !"#$%&'()(*(+,-.(/011$203 Un datagramme IP est contenu dans une trame, par exemple une trame Ethernet : Routage direct illustré !" Le datagramme IP encapsule lui-même un datagramme UDP… Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 21 Routage direct illustré & ARP Pour connaitre la correspondance entre adresse IP et adresse MAC : ▷ mise en oeuvre du protocole ARP (Address Resolution Protocol) ; ▷ construction d’une table de correspondance entre @ IP et MAC sur chaque machine (cache ARP). La modification malveillante de cette table est possible : «ARP Spoofing» (usurpation d’identité), «ARP Cache Poisoning» (insertion d’association erronée). Routage indirect illustré Le paquet de la machine 164.81.1.178 est routé par l’intermédiaire du routeur vers la machine 193.50.3.12. Routage indirect illustré Le datagramme IP est encapsulé, par la machine 164.81.1.178, dans une trame à destination du routeur, puis, par le routeur, dans une nouvelle trame à destination de la machine 193.50.3.12. L’encapsulation permet la redirection vers le routeur sans modifier les @IP du datagramme. Le DNS, «Domain Name Server» : Principe de délégation Le système DNS est entièrement distribué au niveau planétaire en utilisant la délégation de domaine. À tout domaine est associé une responsabilité administrative. Une organisation responsable d’un domaine peut : ▷ découper le domaine en sous-domaines ; ▷ déléguer les sous-domaines à d’autres organisations : ⋄ qui deviennent responsables du (des) sous-domaine(s) qui leurs sont délégué(s) peuvent, à leur tour, déléguer des sous-domaines des sous-domaines qu’elles gèrent. ⋄ Le domaine parent contient alors seulement un pointeur vers le sous-domaine délégué; ⋆ ⋆ ⋆ ⋆ Les serveurs de nom enregistrent les données propres à une partie de l’espace nom de domaine dans une zone. le serveur de nom à autorité administrative sur cette zone ; un serveur de nom peut avoir autorité sur plusieurs zones ; une zone contient les informations d’un domaine sauf celles qui sont déléguées : . com net domaine fr amazon zone unilim www Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — limdns 13 décembre 2015 — 22 Mécanismes Les bases «WhoIs» WhoIs «unilim.fr» darkstar:~ pef$ whois unilim.fr %% %% This is the AFNIC Whois server. %% %% complete date format : DD/MM/YYYY %% short date format : DD/MM %% version : FRNIC-2.5 %% %% Rights restricted by copyright. %% See http://www.afnic.fr/afnic/web/mentions-legales-whois_en %% %% Use '-h' option to obtain more information about this service. %% %% [2a01:0e35:8a71:bec0:66b9:e8ff:fed2:23ba REQUEST] >> unilim.fr %% %% RL Net [##########] - RL IP [#########.] %% domain: unilim.fr status: ACTIVE hold: NO holder-c: UDL3-FRNIC admin-c: JPL1325-FRNIC tech-c: GRST1-FRNIC tech-c: NV70-FRNIC tech-c: GU245-FRNIC zone-c: NFC1-FRNIC nsl-id: NSL5796-FRNIC registrar: GIP RENATER Expiry Date: 01/01/2016 created: 01/01/1995 last-update: 15/12/2014 source: FRNIC ns-list: nserver: nserver: nserver: source: Resolver registrar: type: address: address: country: phone: fax-no: e-mail: website: anonymous: registered: source: GIP RENATER Isp Option 1 23-25 Rue Daviel PARIS FR +33 1 53 94 20 30 +33 1 53 94 20 31 [email protected] http://www.renater.fr NO 01/01/1998 FRNIC nic-hdl: type: contact: address: address: address: country: phone: e-mail: registrar: changed: anonymous: obsoleted: source: JPL1325-FRNIC PERSON Jean-Pierre Laine Unvi. de Limoges 123, Aveneu Albert Thomas 87060 Limoges FR +33 5 55 45 77 08 [email protected] GIP RENATER 24/10/2013 [email protected] NO NO FRNIC Le responsable du domaine : Jean-Pierre Laine NSL5796-FRNIC limdns.unilim.fr [164.81.1.4] limdns2.unilim.fr [164.81.1.5] cnudns.cines.fr [193.48.169.40 2001:660:6301:301::2:1] FRNIC La requête DNS Modèle de fonctionnement client / serveur Les «resolvers» sont les processus clients qui contactent les serveurs de nom Fonctionnement : ⋄ contacte un « name server » (dont l’(les) adresse(s) est (sont) configurées sur la machine exécutant ce resolver) ; ⋄ interprète les réponses et retourne l’information au logiciel appelant ; ⋄ gère un cache (dépend de la mise en oeuvre). Le serveur de nom interroge également d’autres serveurs de nom, lorsqu’il n’a pas autorité sur la zone requise (fonctionnement itératif ou récursif). Si le serveur de nom est en dehors du domaine requis, il peut être amené à contacter un serveur racine. Amélioration des performances Mécanisme de cache dans les serveurs pour limiter le nombre d’interrogations ⋄ évite la surcharge du réseau ; ⋄ diminue les délais de réponse ; ⋄ baisse la charge des serveurs de haut niveau (les serveurs racines). Remplissage du cache lors des requêtes des clients et durée de vie limitée dans le cache ⋄ TTL (Time To Live) spécifié dans les réponses pour éviter qu’une association soit conservée trop longtemps. Types de serveur de nom Serveur de nom primaire : ⋄ maintient la base de données de la zone dont il a l’autorité administrative Serveur de nom secondaire : ⋄ interroge périodiquement le serveur de nom primaire et met à jour les données Il y a un serveur primaire et généralement plusieurs secondaires. La redondance permet la défaillance éventuelle du primaire et du (des) secondaire(s) Un serveur de nom peut être primaire pour une (des) zone(s) et secondaire pour d’autre(s). Les 13 serveurs racines − l’utilisateur utilise un nom de domaine dans une application (exemple : ping www.bonjour.fr) ; − l’application cliente demande la traduction du nom de domaine auprès d’un serveur de nom (DNS) cette opération s’appelle la « résolution de nom», ou «name resolver» ; ⋄ si le serveur connait la réponse il répond ; ⋄ sinon, ⋆ s’il fait autorité pour le domaine demandé, alors pas de réponse (la machine n’existe pas) ; ⋆ s’il ne fait pas autorité, le serveur de nom interroge d’autres serveurs de nom (de plus grand suffixe commun) jusqu’à ce que l’association nom de domaine / adresse IP soit trouvée ; ⋄ le serveur de nom retourne l’adresse IP au logiciel client : @IP de la machine «www» (il mémorise la réponse dans un cache et pour une certaine durée) ; Le logiciel client contacte le serveur, comme si l’utilisateur avait spécifié une adresse IP. Exemple : xterm $ telnet ishtar.msi.unilim.fr connexion établie avec 164.81.60.43 Le terme «anycast» permet d’offrir des services DNS de proximité à l’aide de cette capacité offerte par IPv6. On peut remarquer que ce service de proximité permet même de délocaliser géographiquement les serveurs et améliore la disponibilité et la sécurité du système DNS. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 23 Exemple : une requête DNS vers «google.com» xterm bonnefoi@msi:~$ dig +trace @164.81.1.5 www.google.com ; <<>> DiG 9.7.3 <<>> +trace @164.81.1.5 www.google.com ; (1 server found) ;; global options: +cmd . 344794 IN NS j.root-servers.net. . 344794 IN NS g.root-servers.net. . 344794 IN NS l.root-servers.net. . 344794 IN NS k.root-servers.net. . 344794 IN NS c.root-servers.net. . 344794 IN NS f.root-servers.net. . 344794 IN NS e.root-servers.net. . 344794 IN NS m.root-servers.net. . 344794 IN NS b.root-servers.net. . 344794 IN NS d.root-servers.net. . 344794 IN NS h.root-servers.net. . 344794 IN NS a.root-servers.net. . 344794 IN NS i.root-servers.net. ;; Received 272 bytes from 164.81.1.5#53(164.81.1.5) in 1 ms com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. ;; Received 492 bytes from 193.0.14.129#53(k.root-servers.net) in 31 ms google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; Received 168 bytes from 192.12.94.30#53(e.gtld-servers.net) in 34 ms www.google.com. 604800 IN CNAME www.l.google.com. www.l.google.com. 300 IN A 209.85.227.147 www.l.google.com. 300 IN A 209.85.227.106 www.l.google.com. 300 IN A 209.85.227.103 www.l.google.com. 300 IN A 209.85.227.99 www.l.google.com. 300 IN A 209.85.227.105 www.l.google.com. 300 IN A 209.85.227.104 ;; Received 148 bytes from 216.239.32.10#53(ns1.google.com) in 26 ms ⋆ la configuration de la machine msi.unilim.fr : xterm bonnefoi@msi:~$ more /etc/resolv.conf search msi.unilim.fr unilim.fr nameserver 164.81.60.1 nameserver 164.81.1.4 nameserver 164.81.1.5 ⋆ la requête fait appel au serveur DNS 164.81.1.5 connu de la machine msi.unilim.fr, mais demandé explicitement dans l’utilisation de l’outil dig. ⋆ le serveur, resolver, 164.81.1.5 réalise une requête à différents «root servers» ⋆ il obtient une réponse de la part du serveur racine «k.root-servers.net» qui lui donne la liste des serveurs «GTLD», «Generic Top Level Domain», chargés du domaine «.com» ; ⋆ le serveur «e.gtld-servers.net» lui renvoi la liste des serveurs DNS en charge du domaine google.com ; ⋆ le serveur DNS «ns1.google.com» renvoi une liste d’adresse correspondant à la machine google.com. Les serveurs racines présents dans le système d’exploitation ; Cache file: . IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. IN A . IN NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. IN A . IN NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. IN A . IN NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. IN A . IN NS E.ROOT-SERVERS.NET. 198.41.0.4 128.9.0.107 Les données d’un serveur DNS sont enregistrées dans une base identifiée par les noms de domaine correspondants (chaque enregistrement est appelé RR, «Resource Records»). Types d’enregistrements : ∘ SOA : décrit l’autorité administrative (Start of Authority) ∘ NS : liste de serveurs de nom pour ce domaine ∘ A : correspondance nom -> adresse ∘ PTR : correspondance adresse -> nom ∘ CNAME : alias ou surnom ∘ TXT : texte ∘ HINFO : description machine, plus utilisé pour des questions de sécurité ∘ RR = { classe, type, clé, valeur } où classe est IN pour INTERNET Exemple : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SOA = Start of Authority Spécifie que ce serveur de nom a autorité sur le domaine ; Database file msi.unilim.fr zone. unilim.fr IN SOA msi.unilim.fr ( 2006110204 ; serial number (ex : AAAAMMJJnn) 21600 ; refresh (ex : 6h période de mise à jour des secondaires) 3600 ; retry (ex: 1h durée minimale avant procaine interrogation) 86400 ; expire (ex: 1 jour) 3600 ) ; minimum TTL des entrées dans le cache NS dns.msi.unilim.fr TXT « Departement Informatique » ishtar IN A 164.81.60.43 msi IN A 164.81.60.6 www IN CNAME msi ; des alias 164.81.60.6.in-addr IN PTR msi.unilim.fr 192.33.4.12 128.8.10.90 La résolution inversée d’adresse : @IP vers «nom symbolique» Resolution inverse Elle consiste a obtenir le nom de domaine à partir de l’adresse IP : − pour faciliter la compréhension des humains − pour des raisons de sécurité Elle est plus délicate que de nom vers IP car le système DNS est organisé pour la résolution de nom ⟶ recherche exhaustive ??? Solution : utiliser les adresses comme des noms : ⋄ le domaine «in-addr.arpa» ⋄ les noms des noeuds correspondent aux octets de l’adresse IP en ordre inverse ⋄ le domaine in-addr.arpa a 256 sous-domaines, ⋄ chacun de ces sous-domaines a 256 sous-domaines, ⋄ chacun de ces sous-domaines a, à son tour, 256 sous-domaines, ⋄ le 4ème niveau correspond à un NS connaissant le nom de domaine associé à cette adresse IP. Le nom de domaine associé à la résolution inverse est noté selon l’adresse IP inversée car la résolution d’un nom de domaine se fait de droite à gauche : Exemple : 43.60.81.164.in-addr.arpa Résolution : in-addr.arpa A.ROOT-SERVER.NET 164.in-addr.arpa NS.RIPE.NET .in-addr.arpa NS.RIPE.NET 60.81.164.in-addr.arpa msi.unilim.fr Configuration du serveur DNS Certains champs correspondent à des services Le serveur de courrier MX = Mail eXchanger Permet l’adressage email sur la base du nom de domaine plutôt que sur l’adresse du (des) serveur(s) de mail : ⋄ [email protected] plutot que [email protected] ; ⋄ permet à l’émetteur d’ignorer quelle est la machine serveur de mail ; ⋄ permet le deplacement du gestionnaire de mail vers une autre machine ; ⋄ permet la gestion de plusieurs serveurs de mail avec priorité dans l’ordre de consultation des serveurs L’enregistrement MX est utilisés par les MTA, «Mail Transfer Agent», en tenant compte des priorités : xterm xterm bonnefoi@msi:~$ dig +short mx unilim.fr bonnefoi@msi:~$ dig +short mx google.com 50 mail.unilim.fr. 30 alt2.aspmx.l.google.com. 40 alt3.aspmx.l.google.com. 50 alt4.aspmx.l.google.com. 10 aspmx.l.google.com. 20 alt1.aspmx.l.google.com. Le MTA utilise le protocole SMTP, «Simple Mail Transfer Protocol», en tant que client. xterm darkstar:~ pef$ dig +short @164.81.1.4 -x 164.81.60.163 portable-pf.msi.unilim.fr. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 24 Configuration manuelle d’une machine pour l’accès à Internet Le DNS : utilisation de la commande dig ⋆ Configuration de l’adresse IP et du réseau de connexion : Une requête plus concise xterm xterm root@solaris:~# ip address flush dev eth0 bonnefoi@msi:~$ dig +noall +answer web.unilim.fr web.unilim.fr. 83023 IN A 164.81.1.61 root@solaris:~# ip address show dev eth0 Pour IPv6 avec des champs adresses 4 fois plus grand (AAAA) 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 xterm link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff bonnefoi@msi:~$ dig +short AAAA www.renater.fr 2001:660:3001:4002::10 root@solaris:~# ip address add 192.168.42.57/24 brd + dev eth0 root@solaris:~# ip address show dev eth0 Interrogation du SOA 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 xterm bonnefoi@msi:~$ dig soa unilim.fr ; <<>> DiG 9.7.3 <<>> soa unilim.fr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36568 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 6 ;; QUESTION SECTION: ;unilim.fr. IN SOA ;; ANSWER SECTION: unilim.fr. 86400 IN SOA limdns.unilim.fr. postmaster.unilim.fr. 2011091501 28800 7200 3600000 86400 ;; AUTHORITY SECTION: unilim.fr. 78813 IN NS cnudns.cines.fr. unilim.fr. 78813 IN NS limdns2.unilim.fr. unilim.fr. 78813 IN NS limdns.unilim.fr. ;; ADDITIONAL SECTION: cnudns.cines.fr. 2583 IN A 193.48.169.40 cnudns.cines.fr. 2583 IN AAAA 2001:660:6301:301::2:1 limdns.unilim.fr. 73317 IN A 164.81.1.4 limdns.unilim.fr. 85383 IN AAAA 2001:660:6201:1::4 limdns2.unilim.fr. 73317 IN A 164.81.1.5 limdns2.unilim.fr. 85383 IN AAAA 2001:660:6201:1::5 ;; ;; ;; ;; link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff inet 192.168.42.57/24 brd 192.168.42.255 scope global eth0 root@solaris:~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:11:de:ad:be:ef inet adr:192.168.42.57 Bcast:192.168.42.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Masque:255.255.255.0 Metric:1 Packets reçus:2222687 erreurs:1723210 :7968 overruns:0 frame:0 TX packets:915273 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:1148981328 (1.1 GB) Octets transmis:807289372 (807.2 MB) ⋆ Configuration de la route par défaut : Interruption:19 Adresse de base:0x2024 xterm root@solaris:~# ip route add default via 192.168.42.254 Query time: 18 msec SERVER: 164.81.60.1#53(164.81.60.1) WHEN: Thu Sep 15 13:25:13 2011 MSG SIZE rcvd: 276 root@solaris:~# ip route 192.168.42.0/24 dev eth0 proto kernel scope link src 192.168.42.57 default via 192.168.42.254 dev eth0 Il ne manquera plus qu’à configurer la résolution DNs avec le fichier /etc/resolv.conf. Configuration paramétrée d’une machine pour l’accès à Internet Le DNS : plus loin Le TTL qui décroit en direct et «Round Robin» On fait plusieurs requêtes en suivant, et on constate que la durée de vie de la validité de la réponse diminue : xterm bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 300 IN A 74.125.230.86 gmail.com. 300 IN A 74.125.230.87 gmail.com. 300 IN A 74.125.230.88 gmail.com. 300 IN A 74.125.230.85 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 298 IN A 74.125.230.85 gmail.com. 298 IN A 74.125.230.86 gmail.com. 298 IN A 74.125.230.87 gmail.com. 298 IN A 74.125.230.88 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 271 IN A 74.125.230.87 gmail.com. 271 IN A 74.125.230.88 gmail.com. 271 IN A 74.125.230.85 gmail.com. 271 IN A 74.125.230.86 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 30 IN A 74.125.230.87 gmail.com. 30 IN A 74.125.230.88 gmail.com. 30 IN A 74.125.230.85 gmail.com. 30 IN A 74.125.230.86 On remarque que la réponse du serveur DNS est : ⋆ multiple ; ⋆ l’ordre de ces réponses change avec le temps xterm bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 25 IN A 74.125.230.86 gmail.com. 25 IN A 74.125.230.87 gmail.com. 25 IN A 74.125.230.88 gmail.com. 25 IN A 74.125.230.85 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 3 IN A 74.125.230.86 gmail.com. 3 IN A 74.125.230.87 gmail.com. 3 IN A 74.125.230.88 gmail.com. 3 IN A 74.125.230.85 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 2 IN A 74.125.230.85 gmail.com. 2 IN A 74.125.230.86 gmail.com. 2 IN A 74.125.230.87 gmail.com. 2 IN A 74.125.230.88 bonnefoi@msi:~$ dig +noall +answer gmail.com gmail.com. 1 IN A 74.125.230.88 gmail.com. 1 IN A 74.125.230.85 gmail.com. 1 IN A 74.125.230.86 gmail.com. 1 IN A 74.125.230.87 Il correspond à répartir un trafic (HTTP par exemple) afin d’équilibrer la charge entre différents serveurs. On «fait tourner» différentes réponses (algo. de «Round-Robin»). Une requête Wikipedia au travers du protocole DNS On utilise le champ «TXT» : xterm bonnefoi@msi:~$ dig +short txt startrek.wp.dg.cx "Star Trek is an American science fiction entertainment series and media franchise. The Star Trek fictional universe created by Gene Roddenberry is the setting of six television series including the original 1966 Star Trek, in addition to ten feature films" " with an eleventh in post-production to be released on May 8, 2009. The franchise also extends to dozens of computer and... http://a.vu/w:Star_Trek" ⋆ On édite le contenu de /etc/network/interfaces xterm root@solaris:~# more /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.42.57 netmask 255.255.255.0 gateway 192.168.42.254 ⋆ le fichier /etc/resolv.conf : xterm root@solaris:~# more /etc/resolv.conf domain pefnet search pefnet nameserver 192.168.42.53 Le «search» indique le nom de domaine à ajouter au nom d’une machine entrée sans le FQDN (exemple : msi au lieu de msi.unilim.fr ⋆ on relance le «service» réseaux : xterm root@solaris:~# /etc/init.d/networking restart Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 25 Configuration automatisée d’une machine pour l’accès à Internet ⋆ configuration de l’interface pour utiliser le client DHCP, «Dynamic Host », dans le fichier /etc/network/interfaces : auto lo iface lo inet loopback Le protocole IP a été utilisé intensivement depuis des dizaines d’années. Son succès s’est accompagné d’une croissance exponentielle du réseau Internet. Problème du manque d’adresses auto eth0 iface eth0 inet dhcp ⋆ en ligne de commande : xterm $ sudo dhclient eth0 Le client DHCP configure l’interface, le fichier resolv.conf et la route par défaut si un serveur DHCP prend en charge sa demande. xterm root@solaris:~# ip address show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff inet 192.168.42.83/24 brd 192.168.42.255 scope global eth0 root@solaris:~# ip route 192.168.42.0/24 dev eth0 Problème de croissance d’Internet Croissance du réseau Internet proto kernel scope link src 192.168.42.83 default via 192.168.42.254 dev eth0 Le réseau basé sur IP ne peut plus s’agrandir par épuisement du nombre d’adresses disponibles : − 1987 : 100 000 réseaux prévues après plusieurs décennies ; − 1996 : 100 000 réseaux effectifs ; − 2012 : épuisement des adresses IPv4 disponibles. L’adressage sur 32 bits permet de définir 2 milliards d’adresses potentielles. Mais l’organisation de l’espace d’adressage en classes en consomme des millions : ▷ les réseaux de classe A sont beaucoup trop grands (16 millions d’adresses) ; ▷ les réseaux de classe C sont trop petits (256 adresses) ; ▷ les réseaux de classe B sont trop grands (65536 machines). Problème de la taille des tables de routage pour aller d’un réseau à l’autre L’espace des adresses IP est une hiérarchie à deux niveaux : <identifiant réseaux>.<identifiant machine> Les routeurs doivent connaître l’identifiant de tous les réseaux ! La taille des tables de routage devient énorme et difficile à gérer : ∘ occupation mémoire trop importante dans les routeurs ; ∘ complexité des algorithmes de gestion de ces tables de routage ; ∘ routeur conçu dans la perspective d’un réseau Internet contenant 10 000 réseaux, et où les 100 000 réseaux étaient un avenir lointain (limitation du protocole de routage RIP) ; ∘ transmission des tables de routage entre routeurs propice aux erreurs, et aux pertes… 4 Conception de réseaux : la segmentation Les Solutions Lors de la conception d’un réseau pour une organisation (une société, un campus universitaire etc.) répartie entre un ou plusieurs sites (salles, bureaux, bâtiments, etc.), il est possible d’utiliser : ∘ l’interconnexion de différents réseaux locaux par routage ; ∘ la commutation au sein d’un même réseau local. Interconnexion de différents réseaux Le «subnetting» Elle utilise les capacités de la couche 3, «la couche réseau», pour : ⋆ définir des @IPs de sous-réseaux (en utilisant VLSM et CIDR) ; ⋆ affecter ces @IPs à différents réseaux locaux mis en œuvre dans l’organisation ; ⋆ interconnecter ces réseaux à l’aide de routeur(s) ; ⋆ définir des tables de routage : ⋄ pour un poste de travail : au minimum, la route par défaut, ou passerelle ; ⋄ pour un routeur : au minimum, la connaissance des différents réseaux interconnectés joignables à un saut. Plus tard, on verra l’utilisation de protocole de construction de table de routage comme IGP, OSPF ou RIP. Commutation au sein d’un même réseau local Elle utilise les capacités de la couche 2, «la couche liaison de données», pour : ▷ décomposer un réseau local en plusieurs parties indépendantes ; ▷ créer différents domaines de collisions dans un même domaine de diffusion. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Où comment partitionner un réseau d’une classe donnée en différents sous-réseaux. Fonctionnement : Une structure obtient un seul réseau de classe A, B ou C : ∘ elle décompose ce réseau en différents sous-réseaux qu’elle peut répartir géographiquement ; ∘ elle peut faire du routage entre ces différents sous-réseau ; ∘ Pas de différence vu de l’extérieur du réseau ! Le «supernetting» Où comment supprimer le concept de classe réseau et optimiser l’usage des adresses restantes. Fonctionnement : Une structure obtient des «tranches de réseau» : ∘ par exemple : pour disposer d’au plus 500 machines elle obtient deux réseaux de classe C (2*256) ; ∘ pour simplifier le routage, on considère que cette tranche ne désigne qu’un seul et même réseau, ce qui oblige à dispose de certaines propriétés sur les adresses de ces réseaux ; ∘ Pas de différence vu de l’extérieur du réseau ! Le NAT, Network Address Translation Où comment partager une ou plusieurs adresses entre différentes machines. Fonctionnement : Une structure obtient une ou plusieurs adresses fixes : ∘ ces adresses sont partagées entre différentes machines connectées dans un réseau privé ou Intranet (192.168.x.Y, 172.16.x.y ou 10.x.y.z). ∘ Attention : différence vu de l’extérieur du réseau ! IPv6 Où comment passer à Internet NextGen ! Avec des adresses sur 128 bits entre autre… — 13 décembre 2015 — 26 192.168.15.1 192.168.15.2 192.168.15.0 network 192.168.15.255 broadcast 130 PART II Core Subnetting : Protocols RFC 950 255.255.255.0 mask Avant Defining the Subnet Mask / Extended-Prefix Length broadcast 255.255.255.0 Since 8 = 23, three bits are required to enumerate the eight subnets in the block. 255.255.255.128 In this mask mask Internet example, the organization is subnetting a /24 so it will need three more bits, or a After /27,Subnetting as Before Subnetting the extended-network-prefix. A 27-bit extended-network-prefix can be expressed in FIGURE 4.4 Exemple dotted-decimal notation as 255.255.255.224. This is illustrated in Figure 11. Hosts 192.168.15.1 192.168.15.126 192.168.15.0 network 192.168.15.127 broadcast 193.1.1.0/24 255.255.255.128 mask 192.168.15.129 192.168.15.253 192.168.15.254 subnetnumber 192.168.15.128 bits hostnumber bits network 192.168.15.255 Router network-prefix broadcast = 11000001.00000001.00000001.00000000 extended-network-prefix Internet After Subnetting 255.255.255.224 = 11111111.11111111.11111111.11100000 FIGURE 4.4 27-bits VLSM Hosts 192.168.15.129 192.168.15.253 192.168.15.254 192.168.15.128 network 192.168.15.255 broadcast Router Internet Découpage du réseau 193.1.1.0/24 en 8 sousréseaux : A sometimes tricky subnet issue is determining exactly what the subnet address (all bits after the mask) and broadcast address (all 1 bits after the mask) are for a given IP ⋆ 0address 193.1.1.0/27 and subnet mask. This can be difficult because subnet masks do not always fall byte boundaries as do classful addresses. An IP address like 172.31.0.128 might not ⋆ on193.1.1.32/27 look like the address of the network itself, but it might be. A network address, in some ⋆ implementations … of TCP/IP, cannot be assigned to a host. (172.31.0.128 with a subnet of 255.255.255.128 is a network address.) ⋆ mask 193.1.1.224/27 VLSM : Variable Length Subnet Masks RFC 1009 But : Exemple VLSM supports more efficient use of an organization's assigned IP address space. One Permettre d’utiliser plusieurs masques de sous-réseaux pour le subnetting, d’où of the major problems with the earlier limitation of supporting only a single subnet mask acrosslength». a given network-prefix was that once the mask was selected, it locked the la notion de «variable organization into a fixed-number of fixed-sized subnets. For example, assume that a network administrator decided to configure the 130.5.0.0/16 network with a /22 extended-network-prefix. On dispose du réseau 130.5.0.0/16 à décomposer : En /22, ce qui donne 64 sous-réseaux, pour 1022 machines chacun : Si un réseau ne contient que 30 machines, on 130.5.0.0/22 perd énormément d’adresses ! subnet-number bits host-number bits network-prefix = 10000010.00000101.00000000.00000000 extended-networkprefix En /26, ce qui donne 1024 sous-réseaux, pour 62 machines chacun : C’est mieux, mais l’idéal serait de disposer du /22 et du /26 simultanément. Contraintes ▷ ▷ Figure 15: 130.5.0.0/16 with a /22 Extended-Network Prefix subnet-number bits host-number bits Please refer to Figure 15. A /16 network with a /22 extended-network prefix permits 64 subnets (26), each of whichnetwork-prefix supports a maximum of 1,022 hosts (2 10-2). This is fine if the organization wants deploy a number of large subnets, but what about the 130.5.0.0/26 = to 10000010.00000101.00000000.00000000 occasional small subnet containing only 20 or 30 hosts? Since a subnetted network could have only a single mask,extended-network-prefix the network administrator was still required to assign the 20 or 30 hosts to a subnet with a 22-bit prefix. This assignment would waste Figure 16: 130.5.0.0/16 with a /26 Extended-Network Prefix approximately 1,000 IP host addresses for each small subnet deployed! Limiting the of a network number with a single mask did not encourage the flexible and plusieurs association masques de sous-réseau Route use Aggregation efficient of an organization'scompatibles address space.hiérarchiquement ; l’utilisation de routeurs : VLSM also allowsqui the emploient recursive division of an organization's address space so that it can One solutionde to this wasde to reduce allow athe subnetted network to be assigned more be reassembled andproblem aggregated to amount of qui routing information at top ⋄ des protocoles construction table de routage transmettent lethethan one subnet mask. Assume that in the previous the network level. Conceptually, a network is first dividedexample, into subnets, some ofadministrator the subnets is are masque sous-réseau pour réseau destination alsode allowed to configure thechaque 130.5.0.0/16 network with a /26 ;extended-network-prefix. 2 furtherrefer divided into sub-subnets, and some of the sub-subnets are divided into sub Please to Figure 16. A /16 network address with a /26 extended-network prefix ⋄ un algorithme de «forwarding» quistructure utilise «longest matching» ; subnet subnets. This allows the detailed oflerouting information for one group permits 1024 subnets (210),ineach of which supports 62 hosts (2 6-2). to be hidden from routers another subnet group.a maximum ofadapté. ⋄ une affectation des sous-réseaux qui soit topologiquement The /26 prefix would be ideal for small subnets with less than 60 hosts, while the /22 prefix is well suited for larger subnets containing up to 1000 hosts. For example, if a packet's destination IP address is 11.1.2.5 and there are three network prefixes in the routing table (11.1.2.0/24, 11.1.0.0/16, and 11.0.0.0/8), the router would select the route to 11.1.2.0/24. The 11.1.2.0/24 route is selected because its prefix has the greatest number of corresponding bits in the Destination IP address of the packet. This is illustrated in Figure 19. = 10000010.00000101.00000000.00000000 11.1.2.5 = 00001011.00000001.00000010.00000101 At- 11.1.2.0/24 = 00001011.00000001.00000010.00000000 11.1.0.0/16 = 00001011.00000001.00000000.00000000 11.0.0.0/8 = 00001011.00000000.00000000.00000000 be reassembled and aggregated to reduce the amount of routing information at the top 19: Best is with the Route Having theDans LongestlePrefix (Most11.1.0.0/16 Specific) tention : la machine 11.1.2.5 doit bien être connectée le Match réseau 11.1.2.0/24. réseau level. Conceptually, a network is first divided into subnets, some of the subnetsFigure are dans further divided into sub-subnets, and some of the sub-subnets are divided into sub2elle ne serait pas accessible ! There is a very subtle but extremely important issue here. Since the destination address subnets. This allows the detailed structure of routing information for one subnet group matches all three routes, it must be assigned to a host which is attached to the to be hidden from in another subnet group. Aggrégation derouters routes 11.1.1.0/24 ∘ ∘ into the 3-bits of forms the subnet-number ing address range the limits of thefield. subnet. host-number bits Pour un datagramme à destination de l’adresse Destination extended-network-prefix 11.1.2.5, on sélectionne la route qui correspond Figure 16: 130.5.0.0/16 with a /26 Extended-Network Prefix #1 avec le plus grand nombre de bits d’un des sous* Route Route #2 Route Aggregation réseaux, ici, 11.1.2.0/24 VLSM also allows the recursive division of an organization's address space so that itRoute can #3 Subnetting a LAN, showing how the value of the initial bits determines the subnet. Host addresses, if assigned manually, must follow the subnet mask convention. Consider the address 172.18.0.126 with a subnet mask of 255.255.255.192. What is the subnet and broadcast address for this subnet? What range of host addresses can Subnetting LAN, showing the valuethe of the initial bits determines the subnet. Host addresses, be assigned to this subnet? These questions come up all the time, and there are utilities Figure 11:a Example #1 how - Defining Subnet Mask/Extended-Prefix Length Pour décider du nombre de bits à affecter aux sous-réseaux if assigned manually, must follow the subnet mask convention. available on the Internet that do this quickly. But here’s one way to do it by hand. The first thing to do is to mask out the network portion of the IP address with the A 27-bit extended-network-prefix leaves 5 bits to define host addresses on each subnet. de combien desubnet réseaux besoin etcontiguous dans ? A sometimes tricky issue is l’organisation determining exactly a what the subnet addressle (allfutur subnet This means that each subnetwork with a 27-bit prefix represents a block of mask by writing down the mask bits. Then the subnet portion of the address 0 bits after the mask) and broadcast address (all 1 bits after the mask) are for a given IP can be easily marked off by “turning on” the masked bits. Next, it is easy to form the sub5 (32) combien deIPmachines au maximum dans un sous-réseaux, dans le futur ? 2address individual addresses. However, since the all-0s anddes all-1s host addresses and subnet mask. This can be difficult because subnet masks do not always fall net and broadcast address for the subnet by setting the rest of the bits in the address on bytebe boundaries do classful An IP address likeaddresses 172.31.0.128 mightreasons, not (theRIP-1 cannot allocated,asthere are 30addresses. (25 -2) assignable host onthese each subnet. For is limited to0only a single subnet each networkThe resulthost bits) first to all bits (network) and thenmask to all for 1 bits (broadcast). look likeAttention the address of the network itself, but it might be. A network address, in some number. However, there are several advantages to subnet. be gained if more than one subnet ing address range forms the limits of the implementations of TCP/IP, cannotNumbers be assigned to a host. (172.31.0.128 withcan a subnet Defining Each of the Subnet mask be assigned to a given IP network number: RFC 950 autorise seul masque de sous-réseau pour le subnetting dans une même structure. mask ofLa 255.255.255.128 is a network un address.) TheConsider eight subnets will be numbered 0 through 7. Throughout the of this masks permit more efficient use of an organization's assigned IP the address 172.18.0.126 with a subnet mask of 255.255.255.192 . What - remainder Multiple subnet SurXXX de vieux routeurs, classful, on évite d’utiliser le sous réseau «tout à zéro» et «tout à 1». paper, the notation indicates representation theaddresses number. The 3-bit is the subnet and2broadcast address forthe thisbinary subnet? What range of of host addresscan space. binary representation of the decimal values 0 through are:and 0 (000 ), 1 (001 ), 2 (0102), be assigned to this subnet? These questions come up all the7time, there are utilities 2 2 the Internet that2), do6this quickly. But hand. subnet masks permit route aggregation which can significantly reduce the 3available (0112),on 4 (100 (110 7 here’s (1112).one way to do-it byMultiple 2), 5 (101 2), and amount of routing information at the "backbone" level within an organization's The first thing to do is to mask out the network portion of the IP address with the subnet masktoby writing down#n, thethe mask bits. Then the subnet portion of routing the address domain. In general, define Subnet network administrator places the binary can be easily marked off by “turning on” the masked bits. Next, it is easy to form the subrepresentation of n into the bits of the subnet-number field. For example, to define net and broadcast address for the subnet by setting the rest of the bits in the address Subnet #6, the network administrator simply places the binary representation of 6 of (110 Efficient Use the 2) Organization's Assigned IP Address Space (the host bits) first to all 0 bits (network) and then to all 1 bits (broadcast). The result- − − subnet-number bits network-prefix Algorithme de forwarding basé sur le «longest match» 130.5.0.0/26 The first step is to determine Hosts the number of bits required to define the six subnets. Since 192.168.15.253 192.168.15.254 192.168.15.2 192.168.15.126 a192.168.15.1 network address can only 192.168.15.129 be subnetted along binary boundaries, subnets must 192.168.15.1 be created in blocks of powers of two [ 2 (21), 4 (22), 8 (23), 16 (24), etc. ]. Thus, it is impossible to define an IP address block such that it contains exactly six subnets. For 192.168.15.0 192.168.15.0 this example, thenetwork network administrator must define a block of 8 (23) and have two network 192.168.15.127 192.168.15.255 Router for future growth. unused subnets that can be reserved broadcast Router Internet Before Subnetting Après extended-network-prefix is said to be "more specific" while a route with a shorter extended-network-prefix is said to be "less specific." Routers must use the route with the longest matching extended-network-prefix (most specific matching route) when forwarding traffic. 192.168.15.129 192.168.15.253 192.168.15.254 11.1.2.0/24 11.1.253.32/27 11.1.253.64/27 11.1.0.0/16 11.2.0.0/16 11.1.253.0/24 11.3.0.0/16 11.1.254.0/24 11.1.253.160/27 11.1.253.192/27 11.0.0.0./8 11.253.32.0/19 11.252.0.0/16 11.253.64.0/19 11.253.0.0/16 11.254.0.0/16 11.1.2.0/24 subnet. If the 11.1.2.5 address is assigned to a host that is attached to the 11.1.0.0/16 or 11.0.0.0/8 subnet, de the routing systemlewill never route to the host L’aggrégation permet simplifier routage : letraffic réseaux since the "longest match algorithm" assumes that the host is part of the 11.1.2.0/24 11.0.0.0/8 décomposé en /16, le sous-réseau subnet. This means thatest great care must be taken when puis assigning host addresses to make sure that every host est is reachable! 11.1.0.0/16 décomposé en /24. Le processus est récursif, mais n’impose Topologically Significant Address Assignment pas que la taille duOSPF préfixe laconvey mêmetheàextended-network-prefix chaque niveau de l’arbre. Since and soit I-IS-IS information with each route, the VLSM subnets can be scattered throughout an organization's topology. However, to support hierarchical routing and reduce the size of an organization's routing tables, addresses should be assigned so that they are topologically significant. 11.253.160.0/19 11.253.192.0/19 Hierarchical routing requires that addresses be assigned to reflect the actual network This reduces the amount of routing information by taking the set of addresses On diminue la taille des tables de routage nécessaires : topology. 11.1.0.0/16 assigned to a particular region of the topology, and aggregating them into a single 11.2.0.0/16 11.1.1.0/24 17, the 11.0.0.0/8 network first configured with a /16 extended-networkrouting advertisement set. Hierarchical routing allows this to be done −In Figure le routeur D «cache» 6 issous-réseaux derrière 11.1.253.0/24 ; for the entire 11.3.0.0/16 11.1.2.0/24 Router A Router B prefix. The 11.1.0.0/16 subnet is then configured with a /24 extended-network-prefix recursively at various points within the hierarchy of the routing topology. If addresses −and le C subnet cacheis 6configured sous-réseaux avec 11.253.0.0/16 ; therouteur 11.253.0.0/16 with a /19 extended-network-prefix. Note 11.0.0.0/8 do not have a topological significance, aggregation 11.252.0.0/16 cannot be performed 11.1.252.0/24and the size of 11/8 the recursive process does not require that the same extended-network-prefixthe berouting tables cannotorbe 11.254.0.0/16 this point when 11.1.254.0/24 reduced. Remember we discuss CIDR −that la structure cachée de l’extérieur avec assigned at each level des of thesous-réseaux recursion. Also, theest recursive sub-division of the aggregation later in this paper. organization's address space can be carried out as far as the network administrator needs 11.0.0.0/8. Internet 11.253.0.0/16 11.1.253.0/24 Figure 17: VLSM Permits the Recursive Division of a Network Prefix to take it. Router C Router D 11.253.32.0/19 11.1.253.32/27 11.1.253.64/27 11.1.253.96/27 11.1.253.128/27 11.1.253.160/27 11.1.253.192/27 11.253.64.0/19 11.253.160.0/19 11.253.192.0/19 Figure 18: VLSM Permits Route Aggregation - Reducing Routing Table Size CIDR : routage sans classe, RFC 1519 Figure 18 illustrates how a planned and thoughtful allocation of VLSM can reduce the size of an organization's routing tables. Notice how Router D is able to summarize the six subnets behind it into a single advertisement (11.1.253.0/24) and how Router B is able to aggregate all of subnets behind it into a single advertisement. Likewise, Router C is able to summarize the six subnets behind it into a single advertisement (11.253.0.0/16). Finally, since the subnet structure is not visible outside of the organization, Router A injects a single route into the global Internet's routing table 11.0.0.0/8 (or 11/8). La technique du CIDR “Classless InterDomain Routing” RFC 1519 Allouer des adresses de classe C (2 millions disponibles) sous formeVLSM de blocs de taille variable. Design Considerations Exemple : When developing a VLSM design, the network designer must recursively ask the same set of questions as for a traditional subnet design. The same set of design decisions must adresses be made at each level of the hierarchy: ▷ si un site a besoin de 2000 adresses, on lui alloue un bloc de 2048 (8 réseaux de classe C contigus). 1) How many total subnets does this level need today? ▷ si un site a besoin de 8000 adresses on lui alloue un bloc de 8192 adresses (32 réseaux de classe C contigus). 2) How many total subnets will this level need in the future? Ce principe est étendu vers les réseaux de classe A et B également. 3) How many hosts are there on this level's largest subnet today? 4) How many hosts will there be on this level's largest subnet be in the future? Distribution des adresses de manière régionale, RFC 1174 At each level, the design team must make sure that they have enough extra bits to support est the required number en of sub-entities in the:next and further levels of recursion. Les règles d’attribution d’adresses de classe C sont changées, le monde partagé 4 zones ⋆ 194.0.0.0 à 195.255.255.255 sont attribuées à l’Europe, RIPE NCC et à l’Afrique, AfriNIC ; ⋆ 198.0.0.0 à 199.255.255.255 sont attribuées à l’Amérique du Nord, ARIN ; ⋆ 200.0.0.0 à 201.255.255.255 sont attribuées à l’Amérique du Sud & Centrale, LACNIC ; ⋆ 202.0.0.0 à 203.255.255.255 sont attribuées à l’Asie et au Pacifique, APNIC ; ⋆ 204.0.0.0 à 223.255.255.255 sont conservées en réserve. ⋆ 64.0.0.0 à 127.0.0.0 sont conservés pour la «fin d’IPv4»… Chaque région dispose ainsi de 32 millions d’adresses de classe C. Les organismes chargés d’allouer les adresses sont des RIRs, Regional Internet Registries. Simplification du routage Quand un routeur hors d’Europe reçoit une adresse à destination de 194.x.y.z ou 195.x.y.z, il doit l’expédier vers un routeur européen. 11.1.1.0/24 11.1.2.0/24 11.1.253.0/24 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 11.1.254.0/24 11.3.0.0/16 11.2.0.0/16 11.0.0.0./8 11.253.32.0/19 11.252.0.0/16 11.1.253.32/27 11.1.253.64/27 11.1.0.0/16 11.253.64.0/19 11.1.253.160/27 11.1.253.192/27 — 13 décembre 2015 — 27 CIDR LesTable différents préfixes possibles 4.5 CIDR Prefixes and Addressing* Prefix Length Dotted Decimal Netmask /1 128.0.0.0 Number of Classful Networks Number of Usable IPv4 Addresses 128 Class A’s 2,147,483,646 /2 192.0.0.0 64 Class A’s 1,073,741,822 224.0.0.0 32 Class A’s 536,870,910 /4 240.0.0.0 16 Class A’s 268,435,454 /5 248.0.0.0 8 Class A’s 134,217,726 252.0.0.0 /7 PART II Core Protocols 4 Class A’s 67,108,862 254.0.0.0 2 Class A’s 33,554,430 /8 255.0.0.0 1 Class A or 256 Class B’s 16,777,214 /9 255.128.0.0 128 Class B’s 8,388,606 /10 255.192.0.0 64 Class B’s 4,194,302 /11 255.224.0.0 32 Class B’s 2,097,150 /12 255.240.0.0 16 Class B’s 1,048,574 /13 255.248.0.0 8 Class B’s 524,286 255.252.0.0 4 Class B’s 262,142 255.254.0.0 2 Class B’s 131,070 /16 255.255.0.0 1 Class B or 256 Class C’s 65,534 /17 255.255.128.0 128 Class C’s 32,766 Dotted Decimal Netmask Le préfixe \31 est réservé aux connexions «point à Avec des routeurs CISCO, il est également possible interface Serial0 ip unnumbered Ethernet0 Number of Usable IPv4 Addresses /18 255.255.192.0 64 Class C’s 16,382 /19 255.255.224.0 32 Class C’s 8,190 /20 255.255.240 16 Class C’s 4,094 /21 255.255.248.0 8 Class C’s 2,046 /22 255.255.252.0 4 Class C’s 1,022 /23 255.255.254.0 2 Class C’s 510 /24 255.255.255.0 1 Class C 254 Une abstraction du réseau et sa configuration en CIDR Ivan Marsic • Network 1: Ethernet A B Network 2: Wi-Fi D Interfaces on Network 1 Interfaces on Network 3 1/2 Class C 126 1/4 Class C 62 /27 255.255.255.224 1/8 Class C 30 9*: /28 255.255.255.240 1/16 Class C 14 /29 255.255.255.248 1/32 Class C 6 Figure 1-35: Example internetwork: (a) The physical networks include 2 Ethernets, 2 pointto-point links, and 1 Wi-Fi network. (b) Topology of the internetwork and interfaces. /30 255.255.255.252 1/64 Class C 2 /32 255.255.255.255 1/256 Class C (1 host) 0 – (1 host route) F 9A: R2 E Interfaces on Network 5 Une seconde abstraction du réseau avec la notion de «sub-net» et l’adresse réseau : 204.6.96.176/28 1-47. Subnet Subnet mask Network prefix Organization’s address subspace: w.x.y.z/28 F Subnet-1: 204.6.96.176/30 Interface addresses 204.6.94.188! C<(! 0<#.(! &'(*! A(<&$'! *! $(/0#)1! .*@()! -)#/#=#.! &%! /#! &,-.(,($/! /<(! =#$=(-/! #>!["ABH!! *! W?&)/4*.! 204.6.94.188/30! 11001100 00000110 01011110 101111-- TH!!!!!!!204.6.94.189! $(/0#)1X!0<()(!'(?&=(%!/*.1!(?($!/<#43<!/<(@!*)(!>*)!*0*@;!=#$$(=/('!4%&$3!'&>>()($/!-<@%&=*.! I! $(/0#)1!/(=<$#.#3&(%B!C<&%!,(*$%!/<*/!/<(!.*@()%!*A#?(!/<(!$(/0#)1!.*@()!'#!$#/!$(('!/#!0#))@! CH!!!!!!!204.6.94.190! *A#4/! '(/*&.%;! %4=<! *%! '&>>()($=(%! &$! -*=1(/! >#),*/%! #)! %&Y(! .&,&/%! #>! 4$'().@&$3! .&$16.*@()! C 204.6.94.180 A 76 C0#!/@-(%!#>!$(/0#)1!$#'(%!*)(!'&%/&$34&%<('R!<#%/%!?%B!)#4/()%B!G*=<!!"#$!4%4*..@!<*%!*!%&$3.(! UH!!!!!!!204.6.94.176! $(/0#)1!*//*=<,($/!-#&$/;!1$#0$!*%! network interface;!*$'!/<()(>#)(!&/!=*$$#/!)(.*@!-*=1(/%!>#)! 204.6.94.176/30 11001100 00000110 01011110 101100-- [(A(H!!204.6.94.177! (! #/<()!$#'(%B!G?($!&>!*!<#%/!<*%!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%;!%4=<!*%!$#'(!M!&$!2&34)(!56789*:;! &/! &%! $#/! &$/($'('! /#! A(! 4%('! >#)! /)*$%&/! /)*>>&=B! S#%/%! 4%4*..@! '#! $#/! -*)/&=&-*/(! &$!XA(H!!!! /<(! )#4/&$3! 204.6.94.178! *.3#)&/<,B!Q$.&1(!<#%/%;! %"&$'%#!<*?(!/<(!-)&,*)@!>4$=/&#$!#>!)(.*@&$3!/)*$%&/!/)*>>&=!>)#,! #/<()! \H!!!!!!! 204.6.94.180! $#'(%B!G*=<!)#4/()!<*%!*!,&$&,4,!#>!/0#;!A4/!4%4*..@!,*$@!,#)(;!$(/0#)1!&$/()>*=(%B!T$!2&34)(! 204.6.94.180/30! 11001100 00000110 01011110 101101-- [(A"H!!204.6.94.181! "! 56789*:;! A#/<! )#4/()%! H5! *$'! HK! <*?(! /<)((! $(/0#)1! *//*=<,($/! -#&$/%! 9&$/()>*=(%:! (*=<B! G*=<! ]H!!!!!!! 204.6.94.182! 8 &$/()>*=(!#$!(?()@!<#%/!*$'!)#4/()!,4%/!<*?(!*!$(/0#)1!*'')(%%!/<*/!&%!3.#A*..@!4$&U4(B !E!$#'(! V [(ABH!!204.6.94.184! 0&/<!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%!&%!%*&'!/#!A(! multihomed !9#);!,4./&=#$$(=/(':B!F#/&=(!/<*/! 01011110 1011100204.6.94.184/31! 11001100 00000110 B! ["A(H!!204.6.94.185! ,4./&<#,('!<#%/%!'#!("$!-*)/&=&-*/(!&$!)#4/&$3!#)!>#)0*)'&$3!#>!/)*$%&/!/)*>>&=B!P4./&<#,('!<#%/%! *=/! *%! *$@! #/<()! ($'! <#%/;! (+=(-/! /<(@! ,*@! 4%(! '&>>()($/! &$/()>*=(%! >#)! '&>>()($/! '(%/&$*/&#$%;! ["A"H!!204.6.94.186! 11001100 00000110 01011110 1011101204.6.94.186/31 ! $! '(-($'&$3!#$!/<(!'(%/&$*/&#$!'&%/*$=(B! XA"H!!!!204.6.94.187! The /31 Prefix E A,B F "#$%&'()! *$! (+*,-.(! &$/()$(/0#)1! &$! 2&34)(! 56789*:;! 0<&=<! =#$%&%/%! #>! >&?(! -<@%&=*.! $(/0#)1%! &$/()=#$$(=/('! A@! /0#! )#4/()%B! C<(! 4$'().@&$3! $(/0#)1! /<*/! *! '(?&=(! 4%(%! /#! =#$$(=/! /#! #/<()! Ivan Marsic • Rutgers University '(?&=(%! =#4.'! A(! *! DEF! =#$$(=/&#$! .&1(! G/<()$(/! #)! C#1($! H&$3;! *! 0&)(.(%%! DEF! .&$1! %4=<! *%! IJKB55! 91$#0$! *%! L&62&:! #)! M.4(/##/<;! #)! *! '&*.4-;! NOD;! #)! *! C65! =#$$(=/&#$B! G*=<! -<@%&=*.! $(/0#)1!0&..!3($()*..@!4%(!&/%!#0$!>)*,(!>#),*/;!*$'!(*=<!>#),*/!<*%!*!.&,&/!#$!<#0!,4=<!'*/*! Table 1-3: CIDR hierarchical address assignment for the internetwork in Figure =*$!A(!%($/!&$!*!%&$3.(!>)*,(!9.&$1!PCQ;!O(=/&#$!5B5B7:B! *All possible mask lengths are shown, for /1 to /32. The /0 mask matches the whole Internet and will be discussed in the routing chapters. In many cases, a /31 prefix that allows only two IPv4 addresses on a subnet is useless. Hosts are not normally assigned addresses that indicate the network itself (the point» entre routeurs : avec un identifiant machine réduit à 0address ou à on 1. lowest address on the subnet) or the directed broadcast (the highest the subnet). Because a /31interfaces» prefix only allows d’utiliser des «unnumbered : the final bit to be 0 or 1, this prefix is not useful for a subnet with hosts. Most subnets normally use a /30 prefix at most, which yields two useful host addresses in addition to the low and high addresses. However, many router networks employ the /31 prefix to address the endpoints of a point-to-point link such as SONET/SDH. There are no hosts to worry about, and only the router network need worry about the use of internal address spaces. With /31 prefixes, a single Class C address space can be used to provide addresses for 128 (256 divided by 2) point-to-point inter-router links, not just 64 (256 divided by 4). Network 5: Ethernet R2 Subnet-4 Subnet-5 Interfaces on Network 4 255.255.255.192 1/128 Class C D Subnet-3 R1 B R2 C Subnet-2 B 255.255.255.128 255.255.255.254 R1 D Network 3: Point- to-point E Subnet-1 Interfaces on Network 2 A Network 4: Point-to-point A C C R1 75 Introduction to Computer Networking 54 Rutgers University /26 /31 Chapter 1 • Une première abstraction du réseau indépendamment de l’adresse réseau de l’organisation : /25 (Continued) Attention Number of Classful Networks 204.6.94.176 204.6.94.177 Subnet-1: w.x.y.z/30 Subnet-2: w.x.y.z+4/30 Subnets-3&4: w.x.y.z+8/30 Subnet-5: w.x.y.z+12/30 B Subnet-4: w.x.y.z+10/31 AHB D 204.6.94.182 R1 204.6.94.178 Subnet-3: w.x.y.z+8/31 Subnet-2: 204.6.96.180/30 204.6.94.187 Subnet-4: 204.6.96.186/31 A>B 31 : 4/ -3 8 et 6.1 bn 6.9 84 Su 04. .1 2 94 6. 4. 20 /14 /15 CIDR : une méthodologie Table 4.5 CIDR Prefixes and Addressing* (Continued) Prefix Length /3 /6 134 20 4. 6. 94 .1 81 and prefix length in Chapter 8. All possible mask lengths are shown for /1 to /32. The /0 mask matches the whole Internet and is discussed in the routing chapters. Even when CIDR was used, all bits after the IP network address had to be zero, an aspect of IP addressing that did not change. For example, 192.168.64.0/18 was a valid IP network address, but 192.168.64.0/17 was not (due to the presence of the “1” bit for the “64” in the 17th bit position). This aspect of CIDR is shown in Figure 4.6. The IP network 192.168.64.0/18 is a CIDR “supernet” because the mask contained fewer bits than the natural mask in classful IP addressing. 204.6.94.186 204.6.94.188 204.6.94.189 Subnet-5: 204.6.96.188/30 204.6.94.185 R2 204.6.94.190 E F Figure 1-47: (a) Example internetwork with five physical networks reproduced from Figure 1-35 above. (b) Desired hierarchical address assignment under the CIDR scheme. (c) "#$%&%'$%()&*"+%! ,-./! 012! 31245! 67789/! :-.! 8/58;85264! 655<.77.7! :1! :-.! /.:=1<>! 8/:.<?63.7! 67! Example of an actual address assignment. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 7-1=/!8/!,6@4.!(AB!67!=.44!67!8/!C892<.!(A$)D3E%! 8 !C<&%!&%!$#/!$(=(%%*)&.@!/)4(!>#)!&$/()>*=(%!/<*/!*)(!A(<&$'!FEC%;!*%!'&%=4%%('!.*/()B! !"##$%&' ($)' *+&' %,-&' $(' .//"%*),*.$0' *+,*' 1$"' ,)&' ,23.0.%*&).04' 1$")' $)4,0.5,*.$06%' 0&*7$)-' ,%' %+$70' .0' 8.4")&' 9:;<=' )&#)$2">&2' +&)&' .0' 8.4")&' 9:?@A,BC' D%%"3&' *+,*' 1$"' -0$7' *+,*' *+.%' 0&*7$)-' 7.//' )&3,.0' (.E&2' .0' %.5&=' ,02' 1$")' *,%-' .%' *$' ,>F".)&' ,' %&*' $(' 0&*7$)-' ,22)&%%&%' ,02' ! C892<.! (ABI! K<.7./:7! 6! /6L;.! ;8.=! 1?! :-.! M/:.</.:N! =-.<.! G6/0! -17:7! 6<.! G2:26440! ,%%.40'*+&3'$#*.3,//1'*$'*+&'+$%*%C'G$")'(.)%*'*,%-'.%'*$'2&*&)3.0&'+$7'3,01',22)&%%&%'*$')&F"&%*C' 31//.3:.5! ;86! 8/:.<G.586<0! /15.7! D<12:.<7! 1<! 7=8:3-.7E! :-6:! 48;.! 8/785.! :-.! O/.:=1<>! D%'%&&0'.0'!&>*.$0'9C?C9='H$*+')$"*&)%'I9',02'IJ'+,K&';'0&*7$)-'.0*&)(,>&%'&,>+C'L&>,"%&'1$")' 34125%P! ,-87! =1245! 8GK40! :-6:! :-.! 34125! 87! G6/69.5! @0! 6! 78/94.! 65G8/87:<6:8;.! .0*&)0&*7$)-'+,%','*$*,/'$('9;'.0*&)(,>&%'A;'+';'($)')$"*&)%='J'($)'+$%*'L',02'<'×'9'($)'$*+&)'+$%*%B=' 1<96/8Q6:81/!6/5!644!/15.7!311K.<6:.!:1!K<1;85.!:[email protected]:!7.<;83.!:1!:-.!31/72G.<7R!-17:7%! M/!<.648:0!:-.!M/:.</.:!87!31GK17.5!1?!G6/0!8/5.K./5./:!/.:=1<>7!D1<N!O341257PEN!.63-!G6/69.5! 1$"' 0&&2' 9;' "0.F"&' MN' ,22)&%%&%C' O$7&K&)=' 1$"' 7$"/2' /.-&' *$' %*)">*")&' 1$")' $)4,0.5,*.$06%' 0&*7$)-' +.&),)>+.>,//1=' %$' *+,*' &,>+' %"H0&*' .%' .0' .*%' $70' ,22)&%%' %#,>&=' ,%' %+$70' .0' 8.4")&' @0! 6! 58??.<./:! 1<96/8Q6:81/! @0! 8:7! 1=/! 31GG.<3864! 1<! Gnu/Linux Pour configurer une5<8;./! interface réseau sous K148:8364!8/:.<.7:7%!D,-.!<.65.<!G60!6471!=87-!:1!<.?.<!:1!C892<.!(AB! 9:?@AHBC' !"H0&*%' ;' ,02' ?' +,K&' $0/1' *7$' .0*&)(,>&%' &,>+=' %$' *+&1' 0&&2' J' ,22)&%%&%' &,>+C' P+&.)' xterm :1! 9.:! 6! 7./7.! 1?! 31GK4.S8:0! 1?! :-.! M/:.</.:%E! T63-! 8/58;85264! permet d’afficher toutes les interfaces machine*7$' qu’elle soit ou ,%%.403&0*%' 7.//' +,K&'réseaux *+&' 3,%-' présentes !' Q' ;9C' G$"'sur >,0'la4)$"#'*+&%&' .0' ,' %.04/&' %&*'non 7.*+' !'Q' ;RC' $ ifconfig -a 65G8/87:<6:8;.!51G68/!87!>/1=/!67!6/! autonomous system!DUVE%! !"H0&*%'9='J=',02'<'+,K&'*+)&&'.0*&)(,>&%'&,>+='%$'1$"'0&&2',*'/&,%*'J'H.*%'A?',22)&%%&%B'($)'&,>+' W8;./! :-.8<! 58;.<9./:! 31GG.<3864! 8/:.<.7:7N! :-.7.! 65G8/87:<6:8;.! activée. ,02'*+&.)'3,%-%'7.//'&F",/'!'Q';RC'P+&)&($)&='1$"'0&&2'?'×'?',22)&%%&%'A$('7+.>+'*+)&&'7.//'H&' 51G68/7! 6<.!xterm G1<.! 48>.40! :1! 31GK.:.! D?1<! K<1?8:7E! :-6/! :1! A;J'−'JTB 31446@1<6:.!8/!-6<G1/0!=8:-!.63-!1:-.<%! 'Q'J?'Q'9U' "0"%&2B',02'1$")',22)&%%')&4.$0'7.//'H&'$('*+&'($)3'"C#C$C%SJT='7+.>+'4.K&%'1$"'J Active l’interface réseau (down pour la désactiver). $ sudo ifconfig eth0 up X1:-! 587:6/3.! ;.3:1<! 6/5! 48/>! 7:6:.! <12:8/9! K<1:13147! -6;.! @../! 27.5! ?1<! !"#$%!&%' %&(#!")! D1<N! ,22)&%%&%C' V&*' "%' ,%%"3&' *+,*' *+&' ,>*",/' ,22)&%%' %"H%#,>&' ,%%.403&0*' *+,*' 1$"' ,>F".)&2' .%' V !P#%/!$#/(A##1!=#,-4/()%!$#0*'*@%!=#,(!0&/<!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%;!%4=<!*%!G/<()$(/;!L&62&;! M.4(/##/<;! (/=B! S#0(?();! /<(! <#%/! A(=#,(%! W,4./&<#,('X! #$.@! &>! /0#! #)! ,#)(! &$/()>*=(%! *)(! *%%&3$('! 1.4.5 Autonomous Systems and Path Vector Routing 4$&U4(!$(/0#)1!*'')(%%(%!*$'!/<(@!*)(!%&,4./*$(#4%.@!*=/&?(!#$!/<(&)!)(%-(=/&?(!-<@%&=*.!$(/0#)1%B! F<[email protected]!<.46:.5!:1!:-87!7.3:81/H!F<[email protected]!(%BI!→!J! CIDR : Exemple & Conclusion La segmentation : les commandes «classiques» Gestion de l’affectation de sous-réseau par un FAI Soit le réseau 200.25.0.0/16 géré par un FAI, «Fournisseur d’accès internet» ou ISP, «Internet service provider». Il veut décomposer le réseau 200.25.16.0/20 suivant : 200.25.30.0/23 D 200.25.28.0/23 C A 200.25.16.0/21 B 200.25.24.0/22 Figure 30: Slicing the Pie - Classless Environment ISP's Block 200.25.16.0/20 Org A:200.25.16.0/21 Reserved: 200.25.24.0/21 Puis : Reserved 200.25.24.0/21 Org B:200.25.24.0/22 Reserved 200.25.28.0/22 et enfin : Reserved 200.25.28.0/22 Org C:200.25.28.0/23 Org D: 200.25.30.0/23 Le CIDR est similaire au VLSM Step #1: Divide the address block 200.25.16.0/20 into two equal size slices. Each block ∘ le VLSM est réalisé à l’intérieur du réseau de l’organisation et il est caché de l’extérieur ; represents one-half of the address space or 2,048 (211) IP addresses. ∘ le CIDR est réalisé par les différents organismes, FAI, et il est visible de l’extérieur. ISP's Block 11001000.00011001.00010000.00000000 200.25.16.0/20 LaOrg configuration des11001000.00011001.0001 tables de routages n’est pas la0même, car le CIDR soit être communiqué à toutes les autres organisations. A: 000.00000000 200.25.16.0/21 Reserved: 11001000.00011001.00011000.00000000 200.25.24.0/21 Step #2: Divide the reserved block (200.25.24.0/21) into two equal size slices. Each block represents one-fourth of the address space or 1,024 (210) IP addresses. Reserved 11001000.00011001.00011000.00000000 200.25.24.0/21 Org B: Reserved 11001000.00011001.00011000.00000000 11001000.00011001.00011100.00000000 200.25.24.0/22 200.25.28.0/22 Step«Réseaux #3: Divide theAvancés reserved address two equal size blocks. Cours I» –block P-F.(200.25.28.0/22) Bonnefoi –into http://p-fb.net/ Each block represents one-eight of the address space or 512 (29) IP addresses. Reserved 11001000.00011001.00011100.00000000 200.25.28.0/22 !"#$%"*+' %&(#!")E%! ,-6:! 87N! :-.0! -6;.! @../! 27.5! 8/785.! 8/58;85264! 65G8/87:<6:8;.! 51G68/7! 1<! xterm 62:1/1G127!707:.G7%!Y1=.;.<N!@1:-!K<1:[email protected].!8/.??.3:8;.!8/!46<9.!/.:=1<>7!31GK17.5!1?! G6/0! 707:.G7E%! ,-.!192.168.1.1/24 73646@848:0! 8772.7! 1?! @1:-! K<1:13147! =.<.! 5873277.5! $ 51G68/7! sudo D62:1/1G127! ifconfig eth0 .6<48.<%!M/!6558:81/N!:-.0!51!/1:!K<1;85.!G.3-6/87G7!?1<!6/!65G8/87:<6:8;.!./:8:0!:1!<.K<.7./:!8:7! .31/1G83! 8/:.<.7:7! 67! K6<:! 1?! :-.! <12:8/9! K<1:1314%! T31/1G83! 8/:.<.7:7! 36/! @.! 5.73<[email protected]! 278/9! xterm +&)!,*+'%(+$-!:-6:!.SK<.77!:-.!<12:8/9!.&+!,!$-!:1!<.?4.3:!:-.!.31/1G83!8/:.<.7:7%!C1<!:-87!K2<K17.N! sudo ifconfig =.! $/..5! $/#$%!&%' %&(#!")! D1<N! eth0 $/#$%"*+' 0.0.0.0/0 %&(#!")E! K<1:13147! ?1<! <12:8/9! @.:=../! 58??.<./:! 62:1/1G127!707:.G7%! permet de définir l’@IP d’une interface réseau. supprime l’@IP associée à l’interface. Z.! ?8<7:! <.;8.=! :-.! 3-644./9.7! K17.5! @0! 8/:.<63:8/9! 62:1/1G127! 51G68/7! 6/5! :-./! K<.7./:! :-.! Pour configurer une interface avec DHCP, «Dynamic Host Configuration Protocol» K6:-!;.3:1<!<12:8/9!6491<8:-G!:-6:!36/!@.!27.5!:1!655<.77!71G.!1?!:-17.!8772.7%! ! xterm $ sudo dhclient eth0 lance la configuration de l’interface par DHCP (@IP + @IP passerelle + @IP DNS + etc.). xterm $ sudo dhclient eth0 - r dé-configure l’interface en «libérant» la configuration IP Pour configurer la table de routage xterm $ sudo route Affiche la table de routage du système. xterm $ sudo route add default gw 192.168.1.254 eth0 ajoute la passerelle «par défaut» vers le routeur 192.168.1.254. xterm $ sudo route add -net 172.16.10.10/24 gw 192.168.1.254 xterm sudo route add -host 98.76.54.32 gw 12.34.56.1 — ajoute un chemin de routage vers le réseau indiqué (l’option del au lieu de add permet la suppression de la route). ajoute un chemin pour un «host» donné. 13 décembre 2015 — 28 La segmentation : les commandes «modernes» Segmentation : domaine de diffusion et de collision Domaine de diffusion Il vaut mieux utiliser la commande «ip», du package iproute2. Pour un réseau à diffusion, on définit le «domaine de diffusion» comme étant la zone de taille maximale où il est possible de recevoir un message envoyé dans la zone. Afficher le configuration réseau xterm $ ip addr afficher la liste des interfaces qu’elles soient ou non activées. Par exemple dans Ethernet, un domaine de diffusion définie la limite de la transmission d’une trame (qu’elle soit transmise vers l’@MAC d’une machine, ou bien l’@MAC de diffusion FF:FF:FF:FF:FF:FF) : en dehors de cette zone de diffusion, il n’est pas possible de recevoir la trame envoyée. $ ip link xterm $ ip route affiche la table de routage. Configuration d’une interface xterm $ sudo ip addr add 172.16.0.1/24 dev tap0 configurer l’interface et l’activer. $ sudo ip link set tap0 up xterm $ ip link set eth0 promisc on xterm $ ip link set eth0 mtu 1500 passer l’interface en mode «promiscuous» pour laisser passer les trames qui ne sont pas à destination de cette interface. configure la MTU de l’interface. Configuration de la table de routage xterm $ ip route add 10.0.0.0/24 via 193.233.7.65 xterm $ ip route add default via 192.168.0.254 ajouter une route vers un réseau en passant par un routeur. On utilisera del pour enlever cette route. ajouter la route par défaut. La taille de la zone de diffusion est limitée : − par des contraintes techniques : limitation de la transmission physique (WiFi, câbles Ethernet trop long), choix technologiques, etc. − pour des décisions administratives : ⋄ limitation des transmissions à un ensemble choisi de matériels, ⋄ augmentation le nombre de machines connectées à un même réseau ; ⋄ amélioration les débits (moins de partage du réseau), application de QoS, «Quality of Service» ; ⋄ prise en compte de la sécurité (isoler les postes) ; ⋄ etc. Domaine de collision 60 PART I Networking Basics Dans un réseau à diffusion, lorsqu’au moins deux messages sont diffusés par deux entités autonomes sans contrôle centralisé d’une entité d’arbitrage, il existe un risque de collision. Transfer SMTP), and a Domain System for domain name Cela est Protocol: vrai dans Ethernet 10/100Name Mbps, faux(DNS) dansresolver Ethernet Gigabit, WiFi par exemple. to IP address translation (and vice versa), and more. Many TCP/IP implementations also include a way of accessing files remotely (rather than transferring the whole file to the other host) known as the Network File System (NFS). Thereoù is also the Simple Network Un domaine de collision est une zone du réseau il existe une compétition pour l’accès à cette zone. (SNMP) for network operations. For the Web, the server and LeManagement résultat deProtocol cette compétition peut être la création de collision et une baisse de débit par rapport à la browser applications are based on the Hypertext Transfer Protocol (HTTP). Some of these applications are defined to run on TCP and others are defined to run on UDP, and in many cases can run on either. BRIDGES, ROUTERS, AND SWITCHES La segmentation : les commandes The TCP/IP protocol stackdes establishes an architecture for internetworking. These Segmentation réseaux locaux : commutation protocols can be used to connect LANs in the same building, on a campus, or around Exemples world. Not all internetworking devices are same. Generally, network architects Lathe commutation : une affaire dethematériel seeking to extend the reach of a LAN can choose from one of four major interconnec- xterm $ ip link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:9d:ea:19 brd ff:ff:ff:ff:ff:ff tion devices: repeaters, bridges, routers, and switches. Le matériel utilisé pour réaliser cette commutation : Not long ago, the network configuration and the available devices determined of internetworking device should used. Today, les network configurations ∘which letype répéteur, «repeater», pourbeallonger distances physiques de transmission ; are growing more and more complex, and the devices available often combine the fea∘turesleof pont, «bridge», connecter des domaines de diffusion avec intelligence ; several of these devices.pour For example, the routers on the Illustrated Network the features of traditional routers, plus some switching capabilities. ∘haveInlealltheir «concentrateur commuté» «switch», pour layers connecter et isoler surtout. simplest forms, repeaters, bridges, andou routers operate at different of the TCP/IP protocol stack, as shown in Figure 2.5. Roughly, repeaters forward bits from one LAN segment to another, bridges forward frames, and routers forward packets. xterm $ ip address show Couches, commutation & routage 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN Host link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:9d:ea:19 brd ff:ff:ff:ff:ff:ff inet 192.168.127.133/24 brd 192.168.127.255 scope global eth0 inet6 fe80::20c:29ff:fe9d:ea19/64 scope link valid_lft forever preferred_lft forever xterm $ ip route show proto kernel default via 192.168.127.2 dev eth0 scope link src 192.168.127.131 metric 1 proto static Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Host ⋆ Le routeur intervient sur la couche 3. Il retransmet, «forward», des datagrammes ; Il réalise du routage. Layer 4 Transport Layer Transport Layer ⋆ Le pont intervient sur la couche 2. Router Layer 3 Network Layer Network Layer Il retransmet, «forward», des trames ; Bridge Layer 2 Data Link Layer Data Link Layer Il réalise de la commutation. Repeater Layer 1 Physical Layer Physical Layer ⋆ Le répéteur intervient sur la couche 1. FIGURE 2.5 Il ne commute pas mais allonge les distances. Repeater, bridge, and router. A repeater “spits bits,” while a bridge deals with complete frames. Il est équivalent à un «hub». A router operates at the packet level and is the main mode of the Internet. Il retransmet des bits à 1 ou à 0. Layer 5 inet 127.0.0.1/8 scope host lo 192.168.127.0/24 dev eth0 capacité du réseau. Application Layer Application Layer — 13 décembre 2015 — 29 Le fonctionnement illustré d’un routeur 2 ⋆ un paquet correspond à une «portion» de ces dondans lequel s’écoule les données (des bits) ; 3 Network Layer ⋆ une ligne de transmission correspond à un tuyau ⋆ un paquet entre dans le routeur par l’«input» et sort nées : il est matérialisé par un seau. par l’«output» ; ⋆ au milieu se trouve un «switch», un commutateur sélectionnant la sortie du paquet sur une ligne de transmission. Link & Physical Layers Services offered to incoming packets: 1 1 Receiving and storing packets 2 Forwarding decision for packets 3 Moving packets from input to output port 4 Transmission of packets 1 Fonctionnement : Pour chaque trame, suivant l’@MAC de destination : ∘ «forwarded» : la trame est envoyée uniquement dans le segment où se trouve la destination ; ∘ «filtered» : la trame est détruite par le pont sans en informer la source ; ∘ «flooded» : la trame est envoyée à chaque segment attaché au pont (cas d’une @MAC de destination de broadcast ou de multicast). Receiving and storing packets Forwarding decision for packets 2 3 Moving packets from input to output port 4 Transmission of packets Switch vs Hub Pour connaitre les domaines de collision, où les matériels entrent en compétition pour l’accès au support de transmission, le pont écoute les trames qui circulent et apprennent les @MAC utilisées dans ces trames. Il peut y avoir des problèmes : ⋆ le trafic multicast peut encombrer inutilement le réseau (vidéoconférence par ex.) ; ⋆ la présence de plusieurs ponts peut crée des boucles. Pour la découvrir et désactiver les ponts inutiles, on utilise le SPT, «Spanning Tree Protocol». Segmentation des réseaux locaux : le pont Le pont Computer Le pont : − dispose de deux «ports» de connexion réseau (prise Ethernet) ; − apprend les @MAC des matériels connectés sur chacun de ces ports (au travers d’un «hub»), en surveillant la destination des trames qui y circulent. Ethernet hub / bridge / switch Computer Ethernet Hub Twisted pair cable ∘ connecte au moins deux domaines de collision ; ∘ ne crée qu’un seul domaine de diffusion ; ∘ commute une trame d’une ligne de transmission à une autre. 4 1. récupérer les paquets (datagramme ou circuit virtuel) ; 2. décider de la manière de «faire suivre» le paquet : forwarding decision ; 3. commuter un circuit d’acheminement interne reliant l’entrée à la sortie choisie ; 4. transmettre le paquet sur ce circuit interne. Computer Segmentation des réseaux locaux : le pont ou «bridge» Le pont Exemple : 1. le pont établit une table où les entrées associent un port avec une @MAC (les entrées ont une durée de vie limitée) ; 2. une trame est envoyée : ⋄ de l’@MAC 00:00:0C:DD:DD:DD ; ⋄ vers l’@MAC 00:00:0C:CC:CC:CC ; 3. le pont : ⋄ vérifie les entrées de sa table : les deux @MAC sont sur le port 2 ; ⋄ l’@MAC de destination n’est pas une adresse de diffusion ni de multicast ; ⋄ ne «forward» pas la trame sur le port 1. 4. on évite de diffuser la trame sur une partie du LAN. Network port □ un hub ou répéteur transmet la trame sur une sortie pendant qu’elle est reçue sur une entrée : on parle de «cut-through switching» ; □ un switch ou bridge reçoit d’abord toute la trame et la stocke ; il attend alors que le ré- Ethernet Switch seau auquel est connecté le port de sortie soit libre pour la transmettre : on parle de «store-and-forward switching». Sur le schéma, on constate que différents ports peuvent communiquer simultanément (indiqués en rouge) dans le cas d’un switch : on comprend qu’il y a une forme de commutation et d’établissement de «circuit» physique. Sur l’exemple, les 4 machines sont configurées dans le même réseau IP. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 30 Segmentation des réseaux locaux : le pont Segmentation des réseaux locaux : commutation et routage, les VLANs Le STP, «Spanning Tree Protocol» La segmentation du réseau de l’organisation peut être réalisée avec : ⋆ une approche «traditionnelle» : ⋄ différents LAN utilisant des ponts, switch ou répéteurs ; ⋄ un routeur interconnectant ces différents LANs ; ⋆ une approche «VLAN» : ⋄ un ou plusieurs switch en mode VLAN ; ⋄ un routeur interconnectant ces différents VLANs. La présence de deux ponts crée une boucle dans le LAN : a. les deux ponts reçoivent une trame émise par le Host1 à destination du Host6 dans le segment du haut ; b. bridge1 retransmet la trame vers le segment du bas ; c. bridge2 reçoit du trafic dans le segment du bas de Host1 à Host6 et modifie sa table pour mettre Host1 dans le segment du bas ; d. bridge2 retransmet la trame dans le segment du haut ; e. etc. Le STP permet de désactiver les ponts pour éviter les boucles : ▷ les ponts étant accessibles les uns des autres par un «port», un pont identifie un autre pont par le port qu’il doit employer pour l’atteindre ; ▷ chaque pont existant conserve un unique pont qui doit lui permettre d’atteindre l’intégralité du réseau : le pont racine, ou «root port» parce qu’on l’atteint uniquement par un certain port. ▷ le choix du pont racine à conserver pour, le «root port», se fait à l’aide de trame diffusée au format STP, suivant : ⋄ la sélection du chemin le plus court pour l’atteindre, en nombre de CHAPTER 2 TCP/IP Protocols and Devices 65 pont à franchir ; ⋄ un identifiant numérique qui peut être choisi, le «port ID» lorsqu’il y a plusieurs chemins possibles ; it is⋄notdes possible for anyde frames to cross the boundary of a broadcast domain: Another intervalles temps régulier afin d’éviter la rupture du réseau en external device, such as a router, is always required to internetwork the domains. cas de panne d’un pont. When LAN switches define multiple broadcast domains they are creating virtual LANs (VLANs). Not all LAN switches can define VLANs, especially smaller ones, but many can. A VLAN defines membership to a LAN logically, through configuration, not physically by sharing media or devices. On a WAN, the term “switch” means a class of network nodes that behave very differently than routers. We’ll look more closely at how “fast packet network” devices, such as Frame Relay and ATM switches as network nodes, differ from routers in a later chapter. Segmentation des réseaux locaux : commutation et switch, les VLANs Le switch IlVirtual permetLANs : according to un the offi cial IEEE de definition, defines broadcast domainsdomaines at Layer 2. de collisions, avec plus de deux ports de −A VLAN, de segmenter domaine diffusion entre plusieurs VLANs, as a Layer 2 entity, really have little to do with the TCP/IP protocol stack, connexion à la manière d’un pont ; but VLANs make a huge difference in how switches and routers operate on a TCP/IP −network. de créer plusieurs domaines de diffusion segmentés : do not propagate as bridges so adomaine router automatically defines ⋄Routers en associant un oubroadcasts plusieurs ports do, à un de diffusion ; broadcast domains on each interface. Layer 2 LAN switches logically create broadcast ⋄ enbased assurant un travailofde entre ces guration différents ; switch domains on confi guration thepont switch. The confi tellsports the LAN what do permettant with a broadcast received ondes a port in terms of libres what other should ⋄ toen l’utilisation autres ports pourports définir un ou plusieurs autres domaines de diffusion. receive it (or if it should even be flooded to all other ports). Dans ce cas, on dira que le switch créé des LANs virtuels, appelés VLANs. When LAN switches are used to connect LAN segments, the broadcast domains L’avantage du VLAN est sa flexibilité : ∘ il est possible d’associer un port à un VLAN particulier ; ∘ chacun de ses ports peut être connecté à un site particulier ; ∘ une personne peut rester dans le même bureau tout en migrant dans un VLAN différent ; ∘ son usage se combine avec celui d’un routeur : ⋄ le routeur reste nécessaire aux échanges entre VLANs Les VLANs Les trames de VLAN La gestion des VLANs se fait au travers de l’affectation d’un port d’un switch à un domaine de diffusion particulier, c-à-d à un VLAN particulier. Lorsque plusieurs switchs doivent être reliés afin de créer les différents VLANs, il est nécessaire d’échanger entre ces switchs des trames appartenant à différents VLANs, il est nécessaire de savoir à quel VLAN appartient une trame. cannot be determined just by looking at the network diagram. Systems can belong to Lesdifferent, VLANsthe same, or even multiple, broadcast domains. The configuration files in the Les domaines de diffusion, «broadcast domain», VLAN1 et VLAN2 sont des «entités logiques» dont les matériels sont connectés par des pont virtuels. LAN Switch − on doit «noter» à quel VLAN chaque trame appartient ; − on utilise la norme IEEE 802.1Q, qui étend la trame 802.3 : ⋄ elle utilise le «frame tagging», c-à-d de l’étiquetage de trame ; ⋄ les étiquettes permettent de savoir à quel domaine de diffusion appartient la trame ; ⋄ il est possible de mettre plusieurs tags dans une trame Le Trunk ou le multiplexage de VLAN Cli Cli Cli Svr VLAN 1 VLAN 2 VLAN 1 VLAN 2 Broadcast messages from VLAN 1 devices are sent only to the VLAN 1 broadcast domain. Cli Cli Cli Svr VLAN 2 VLAN 1 VLAN 2 VLAN 1 Broadcast messages from VLAN 2 devices are sent only to the VLAN 2 broadcast domain. On appelle «Trunk» la liaison où circule les trames des différents VLANs. FIGURE 2.6 VLANs in a LAN switch. Broadcast domains are now logical entities connected by “virtual bridges” in the device. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 31 CHAPTER 2 TCP/IP Protocols and Devices Les VLANs et le trunking 67 La norme 802.1Q Ethernet Frame Structure Destination Address 6 bytes Le routage complet ? Chercher un chemin Acheminement des messages ou routage Source Address 6 bytes Tag 4 bytes Tag Protocol ID 16 bits TPID: 0 3 8100 (defaut), 0 3 9100, 0 3 9200 Type 2 bytes Priority 3 bits Information 46–1500 bytes CFI 1 bit 802.1p priority levels (027) FCS 4 bytes VLAN ID 12 bits VID (unique): 0 to 4095 (Canonical Format Indicator: 0 5 canonical MAC, 1 5 noncanonical MAC) Ethernet q-in-q VLAN tags DA SA Type Data DA SA Tag Type DA SA Tag Tag FCS Data Type Original Ethernet Frame FCS Data Elle ajoute : La − 4 octets au format de la trame, entre l’@MAC source et le champs type contenu dans la trame ; La taille maximale de la trame passe de 1518 octets à 1522 octets. − un identifiant de VLAN qui peut aller de 0 à 4095. Il est possible d’utiliser un double étiquetage, appelé «q in q» pour permettre à un FAI d’avoir ses propres VLANs an plus de ceux du client (dans le cas ou les sites du client sont dispersés et doivent communiquer entre eux par l’intermédiaire du FAI). 802.1q Tagged Frame FCS Doubly-Tagged Frame norme 802.1p intègre des notions de priorités pour favoriser le trafic d’un VLAN et faire de la QoS. FIGURE 2.7 VLAN tags and frames. Description : Note that frames can contain more than one tag, and often do. ▷ le TPID, «Tag Protocol Identifier» : prend la place du type dans une trame 802.3 et identifie la trame comme étant une trame de VLAN (valeur 0x8100) ; on broadcasts—Some network protocols are much worse than ▷Cutting PCP,down «Priority Code Point» : champ sur 3 bits allant de la priorité 1 la plus faible à 7 la plus forte (la valeur 0 indique pas others when it comes to broadcasts. These broadcast frames can be an issue de priorité). because they rarely carry user data and each and every system on the segment must process the content être of a associées broadcast frame. cande isolate Ces priorités peuvent à desVLANs classes traficprotocol : voix, vidéo, données… ; broadcasts so that they arrive only at the systems that need to hear them. Also, ▷ aCFI, «Canonical Format Indicator» : compatibilité Token Ring : une trame dont le CFI est à 1, c-à-d non canonical, number of hosts that might otherwise make up a very large avec logicalles network (e.g., 19 what willpas callêtre laterrelayée a “/19-sized subnet”) couldnon use associé à un VLAN ; alorsPage la trame newe doit verswireless un port non tagé, VLANs because they can be just plain noisy. ▷ VID, «VLAN Identifier» : identifie le VLAN, le numéro 1 est associé à un VLAN de gestion administrative, et la valeur 0 Router delay—Older routers can be much slower than LAN switches. VLANs can indique la trame n’appartient à aucun VLAN. be used toque establish logical boundaries that do not need to employ a router to Pour acheminer un datagramme de la source à la destination, il faut déterminer un chemin allant du réseau origine au réseau destinataire : ⋆ pour sortir du réseau origine, il faut un premier routeur (passerelle ou «gateway») ⋆ il faut ensuite trouver le routeur qui est connecté au réseau destination. Deux cas possibles : 1. le routeur destination est directement accessible, c-à-d le réseau destination est directement connecté au réseau origine par l’intermédiaire du même routeur ; 2. le routeur destination n’est pas directement accessible : le message doit circuler via un ou plusieurs routeurs intermédiaires. Ce qui permet d’appliquer l’algorithme de base de recherche du prochain saut ▷ Routage direct : le datagramme est transmis à une machine dans le même réseau local ; ▷ Routage indirect : le datagramme est échanger entre routeurs jusqu’au réseau destination (pour le routeur connecté au réseau destination, la remise du datagramme se fait de manière directe). Comment trouver le routeur destination ? En théorie, le routage devrait se faire en tenant compte de paramètres difficiles à évaluer comme l’encombrement du réseau, la longueur du datagramme ou le type de service mentionné dans l’en-tête du datagramme. En pratique, l’acheminement des datagrammes se fait en fonction : ⋆ de la connaissance par un routeur, des autres routeurs auxquels il est connecté : table de routage ; ⋆ d’hypothèses statiques utilisées dans des algorithmes de calcul du plus court chemin (utilisation d’algorithmes pour construire la table de routage ou seulement de l’intelligence de l’administrateur réseau). Chaque routeur prend une décision au mieux, «best effort», pour l’étape de routage qu’il réalise. get traffic from one LAN segment to another. (In fairness, many routers today route at “wire speed” and do not introduce much latency into a network.) The Illustrated Network uses Gigabit Ethernet links: togénéralisation connect the customer-edge du premier pas 5 routers L’algorithme de routage to the ISP networks. Many ISPs would assign the frame arriving from LAN1 and Routage : routeur & table de routage Le routage peut se faire suivant des routes différentes. Ce qui explique que : ⋆ certains datagrammes puissent se perdre ⋆ qu’ils arrivent dans un ordre différent (temps d’acheminement différents). LAN2 a VLANentre ID and tag the frames at the Distinction ordinateur et provider-edge routeur routers. If the sites are close ⋆ un ordinateur est un équipement relié à un seul réseau ; ⋆ un routeur est un équipement relié à au moins deux réseaux, éventuellement à un réseau où ne sont connectés ⋆ ⋆ ⋆ ⋆ que des routeurs (réseau d’interconnexion) ; chacun dispose pour chaque connexion d’une carte réseau ; chacun dispose pour chaque carte réseau d’une @MAC et d’une @IP ; l’ordinateur est soit l’expéditeur initial, soit le destinataire final d’un datagramme ; le routeur réémet, relaye, des datagrammes : ⋄ provenant d’une de ses interfaces (carte de connexion à un réseau) ; ⋄ vers une autre de ses interfaces ; c’est à lui de choisir une étape sur le chemin que devra emprunter le datagramme pour atteindre l’ordinateur destinataire. Généralisation : algorithme de routage par sauts successifs, “next hop routing” Le datagramme va passer d’intermédiaire en intermédiaire, d’une «entité réseau» à une autre : il fait des «sauts» ou hop : ▷ l’entité réseau (ordinateur ou routeur) exécute le même algorithme : décider entre routage direct et indirect Dans le cas d’un routeur, le routage indirect peut faire le choix entre différentes adresses de routeurs. ▷ l’entité réseau doit déterminer l’adresse de prochain saut, c-à-d la prochaine étape du chemin d’achemi- Fonctionnement du routage sur un routeur : ▷ il faut connaître des routeurs destinations pour accéder à d’autres réseaux ; ▷ ces routeurs sont indiqués dans une table de routage ; ▷ chaque entrée de la table contient : ⋄ un réseau de destination ; ⋄ une adresse de prochain saut, next hop : ⋆ celle du prochain routeur à emprunter pour atteindre la destination (routage indirect) ; ⋆ celle de l’interface du routeur s’il est connecté au réseau (routage direct). ▷ la table de routage contient une route par défaut (pour les destinations inconnues). nement du datagramme à transmettre. Un saut correspond à la transmission d’un datagramme à un routeur ou à la machine destinataire. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — R2 atteint D par l’intermédiaire de R3 : ⟹R3 est son «next-hop» sur le chemin vers D. 13 décembre 2015 — 32 Résumé sur le routage 6 Diffusion dans un réseau : Multicast et classe D Comment créer une méthode de routage «simple» pour un ordinateur ? ⋆ Appliquer le principe de «localité» : connaissance locale ⟹ décision locale ; ⋆ Ne considérer que le réseau auquel est connecté l’ordinateur ; ⋆ Prendre en compte que c’est un réseau à diffusion ; ⋆ Savoir qu’il est interconnecté par un réseau point à point aux autres réseaux (existence d’une sortie) ; ⋆ Ignorer l’identité de tous ces autres réseaux (cette connaissance sera réservée aux routeurs). Alors, cette méthode simple ? ▷ La seule possibilité de sortir du réseau local ? un routeur connecté à ce réseau ; Lorsqu’un hôte envoie un datagramme, il a le choix du mode : ∘ Unicast : pour un seul destinataire ; ∘ Brodcast : à tous les noeuds connectés à un réseau ; ∘ Multicast : à tous les noeuds qui appartiennent à un même groupe. Le multicast dans IPv4 est limité au réseau local, mais peut être retransmis par un routeur s’il est configuré pour le faire. Une classe est réservée à la définition d’adresse multicast : ▷ la classe de réseau D : 224.0.0.0/4 pour la plage d’adresses 224.0.0.0 à 239.255.255.255. Il existe des groupes prédéfinis : ▷ Conclusion : ⋄ soit l’ordinateur communique avec le réseau local et il Adresse Destinations 224.0.0.1 All hosts on a subnet ⋄ soit l’ordinateur veut communiquer avec l’extérieur et le fait suivant la méthode d’un réseau à diffusion ; 224.0.0.2 All routers on a subnet 224.0.0.5 All OSPF routers (DR Others) il passe par le routeur ! ⋄ ce routeur est souvent appelé «passerelle» ou «gateway» ou «route par défaut» ; ⋄ l’ordinateur doit connaître l’@IP de ce routeur ! 224.0.0.6 All OSPF Designated Routers 224.0.0.9 All RIPv2 routers 224.0.0.10 All EIGRP routers 224.0.0.12 DHCP Server 224.0.1.1 NTP 224.0.1.39 Cisco RP Announce 224.0.1.40 Cisco RP Discovery Pour suivre le routage avec le traceroute de Scapy Multicast : réduire la diffusion >> sn,unans=traceroute(["www.unilim.fr"],maxttl=10) Begin emission: **Finished to send 10 packets. ******* AS3303 [SWISSCOM Swisscom (Switzerland) Ltd] 192.168.42.254 Received 9 packets, got 9 answers, remaining 1 packets 164.81.1.61:tcp80 1 192.168.42.254 11 2 88.167.27.254 11 3 213.228.42.62 11 4 212.27.57.137 11 5 212.27.57.89 11 6 212.27.51.57 11 7 212.27.51.82 11 9 193.51.189.37 11 10 193.51.189.126 12322 [PROXAD Free SAS] 88.167.27.254 213.228.42.62 Il est souhaitable de réduire la diffusion d’un datagramme envoyé à un groupe d’hôtes à ces seuls hôtes. Ainsi, lors de la réception du datagramme : ⋆ l’hôte fait partie du groupe destinatire : il traite le datagramme ; ⋆ l’hôte ne fait pas partie du groupe : il ignore le datagramme. Comment faire ? Utiliser une @MAC destination particulière : a. utiliser un préfixe particulier pour ce type d’@MAC : 01 00 5E ; b. mapper les 23 derniers bits de l’@IP du groupe, sur l’@MAC. 212.27.57.137 212.27.57.89 11 ATTENTION Une erreur s’est glissée dans l’affichage à droite, où il est indiqué que le réseau privé 192.168.42.0/24 appartient à l’A3303. En effet, scapy utilise la commande suivante : darkstar:~ pef$ whois -h riswhois.ripe.net 192.168.0.0 % This is RIPE NCC's Routing Information Service 212.27.51.57 212.27.51.82 unk0 2200 [FR-RENATER Reseau National de telecommunications pour la Technologie] 193.51.189.37 % whois gateway to collected BGP Routing Tables % IPv4 or IPv6 address to origin prefix match % route: 192.0.0.0/3 origin: AS3303 descr: SWISSCOM Swisscom (Switzerland) Ltd 193.51.189.126 1935 [FR-RENATER-LIMOUSIN Reseau Regional Limousin] 164.81.1.61 80/tcp Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Il peut y avoir des risques de chevauchement sur les 5 bits ignorés mais c’est rare donc sans risque… Attention Sous IPv6, le broadcast et la diffusion de groupe change avec une @MAC de la forme 33:33:00:00:00:01 pour le «groupe» ff02::1 — 13 décembre 2015 — 33 Multicast et programmation Localisation de service dans réseaux locaux privés Pour pouvoir utiliser le «multicast» dans un programme, il est nécessaire d’informer le système d’exploitation que l’on veut joindre un groupe, ce qui est fait par les instructions suivantes en Python : Solution de DNS pour réseau local = struct.pack("4sl", socket.inet_aton("224.0.0.127"), socket.INAD 1 gestion_mcast DR_ANY) 2 ma_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, gestion_mcast) 3 ma_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 0) Attention : dans la chaîne de format du pack, c’est la lettre «l» et non le chiffre «1». L’option «IP_MULTICAST_LOOP» permet de choisir si l’émetteur reçoit le paquet qu’il envoie. Si la machine dispose de plusieurs interfaces, il faut utiliser l’option «IP_MULTICAST_IF» pour la sélectionner. Multicast & Routeur : protocole IGMP & TTL Lorsque la machine rejoint un groupe, elle diffuse un message au format IGMP, «Internet Group Management Protocol», afin de prévenir les routeurs présents dans le réseau : ∘ que la machine joint un groupe (un paquet sera également diffusé lorsque la machine quitte le groupe) ; ∘ qu’ils pourront avoir à relayer des paquets multicast à destination de l’adresse du groupe choisi. C’est un protocole proposé par Apple (à la base utilisé par Bonjour), présent sur GNU/Linux (Avahi) : ⋆ basé sur les mêmes formats de paquet que le DNS traditionnel : ⋄ chaque ordinateur possède sa propre liste d’enregistrements DNS (A, MX, SRV, etc) ; ⋄ chaque ordinateur peut diffuser la liste des services qu’il offre grâce au champ SRV ; ⋄ domaine local appelé «.local» ; ⋆ échangé de manière différentes dans le réseau : ⋄ utilisation de l’adresse multicast 224.0.0.251 pour contacter toutes les machines du réseau local auquel on est connecté ; ⋄ utilise le port 5353 en UDP ; ⋄ les paquets ont les caractéristiques suivantes : MAC address 01:00:5E:00:00:FB IPv4 address 224.0.0.251 or IPv6 address FF02::FB ⋄ se combine avec l’auto-configuration des adresses IP, APIPA, «Automatic Private IP Addressing», UDP port 5353 Pour restreindre le nombre de routeurs pouvant être traversé, on choisit la TTL, «Time To Live» des paquets multicast : 1 ma_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2) (169.254.0.0/16), en l’absence de serveur DHCP ou de configuration manuelle ; Il existe également UPnP SSDP, «Simple Service Discovery Protocol» de Microsoft qui n’utilise pas le format de requête/réponse du DNS. Ici, le paquet pourra traverser uniquement 1 seul routeur. Savoir à quels groupes on appartient Pour afficher la liste des groupes auxquels appartient la machine : xterm pef@solaris:~$ netstat -gn IPv6/Adhésions au groupe IPv4 Interface RefCnt Group --------------- ------ --------------------lo 1 224.0.0.1 eth0 1 224.0.0.251 eth0 1 224.0.1.2 eth0 1 224.0.0.1 Exemple de paquet mDNS obtenu avec Scapy >>> l=sniff(count=3,filter="udp and port 5353") >>> DNS(str(l[0][UDP].payload)) <DNS id=0 qr=0L opcode=QUERY aa=0L tc=0L rd=0L ra=0L z=0L rcode=ok qdcount=1 ancount=0 nscount=1 arcount=0 qd=<DNSQR qname='iPhone de Pierre-Francois Bonnefoi._avexvscreen._udp.local.' qtype=ALL qclass=32769 |> an=None ns=<DNSRR rrname='iPhone de Pierre-Francois Bonnefoi._avexvscreen._udp.local.' type=SRV rclass=IN ttl=120 rdata='\x00\x00\x00\x00\x17q"iPhone-de-Pierre-Francois-Bonnefoi\xc0B' |> ar=None |> Le protocole IGMP, «Internet Group Management Protocol» Extension des DNS : l’enregistrement SRV Lors de la création du groupe Recherche de machine par service fourni (RFC 2782) Exemple avec la commande «socat» : xterm pef@cerberus:~$ socat stdio udp-recvfrom:7182,ip-add-membership=224.0.0.127:eth0,fork et les paquets IGMP diffusés (TO_EX {empty} ⟹ quitter l’exclusion donc joindre) : xterm root@starfox:~# tcpdump -nvveX -i eth0 igmp tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 02:44:53.375237 00:0c:29:0f:31:a1 > 01:00:5e:00:00:16, ethertype IPv4 (0x0800), length 60: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA)) 192.168.127.238 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.0.127 to_ex { }] 0x0000: 46c0 0028 0000 4000 0102 c362 c0a8 7fee F..([email protected].... 0x0010: e000 0016 9404 0000 2200 f97e 0000 0001 ........"..~.... 0x0020: 0400 0000 e000 007f 0000 0000 0000 .............. Lors de la terminaison du groupe xterm 02:45:18.986933 00:0c:29:0f:31:a1 > 01:00:5e:00:00:16, ethertype IPv4 (0x0800), length 60: (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA)) 192.168.127.238 > 224.0.0.22: igmp v3 report, 1 group record(s) [gaddr 224.0.0.127 to_in { }] 0x0000: 46c0 0028 0000 4000 0102 c362 c0a8 7fee F..([email protected].... 0x0010: e000 0016 9404 0000 2200 fa7e 0000 0001 ........"..~.... 0x0020: 0300 0000 e000 007f 0000 0000 0000 .............. Un nouveau type d’enregistrement a été défini dans les DNS, suivant le format suivant : _Service._Proto.Name TTL Class SRV Priority Weight Port Target Exemple : _sip._udp.unilim.fr 43200 IN SRV 10 10 5060 sipserveur.unilim.fr ⋄ ⋄ ⋄ ⋄ ⋄ ⋄ ⋄ ⋄ ⋄ le service est SIP ; le protocole est UDP ; la durée de vie de l’association est de 12h (43200 secondes) ; la classe est Internet ; le type d’enregistrement est SRV ; la priorité est de 10 (les valeurs inférieures sont utilisées préférentiellement) ; le poids est de 10 (pour pouvoir faire de l’équilibrage de charge) ; le port associé au SIP est 5060 ; le FQDN, «Full Qualified Domain Name» du serveur est sipserveur.unilim.fr. Exemple de paquet mDNS sniffé avec Scapy >>> paquet_sniffe.payload <IP version=4L ihl=5L tos=0x0 len=160 id=18153 flags= frag=0L ttl=255 proto=udp chksum=0xa889 src=192.168.42.54 dst=224.0.0.251 options='' |<UDP sport=mdns dport=mdns len=140 chksum=0x9788 |<Raw load='\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00 #iPhone de Pierre-Fran\xc3\xa7ois Bonnefoi\x0c_avexvscreen\x04_udp\x05local\x00\x00\xff\x80\x01\xc0\x0c\x00! Le «switch» écoute les ports qui diffusent ces messages IGMP pour limiter le multicast des paquets, il réalise du «IGMP snooping». Les messages IGMP sont diffusés vers le groupe 224.0.0.22. Exemple d’utilisation : diffusion d’un flux RTP, «Real Time Protocol» pour la diffusion d’un flux vidéo au travers d’un routeur. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ \x00\x01\x00\x00\x00x\x00\x00\x00\x00\x00\x17q"iPhone-de-Pierre-Francois-Bonnefoi\xc0B' |>>> >>> DNS(str(paquet_sniffe[UDP].payload)) <DNS id=0 qr=0L opcode=QUERY aa=0L tc=0L rd=0L ra=0L z=0L rcode=ok qdcount=1 ancount=0 nscount=1 arcount=0 qd=<DNSQR qname='iPhone de Pierre-Fran\xc3\xa7ois Bonnefoi._avexvscreen._udp.local.' qtype=ALL qclass=32769 |> an=None ns=<DNSRR rrname='iPhone de Pierre-Fran\xc3\xa7ois Bonnefoi._avexvscreen._udp.local.' type=SRV rclass=IN ttl=120 rdata='\x00\x00\x00\x00\x17q "iPhone-de-Pierre-Francois-Bonnefoi\xc0B' |> ar=None |> — 13 décembre 2015 — 34 Fragments bit is set to 0). In the following, we talk about fragmentation in IPv4 in more detail, and then explore all of the fields in the IPv4 header in more detail. 7 Le format du datagramme IP THE IPv4 PACKET HEADER Le datagramme IP est une séquence d’octets, dont l’interprétation réalisée : IPv4 packet is shown in Figure 6.3. The minimum header The generalest structure of the no 32 options, ▷ soit par groupe de 2 ou de 4, pour obtenir une valeur sur(using 16 ou bits the ; most common situation) has a length of 20 bytes (always shown in a 4-bytes-per-line format), and a maximum length (very rarely seen) of 60 bytes. Some ▷ soit bit par bit, où chaque bit à un sens particulier. of the fields are fairly self-explanatory, such as the fields for the 4-byte (32-bit) IPv4 source and destination address, but tous othersles have specialized purposes. Sur le schéma en français, la « fléche » vers le bas indique une coupure du datagramme octets, chaque ligne représentant 4 octets ou 32 bits. 1 byte Version 1 byte Header Length Time to Live Total Packet Length Flags Identification H e a d e r 1 byte 1 byte Type of Service Protocol Fragment Offset Header Checksum 32-bit IPv4 Source Address ∘ durée de vie (TTL) : indique le nombre de routeurs que peut traverser le datagramme avant d’être détruit. La valeur d’initialisation est de 128. ⋄ lorsqu’un routeur reçoit un datagramme avec la valeur 0, le datagramme est détruit et envoie à l’expéditeur un message ICMP, «Internet Control Message Protocol» pour l’informer. ⋄ permet de «décongestionner» automatiquement le réseau : un paquet ne peut rester bloqué dans le réseau indéfiniment. ∘ protocole sur 8 bits : indique le protocole de haut niveau qui est contenu dans le datagramme ∘ somme de contrôle d’en-tête (header checksum) : assure l’intégrité de l’en-tête. ⋄ complément à 1 de la somme des valeurs de l’en-tête, considérées comme une suite d’entiers sur 16 bits ; ⋄ permet de faire de la «détection d’erreur» : le récepteur peut savoir si le datagramme a été endommagé 1 ICMP6 TCP 2 IGMP 17 UDP pendant la transmission. 32-bit IPv4 Destination Address ∘ adresses IP source et destination ⋄ permet de faire le routage : ⋆ chaque routeur choisie une ligne de sortie en fonction de l’adresse de destination ; (Options, if present, padded if needed) DATA 32 bits ∘ version sur 4 bits : le numéro de version (en général 4, mais bientôt 6…). IPv4 Packet and Header ∘ longueur de l’en-tête sur 4 bits : longueur en nombre de mots de 32bits (une en-tête est au minimum d’une FIGURE 6.3 longueur de 20 octets, mais peut être plus grande en présence d’options). Le format du datagramme IP ∘ options : c’est une liste de longueur variable, mais toujours complétée par des bits de bourrage, pour obtenir une taille multiple de 32 bits (la taille de l’en-tête étant exprimée en mots de 32bits). ⋄ très peu utilisées : information concernant l’enregistrement de la route, estampille horaire… ⋄ la présence d’option est déduite par la différence de la taille de l’en-tête avec la taille de l’en-tête minimale : ⋆ 𝐻𝐿 − 20 = 0, pas d’options ⋆ 𝐻𝐿 − 20 > 0, présence d’options FundamentalsRFC 792 ICMP : «Internet Control MessageNetworking Protocol», ∘ le type de service sur 8 bits : indique la manière dont doit être géré le datagramme par les routeurs : 0123 4 5 6 7 priorité D T R C ⋄ le champ priorité varie de : 0 (priorité normale) à 7 (priorité maximale : supervision du réseau) ; ⋄ ne s’applique qu’à l’intérieur d’un réseau sous même administration et n’est pas pris en compte par tous les ⋄ les 4 bits D, T, R & C spécifient ce que l’on veut privilégier (RFC 1349, remplacée par la 2474) : D minimiser le routeurs ; délai d’acheminement, T maximiser le débit de transmission, R fiabilité, C coûts de transmission, DTRC tout à 1 pour la sécurité. application minimise le délai maximise le débit maximise la fiabilité minimise le coût En fonction des différents services : telnet/rlogin 1 Le format du datagramme IP 0 0 0 FTP contrôle 1 0 0 0 transfert 0 1 0 0 NNTP 0 0 0 1 SNMP 0 0 1 0 Actuellement : ⋆ on recycle les bits 6&7 pour l’ECN, Explicit Congestion Notification, définie dans la RFC 3168. Cela permet de détecter l’entrée en congestion du réseau, c-à-d qu’il va bientôt saturer. ⋆ DSCP, «Differentiated Services Code Point » : RFC 2474, proposée par CISCO pour faire de la QoS. ⋆ effectue un contrôle des échanges ; ⋆ permet de «déboguer» le réseau IP à l’aide de message ; ⋆ utilise différents types de message avec des significations différentes en deux catégories : ⋄ messages d’erreurs ; ⋄ messages de requêtes ; Attention Pour des questions de sécurité certains messages ICMP «actifs» ne sont plus interprétés et d’autres de «surveillance» sont filtrés. Le format du message ICMP : le contenu des données dépend du type. ∘ longueur totale sur 2 octets : contient la taille en octet du datagramme (inclus la taille de l’en-tête) Description / Interpretation Destination Unreachable 7KLVWHOOVWKHVRXUFHKRVWWKDWWKHUHLVDSUREOHP GHOLYHULQJDSDFNHW7KHSUREOHPLVWKDWHLWKHUWKH destination host is down or its internet connection is down. 7LPH([FHHGHG ,WKDVWDNHQWRRORQJIRUDSDFNHWWREHGHOLYHUHG7KH packet has been discarded. Source Quench 7KHVRXUFHLVVHQGLQJGDWDIDVWHUWKDQLWFDQEH IRUZDUGHG7KLVPHVVDJHUHTXHVWVWKDWWKHVHQGHUVORZ down. Redirect 7KHURXWHUVHQGLQJWKLVPHVVDJHKDVUHFHLYHGVRPH packet for which another router, which is also directly connected to the sender, would have had a better route. 7KHPHVVDJHWHOOVWKHVHQGHUWRXVHWKHEHWWHUURXWHU Echo 7KLVLVXVHGE\WKHping command to verify connectivity. 7KHVHQGHUZLOOLVVXHDQHFKRUHTXHVWPHVVDJHDQGZLOO UHFHLYHDQHFKRUHSO\IURPWKHRWKHUKRVWLIDSDWKLV found between the two. Parameter Problem 7KLVLVXVHGWRLGHQWLI\DSDUDPHWHUWKDWLVLQFRUUHFW 7LPHVWDPS 7KLVLVXVHGWRPHDVXUHURXQGWULSWLPHWRSDUWLFXODUKRVWV $GGUHVV0DVN5HTXHVW5HSO\ 7KLVLVXVHGWRLQTXLUHDERXWDQGOHDUQWKHFRUUHFWVXEQHW mask to be used. Router Advertisement and Selection 7KLVLVXVHGWRDOORZKRVWVWRG\QDPLFDOO\OHDUQWKH,3 addresses of the routers attached to the subnet. 0 1 2 3 ARP: Address Resolution Protocol is used to determine MAC addresses for a given 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 IP address. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Protocol Code is used | to determine Checksum RARP: Reverse Address Resolution an IP address for a| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ given MAC address. ∘ identification, drapeaux & déplacement de fragments : gestion de la fragmentation du datagramme IP. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Message Returned | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The TCP/IP Network Access Layer 7KHQHWZRUNDFFHVVOD\HULQ7&3,3DOVRFDOOHGKRVWWRQHWZRUNOD\HUDOORZV,3 packets to make physical links to the network media. — 13 décembre 2015 — 35 ICMP Query messages are used to question conditions on the network. These messages are used in pairs, and each request anticipates a response. The 10 ICMP Query messages Echo messages (used by ping), although some allow only incoming Echo replies but are listed in Table 7.3, which shows how routers and hosts should handle each type. not Echo requests (which allows my devices to ping yours, but not the other way These ICMP messages in Table 7.3 allow routers and hosts to query for timestamp,around). The timestamp reply is also used by traceroute, and if these messages are address mask, and domain name information. Echo requests and replies have special blocked, asterisks (*) appear instead of times in the traceroute report (we’ll look at traceroute operation in detail in Chapter 9). uses described in the section of this chapter on ping. ICMP : les messages et leurs usages Table 7.3 ICMP Query Messages Table 7.4 Other ICMP Query Messages Codes Data Router Sends Echo reply 0 Varies M M M M 1 Unassigned NA NA NA NA NA Echo request 0 Varies M M M M 2 Unassigned NA NA NA NA NA NA 6 (4 bytes) (Prohibited) (Prohibited) Opt Opt Timestamp request 0 12 bytes Opt Opt Opt Opt Alternate host address 0 13 9 Varies M Opt Prohibited Opt Timestamp reply 0 12 bytes Opt Opt Opt Opt Router advertisement 0 14 10 0 0 bytes M M Opt Opt 15 Information request 0 0 bytes Obs Obs Obs Obs Router solicitation 19 NA NA NA NA NA Information reply 0 0 bytes Obs Obs Obs Obs Reserved– security NA 16 20–29 NA NA NA NA NA NA Mask request 0 Reserved– robustness 30 Traceroute 0–1 Varies Opt Opt M M 18 Mask reply 0 4 bytes M M Opt Opt 31 0–11 Varies ? ? ? ? 37 Domain name request 0 0 bytes M M M M Datagram conversion error 32 Mobile host redirect 0 Varies Opt Opt Opt Opt Domain name reply 0 33 IPv6 where-are-you 0 ? Opt Opt Opt Opt 34 IPv6 I-am-here 0 ? Opt Opt Opt Opt 35 Mobile registration request 0, 16 Varies Opt Opt Opt Opt 36 Mobile registration reply 0, 16 Varies Opt Opt Opt Opt Type Meaning 0 8 17 38 4 bytes 0 bytes M M Router Receives Host Sends Host Receives Type Meaning M M Opt M Opt M Obs, obsolete; Opt, optional; M, mandatory. ⋆ M, Mandatory : obligatoire ; ⋆ actuellement : les machines filtrent les paquets «echo request» pour être «invisibles» sur le réseau (mode «stealth» sous Mac os X par ex.) ; 39 40 SKIP Photurius Codes Data Router Sends Router Receives Host Sends Host Receives NA Les attaques utilisant ICMP ⋆ «L’OS fingerprinting» : reconnaissance de l’OS présent sur la machine cible : ⋄ l’attaquant envoi un datagramme UDP avec le bit «DF» à 1 vers la cible avec un numéro de port fermé ; ⋄ la cible retourne un paquet ICMP «Destination port Unreachable» à l’attaquant ; ⋄ en analysant le format du paquet ICMP reçu, l’attaquant peut obtenir des informations sur la cible ; Exemple : un paquet est envoyé depuis un Linux vers un Mac et un PC et la réponse est différente : >>> paquet_mac <IP frag=0 proto=udp dst=192.168.127.1 |<UDP dport=56467 |>> >>> reponse_mac <IP version=4L ihl=5L tos=0x0 len=56 id=9103 flags= frag=0L ttl=64 proto=icmp chksum=0xd747 src=192.168.127.1\ dst=192.168.127.156 options=[] 0 0–3 Varies Varies Opt Exp Opt Exp Opt Exp Opt Exp Exp, expired; Obs, obsolete; Opt, optional; M, mandatory; NA, not applicable. ⋆ le protocole «SKIP», «Simple Key-Management for Internet Protocol» pour l’utilisation des protocoles AH, «Authen⋆ le protocole «photuris» sert également à la cryptographie : «Session-Key Management Protocol». |<ICMP type=dest-unreach code=port-unreachable chksum=0x202c unused=0 |<IPerror version=4L ihl=5L tos=0x0 len=28 id=1 flags= frag=0L ttl=64 proto=udp chksum=0xfae1 src=192.168.127.156\ dst=192.168.127.1 options=[] |<UDPerror sport=domain dport=56467 len=8 chksum=0x0 |>>>> >>> paquet_pc <IP frag=0 proto=udp dst=192.168.127.153 |<UDP dport=56467 |>> >>> reponse_pc <IP version=4L ihl=5L tos=0x0 len=56 id=2471 flags= frag=0L ttl=128 proto=icmp chksum=0xb097 src=192.168.127.153\ dst=192.168.127.156 options=[] |<ICMP type=dest-unreach code=port-unreachable chksum=0x7d9d unused=0 |<IPerror version=4L ihl=5L tos=0x0 len=28 id=1 flags= frag=0L ttl=64 proto=udp chksum=0xfa49 src=192.168.127.156\ dst=192.168.127.153 options=[] |<UDPerror sport=domain dport=56467 len=8 chksum=0xa28e |>>>> Jeu des 7 erreurs : quelles sont-elles ? tication Header» et ESP, «Encapsulating Security Protocol» et choix des protocoles cryptographiques ; Les attaques utilisant ICMP Pour la reconnaissance d’un réseau ∘ comprendre l’organisation de l’environnement de la cible ; ∘ obtenir des informations sur la cible pour préparer une attaque ; ∘ utiliser les bonnes techniques et outils pour les différentes phases de l’attaque ; Les techniques ⋆ «ICMP Sweep» : «balayer» la plage d’adresses d’un réseau (réalisable automatiquement par l’outil «nmap» par ex.) ; ⋆ «Traceroute» : envoi successif de datagrammes avec une valeur de TTL incrémentée à chaque datagramme : ⋄ lorsqu’un routeur «forward» un datagramme, il décrémente le TTL ; ⋄ lorsque la TTL arrive à zéro, un paque ICMP «time excedeed» est retourné à l’expéditeur, ce qui permet à celui-ci de découvrir l’adresse du routeur ; ⋄ on obtient des informations sur le chemin des datagrammes et sur la topologie du réseau ; ⋆ «Firewalking» : améliorer le «traceroute» pour identifier les ports ouverts sur un firewall filtrant les communications et obtenir les règles de configuration du firewall : ⋄ première phase : réaliser un traceroute «classique» pour déterminer le nombre 𝑛 de sauts, «hops», jusqu’au firewall ; ⋄ deuxième phase : envoyer des datagrammes avec une TTL égale à 𝑛 + 1 et associé à un protocole choisi : ⋆ si un paquet ICMP «time excedeed» est reçu, alors le datagramme a réussi à traverser le firewall ; ⋆ si rien n’est reçu, alors on en déduit qu’une règle du firewall a filtré le datagramme. ⋆ «Inverse Mapping» : cette technique permet de «mapper» le réseau interne qui est protégé par un firewall : ⋄ l’attaquant envoie des paquets ICMP «echo reply» vers une plage d’adresses présumées derrière le firewall ; ⋄ à l’arrivée de ces paquets ICMP de réponse, le firewall autorise à passer car il ne maintient pas la liste des requêtes ICMP (sauf si le firewall est de bon niveau ainsi que l’administrateur) ; ⋄ s’il existe un routeur interne, ce routeur retournera un paquet ICMP «Host unreachable» pour chaque hôte indisponible du réseau, ce qui informe, par déduction, l’attaquant sur les machines présentes dans le réseau. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Les attaques utilisant ICMP ⋆ «L’OS fingerprinting» : reconnaissance de l’OS présent sur la machine cible : Autre exemple : les paquets envoyés par la commande «ping» depuis un Mac et depuis un PC : >>> ping_mac <Ether dst=00:11:de:ad:be:ef src=00:50:56:c0:00:08 type=IPv4 |<IP version=4L ihl=5L tos=0x0 len=84 id=54669\ flags= frag=0L ttl=64 proto=icmp chksum=0x252d src=192.168.127.1 dst=192.168.127.156 options=[] |<ICMP |<Raw type=echo-request code=0 chksum=0xdbb7 id=0xdd4e seq=0x0 load='Ph\xc7\x8e\x00\x02;\xfd\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\ \x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567' |>>>> >>> ping_pc <Ether dst=00:11:de:ad:be:ef src=00:0c:29:d1:27:40 type=IPv4 |<IP version=4L ihl=5L tos=0x0 len=60 id=758\ flags= frag=0L ttl=128 proto=icmp chksum=0xb740 src=192.168.127.157 dst=192.168.127.156 options=[] |<ICMP type=echo-request code=0 chksum=0x4d5a id=0x1 seq=0x1 ⋆ «ICMP route redirect» : c’est un paquet envoyé par un routeur lorsqu’il : ⋄ reçoit du trafic d’un hôte ; ⋄ trouve dans sa table de routage que l’adresse de «prochain saut» à laquelle doit être envoyé ce trafic est dans le même |<Raw load='abcdefghijklmnopqrstuvwabcdefghi' |>>>> ⋄ il est possible de faire un attaque «Man-in-the-Middle» : ⋆ l’attaquant prend le contrôle du routeur R1 ; ⋆ l’attaquant envoi un paquet ICMP redirection vers la victime en prenant la place du routeur R2, utilisé par la victime ; ⋆ la redirection demande à la victime de modifier sa table de routage pour passer par R1 au lieu de R2 ; ⋆ l’attaquant intercepte le trafic sur R1. réseau que celui de l’hôte ; ⋆ les paquets ICMP «oversized» : un paquet ICMP d’une taille maximale envoyé vers la victime fait planter sa pile TCP/IP ; ⋆ «ICMP Router Discovery» : ce sont des paquets transmis dans le réseau pour permettre à un hôte de découvrir les routeurs présents : «router solicitation». Un attaquant peut répondre par un «router advertisement» et prendre la place du routeur par défaut pour la victime. — 13 décembre 2015 — 36 Les attaques utilisant ICMP ⋆ «ICMP floods» : en inondant la victime de message ICMP, on peut la ralentir et, éventuellement, l’empêcher de communiquer : ⋄ envoi depuis le même hôte ; ⋄ «smurf attack» : on envoie un paquet ICMP «echo request» en diffusion sur le réseau en mettant l’adresse de la victime comme adresse source ; ⋄ la victime est «submergée» par toutes les paques ICMP «echo reply» qu’elle reçoit de toutes les machines. Ne fonctionne plus. ⋆ le «tunneling» : encapsuler le trafic d’un protocole comme TCP ou UDP dans le contenu des paquets ICMP échangés entre un hôte compromis (où l’attaquant à pris le contrôle) et une machine située à l’extérieur du réseau : ⋄ le trafic est difficile à découvrir ; ⋄ le trafic peut être chiffré afin de le protéger. This vulnerability exists because RFC 792, which is IETF’s rules governing ICMP packets, allows for an arbitrary data length for any type 0 (echo reply) or 8 (echo message) ICMP packets. >>> p=IP(dst='192.168.127.1')/ICMP(type='echo-request')/'ceci est un test' >>> sr(p) *Finished to send 1 packets. Received 1 packets, got 1 answers, remaining 0 packets (<Results: TCP:0 UDP:0 ICMP:1 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>) >>> _[0][0] frag=0 proto=icmp dst=192.168.127.1 |<ICMP |<Raw <IP type=echo-request version=4L ihl=5L tos=0x0 len=44 id=29697 flags= frag=0L ttl=64 proto=icmp chksum=0x86e1 src=192.168.127.1 dst=192.168.127.156 type=echo-reply code=0 chksum=0x2ee8 id=0x0 seq=0x0 |<Raw Un datagramme IP a une taille maximale de 65535 octets (taille indiquée sur 16bits). Ce datagramme lors de son acheminement doit emprunter des réseaux dont la taille maximale des paquets transportables peut être inférieure. La taille maximale d’une trame d’un réseau est appelée MTU, «Maximum Transfer Unit». Cette MTU dépend de la nature du réseau et peut exprimer la taille de la trame ou de son contenu. Fonctionnement Table 6.1 Typical MTU Sizes* Link Protocol Typical MTU Limit Maximum IP Packet Ethernet 1518 1500 IEEE 802.3 1518 1492 Gigabit Ethernet 9018 9000 IEEE 802.4 8191 8166 IEEE 802.5 (Token Ring) 4508 4464 FDDI 4500 4352 SMDS/ATM 9196 9180 Frame relay 4096 4091 SDLC 2048 2046 *Frame overhead accounts for the differences between the theoretic limit and maximum IP packet size. Attention load='ceci est un test' |>>>, options=[] |<ICMP Encapsulation du datagramme IP ⇒ fragmentation ? Unité de transfert du réseau Le datagramme IP est soit : ⋆ encapsulé dans une trame si il est de taille inférieure ou égale au MTU ; ⋆170fragmenté en plusieurs fragments dans le cas contraire, où : PART II Core Protocols ⋄ chaque fragment doit avoir la plus grande taille possible et multiple de 8 octets. Begin emission: (<IP mathis-frag-harmful-00.txt) took this one step further with the title, “Fragmentation Considered Very Harmful.”The paper asserts that most of the harm occurs when a fragment of packet content, especially the first, is lost on the network. And a number of older network attacks involved sending long sequences of fragments to targets, never finishing the sequence, until the host or router ran out of buffer space and crashed. Also, load='ceci est un test' |<Padding load='\x00\x00' |>>>>) Encapsulation du datagramme IP dans une trame Ethernet Problème Une trame a une taille limite de 1500 octets en Ethernet 10 et 100 Mbits. Si la taille du datagramme à encapsuler est supérieure à 1500 octets, alors le datagramme ne peut être encapsulé ! Solution Il faut découper le datagramme IP ! Problème Un morceau de datagramme IP n’est pas un datagramme IP ! Si le morceau doit traverser un routeur il doit être vu comme un datagramme IP. En particulier, si on a découpé le datagramme IP initial en deux morceaux, il se peut que le deuxième morceau ne possède pas les entêtes nécessaires à son routage. Solution ▷ Le datagramme IP doit être fragmenté avant d’être transmis. ▷ La fragmentation d’un datagramme IP doit donner des datagrammes IP avec toutes les entêtes nécessaires ! Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ We’ll say a little more about DSCP and quality of service (QOS) in a later chapter. However, the incomplete support for and variations in QOS implementations rule out QOS or DSCP as a topic for an entire chapter. There are also four flag bits shown in the figure. The two most important are the bits that indicate this packet content is not to be fragmented (the DF bit is set to 1) and that there are no more frames carrying pieces of this packet’s payload (the More Fragments bit is set to 0). In the following, we talk about fragmentation in IPv4 in more detail, and then explore all of the fields in the IPv4 header in more detail. Les routeurs d’un réseau ne défragmentent pas les fragments. Ces fragments n’empruntent pas forcément tous le même chemin. THE IPv4 PACKET HEADER Fragmentation The general structure of the IPv4 packet is shown in Figure 6.3. The minimum header (using no options, the most common situation) has a length of 20 bytes (always shown in a 4-bytes-per-line format), and a maximum length (very rarely seen) of 60 bytes. Some of the fields are fairly self-explanatory, such as the fields for the 4-byte (32-bit) IPv4 source and destination address, but others have specialized purposes. Un Fragment = Un datagramme IP Lors de la fragmentation, le routeur renseigne l’en-tête de chaque fragment : 1 byte 1 byte 1 byte 1 byte ∘ fragment offset, déplacement : champ permettant de Header Version Type of Service Total Packet Length Length connaître la position du début du fragment dans le Flags Fragment Offset Identification datagramme initial ; H e Time to Live Protocol Header Checksum ∘ identification : numéro attribué à chaque fragment a d 32-bit IPv4 Source Address e afin de permettre leur réassemblage : tous les fragr 32-bit IPv4 Destination Address ments sont identifiés de la même manière. (Options, if present, padded if needed) ∘ total packet length : il est recalculé pour chaque fragment ; DATA 6.3 ∘FIGURE flags, drapeaux : il est composé de trois bits IPv4 Packet and Header ⋄ le 1er n’est pas utilisé ; ⋄ le 2nd, DF: Don’t Fragment : indique si le datagramme peut être fragmenté. 32 bits Si un datagramme a ce bit à un et que le routeur doit le fragmenter, alors le datagramme est détruit avec un message d’erreur ICMP. ⋄ le 3ème, MF: More Fragments : indique si c’est un fragment : ⋆ 0 : le dernier ou pas de fragmentation ; ⋆ 1 : sinon. — 13 décembre 2015 — 37 Défragmentation 8 Quelques métriques Ces métriques correspondent à des mesures des performances d’un réseau Le processus de réassemblage ⋆ À la réception du premier fragment, le destinataire final déclenche un temporisateur de réas- ⋆ Ce temporisateur est un délai maximal d’attente de tous les fragments : ⋄ Si tous les fragments n’ont pas été reçus après ce délai d’attente, ils sont détruits et le datasemblage ; gramme est ignoré. le champs TTL de chaque fragment est décrémenté à intervalle régulier. ⋄ la taille complète du datagramme n’est connue que lors de la réception du dernier fragment. Exemple où la MTU donnée est celle du contenu ou «payload» Packet from LAN: Ethernet: 1500-byte MTU size WAN Link: 4500-byte MTU size IP datagram from WAN: Total Packet Length: 4460 Identification: 03E4 Flags: LAST Fragment Offset: 0 1500 1500 Identification: 03E4 03E4 03E4 Flags: MORE MORE LAST Fragment Offset: 0 185 22 28 15 00 AA 02 08 E9 01 37 10 A1 370 Est-ce que les «offset» sont corrects ? «LAST» vient de l’interprétation de «MF=0». Le RTT ou «Round Trip Time» ▷ mesure le temps pris pour obtenir une réponse après avoir envoyer une demande à un interlocuteur; ▷ permet d’obtenir une valeur approchée de la latence : 𝑅𝑇 𝑇 /2 ⋄ ⋄ ⋄ A mesure la différence de temps avec son heure actuelle. 21 00 01 00 195 Influence du jitter sur l’ordre de remise des datagrammes 31 00 D0 00 23 06 BB 00 00 00 F1 10 12 13 08 00 45 00 F9 23 C1 32 B9 12 C9 1B 00 00 00 00 00 00 50 02 ."..!1........E. .(.7..#..#.2.... Y.............P. 00 22 AA 01 21 31 00 D0 00 1C 02 37 20 00 23 06 59 15 08 10 01 BB 00 00 F1 10 12 13 08 00 45 00 D9 2F C1 32 B9 12 C9 1B 00 00 ."..!1........E. ...7 .#../.2.... Y......... Network O P Q 5 R 2 4 S Source 00 22 AA 01 21 31 00 D0 00 1C 02 37 20 01 23 06 59 15 00 00 00 00 50 02 F1 10 12 13 08 00 45 00 D9 2E C1 32 B9 12 C9 1B 20 00 ."..!1........E. ...7 .#....2.... Y.....P. . Packet number et : 0000 0010 0020 la machine B répond avec un paquet contenant cette estampille ; La gigue ou «jitter» ⋆ mesure la variation de la latence au cours du temps : 𝐽𝑖𝑡𝑡𝑒𝑟 = 𝑙𝑎𝑡𝑒𝑛𝑐𝑦(𝑛)–𝑙𝑎𝑡𝑒𝑛𝑐𝑦(𝑛 − 1), où la mesure 𝑛 − 1 est prise à un temps 𝑡 et n à un temps 𝑡 + 𝛿𝑡 ⋆ mesure importante pour les communications «temps réel» : Mieux vaut une forte latence et une gigue stable, qu’une faible latence et une gigue importante ⋄ Si la gigue est nulle : la latence est stable ; si elle varie (positive ou négative) : la latence varie. fragmentée en : 0000 0010 0020 la machine A envoie une «estampille» avec sa propre heure dans un paquet ; Chapter 3 •métriques Multimedia and Real-time Applications Quelques Soit la trame suivante : 00 00 59 20 La latence ou «latency» ⋆ définie par le temps de passage des données de l’émetteur vers le récepteur ; ⋆ pas toujours mesurable facilement (l’heure entre deux interlocuteurs n’est pas forcément synchronisée... et la synchroniser est difficile !) Frag1 Frag2 Frag3 Total Packet Length: 1500 Fragmentation 0000 0010 0020 0030 Elles peuvent être mesurées au cours du temps, ou seulement, à certains moments, ou bien encore, uniquement avec une valeur approchée. 8 8 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 0 20 40 60 80 100 120 140 160 P 5 2 R 4 S Packets arriving at receiver 8 Time when packet departed (ms) Ce qui donne ? O Q Packets departing source Receiver 1 0 20 40 60 80 100 120 0 20 40 60 80 100 120 140 160 180 200 220 240 260 Transit delay experienced (ms) Time when packet arrived (ms) La «commande» de mesure de la with RTT, a le uniform «ping» spacing, but they experience variable amount of Figure 3-2: Packets depart xterm and arrive at the receiver irregularly (packets #3 and #6 arrive out of order). delay (jitter) $ ping -c 5 164.81.1.4 $ ping6 fe80:1030:5329:6d2c:211:deff:fead:beef -I eth0 Attention : le «ping» est sensible à l’occupation de la machine cible : plus elle est occupée moins vite elle répond. 3.3.1 End-to-End Delayed Playout Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ !"#$%&'()"&%*+&,)+#)+-.()(&/+.#01)!"#$%&')234)→)!"#$%&')235) — 13 décembre 2015 — 38 Removing Jitter by Delayed Playout 6#0(.,&") +-&) &7*'8%&) (-#90) .0) :.;<"&) 2=4) 9-&"&) *) (#<"/&) (&0,() *<,.#) (.;0*%) +#) *) "&/&.>&") ?#") Quelques mesures de RTT Le calcul du RTT : utilisation du «Timestamp» Une demande d’«étiquette de temps» est réalisé dans le protocole (par exemple TCP) : ▷ le serveur et le client ont leur propre réglage d’horloge sûrement décalé ; ▷ le client envoie l’heure courante dans 𝑡1 ; ▷ le serveur note 𝑡1 et mesure 𝑡2 l’heure d’arrivée du paquet ; ▷ le serveur après traitement du protocole envoie un message de réponse où il mesure 𝑡3 et indique 𝑡2 ; ▷ le client mesure 𝑡4 , l’heure d’arrivée du message de réponse ; xterm pef@solaris:~$ ping -c 3 164.81.1.4 PING 164.81.1.4 (164.81.1.4) 56(84) bytes of data. 64 bytes from 164.81.1.4: icmp_req=1 ttl=50 time=45.6 ms 64 bytes from 164.81.1.4: icmp_req=2 ttl=50 time=47.5 ms 64 bytes from 164.81.1.4: icmp_req=3 ttl=50 time=45.9 ms --- 164.81.1.4 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2003ms Client rtt min/avg/max/mdev = 45.614/46.351/47.507/0.827 ms pef@solaris:~$ ping -c 3 www.berkeley.edu Server network PING www.w3.berkeley.edu (169.229.131.81) 56(84) bytes of data. Origin Timestamp: t1 64 bytes from webfarm.Berkeley.EDU (169.229.131.81): icmp_req=1 ttl=48 time=192 ms 64 bytes from webfarm.Berkeley.EDU (169.229.131.81): icmp_req=2 ttl=48 time=192 ms client msg 64 bytes from webfarm.Berkeley.EDU (169.229.131.81): icmp_req=3 ttl=48 time=192 ms --- www.w3.berkeley.edu ping statistics --- e serv 3 packets transmitted, 3 received, 0% packet loss, time 2002ms g r ms Receive Timestamp: t2 Transmit Timestamp: t3 rtt min/avg/max/mdev = 192.513/192.709/192.874/0.149 ms Destination Timestamp: t4 pef@solaris:~$ ping -c 3 www.usyd.edu.au PING solo-rproxy.ucc.usyd.edu.au (129.78.155.111) 56(84) bytes of data. 64 bytes from solo-rproxy.ucc.usyd.edu.au (129.78.155.111): icmp_req=1 ttl=41 time=424 ms know: t1,t2,t3,t4 round trip delay=((t4-t1)-(t3-t2)) 64 bytes from solo-rproxy.ucc.usyd.edu.au (129.78.155.111): icmp_req=2 ttl=41 time=447 ms 64 bytes from solo-rproxy.ucc.usyd.edu.au (129.78.155.111): icmp_req=3 ttl=41 time=347 ms ▷ à la fin de l’échange, le client et le serveur connaissent 𝑡1 , 𝑡2 , 𝑡3 et 𝑡4 et peuvent calculer une valeur approchée --- solo-rproxy.ucc.usyd.edu.au ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms du RTT ! rtt min/avg/max/mdev = 347.922/406.958/447.972/42.790 ms Marsic • Rutgers RTT : les délais induits par le Ivan réseau/par leUniversity traitement Chapter 1 • 28 27 Introduction to Computer Networking Sender Layer 2 (sender) Receiver Transport layer Layer 2 (receiver) Send data Layer 1 (receiver) Receive ACK Link+Phys layer ! ! Chapter 4 !• Source H'6)*%0! "+-60)(')! -(0(+%)%0! "#! )*%! round-trip time! :60! RTT@9! /*"1*! "#! )*%! )"+%! (! .")! 6&! "'&60+()"6'! )(G%#! &06+! $%-(0)"'7! 8')",! (00"2"'7! .(1G! ()! )*%! #%'$%0! "&! ")! "#! "++%$"()%,5! .68'1%$! .(1G! ()! )*%! 0%1%"2%03! 4*"#! )"+%! 6'! (! #"'7,%! )0('#+"##"6'! ,"'G! "#! 6&)%'! (##8+%$! )6! %E8(,! P44! A! Time propagation time Receive packet Send packet Processing and transmission delays within link/physical layers Link+Phys layer Propagation delay (receiver → sender) :<3;@! Switching and Queuing Delay Models Processing delay! "#! )*%! )"+%! '%%$%$! &60! -061%##"'7! (! 0%1%"2%$! -(1G%)3! H)! )*%! #%'$%0! #"$%9! )*%! -(1G%)!+(5!.%!0%1%"2%$!&06+!('!8--%0I,(5%0!-06)616,!60!&06+!)*%!(--,"1()"6'3!H)!)*%!0%1%"2%0!#"$%9! )*%!-(1G%)!"#!0%1%"2%$!&06+!)*%!'%)/60G!60!&06+!(!,6/%0I,(5%0!-06)616,3!JB(+-,%#!6&!-061%##"'7! "'1,8$%!16'2%0#"6'!6&!(!#)0%(+!6&!.5)%#!)6!&0(+%#!60!-(1G%)#!:G'6/'!(#!'()*+$,!60!&)#-.%+/)%+0$@9! $()(!16+-0%##"6'9!%'105-)"6'9!0%,(5"'7!()!068)%0#9!%)13!K061%##"'7!$%,(5#!8#8(,,5!1('!.%!"7'60%$! /*%'! ,66G"'7! &06+! ('! %'$I*6#)L#! 2"%/-6"')3! M6/%2%09! -061%##"'7! $%,(5! "#! 2%05! 10")"1(,! &60! transmission 068)%0#!"'!)*%!'%)/60G!160%!)*()!'%%$!)6!0%,(5!(!*87%!'8+.%0!6&!-(1G%)#!-%0!8'")!6&!)"+%9!(#!/",,!.%! time #%%'!,()%0!"'!N%1)"6'!<3O3O3! Receive data Network layer Processing delay within network layers Propagation delay!"#!$%&"'%$!(#!)*%!)"+%!%,(-#%$!.%)/%%'! /*%'!(!.")!"#!#%')!()!)*%!#%'$%0!('$! /*%'!")!"#!0%1%"2%$!()!)*%!0%1%"2%03!4*"#!$%,(5!$%-%'$#!6'!)*%!$"#)('1%!!!.%)/%%'!)*%!#%'$%0!('$! )*%! 0%1%"2%0! ('$! )*%! 2%,61")5! "! 6&! %,%1)06+(7'%)"1! /(2%#! "'! )*%! )0('#+"##"6'! +%$"8+9! /*"1*! "#! -06-60)"6'(,! )6! )*%! #-%%$! 6&! ,"7*)! "'! 2(188+! :#! ≈! ;×<=>! +?#@9! "! A! #?$9! /*%0%! $! "#! )*%! "'$%B! 6&! 0%&0(1)"6'!6&!)*%!+%$"8+3!C6)*!"'!16--%0!/"0%!('$!7,(##!&".%0!60!6-)"1(,!&".%0!$!≈!;?D9!#6!"!≈!D!×! <=>!+?#3!4*%!"'$%B!6&!0%&0(1)"6'!&60!$05!("0!"#!(--06B"+()%,5!%E8(,!)6!<3!4*%!-06-(7()"6'!$%,(5!"#F! $"#)('1% ! :+@ = ! 2%,61")5 " :+?#@ Send ACK Receive packet Send packet Figure 1-17: Fluid flow analogy for delays in packet delivery between the protocol layers. %& = Transport layer Processing delay within transport layers Network layer Layer 1 (sender) Propagation delay (sender → receiver) 219 Figure 1-18: Delay components that contribute to round-trip time (RTT). Destination one-way delay is half of the round trip, but only if delays are symmetric Source Router Destination " × !"#!$%&%'()*)*+!&,%!-..!)/!(01,!(2'%!12(34%5!)6!&,%!/%*7%'!8*7!'%1%)9%'!8'%!12**%1&%7!29%'! 8!*%&:2';!:,%'%!(04&)34%!84&%'*8&)9%!38&,/!%5)/&<!8/!:)44!=%!/%%*!48&%'!)*!>%1&)2*!"#?#"#!@2:%9%'<! %9%*!2*!8!/)*+4%!4)*;<!&,%!*2&)2*!26!-..!)/!(01,!(2'%!12(34%5!&,8*!A0/&!720=4%!&,%!3'238+8&)2*! 7%48B#!.2!=%&&%'!0*7%'/&8*7!-..<!:%!*%%7!&2!12*/)7%'!:,8&!)&!)/!0/%7!62'!8*7!,2:!)&!)/!(%8/0'%7#! -..! )/! (2/&! 26&%*! 0/%7! =B! /%*7%'! &2! /%&! 03! )&/! '%&'8*/()//)2*! &)(%'! )*! 18/%! 8! 381;%&! )/! 42/&#! C=9)20/4B<! *%&:2';! *27%/! 72! *2&! /%*7! )*7)9)7084! =)&/D! &,%B! /%*7! 381;%&/#! -..! )/! (%8/0'%7! =B! router '%12'7)*+! &,%! &)(%! :,%*! 8! 381;%&! )/! /%*&<! '%87)*+! 20&! &,%! &)(%! :,%*! &,%! 81;*2:4%7+%(%*&! )/! delay '%1%)9%7<!8*7!/0=&'81&)*+!&,%/%!&:2!9840%/E! detail -..!F!G&)(%!:,%*!&,%!81;*2:4%7+%(%*&!)/!'%1%)9%7H!−!G&)(%!:,%*!&,%!381;%&!)/!/%*&H! G?#IH! .2! 0*7%'/&8*7! :,8&! 12*&')=0&%/! &2! -..<! :%! *%%7! &2! 422;! 8&! ,2:! 381;%&/! &'89%4! &,'20+,! &,%! E*F2*! 78&8! 381;%&/! 12()*+! =81;! 62'! &,%! *%&:2';#! J)'/&<! 81;*2:4%7+%(%*&/! (8B! =%! "#$$%&'()*+! '%1%)9%'#! .,%'%62'%<! %9%*! )6! &,%! &'8*/()//)2*! 7%48B! )/! *2&! )*1407%7! 8&! &,%! /%*7%'! /)7%<! '%1%)9%'K/! &'8*/()//)2*! 7%48B! 72%/! 12*&')=0&%! &2! &,%! -..#! G@2:%9%'<! :,%*! 8*! 81;*2:4%7+%(%*&! )/! 3)++B=81;%7!2*!8!'%+048'!78&8!381;%&!6'2(!'%1%)9%'!&2!/%*7%'<!&,%!&'8*/()//)2*!&)(%!26!&,)/!381;%&! Figure 4-1: Delays in (0/&!=%!&8;%*!)*&2!81120*&#H! datagram packet switching (or, forwarding, or, routing). (a) Single hop source-to-destination connection without intermediary (b) *27%/! Intermediary nodes3'2&2124/! G>%1&)2*! ?#?#IH#! >%12*7<! :%! ,89%! &2! '%(%(=%'! &,8&!nodes. *%&:2';! 0/%! 48B%'%7! introduce additionally L2*&)*0)*+!:)&,!&,%!640)7!642:!8*842+B!6'2(!J)+0'%!?MN<!:%!)440/&'8&%!)*!J)+0'%!?M?O!,2:!7%48B/! processing and transmission delays. E"F Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ !"#$#%&' #%' (#%)' *)+,-)' 8'%!)*&'2701%7!=%&:%%*!&,%!3'2&2124!48B%'/#!.,%!3,B/)184M48B%'!G48B%'!?H!'%1%)9%'!:8)&/!0*&)4!&,%! *)#%&' .)-/#0)1' #.' 2"-$' ,+' $3)' $,$"(' 1)("4' )52)-#)%0)1' *4' 2"06)$.' !3)%' =01;%&!)/!6044!G)#%#<!&,%!:,24%!381;%&!)/!'%1%)9%7H!=%62'%!)&!7%4)9%'/!)&!&2!&,%!033%'!48B%'!G48B%'!"H#! $-"/)(#%&'+-,7'.,8-0)'$,'1).$#%"$#,%9':)%)-"((4;'2"06)$.'#%'"'%)$!,-6)1'.4.$)7')52)-#)%0)'$3).)' $42).',+'1)("4.<' .,%!7%48B!12(32*%*&/!62'!8!/)*+4%!4)*;!8*7!8!&,'%%M48B%'!3'2&2124!8'%!)440/&'8&%7!)*!J)+0'%!?M?P#! Quelques métriques Le débit : ⋆ mesuré en bps ou bits par seconde, exprimé en puissance de 10 (norme ISO) ; ⋆ correspond à la quantité d’information par unité de temps qui a été remis à son destinataire ; ⋆ Le débit maximal d’une ligne de transmission correspond à sa capacité : ⋄ peut être atteint sur des réseaux à circuit vituels (ou la perte de données est exclue) ; ⋄ peut être égal ou inférieur au débit « physique » du réseau, car il faut enlever les informations nécessaires au fonctionnement du réseau physique et aux erreurs (collision, attente de la disponibilité du support dans le cas de réseau en mode datagramme). ⋆ L’occupation du canal : pourcentage de la quantité d’information transmise par rapport au débit «physique» du réseau : un débit de 70Mbit/s dans un réseau Ethernet 100Mbit/s définit une occupation du canal de 70% ⋆ Le débit utilisateur : pourcentage de données utilisateur transmises par rapport à la quantité d’information transmise (informations d’adressages, de contrôle d’erreur, de contrôle, d’adaptation, etc) La QoS ou « Quality of Service » : ∘ vise à associer un débit pour un type communication donné (VoIP, Web, Partage de fichier, etc) ; ∘ peut être garantie ou bien souhaitée ; ∘ suppose que les communications peuvent être identifiées et classifiées. Rapport entre débit et latence, la notion de vitesse perçue ⋆ Si un camion transporte par route un stock de DVDs de Limoges à Paris, la latence peut être grande (1j) mais le débit peut être énorme ! ⋆ Un réseau faible débit de faible latence est perçu plus rapide (Surfer sur le net en ADSL par exemple) — 13 décembre 2015 — 39 Plan de la partie «Packet Switching» Généralisation du réseau «Packet-switched» Le réseau «Packet-switched» comme seul mode de fonctionnement ⋆ mode de fonctionnement actuel des technologies réseau ; ⋆ transport de données découpés en «paquets» contenant des bits de contrôle et des bits de données ; ⋆ il existe deux sous-catégories : ▷ les «virtual circuit», ou «circuit virtuel», exemples : MPLS, «Multiprotocol label switching», ATM, Frame Relay, Éléments importants ▷ Une ancienne technologie de réseaux : X.25 (virtuellement2 TCP...) ; ▷ les «datagram networks», ou «réseau en mode datagramme», exemple : Internet ; la commutation de circuit ou «Circuit Switching» qui s’améliore pour devenir de la commutation de paquets ou «Packet Switching» ; Les «virtual circuit», «circuit virtuel» : le retour du mode «circuit» ⋆ un «circuit virtuel» doit être mis en place entre la source et la destination avant un échange ; ⋆ la différence avec le «Circuit-switched» : l’allocation des ressources sur le chemin est dynamique : ⋄ les liens de transmission sont interconnectés par des commutateurs ou des routeurs en «mode commutateur» ; ⋄ les paquets partagent les capacités des liens traversés avec d’autres paquets appartenant à d’autres «circuits vir- ▷ le retour en virtuel de cette technologie : le «virtual Circuit» sur «Packet Switching» ; ▷ les éléments «historiques» pour comprendre la transformation : ⋄ l’avantage de passer d’une communication longue à un message puis à un paquet de 1.6 Network delay de traitement des commutateurs/routeurs, ses ressources ⋄ les paquets partagent de manière dynamique la puissance tuels» ; taille petite et fixe pour la gestion des erreurs ; ⋄ le «multiplexage temporel» ; mémoires ; ⋆ on parle de «multiplexage déterministe» : ⋄ l’aspect «déterministe» entraîne que les paquets sont traités de manière planifiée ; ▷ le choix en un acheminement du paquet suivant : ⋄ toujours le même chemin en mode «virtual circuit» ; 1.4 Network classification ⋄ le temps de passage d’un paquet dans un commutateur est Tproc+Tq connu et le temps de parcours du «circuit»t est stable et 0 +Tproc +Tq prévisible ; ⋄ on peut garantir de la QoS, «Quality of Service». t 0 +Tproc +Tq +TtxFig. 1.9 Ttx A few virtual circuits traversing a network T crossed router taking it a little bit closer. As in virtual circuit networks, here too datap grams queue up in routers and experience unpredictable delays before reaching the destination. If a router failure occurs, if some links are close to overloading, it is relatively easy in datagram networks to divert datagrams via alternative routes, provided these are available. This is not so with virtual circuits, which are abruptly terminated if a router they cross experiences an outage condition. Carrying on the comparison, another significant difference is that datagram networks do not require their routers to maintain state information about the flows of packets that p traverse them, so that their operating mode is termed stateless. Routers of virtual circuit networks do: they have to know all virtual circuits that currently traverse them, hence, they retain per-connection-state information, a burdensome requirement, which poses scalability limits on such devices. We will pick up again the datagram network topic as we proceed in the exposition: the reader will find thorough details about the tools and the rules that govern the routing process over the Internet in Chapter 2 and also in Chapter 6. Du réseau «Circuit-Switched» au réseau «Packet-switched» Généralisation du réseau «Packet-switched» Le réseau «Circuit-Switched» Les «datagram networks», ou «réseau en mode datagramme», vs «virtual circuit» ∘ c’est historiquement le plus ancien (c’est la catégorie des anciens réseaux téléphonique) ; ∘ Fonctionnement : ⋄ avant qu’une communication ne puisse commencer, il faut construire le circuit : ⋆ déterminer un chemin entre la source et la destination ; ⋆ allouer de manière statique des ressources sur tous les nœuds intermédiaires du chemin : ⋄ si l’opération de construction de circuit : ⋆ réussi, alors la communication a lieu. ⋆ échoue, à cause d’une ressource non disponible, la communication n’a pas lieu. ⋄ à la fin de la communication, les ressources allouées doivent être libérées. ⋆ chaque paquet est «routé» individuellement à travers le réseau ; ⋆ il n’existe pas de chemin «a priori», alors chaque paquet d’une Tcommunication peut suivre un chemin différent ; ⋆ pour le rendre autonome, le paquet contient l’adresse du destinataire : on parle de datagramme : ⋄ chaque routeur intermédiaire traversé par ce datagramme utilise cette adresse pour décider du «lien de sortie», ⋄ le datagramme «saute» de routeur en routeur, «hop-by-hop», jusqu’au destinataire final. 1.4.3 Distance-based classification ⋄ si un routeur tombe en panne, le datagramme est perdu. Let us proceed in our classification, and distinguish computer networks on the basis «output link» pour «relayer», «forward», ce datagramme. of the distance they span. Fig. 1.10 lists the different distances, along with a tangible ⋆ on parle de «multiplexage statistique»0: proc q tx p indication of the location of the network nodes, and the corresponding network names. On a very limited we encounter personal area networks, PANs: this isressources the realm ⋄ les paquets partagent de manière dynamique la puissance de traitement desscale, commutateurs/routeurs, ses t +T Évolution du «Circuit-Switched» vers le «Packet-switched» ⋄ c’est une évolution historique des communications pour des raisons d’efficacité : gestion plus rapide des erreurs, 1.4 Network classification ⋄ les communications sont découpées en paquets de taille fixe ou bornée inférieure en générale à 100ko ; ⋄ Exemple : le réseau ATM, «Asynchronous Transfer Mode» : proposé par les opérateurs télécommunications ; flexibilité de l’acheminement des paquets, gestion de plusieurs communications simultanées ; Exemple d’utilisation : ⋆ Connexion Internet d’un particulier : ⋆ un réseau sans fil, «Wireless LAN» ; ⋆ un modem ADSL et une ligne téléphonique : accès au 9 Telephone network «Fournisseur d’accès Internet». Fig. 1.8 ⋄ ⋄ ⋄ ⋄ +T +T +T of the (not so) futuristic wearable networks, where the connected devices are really close. mémoires ; Next come local area networks, LANs: they are found in enterprises and university campuses, often interconnect hundreds of nodes and cover areas whose diameter is of the la charge, «load», d’un routeur dépend du trafic non planifié qui passe par lui ; l’aspect «statistique» entraîne que des paquets peuvent être «mis en attente», dans des «queues» ; 1.16des retards A pictorial view of the delays incurred by a packet le datagramme peutFig. subir dans son transfer s’ildifferent est mis en attente sur un routeur (jitter)on : a single link le temps de parcours du datagramme varie et devient imprévisible : Le temps de transmission 𝑇u�u� varie sur chaque 𝑖 u� ℎ lien Source ADSL modem réseau ATM ; ⋆ un lien vers l’ISP, «Internet Service Provider» ou FAI, Packets of VC1 Packets of VC2 Packets of VC3 t0 ⋄ un chemin défini progressivement en mode «datagram». 17 11 ISP Internet core network A residential wireless LAN connected to the Internet core network. Network devices called routers provide the desired connectivity between different domains. Fig. 1.8 sketches a more familiar portion of the whole picture: in this instance a residential customer is equipped with a small wireless LAN, connected to the Internet through its telephone line and an ADSL modem: after a few hops covered via the telephone network, we meet the router of the ISP guaranteeing the user Internet access. Routers: what are their main tasks? For the time being, it suffices to know that these nodes are the busy Internet servants: their role is to connect its different constituent networks and to make the information travel from source to destination, properly sized in chunks generically termed packets. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ ⋄ ce qui entraîne desFig. difficultés pour de path la QoS. 1.17 Thefaire entire covered by the packet — Destination i th link Tti other packets. Even if at the end of each link we do not find a router, yet the conceptual classification of the delay contributions provided holds. 2015 — 40 13above décembre Let us, therefore, assume that the packet crosses N hops before reaching its destination, and introduce an index i to tag the ith hop, so that the symbol Tti indicates the delay the packet experiences on it: then the total packet delay is Commutateur ou routeur ? «circuit virtuel» ou «datagramme» ! Fonctionnement Il est relié à une plusieurs lignes de transmission. Il reçoit les bits d’information sur une ligne de transmission en entrée. Il émet ces mêmes bits d’information sur une ligne de transmission en sortie. Le choix de la ligne de sortie s’appelle commutation : ∘ «cut through» où l’information est retransmise à mesure qu’elle arrive ; temps d’acheminement dans un «switch» de l’ordre de la 𝜇𝑠 ∘ «store and forward» où l’information est d’abord entièrement reçue et stockée avant sa ré-émission. temps d’acheminement dans un «switch» de l’ordre de la 𝑚𝑠 Amélioration : Commutation de message ⋆ Les données à transmettre sont découpées en messages ; ⋆ chaque nœud de commutation sert de relais et peut héberger des messages lorsque les tronçons du réseau sont engorgés. Ce mode de commutation a pratiquement disparu au profit de la commutation de paquets, «packet switching». Les différences de mode de fonctionnement en «Packet Switching» ? ▷ en «datagram network» : ⋄ il choisit sa commutation en fonction de ses lignes de transmissions et de sa table de routage ; ⋄ il n’associent pas «d’état» à une communication qui passe par eux, on parle de «stateless» ; ▷ en «virtual circuit» : ⋄ il ne choisit pas lui même comment il fait sa commutation : déterminée par un autre élément du réseau, ⋄ il connait tous les circuits passant par lui, grâce à un état associé à une communication ou connexion, «percomme par exemple lors de la mise en place d’un circuit virtuel. connection-state». Commutation de circuit, «Circuit Switching» : un historique Création d’un chemin « en dur » Elle consiste à : ▷ réquisitionner, pour une communication, des tronçons de réseau pour assurer une liaison de bout en bout ; les tronçons sont liés les uns aux autres à chaque nœud de commutation ; ▷ libérer les tronçons quand la communication est terminée ; les tronçons sont disponibles pour une nouvelle commutation. #$%&'$()*+*,-&'./-0(.$*)1)*$2'3-,'.*42-,'3-')&12,+*,,*$2'5 Pour optimiser l’exploitation des lignes de transmission : ! ▷ !on$2'367$+($,-'.-')-+(,'-2'%2*)6,'3-')-+(,'8 décompose le temps en unités de temps ; 791:%-'7*&7%*)'-0*,)-'(-2312)'%2-'3-'7-,'%2*)6,'3-')-+(,'8 ▷ chaque circuit existe pendant une de ces unités de temps ; Exemple Tous les 1/10ème de seconde on change l’affectation des lignes de transmission. !"#$%&#'(')*+,'&#,'-.-/0$#'1#',#2*31#'*3'24536#'&7588#2)5)9*3'1#,'&963#,'1#'):53,$9,,9*3; <&'#,)'593,9'%*,,9=&#'1#'%5:)56#:'&#,'&963#,'#3):#'-/'29:2+9),'> Il est ainsi possible de partager les lignes entre 10 circuits ! ' souhaitable de partager les lignes de transmissions entre différents circuits : Il est ⋆ !;.'-,)',$%91*)1<.-'3-'(1&)14-&'.-,'.*42-,'3-')&12,+*,,*$2,'-2)&-'3*==6&-2),'7*&7%*),'5 à l’instant 𝑇 entre un circuit est réservé entre A et B (circuit jaune). >'./*2,)12)'?'-2)&-'%2'7*&7%*)'-,)'&6,-&@6'-2)&-'A'-)'B'C7*&7%*)'D1%2-EF' AA'-)'B'(-%@-2)'7$++%2*:%-&'(-2312)'%2')-+(,'3)'C-0-+(.-'5'3'G'HIHJE'8 et B peuvent communiquer pendant un temps 𝛿𝑡 (exemple : 𝛿 = 1/10) ; ⋆ !à >'./*2,)12)'?K3)'.-,'.*42-,'3-')&12,+*,,*$2,',$2)'1==-7)6-,'>'%2'1%)&-'7*&7%*)F l’instant 𝑇 + 𝛿𝑡 les lignes de transmissions sont affectées à un autre circuit ; ⋆ !pendant 𝛿𝑡 , il est possible d’échanger un ou plusieurs messages entre C et D. (-2312)'3)'*.'-,)'($,,*<.-'3/679124-&'%2'$%'(.%,*-%&,'+-,,14-,F !"#$%&'()(*(+,-.(/011$203 La communication est une suite ininterrompue d’information envoyée sur le circuit. Amélioration : Partage des lignes de transmission entre circuits !"#$%&'()%&*+,+-(')(./+0/1+$%.*/1+0/+)'(*1"%11%&*+/*)'/+2%'23%)1 Optimisation de l’utilisation du réseau 45)%"%1()%&*+0/+$63)%$%1()%&*+03+'#1/(3 L L B A B A 4(5631#7%17(8(9(:7 4(5631#7%17(8 M M !" Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 41 Circuit virtuel vs Routage Commutation de paquets, «Packet Switching» !"##$%&%'"()*+),&-$+%. Réduction de la taille des échanges suivant une même unité /0*$1%'"()*+)2&)%&'22+)*+.)013&(4+.).$'5&(%)$(+)#6#+)$('%0 "#$%&'()'**$+'('*,(-./0&1.('2(,&-$+%.( Chaque message est découpé en paquets ! ∘ !de-'(1',3,'(,$344'5(*0&6'2,(738'(9( petite taille, souvent fixe ; ($#07"%0.(10&:(&2(:.;$**')<4$+'(40:*(-'(4$(:./'1,302= ∘ éventuellement numérotés pour un ré-assemblage lors de la réception. Multiplexage temporel des paquets 8$2%',2+9&4+)%+#,"7+2)*+.),&-$+%. >2(/0)<32'(4?&,343*$,302(-'(1$%&',*(',(4'(1$:,$+'(-'*(43+2'*(-'(,:$2*)3**302*(@ On!combine l’utilisation de paquets et le partage des lignes de transmissions : &2'(43+2'(-'(,:$2*)3**302(2?'*,(1$*($77'/,.'(A(&2(/3:/&3,(1$:,3/&43':(9 ▷ !une ligne de transmission n’est pas affectée à un circuit particulier ; /?'*,(4'(1$%&',(%&3(1"(%'+(%(2:'(;"7#&%'"((-?$11$:,'2$2/'(A(&2(/3:/&3,(1$:,3/&43':= ▷ c’est le paquet qui contient l’information d’appartenance à un circuit particulier. !"#$"%&$'()%&$*&$+#,%-.(--(/%0$'&-$1,2"&+-$-&$-"(3&%+0$.4.&$-5('-$%5,11,#+(&%%&%+$1,-$,"$.4.&$ Sur une ligne de transmission, les paquets se suivent, même s’ils n’appartiennent pas au même message. .&--,)&= Circuit virtuel Router Subnet Sending host Receiving host Virtual circuit Sending process Receiving process !"#$%&'()(*(+,-.(/011$203 " Routage ou mode «datagramme» Fig. 1-30. A virtual circuit. Router C B Subnet Sending host Receiving host B D A E C Sending process !! D !"##$%&%'"()*+)#+,,&-+,)!"#$%$)!"##$%&%'"()*+).&/$+%, Commutation de messages vs Commutation de paquets #$%&'(%)*+,,+-,%)+ .,'$(/0((01$2 Packet Router C makes a choice to forward packets to E and not to D Receiving process Commutation de paquet formatfrom du paquet Fig. 1-10. A stream: le of packets sender to receiver. Composition du paquet en général Il est de taille petite (de quelques dizaines à un ou deux millier d’octets) souvent fixe ou limitée. Chaque paquet a un numéro d’ordre résultant du découpage des données initiales (message). !"#$%&'()(*(+,-.(/011$203 Chaque paquet est identifié : ▷ dans le cas du circuit virtuel : le paquet contient le numéro de circuit virtuel qu’il emprunte. Cela permet au commutateur de choisir la ligne de sortie du paquet en fonction de son appartenance à un circuit virtuel, comme sous ATM. ▷ dans le cas du datagramme : le paquet est autonome, il contient tout ce qui est nécessaire pour réaliser son acheminement. Cela permet à chaque routeur de choisir au mieux la ligne de sortie pour chaque paquet qu’il reçoit (méthode du « best effort » d’IPv4). !" Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 42 Mode «Circuit virtuel» matériel : ATM, Asynchronous Transfer Mode Réseau en mode circuit virtuel, « orienté connexion » • Une communication relie deux interlocuteurs uniquement ; • Une connexion préalable est nécessaire pour établir un chemin à la demande des deux interlocuteurs, on parle de VC, • «Virtual Circuit»; Dans le cas de chemins permanents (entre deux sites par exemple) on parle de «Permanent Virtual Circuit». Les données échangées sont de tailles fixes et petites, appelées «cellules» : 53 octets ; Bytes 5 Header 48 User data • L’en-tête contient le «Virtual Path Identifier» et le «Virtual Channel Identifier» : ⋄ Le VCI désigne l’ensemble des An cellules le même circuit virtuel, chaque cellule est ainsi identifiée et Fig. 1-31. ATM partageant cell. permet de savoir à quel chemin virtuel elle appartient ⋄ Le VPI désigne un chemin entre deux interlocuteurs, ce chemin pouvant être composé de plusieurs circuits virtuels, ce qui permet de faire du multiplexage (plusieurs communications entre deux même interlocuteurs). Ce type de réseau est utilisé par les Opérateurs de Telecommunication («Telco»), et fournissent le réseau support à l’ADSL Asymetric Digital Subscriber Line qui permet le raccord des usagers par la ligne téléphonique. Les avantages sont : ⋆ Une connaissance parfaite des temps de transfert de données, ce qui garantit les communications « temps réel » ; ⋆ Une absence de pertes de données (les commutateurs sont extrêmement fiable, mais coûteux) ; ⋆ Une gigue, jitter, très basse : important pour des réseaux avec des services MicroSoft ; ⋆ De la QoS, «Quality Of Service», avec garantie ; ⋆ Du débit : Optical Carrier Speed OC-1 52 Mbps, OC-3 155 Mbps, OC-12 622 Mbps, OC-48 2.4 Gbps, OC-192 9.6 Gbps et OC-768 40 Gbps ! 9 Les contraintes de gestion des communications Gestion des erreurs ⋆ il est possible d’avoir des erreurs : ⋄ les lignes de transmission ne sont pas parfaites : modification des données entraînant une erreur ; ⋄ le réseau interconnecté n’est pas parfait : paquet perdu ou détruit. ⋆ choix parmi différentes méthodes de contrôle d’erreur entre l’émetteur et le récepteur : ⋄ le récepteur doit être capable de déterminer si un paquet reçu est correct ou non ; ⋄ le récepteur doit disposer d’un moyen d’indiquer à l’émetteur quels paquets ont été correctement reçus ou non (accusé ⋄ le récepteur doit pouvoir gérer des paquets n’arrivant pas dans l’ordre ou manquant (gestion de buffer de réception, Circuit virtuel vs datagramme ⋆ Dans un réseau point-à-point en mode «circuit virtuel» : ⋄ le débit obtenu est très proche de celui offert en théorie par le réseau physique ; ⋄ lors de l’établissement du circuit virtuel, on peut connaitre le débit prévisible ; ⋄ le débit peut être garanti. ⋆ Dans un réseau point-à-point en mode «datagramme» : ⋄ La capacité de la ligne de transmission est partagée avec les autres utilisateurs et ne peut être garantie : On ne peut pas savoir ce que font les autres utilisateurs ! ⋄ Le contrôle de flux augmente l’utilisation du réseau et diminue son débit (envoi d’accusé de réception, retransmission, etc) ; ⋄ Des pertes de paquets peuvent se produire (si le réseau est en congestion) ; ⋄ Peu ou pas de QoS : ⋆ uniquement sur des parties contrôlées : réseau de la même entreprise, passage par un FAI, … ⋆ en général, on ne peut prévoir à l’avance le chemin emprunté par un datagramme et donc son temps ⋆ même si le chemin emprunté reste le même, le taux d’occupation de certaines parties de ce chemin varie d’acheminement ; suivant les usages des autres utilisateurs Ivanvs Marsic • Rutgers University Contrôle de flux Congestion 148 Flow control Congestion control de réception, mécanisme d’attente, …) ; que faire si un paquet manquant n’arrive toujours pas ? ⋄ l’émetteur doit-il renvoyer tout de suite un paquet ou attendre une notification du récepteur ? Contrôle de flux Un émetteur rapide peut saturer un récepteur lent. Il faut éviter que les paquets ne pouvant pas être traité par le récepteur ne reste et finissent par congestionner le réseau global. ⋆ asservissement entre récepteur et émetteur ; ⋆ accord sur la vitesse de transmission ; ⋆ intervention du routeur avec les bits «ECN» (ICMP «Source Quench», RFC6633 de mai 2012⟶ deprecated). Choix des chemins entre émetteur et récepteur a. déterminer un chemin possible ; b. améliorer ce chemin par le choix du moindre coût en fonction du trafic (métrique de débit par exemple) ; c. tenir compte de souhaits utilisateurs comme choix du passage ou non par un pays suivant sa législation, le coût de communication, le débit possible… (utilisation de lignes louées à une TELCO, satellite, etc). Sender Sender Feedback: “Not much getting through” Feedback: “Receiver overflowing” Receiver Receiver Figure 2-5: control compared to congestion control. ⋆ La congestion dépend deFlow l’état du réseau global, qui tient compte de toutes les communications entre tous les ⋆ le contrôle de flux ne s’applique que sur une communication et entre deux interlocuteurs. =)6"%!>??@:!A,&+'%!<!B+''!>?7?C2! matériels connectés ; "#$%&%'$%(!&%)(%&!'*+,-(!.+#',-$!)#+$*%&!'+,&.%!/+&!0+&%!(%$)"-'1!%2321!45$%6%#'!7889:!;%$%&'+#!<! Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ D*%!/"&'$!$*&%%!'%30%#$'!)&%!'E%.")-!"#!$*)$!$*%F!(+!#+$!.+#$)"#!()$)!G"2%21!$*%F!*)6%!+#-F!)!*%)(%&H1! )#(!$*%!5IJ!/-)3!"#!$*%!*%)(%&!"'!'%$!GK"3,&%!>L>H2!M#!$*"'!%N)0E-%1!$*%!.-"%#$!+//%&'!RcvWindow!O! >?9P!QF$%'1!)#(!$*%!'%&6%&!+//%&'! RcvWindow!O!9?8R!QF$%'2!M#!+,&!.)'%1!$*%!.-"%#$!*)EE%#'!$+!Q%! $*%! S'%#(%&1T! Q,$! '%&6%&! +&! Q+$*! .-"%#$! )#(! '%&6%&! .)#! '"0,-$)#%+,'-F! Q%! '%#(%&'! )#(! &%.%"6%&'2! D*%F!)-'+!%N.*)#3%!$*%!'"U%!+/!$*%!/,$,&%!'%30%#$'1! MSS!G$+!Q%!(%'.&"Q%(!-)$%&1!D)Q-%!>L7H1!)#(! '%$$-%! +#! $*%! '0)--%&! +#%! +/! 7?>9! )#(! V7>! QF$%'1! "2%21! V7>! QF$%'2! =,&"#3! $*%! .+##%.$"+#L — 13 décembre 2015 — 43 the transport can issue a “not ready” indicator to the sender, or source, of the flood (as shown in Figure 1.10). This mechanism works kind of like a stoplight, signaling the sending device to stop transmitting segment traffic to its overwhelmed peer. After the peer receiver processes the segments already in its memory reservoir—its buffer—it sends out a “ready” transport indicator. When the machine waiting to transmit the rest of its datagrams receives this “go” indictor, it resumes its transmission. Mise en oeuvre du contrôle de flux ou «flow control» TCP : Segmentation Transmitting segments with flow control «Éviter qu’un émetteur rapide sature un récepteur lent» ⟹ le récepteur contrôle l’émetteur. ⋆ lorsque le récepteur reçoit une «rafale» ou un «burst» de paquets : bufférisation, le problème est résolu si l’afflux de paquets tient dans le buffer ; Sender Receiver Transmit ⋆ lorsque le récepteur reçoit trop de paquets et que son buffer est plein : risque de perte de paquets Buffer full ⋄ le récepteur transmets à l’émetteur un indicateur «Not ready» pour stopper Not ready— STOP! son émission ; Segments processed ⋄ le récepteur transmets ensuite un indicateur «Go» pour autoriser de nouGO! veau l’émetteur ; Segmentation F I G U R E 1 .1 0 Les données transmises à TCP constituent un flot d’octets de longueur variable. La transmission de ces données est bufférisée (mises dans un tampon) : ⋆ les données courtes à envoyer et reçues sont bufférisées pour améliorer la communication : ⋄ à l’envoi : améliorer le taux d’occupation du réseau ; ⋄ à la réception : avertir/réveiller l’application que lorsqu’il y a un volume suffisant de données à traiter ; ⋆ les données à envoyer, sont fractionnées en fragment de taille optimale pour TCP, appelés «segment» ; Cette fragmentation peut être contrôlée ou indépendante de l’application. ⋆ chaque segment est émis dans un datagramme IP : From application: stream of bytes Slice into TCP segments In fundamental, reliable, connection-oriented data transfer, datagrams are delivered to the receiving host in exactly the same sequence they’re transmitted—and the transmission fails if this order is breached! If any data segments are lost, duplicated, or damaged along the way, a failure will occur. This problem is solved by having the receiving host acknowledge that it has received each and every data segment. A service is considered connection-oriented if it has the following characteristics: u u u Exemple, le «Flow control» en technologie Ethernet : ▷ «Half Duplex» : contrôle de flux implicite : ⋄ CSMA/CD contrôle de flux uniquement du point de vue du support partagé : A virtual circuit is set up three-way handshake). ⋆ (e.g.,àa la détection d’une collision attente d’un slot de temps choisi aléatoirement dans un intervalle agrandi à It uses sequencing. chaque collision (limité à 210 ) It uses acknowledgments. It uses flow control. ⋆ erreur sur l’émetteur au 16ème essai (le récepteur ne détecte rien… bien sûr) ; ⋆ Sur un switch : pour freiner un émetteur : créer des collisions, faire croire que le support est occupé ; The types of flow control are buffering, windowing, and congestion ▷avoidance. «Full Duplex» : contrôle de flux explicite : ⋄ utilisation de «trame de pause» : ⋆ envoyé par le récepteur à l’émetteur pour le stopper ; ⋆ contient un paramètre indiquant le temps d’attente avant d’envoyer de nouvelles trames ; ⋆ une nouvelle trame de pause avec un temps d’attente nul pour déclencher l’émetteur. Concatenate to the byte stream Packetize into IP packets Unwrap TCP segments IP hdr OSI Layer 3: IP 20 Chapter 1 u TCP TCP hdr payload TCP TCP hdr payload OSI Layer 4/5: TCP IP hdr TCP TCP hdr payload TCP TCP hdr payload Network Network Internetworking Windowing Du point de la programmation socket : Les données de l’utilisateur passe au travers de la socket et sont segmentées automatiquement. Ideally, data throughput happens quickly and efficiently. And as you can imagine, it would be slow if the transmitting machine had to wait for an acknowledgment after sending each socket segment. But because there’s time available after the sender transmits the data segment and before it finishes processing acknowledgments from the receiving machine, the sender door uses the break as an opportunity to transmit more data. The quantity of data segments (measured in bytes) that the transmitting machine is allowed to send without receiving an acknowledgment for them is called a window. application writes data application reads data TCP send buffer TCP receive buffer socket door segment Windows are used to control the amount of outstanding, unacknowledged data segments. Download from Wow! eBook <www.wowebook.com> u To application: stream of bytes Application Transmit 10 Protocole TCP, Transmission Control Protocol RFC 793 Du point de vue «Service» offert : ∘ service de transport fiable, en mode «connecté» ou «orienté connexion» : ⋄ étapes d’initialisation, d’échanges et de terminaison ; ⋄ garantie de remise des données au récepteur ; ⋄ garantie de respect de l’ordre de ces données ; ∘ autorise la gestion des données en flots d’octets (flux, ou stream) ; ∘ échanges bidirectionnels simultanés («Full duplex»). Il offre un «mode connecté» simulé dans un réseau mode datagramme. Du point de vue de la mise en œuvre Une connexion correspond à : ⋆ une paire de points ou d’extrémités de connexion ou « socket » : ⋄ chaque extrémité de connexion correspond à un TSAP : (@IP, n° port) ; ⋄ chaque connexion est identifiée par : [TSAPclient(@IPclient, n° portclient), TSAPserveur(@IPserveur, n° portserveur)] Il n’y a pas d’autre identifiant (pas de numéro de circuit virtuel). ⋆ la création de deux flots de données inverses et indépendants : 𝐴 → 𝐵 et 𝐵 ← 𝐴 ; ⋆ possibilité de terminer un flot dans un sens sans interrompre l’autre ; ⋆ une mise en œuvre en deux étapes : ⋄ une ouverture passive : elle accepte une connexion entrante ; ⋄ une ouverture active : elle demande l’établissement de la connexion. Mutliplexage de plusieurs communications grâce à la notion de numéro de port. Attention xterm pef@solaris:~$ netstat -n --inet Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante tcp 38 0 192.168.42.83:54598 107.20.249.140:443 tcp 0 0 192.168.42.83:54760 199.47.217.147:80 Etat CLOSE_WAIT ESTABLISHED ∘ ∘ So, the size of the window controls how much information is transferred one end 21 The OSI Reference from Model to the other. While some protocols quantify information by observing the number of packets, TCP/IP measures it by counting the number of bytes. As you can see in Figure 1.11, there are two window sizes—one set to 1 and one set to 3. In this simplified example, both the sending and receiving machines are workstations. In reality, not done in simple, small numbers but in the amount of bytes that can F I G U Rthis E 1is.11 Windowing be sent. Acheminement d’un flux de données découpé en segments numérotés Le mécanisme de fenêtre ⋆ ne pas attendre un acquittement avant de continuer à émettre ; ⋆ optimiser le temps d’accès au réseau : ⋄ la taille d’un paquet dépend de la technologie du réseau pas du récep- If a receiving host fails to receive all the bytes that it should acknowledge, the host can improve the communication session by decreasing the window size. ⋄ le réseau est rapide (beaucoup plus rapide que lorsque la taille du paquet Acknowledgments ⋄ l’émetteur a remporté la compétition d’accès au support ; ⋄ le réseau lui est alloué ; ⋄ le temps d’allocation est supérieur au temps d’émission d’un paquet ; Reliable data delivery ensures the integrity of a stream of data sent from one machine to the other through a fully functional data link. It guarantees that the data won’t be duplicated or lost. This is achieved through something called positive acknowledgment with retransmission—a technique that requires a receiving machine to communicate with the transmitting source by sending an acknowledgment message back to the sender when it receives data. The sender documents each segment it sends and waits for this acknowledgment before sending the next segment. When it sends a segment, the transmitting machine starts a timer and retransmits if it expires before an acknowledgment is returned from the receiving end. In Figure 1.12, the sending machine transmits segments 1, 2, and 3. The receiving node acknowledges it has received them by requesting segment 4. When it receives the acknowledgment, the sender then transmits segments 4, 5, and 6. If segment 5 doesn’t make it to the destination, the receiving node acknowledges that event with a request for the segment to When you’ve configured a window size of 1, the sending machine waits for an acknowlbe resent. The sending machine will then resend the lost segment and wait for an acknowledgment for each data segment (measured in bytes) it transmits before transmitting another. edgment, which it must receive in order to move on to the transmission of segment 7. If you’ve configured a window size of 3, it’s allowed to transmit three bytes of data before an acknowledgment is received. le broadcasting (diffusion générale). ⋄ la taille de cette fenêtre est choisie par le récepteur. par l’émetteur ; Le mécanisme d’acquittement positif avec retransmission Transport layer reliable delivery F I G U R E 1 .1 2 Sender 1 2 3 4 Receiver 5 6 1 2 3 4 Send 1 Send 2 Send 3 Ack 4 Send 4 Send 5 Connection lost! Send 6 Ack 5 Send 5 Ack 7 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ a été choisie) ; ⋆ ne pas saturer le récepteur : ⋄ le récepteur définit une fenêtre d’autorisation d’envoi ; ⋄ la taille de cette fenêtre définit le nombre d’octets pouvant être transmis TCP ne permet pas : le multicasting (multi diffusion) ; teur ; — 5 6 ⋆ garantie l’absence de perte et de duplication des segments ; ⋆ le récepteur envoie un acquittement en retour à l’émetteur lorsqu’il reçoit ⋆ l’émetteur : ⋄ envoie un segment et attend l’acquittement avant d’envoyer le suivant ; ⋄ lors de l’envoi, un compte à rebours démarre : s’il expire avant la réun segment ; ception de l’acquittement, le segment est renvoyé ; ⋆ Si on combine avec le mécanisme de fenêtre : ⋄ l’émetteur envoie plusieurs segments suivant la taille de la fenêtre ; ⋄ le récepteur envoie un acquittement demandant le segment suivant de tous ceux de numéros consécutifs qu’il a bien reçu. 13 décembre 2015 — 44 Encapsulation du segment TCP F I G U R E 1. 2 8 TCP : la fenêtre glissante, sliding window Data encapsulation Pour généraliser le traitement des différentes couches, on parle de PDU, «Protocol Data Units». Application PDU Presentation TCP header Upper layer data Session Upper layer data Transport Segment Network Packet Data Link Frame Physical Bits IP header Data LLC header Data FCS Data FCS MAC header 0101110101001000010 Contrôle de flux TCP utilise un mécanisme de fenêtre pour faire du contrôle de flux : Pourquoi ? La technique basée sur l’acquittement simple pénalise les performances en faisant baisser le taux d’occupation du réseau : ⋄ choisir la taille d’un segment adaptée à la MTU du réseau ; ⋄ attendre la réception d’un acquittement avant d’émettre un nouveau segment ; ⋄ c-à-d l’envoi d’un seul segment par RTT ! Comment ? La taille T de la fenêtre : ⋆ correspond à une taille en octets et non à une taille en nombre de segments ; ⋆ est variable au cours de la communication ; ⋆ correspond à la capacité de la mémoire tampon de réception ; ⋆ est défini pour chaque interlocuteur. Une fenêtre de taille T autorise l’émission d’au plus 𝑛 segments (dont la somme des tailles < T), sans attendre l’acquittement de chaque segment envoyé, avant de ne plus pouvoir émettre. Amélioration supplémentaire : acquitter plusieurs messages reçus en un seul acquittement. On parle d’acquittement cumulatif ou d’acquittement retardés, «delayed ACKs». Each segment is then handed to the Network layer for network addressing and routing 294 PART II Core Protocols throughTCP the :internetwork. addressing (for example, IP) is used to get each segment TCP : la fenêtre glissante vs bufférisation réémission & Logical acquittement to the correct network. The Network layer protocol adds a control header to the segment Fenêtre glissante Gestion des erreurs handed down from the Transport layer, and what you have now is called a packet or dataLe récepteur contrôle : Sliding Window TCP garantit l’arrivée des données, en cas de perte les deux extrémités sont prévenues : − la taille de la fenêtre (> à un segment) : gram. Remember that the Transport and Network layers work together to rebuild a data plus petite ou plus grande suivant sa ca⋆ autilisation d’un mécanisme : of their work to place their PDUs on a local stream on receiving host, butd’acquittement it’s not part pacité de traitement ; 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ⋄ lorsque la source 𝑆 envoie un message 𝑀u� vers une destination 𝐷 , − l’acquittement des données reçues contigües : network segment—which is the only way to get the information to a router or host. ⋄ 𝑆 attend un acquittement 𝐴u� de 𝐷 avant d’émettre le message 𝑀u�+1 . il fait glisser la fenêtre. It’s the Data Link layer that’s responsible for taking packets from the Network layer and L’émetteur est autorisé à envoyer de nouveaux segments lorsque la fenêtre glisse. ⋆ utilisation d’un mécanismemedium de réémission temporisée, timer ou compte rebours Link : placing them on the network (cable or wireless). Theà Data layer encapsulates Data sent and Data sent and waiting Data to Data to acknowledged for acknowledgment be sent be sent ⋄ si l’acquittement 𝐴 ne parvient pas à 𝑆 , u� each packet in a frame, and the frame’s header carries the hardware address of the source (Each integer represents a segment of ⋄ 𝑆 considère au bout d’un certain temps hundreds or thousands of bytes) and destination hosts. If the destination device is on que a remote network, then the frame is 𝑀u� est perdu et réémet 𝑀 . u� Bufférisation sent to a router to be routed through an internetwork. Once it gets to the destination netFIGURE 11.5 Elle permet de : TCP sliding window. work, a new frame is used to get the packet to the destination host. ⋄ «lisser» le débit Packet departs source 1 2 3 4 5 6 7 8 en sortie ; To put this frame on the network, it must first be put into a digital signal. Since a frame ⋄ gérer les trous, Packet arrives at buffer 1 2 3 4 5 6 7 8 is really a logical group of 1s and 0s, the Physical layer is responsible for encoding these Flow Control and Congestion Control gaps. digits into a digital signal, which is read by devices on the same local network. The receivWhen flow control is used as a form ofincongestion control for the whole network, the Time buffer Packet removed from buffer 1 2 3 4 5 6 7 8 network nodes themselves are the “receivers” and try to limit the amount of data that ing devices will synchronize on the digital signal and extract (decode) the 1s and 0s from the Gap in playback Dans la suite des transparents, le temps d’attente avant réémission automatique est appelé RTO, «Resenders dump into the network. digital signal. At this point, devices frames, run a(temps CRC, and then du check But now there is a problem. How can using TCP (which is an transmission TimeOut», et ilthe est calculé en build fonctionthe du RTT d’un segment de transmission seg- their 0 5 routers tell 10 the hosts 15 20 (sec)network? Routers are not supon the ment+temps de réception de l’acquittement). answer against the answer in the frame’s FCS field. If it matches, the packet is pulled from the end-to-end protocol) that there is congestion Time posed to play around with the TCP headers in transit packets (routers have enough to frame, and what’s left of the frame is discarded. This process is called de-encapsulation. The do), but they are allowed to play around with IP headers (and often have to). Routers know when a network is congested (they are the first to know), so they can packet is handed to the Network layer, where the address is checked. If the address matches, Fig.fl5-31. theand output streamofby easily ip someSmoothing bits in the IPv4 IPv6 headers thebuffering packets theypackets. route. These bits Cours «Réseaux Avancés – P-F.and Bonnefoi http://p-fb.net/ the segment is pulled from the I» packet, what’s–left of the packet is discarded. The segment are in the TOS (IPv4)— and Flow (IPv6) fields, and the hosts can read these bits and react 13 décembre 2015 — 45 to them by adjusting windows when necessary. is processed at the Transport layer, which rebuilds the data stream and acknowledges to the RFC 3168 establishes support for these bits in the IP and TCP headers. However, transmitting station that it received each piece. It then happily hands the data stream to the support for explicit congestion notification in TCP and IP routers is not mandatory, TCP : problème de la fenêtre stupide Bufférisation vs Application [ Sending Application ] Sent & acked Allowed to send [ Receiving Application ] Increasing sequence num. Delivered to application Gap in recv’d data Silly Window Syndrome Increasing sequence num. TCP sender’s byte stream TCP receiver’s byte stream LastByteAcked LastByteSent FlightSize (Buffered in send buffer) LastByteRecvd NextByteExpected Buffered in RcvBuffer ⋆ L’émetteur dispose d’un buffer d’envoi dans lequel il stocke les données envoyées par l’application (si le buffer est ⋆ L’émetteur envoi des données entre le dernier octet acquitté, «LastByteAcked» et un octet, le «LastByteSent» (la taille plein, l’application est bloquée dans son ordre d’envoi) ; ⋆ On appelle les données transmises des «données en vol», «data in flight», c-à-d qu’elles sont en train de circuler dans de l’envoi doit être inférieure à la taille de la fenêtre d’autorisation, indiquée par «Allowed to send») ; ⋆ Le récepteur dispose d’un buffer de réception dans lequel il range les données reçues depuis le réseau ; ⋆ Le récepteur range les données qu’il reçoit dans le buffer aux emplacements indiqués par l’«offset» du segment reçu : le réseau. ⋆ Le récepteur ne transmet à l’application que les données sans trou, indiquées par le «NextByte Expected». S’il n’y a il peut y avoir des trous, «gap in received data». Observation Solution de Clarke pas suffisamment de données, l’application est bloquée dans son ordre de réception. TCP : fenêtre glissante Il faut des algorithmes empiriques pour gérer les mécanismes de contrôle de TCP. attendre que l’espace libre sur le récepteur soit suffisamment grand avant de prévenir l ’émetteur... TCP : cas d’exception Transmission sans attente ou non bufférisées ⋆ l’application peut demander que ses données soient transmises immédiatement même si le tampon d’envoi n’est pas plein (traversée du tampon d’envoi). Elles sont appelées données «poussées», Push, par exemple dans le cas des protocoles lignes par lignes (SMTP par exemple). ⋆ l’arrivée de ces données est notifiée sans attendre à l’application réceptrice (traversée du tampon de réception). Transmission de données urgentes et hors communication Le protocole TCP permet l’envoi de contrôle et de données au travers de la même communication. Ces données de contrôle : ⋆ sont à prendre en compte immédiatement par l’application réceptrice Urgent ; ⋆ ne correspondent pas à des données «normales» de la communication (des données de contrôle, par exemple, comme celles utilisées pour avertir d’un problème sans nécessité d’établir une nouvelle connexion pour les transmettre) ; Elles sont appelées «Out of Band», elles génèrent un signal Unix sur l’application réceptrice. Comment est-ce possible ? En utilisant le réseau datagramme sous-jacent : les datagrammes arrivent en même temps, qu’ils contiennent des données du flux ou bien des données «out-of-band» ! Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 46 CHAPTER 11 Transmission Control Protocol TCP : le format du segment 1 byte 1 byte 1 byte Source Port 1 byte Destination Port Sequence Number H e a d e r RESV E E U A P R S F C C R C S S Y I N N G K H T N N TCP Checksum ∘ Port source et destination : ⋄ sur 16 bits ⋄ identifie le processus associé et définie ∘ Acknowledgment Number Header Length 283 Window Size Urgent Pointer Options Field (variable length, maximum 40 bytes, 0 padded to 4-byte multiple) DATA (application message) le TSAP. Sequence number : ⋄ exprimé sur 32 bits, ⋄ déplacement ou offset en octet à partir d’une valeur initiale, ISN, «Initial Sequence Number» ; ⋄ positionne le segment dans le flux à recomposer ; 11.2 ∘ FIGURE Acknowledgement number : The TCP header fields. Note that some fields are a single bit wide, and others, like the options ⋄can be numéro de (320 séquence field, up to 40 bytes bits) long. du prochain segment attendu ; ⋄ acquitter les octets précédemment reçus (ceux de séquence < à celle du prochain segment 32 bits ; actualdemandé) data in the received segment, the acknowledgment number increments by 1. (Every byte in TCP is still counted, but that’s not all that contributes to acquittement cumulatif : il peut correspondre à plusieurs the sequence number field.) ∘ Header Taille par défaut du segment 536 units. octets de données + 20 octets d’en-tête : 556 octets. length—The TCP header length in:4-byte segments déjà reçus. Reserved—Four bits are reserved for future use. ECN flags—The two explicit congestion notification (ECN) bits are used to tell the host when the network is experiencing congestion and send windows should be adjusted. CHAPTER 11 Transmission Control Protocol 283 URG, ACK, PSH, RST, SYN, FIN—These six single-bit fields (Urgent, AcknowledgTCP : le format du segment ment, Push, Reset, Sync, and Final) give the receiver more information on how to process the TCP segment. Table 11.1 shows their functions. 1 byte 1 byte 1 byte 1 byte ∘ header length ou «Data Offset» : sur 4bits, Window size—The size of receive window that the destination host has set. This Destination Port indique field is used Source in TCPPort flow control and congestion control. It should not be set to zero in an initial SYN segment. la taille en multiple de 4 octets. ∘ RESV : réservé pour un usage ultérieur sur Sequence Number Checksum—An error-checking field on the entire TCP segment and header as 4bit ; H well as some fields from the IP datagram (the pseudo-header). The fields are e Acknowledgment Number ∘ ECN, Explicit Congestion Notification : a d E E U A P R S F Header sur 2bits, avertir le récepteur d’un état de RESV C C R C S S Y I Window Size e Length N N G K H T N N r début de congestion du réseau ; TCP Checksum Urgent Pointer ∘ URG, ACK, PSH, RST, SYN, FIN : 6 bits Options Field (variable length, maximum 40 bytes, 0 padded to 4-byte multiple) ∘ TCP checksum : total de contrôle sur 16bits pour assurer la validité de l’en-tête DATA (application message) et des données. TCP : le format du segment ∘ Window size : sur 16bits, ⋄ utilisé pour le contrôle de flux par fenêtre glissante. ⋄ il indique le nombre d’octets que l’émetteur de ce segment est prêt à recevoir, ce qui permet à son interlocuteur d’augmenter ou de diminuer le nombre de segments qu’il peut transmettre (varie pendant la communication). ∘ Urgent pointer : ⋄ permet d’indiquer le rang du premier octet des données normales (les données urgentes sont en tête du ⋄ ce rang est indiqué par rapport au segment courant (et pas du flux). ⋄ l’utilisation de ce champ est conjointe à celle du bit URG. segment) ; Received byte stream, stored in Receive Buffer Received TCP segment sequence number urgent data non-urgent data seq. num + urg. ptr = Last Byte of Urgent Data urgent data pointer ∘ options : ⋄ la MSS, Maximum Segment Size est d’indiquer lors de l’établissement de la connexion, la taille maximale du segment TCP que l’on peut envoyer. Une bonne taille est choisie en accord avec le MTU du réseau employé. ⋄ la WSF, Window Scaling Factor, sur 3 octets, définie un coefficient multiplicateur pour la donnée de la taille de fenêtre > 65535, ⋄ … TCP : Calcul de la somme de contrôle Dans le segment TCP, un total de contrôle est calculé sur : ▷ entête du segment TCP ; ▷ données du segment ; ▷ pseudo entête du datagramme IP : Méthode 32 bits LeFIGURE rôle11.2des différents bits : TCP header fields. Note that some fields are a single bit wide, and others, like the options ⋆ The URG indique des données urgentes indiquée par le «Urgent Pointer» ; field, can be up to 40 bytes (320 bits) long. ⋆ ACK accusé de réception présent dans le «Acknowledgement Number» ; ⋆ PSH ce segment doitsegment, être pris en compte sans bufférisation actual data in the received the acknowledgment number increments ; by 1. (Every byte in TCP still counted, but that’s not all contributes to ⋆ RST réinitialiser laisconnexion (problème dethat désynchronisation) ; the sequence number field.) ⋆ Header SYNlength—The synchronisation des numéros de séquence pour initialiser une connexion ; TCP header length in 4-byte units. ⋆ Reserved—Four FIN l’émetteur à fini d’émettre (permet de clore un sens de communication). bits are reserved for future use. ECN flags—The two explicit congestion notification (ECN) bits are used to tell the host when the network is experiencing congestion and send windows should be adjusted. URG,«Réseaux ACK, PSH, RST, SYN, FIN—These (Urgent, AcknowledgCours Avancés I»six–single-bit P-F. fields Bonnefoi – http://p-fb.net/ ment, Push, Reset, Sync, and Final) give the receiver more information on how to process the TCP segment. Table 11.1 shows their functions. Window size—The size of receive window that the destination host has set. This field is used in TCP flow control and congestion control. It should not be set a. on additionne en complément à 1 tous les mots de 16 bits (complété par un octet nul dans le cas où le nombre d’octets total est impair) b. on prend le complément à 1 de cette somme. Lors de la réception le calcul est réalisé sur le segment entier (total de contrôle compris) et l’on doit obtenir zéro si le segment est correct. — 13 décembre 2015 — 47 TCP : établissement d’une connexion TCP : la fermeture Technique du “Piggybacking” ou mode en superposition L’acquittement d’un paquet paquet de 𝐴 → 𝐵 , peut être transmis dans un paquet allant de 𝐵 → 𝐴 . La communication pouvant être bidirectionnel simultanée, elle peut nécessiter la transmission d’information de 𝐴 → 𝐵 et de 𝐵 → 𝐴 simultanément. L’établissement de la connexion, ou handshake ⋆ se fait en 3 étapes ; ⋆ correspond à une demande d’ouverture de la part de Déconnexion Server State Receive Close signal from App, Send FIN Wait for ACK and FIN from Server ⋆ permet de synchroniser l’ISN, «Initial Sequence Numchaque interlocuteur ; TIME-WAIT 3. FIN-WAIT-2 ACK 5. TIME-WAIT #1 #2 Wait for ACK to FIN ACK Receive ACK CLOSE-WAIT CLOSE-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED 6. (2 Maximum Segment Lifetime) LAST-ACK CLOSED FIN Receive FIN, Send ACK --> <-- (Close) TIME-WAIT (Wait for App) App is ready to Close, Send FIN <-- <SEQ=300><ACK=101><CTL=ACK> 4. CLOSE-WAIT Receive ACK Wait for Server FIN ber», la valeur initiale du numéro de séquence : ⋄ pour le connect() SYN=1 & ACK=0 ; ⋄ pour le accept() SYN=1 & ACK=1. Un SYN unique indique une demande de connexion. FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> Receive FIN, Send ACK, Tell App to Close #2 FIN-WAIT-1 ESTABLISHED 2. (Close) Normal Operation FIN TCP B 1. ESTABLISHED ESTABLISHED #1 ESTABLISHED FIN-WAIT-2 TCP A Server Client Client State CLOSED Wait for Double Maximum Segment Life (MSL) time Avec l’outil «tcpdump» : pef@solaris:~$ sudo tcpdump -c 3 -n tcp and port 25 listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes ⋆ [S] : indique un SYN ; 22:07:26.954500 IP 192.168.42.83.56149 > 164.81.1.45.25: Flags [S], seq ⋆ [S.] : indique un SYN/ACK ;1249996154, win 14600, options [mss 1460,sackOK,TS val 138100882 ecr 0], length 0 ⋆ [.] : indique un ACK. 22:07:26.999157 IP 164.81.1.45.25 > 192.168.42.83.56149: Flags [S.], seq ⋆ connexion de : 4144328101, ack 1249996155, win 5792, options [mss 1460,sackOK,TS val 1968359736 ecr 138100882], length 192.168.42.83 22:07:26.999227 IP 192.168.42.83.56149 > 164.81.1.45.25: Flags [.], ack 1, port 56149 win 14600, options [nop,nop,TS val 138100893 ecr 1968359736], length 0 3 packets captured vers 0 packets dropped by kernel 164.81.1.45 port 25. CLOSED 0 TCP : la connexion classique vs simultanée Even when the 2nd ACK is lost, the connection will be closed Le MSL, «Maximum Segment Lifetime» : ▷ est choisie en fonction de l’expérimentation, ▷ permet d’éviter de prendre en compte des segments d’une ancienne connexion dans une nouvelle connexion (segment retardés dans le réseau). ▷ en général choisie à 30𝑠 . Déconnexion rapide On utilise une connexion «abrupte» avec le RST : ⋄ le serveur envoie un FIN au client ; ⋄ le client envoie un ACK, puis un RST : on évite le temps d’attente de fin de connexion. TCP : l’automate de fonctionnement Connexion classique Timeout after two maximum segment lifetimes (2*MSL) N° TCP A TCP B CLOSED 1. CLOSED LISTEN 2. SYN-SENT 3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> 4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> 5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED Passive open <-- SYN-RECEIVED Close Close LISTEN ESTABLISHED Send/SYN SYN/SYN + ACK SYN/SYN + ACK CTL, «contrôle», indique les bits du segment TCP sélectionnées. SYN RCVD SYN SENT SYN + ACK/ACK ACK Connexion simultanée TCP A ACK ESTABLISHED Close/FIN TCP B 1. CLOSED 2. SYN-SENT 3. SYN-RECEIVED --> <SEQ=100><CTL=SYN> ... FIN WAIT 1 <-- <SEQ=300><CTL=SYN> <-- SYN-SENT ... <SEQ=100><CTL=SYN> --> SYN-RECEIVED 5. SYN-RECEIVED --> <SEQ=100><ACK=301><CTL=SYN,ACK> ... 6. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-... <SEQ=101><ACK=301><CTL=ACK> --> FIN/ACK Close/FIN CLOSED 4. 7. Active open/SYN Timeout/RST --> ESTABLISHED CLOSE WAIT ACK Close/FIN ACK FIN + ACK/ACK CLOSING SYN-RECEIVED FIN WAIT 2 LAST ACK ESTABLISHED ACK La connexion simultanée est difficile à mettre en œuvre, et elle est rarement implémentée dans les piles TCP/IP. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ FIN/ACK — TIME WAIT 13 décembre 2015 — 48 TCP : l’automate de communication expliqué CLOSED timeout / send:RST Appl:passive open / send:<nothing> rcv N; :SY / ,A YN d:S sen CK close Ap pl :a nd c : S tive YN op e Ap pl: se Se nd nd da :S ta YN / LISTEN passive open T / ing> :RS oth rcv d:<n sen rcv :A CK Se / nd :< no thi ng > Appl: close / normal transition for server n Appl -- state transition take when application issues operation / rcv: FIN / FIN_WAIT_1 rcv ACK / se rcv: :FI N,A CK nd :AC / K CLOSE_WAIT AppL:close / send:FIN rcv: ACK / send: <nothing> LAST_ACK ACK / send: <nothing> passive close Timeout after 2 MSL rcv: FIN / TIME_WAIT send: ACK active close send: ACK reset Server CLOSING send: ACK send: <nothing> C N,A :SY K rcv :AC d rcv: FIN / sen Appl:close or timeout / active open K/ / ESTABLISHED se clo pl: data transfer state p N I A :F nd se Client SYN_SENT send:SYN, ACK simultaneous open send: FIN FIN_WAIT_2 se normal transition for client rcv: SYN / SYN_RCVD rcv: TCP : Améliorations par l’utilisation d’options 2MSL timeout MSL (Maximum Segment Lifetime) 2 minutes recommended—typically 30 seconds used TCP B 1. CLOSED 2. SYN-SENT 3. (duplication) 4. SYN-SENT <-- <SEQ=300><ACK=91><CTL=SYN,ACK> <-- SYN-RECEIVED 5. SYN-SENT --> <SEQ=91><CTL=RST> --> LISTEN 7. SYN-SENT <-- <SEQ=400><ACK=101><CTL=SYN,ACK> <-- 8. ESTABLISHED --> <SEQ=101><ACK=401><CTL=ACK> 6. l’entête du segment). Cette option est transmise lors de l’établissement de la connexion Il peut y avoir une différence entre la valeur utilisée pour les deux sens de communication. ⋆ Window Scale Factor, qui permet de définir un coefficient multiplicateur pour la fenêtre glissante. Cette option permet de définir des tailles de fenêtre supérieure à 16bits : on décale à gauche du coef. indiqué (on multiplie par 2u�u�u�u� ) : Cette option est très utile pour les connexions très rapide (Gbits). CHAPTER 11 Transmission Control Protocol 287 Pour la désactiver sous GNU/Linux : xterm $ sudo sysctl -w net.ipv4.tcp_window_scaling=0 ⋆ Selective Acknowledgment Permitted, ou SACK, qui permet d’acquitter des segments non contigües (RFC 2018) segments (four total), although the other host can theune dropping Cette option estexchange négociée àof l’établissement de lain connexion Dans le champs options peut êtredelay indiqué liste de final are sent, a feature rarely used. (adresse début, until adresse fin)data de données reçues mais non encore acquittées TCP uses unique for the connection process. A single bit called the ⋆ Timestamp : permet de calculer le RTT terminology d’un segment (RFC1072) : SYN (synchronization) bit is :used to indicate a connection request. This single bit is ⋄ il existe deux champs contenant un timestamp «Echo», «Echo reply» : still embedded a complete 20-byte (usually) TCP header, ⋄ l’émetteur envoie un segment in avec un timestamp par rapport à sa propre horloge ;and other information, such initial sequencedans number (ISN) used :to track segments, sent to the other host. ⋄ le récepteuras luithe renvoie ce timestamp le segment réponse l’émetteur connait le is RTT. Autres améliorationsConnections and data segments are acknowledged with the ACK bit, and a request to terminate a connection is made de with the FINou(fidéjà nal)acquitté. bit. Keep-Alive, correspond à l’envoi de plusieurs segments taille nulle The entire TCP connection procedure, Cela permet pour les connexions inactives où aucun échange n’a lieu. from three-way handshake to data transfer disconnect, is shown inrouteur Figureréalisant 11.3. TCP also allows for supprime the case lawhere twoduhosts ⋄ «garder en vie»to la connexion en évitant qu’un du filtrage, «firewall», connexion fait an active open at the same time, but this is unlikely. de son inactivitéperforms ; example shows small fion lemettra transfer server (with the server sending 1000 ⋄ de tester la présenceThis de l’interlocuteur : sans aréponse, fin àtola aconnexion. bytes back to the client) using 1000-byte segments, but only to make the sequence numbers and acknowledgments easier to follow. The whole file is smaller than the TCP : une communication complète TCP : le RST Gestion de la réception d’un ancien datagramme avec SYN TCP A ⋆ MSS, Maximum Segment Size : la taille maximale des données contenues dans un segment (sans tenir compte de CLIENT LISTEN --> <SEQ=100><CTL=SYN> ... <SEQ=90><CTL=SYN> ... <SEQ=100><CTL=SYN> ... pas encore reçu --> SYN-RECEIVED --> --> SYN-RECEIVED Active OPEN OPEN SYN-RECEIVED ESTABLISHED Gestion du RST Le bit RST demande la réinitialisation de la communication. Il est émis lors de la réception d’un segment qui ne correspond pas à celui attendu par une connexion ouverte : ⋄ Si la connexion n’existe pas, alors un RST est envoyé lors de la réception de tout segment sur la connexion (sauf si ce segment est déjà un RST). Les paquets SYN envoyés à une connexion inexistante sont rejetés par ce moyen. Cela permet de gérer le cas ou la machine a rebooté alors que le correspondant continue a communiquer. ⋄ Si la connexion n’est pas synchronisée (LISTEN, SYNSENT, SYN-RECEIVED) et le segment entrant acquitte quelque chose qui n’a pas été envoyé (ACK mauvais) un segment RST est envoyé. Data Transfer SEQ and ACK Client–Server File Transfer Using 1000-byte Segments SYN SEQ (ISN) 2000 WIN 5840 MSS (OPT)1460 SYN SEQ (ISN) 4000 WIN 8760 MSS (OPT)1460 SEQ 2001 WIN 5840 ACK ACK 4001 SEQ 2001 Connection Release SEQ 4001 WAIT! ACK 3001 ACK 4001 SEQ 4001 ACK 4001 SEQ 5001 ACK 4001 (no data) 3-way Handshake Complete (sends 1000 bytes back) (3000 bytes of window full) ACK 6001 .. FIN ACK SEQ 4001 ACK 10001 SEQ 10001 ACK 4002 FIN CLOSING OPEN ACK 4001 SEQ 3001 (Transfer continues...) SERVER Passive OPEN CLOSING SEQ 10001 ACK 4002 ACK SEQ 4002 ACK 10002 WAIT! FIGURE 11.3 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Client–server interaction with TCP, showing the three connection phases of setup, data transfer, — 13 décembre 2015 and release (disconnect). — 49 TCP : mode interactif TCP : calcul des timers La mesure du RTT 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 = (1 − 𝛼) ∗ 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 + 𝛼 ∗ 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 Le transfert de données de TCP est de deux types : ∘ interactif dans lequel chaque segment transporte très peu d’octets, voire un seul ; ∘ en masse où chaque segment transporte un maximum d’octets. Exemple du protocole telnet, remplacé par le protocole SSH 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 = 250𝑚𝑠 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 = 70𝑚𝑠 𝛼 = 0.125 Exemple : Ce calcul permet de ⋆ «lisser» les mesures ; ⋆ obtenir un graphe similaire à celui donné à droite. L’utilisateur dans une session telnet envoie la commande date : a. chaque caractère est transmis puis acquitté :c’est son acquittement qui est affiché à l’utilisateur, «echo» b. en réalité TCP transmet l’écho en même temps que l’acquittement. c. on utilise l’algorithme de Nagle (RFC 896) utilisant une bufférisation légère : si l’utilisateur tape vite on mémorise avant d’envoyer jusqu’à un retour à la ligne \n (utile pour ne pas saturer le réseau avec des segments ne contenant qu’un seul octet). TCP : calcul des timers timeout segmen t0 pkt0 ack1 RTT B A X Duplicate, segment dupliqué ignoré RTT timeout Timeout trop court se traduit par un timeout prématuré Temps B segmen t0 Transmission non nécessaire ! Gaspillage de la capacité (bandwidth) Comment évaluer le RTT ? ack1 lost segmen t0 (bandwidth) ▷ le «sampleRTT» ou «RTT échantillonné» : temps mesuré entre l’envoi d’un segment et la réception de son acquittement ; ▷ le «sampleRTT» varie : il faut «lisser» la mesure : ⋄ faire la moyenne, RTTmoyen ou 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 , sur plusieurs mesures et pas seulement utiliser la dernière : 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 = (1 − 𝛼) ∗ 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 + 𝛼 ∗ 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 avec 0 < 𝛼 < 1 ⋆ 𝛼 proche de 0 : insensible aux variations rapides ⋆ 𝛼 proche de 1 : très sensible aux variations rapides Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT ∘ Chaque fois qu’un segment contenant des données est envoyé (y compris pour une retransmission), un timer doit ∘ lorsqu’un ACK est reçu demandant l’envoi de nouvelles données : ⋄ redémarrer le timer sur la durée du RTO ; ∘ lorsqu’un timer expire : ⋄ retransmettre les premiers segments qui n’ont pas été acquittés par le récepteur ; ⋄ augmenter le RTO : 𝑅𝑇 𝑂 = 𝑅𝑇 𝑂 ∗ 2, on appelle cette opération : timer backoff ; ⋄ redémarrer le timer avec la nouvelle valeur de RTO. être déclenché d’une durée égale au RTO calculé ; Timeout trop long Utilisation insuffisante de la capacité 150 ⋆ Ce qui donne au final : 𝑇 𝑖𝑚𝑒𝑜𝑢𝑡𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙 = 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 + 4 ∗ 𝐷𝑒𝑣𝑅𝑇 𝑇 Calcul du RTO, «Retransmission Timeout», RFC 2988 A 200 ⋆ calcule la valeur du temporisateur en fonction de 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 plus une marge de protection : ⋄ forte variation de 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 ⟹ marge de protection plus grande ; ⋄ mesurer la déviation entre le 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 et le 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 : le 𝐷𝑒𝑣𝑅𝑇 𝑇 : 𝐷𝑒𝑣𝑅𝑇 𝑇 = (1 − 𝛽) ∗ 𝐷𝑒𝑣𝑅𝑇 𝑇 + 𝛽 ∗ ⌊𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 − 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 ⌋, où 𝛽 = 0, 25 TCP : calcul des timers de retransmission miquement ; ⋆ si trop court : risque de retransmettre des segments pour rien ; ⋆ si trop long : réaction trop lente aux pertes de segments. 250 Calcul du temporisateur, timeout Comment choisir la durée du «timeout» ? ⋆ plus long qu’un RTT, mais le RTT varie dyna- 300 RTT (milliseconds) 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 = (1 − 0.125) ∗ 250 +0.125 ∗ 70 = 218.75 + 8.75 = 227.5𝑚𝑠 87, 5% de poids au 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 12, 5% de poids au 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 Calcul : RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 ∘ En résumé : ⋄ quand un ACK est reçu, on calcul le RTO avec 𝑇 𝑖𝑚𝑒𝑜𝑢𝑡𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙 = 𝐸𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑𝑅𝑇 𝑇 + 4 ∗ 𝐷𝑒𝑣𝑅𝑇 𝑇 ⋄ quand un timeout se produit, on modifie le RTO : 𝑅𝑇 𝑂 = 𝑅𝑇 𝑂 ∗ 2 lorsque toutes les données envoyées ont été acquittées, il faut arrêter le timer ; ∘ Pour le calcul des 𝑆𝑎𝑚𝑝𝑙𝑒𝑅𝑇 𝑇 : ⋄ Constat : en cas de retransmission d’un segment, l’émetteur ne peut savoir si l’acquittement s’adresse au segment initial ou retransmis (acquittements ambigüs) ⋆ ⇒ RTT ne peut donc être calculé correctement ⋆ ⇒ TCP ne doit pas mettre à jour le RTT pour les segments retransmis Sauf si l’option Timestamp a été utilisée dans le segment. — 13 décembre 2015 — 50 TCP : les scenarii de retransmission Seq=92 timeout s data ACK X loss , 8 byte AC s data 0 K=10 Offset = 100 Offset = 100 Offset = 120 Offset = 120 Seq= , 8 byte 100, 20 by s data tes d ata , 8 byte AC s data 20 K=1 premature timeout Seq=1 2, 8 b 00, 20 X Seq=9 ytes d ata =100 ACK bytes data loss =120 Offset = 120 Host A ▷ Host B Seq=9 0 10 K= 120 AC ACK= Seq=92 time Host A Host B Seq=92 =100 Seq=92 time Host A Seq=92 timeout timeout , 8 byte timeout Host B Seq=92 timeout Host A TCP : contrôle de la congestion Comment gérer une situation de congestion ? ACK Offset = 120 time Cumulative ACK scenario ⋆ le ACK se perd et le RTO expire ; ⋆ le RTO expire avant la réception des ACKs ; ⋆ un ACK se perd mais il devient inutile car un nouveau ACK est envoyé et englobe celui perdu. lost ACK scenario Implémentation des timers de retransmission ⋄ En théorie, il est plus simple de gérer un timer de retransmission par segment envoyé. ⋄ En pratique, la plupart des implémentations utilise un seul timer par connexion TCP (RFC 2988). TCP : détection de l’entrée en congestion du réseau Rapport avec le contrôle de flux ? ⋄ situation de congestion faible : réception de 3 ACKs dupliqués (des paquets arrivent encore à circuler) ; s data ⋄ ytesituation de congestion forte : expiration d’un timer, «timeout» Host Bla congestion : prendre en compte les pertes de segments découvrir 2, 8 b 0 byte ▷00, 2limiter débit : s dale ta ⋄ utiliser une nouvelle fenêtre d’autorisation d’émission : la fenêtre de congestion, «congestion window» ; ⋄ la taille de cette fenêtre : 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 = 𝑤 ∗ 𝑀𝑆𝑆 octets, où 𝑤 varie en fonction de l’état perçu du réseau. ⋄120 fonctionnement : = K AC ⋆ La fenêtre réception, 𝑅𝑐𝑣𝑊 𝑖𝑛𝑑𝑜𝑤 , & la fenêtre congestion déterminent la quantité d’octets à émettre ; ⋆ L’émetteur envoie au plus une taille 𝑡 de données, telle que 𝑡 < 𝑚𝑖𝑛(𝐶𝑜𝑛𝑔𝑊 𝑖𝑛, 𝑅𝑐𝑣𝑊 𝑖𝑛𝑑𝑜𝑤) Seq=1 Exemple : ⋆ Le récepteur indique «Autorisation d’envoyer 8ko»,𝑅𝑐𝑣𝑊 𝑖𝑛𝑑𝑜𝑤 = 8𝑘𝑜 time ▷ Si l’émetteur dispose d’une 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 = 4𝑘𝑜 , il envoie au plus 4𝑘𝑜 de données ; On Windows systems ▷ Si l’émetteur dispose d’une 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 = 32𝑘𝑜 , il envoie au plus 8𝑘𝑜 de données : En contrôle de flux, c’est le récepteur qui contrôle, en contrôle de congestion, c’est l’émetteur. ▷ choisir un algorithme pour faire évoluer la taille de la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 : ⋄ AIMD, «Additive-Increase, Multiplicative-Decrease» ; ⋄ «Slow Start» ; ⋄ gestion des pertes de segments : ⋆ TCP Tahoe ; ⋆ TCP Reno ; ⋆ Autres ; TCP : contrôle de la congestion AIMD, «Additive-Increase, Multiplicative-Decrease» ⋆ incrémenter le débit de transmission, c-à-d la taille de la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 , de manière linéaire jusqu’à une perte ; ⋆ «additive increase» : augmenter la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 de 1 Le contrôle de flux ne gère que la capacité du récepteur à traiter les segments reçus. Ce contrôle de flux utilise un mécanisme de fenêtre. MSS à chaque RTT, jusqu’à une perte ou que l’on atteigne la taille de la 𝑅𝑐𝑣𝑊 𝑖𝑛𝑑𝑜𝑤 ; ⋆ «multiplicative decrease» : diviser par deux la taille de la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 à chaque perte (parce que l’effet de la congestion est exponentiel) ; Problème ⋆ le réseau peut être en situation de congestion indépendamment de la situation de l’émetteur et ⋆ le récepteur et l’émetteur doivent détecter cette situation : ⋄ la perte d’un paquet due à une erreur matérielle est rare ; ⋄ elle doit être due à une congestion du réseau ⇒ connaissance ! ⋄ des timers servent à réémettre un paquet perdu ⇒ un timer expiré indique une congestion ! du récepteur ; Image du seau d’eau : le contrôle de flux sert à adapter le débit du robinet à la taille du seau, mais la congestion fait déborder l’entonnoir (perte de paquets) même si la taille du seau est grande ! On «probe» la capacité de la ligne de transmission et on obtient un graphe en dent de scie. Le débit initial est faible au démarrage : Exemple : ▷ À l’établissement de la connexion : 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 1𝑀𝑆𝑆 ▷ 𝑀𝑆𝑆 = 500 octets, 𝑅𝑇 𝑇 = 200𝑚𝑠 ▷ 𝑑 𝑒𝑏𝑖𝑡 ´ = octets/seconde, 𝑑 𝑒𝑏𝑖𝑡 ´ 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 = 21 ∗ 500 = 10, 5𝐾𝑜 par seconde. u�u� u� Le débit initial est trop faible, il faut changer la manière d’augmenter la taille de la fenêtre. u�u�u�u�u�u�u�u�u�u� Nouvelle propostion : le «Slow Start» avec accélération rapide Deux phases : a. démarrer lentement, «slow start» et augmenter exponentiellement la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 ; On parle de «slow-start» car on commence à une valeur de seulement 1 segment, sans tenir compte de la capacité réelle du réseau qui est, en général, bien supérieure. b. éviter la congestion, «congestion avoidance» en augmentant la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 linéairement et en prenant en compte les «signes» anonciateurs d’une congestion réseau (disparition effective ou présumée de paquets). Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 51 TCP : contrôle de la congestion TCP : contrôle de la congestion Fonctionnement du mode «Slow Start» Comportement de Tahoe vs Reno Hôte A Hôte B RTT un segmen t deux segm ents quatre segm ents ⋆ on envoie le premier segment : s’il est acquitté avant expiration du timer, 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 = 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 + 1𝑀𝑆𝑆 ; ⋆ on envoie le second segment : s’il est acquitté, on incrémente la taille de 1, ce qui équivaut à doubler la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 à chaque RTT. ⋆ on continue, ainsi, à doubler la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 à chaque RTT, jusqu’à : ⋄ avoir une perte de segment (on réagira comme en mode «congestion avoi⋄ atteindre une taille de 𝑛 segments, seuil appelé ssthresh ; dance») ; ⋆ on passe en mode «congestion avoidance» (on cherche à «éviter» la conges- tion). Résumé : aussi longtemps que l’émetteur reçoit des ACKs non dupliqués on continue à incrémenter la taille de la fenêtre de congestion jusqu’à la limite ssthresh et on passe en mode «congestion avoidance» Fonctionnement du mode «congestion avoidance» temps L’idée de ce mode est de repasser à l’AIMD et de choisir un comportement lors de la perte d’un segment : ⋆ Il existe différentes méthodes pour réagir à la perte d’un segment : ⋄ TCP Tahoe : ⋆ pas de distinction entre situation de congestion faible ou forte (3 ACKs dupliqués ou timeout) ; ⋆ réinitialisation : 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ =CongWindow/2 («Slow Start threshold») ; ⋆ réinitialisation : 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 1𝑀𝑆𝑆 ; ⋆ on effectue un «fast-retransmit» : on renvoie le segment sans attendre la fin du RTO (lors de 3 ACKs dupliqués) ; ⋆ on recommence le mode «slow-start», c-à-d on augmente exponentiellement jusqu’à 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ puis linéairement au-delà. ⋆ initialement, le 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ = 8 ∗ 𝑀𝑆𝑆 ⋆ le pic correspond à une perte de segment : ⋄ 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 12 au moment du pic ; ⋄ 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ = 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤/2 = 6𝑀𝑆𝑆 ; ⋄ Tahoe repart en «slow start» avec 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 1𝑀𝑆𝑆 ; ⋄ Reno utilise mieux la capacité du support : il repart de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤/2 = 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ ; Et finalement le débit moyen d’une connexion TCP ? Le débit en «dent de scie» passe de (u�u�u� ∗u�u�u�) (2u�u� u� ) TCP : contrôle de la congestion TCP : contrôle de congestion Fonctionnement du mode «congestion avoidance» Est-ce que TCP est un protocole «équitable» ⋆ Il existe différentes méthodes pour réagir à la perte d’un segment : ⋄ TCP Reno : ⋆ on distingue situation de congestion faible et de congestion forte : ▷ congestion faible (3 ACKs dupliqués) : ∘ 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ = 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤/2 ; ∘ mode «fast-recovery» : 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤/2 ; ∘ mode «fast-retransmit» : envoi immédiat du segment «perdu» sans attendre le RTO (3 ACKs dupliqués) ; ▷ congestion forte (timeout) : fonctionnement à la Tahoe ∘ ∘ ∘ ∘ 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ = 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤/2 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 = 1𝑀𝑆𝑆 ; on effectue un «fast-retransmit» ; on recommence le mode «slow-start» ; ⋄ TCP Vegas : détecte la congestion sur l’allongement progressif de la RTT de chaque segment ; ⋄ New Reno : adapte Reno à l’utilisation de l’option SACK. ⋄ etc. Résumé : ∘ quand 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 < 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ augmentation exponentielle de la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 (∗2) ; ∘ quand 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 ≥ 𝑠𝑠𝑡ℎ𝑟𝑒𝑠ℎ augmentation linéaire de la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 (+1). Les modes : ⋆ «fast-retransmit» : l’émetteur étant persuadé que le segment demandé plusieurs fois dans les ACKs dupliquées est perdu, il le retransmet sans attendre l’expiration du timer («Retransmit TimeOut» ou RTO) ; ⋆ «fast-recovery» : divise par deux la 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛𝑑𝑜𝑤 et attend l’acquittement complet de la fenêtre d’autorisation d’envoi, avant de repasser en mode «congestion avoidance» ; ⋆ la différence entre Tahoe & Reno : l’ajout de la notion de «congestion faible» et du «fast-recovery». Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ TCP connexion 1 TCP connexion 2 Bottleneck “goulot d’étranglement” routeur capacité R à (u�u�u� ∗u�u�u�) , u�u� u� d’où : 𝑡ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡u�u�u�u�u�u�u� = .75∗u�u�u� ∗u�u�u� u�u� u� Objectif de l’équité, fairness : − Si 𝐾 connexions utilisent la même ligne de transmission de capacité 𝑅 ; − chaque connexion doit obtenir un débit de 𝑅/𝐾 . On observe que les deux connexions vont se répartir la capacité de la ligne de transmission : ⋄ en A : les deux connexions atteignent un débit inférieur à R, pas de pertes, la taille de 𝐶𝑜𝑛𝑔𝑊 𝑖𝑛 augmente de 1 à chaque RTT et la courbe évolue à 45° ; ⋄ en B : le débit des connexions dépasse R et les deux connexions perdent des segments et reviennent en C ; ⋄ en D : ça recommence… Débit souhaité Partage équitable de la capacité R D Débit Connexion 2 throughput B C Ligne d’utilisation complète de la capacité A Débit Connexion 1 throughput R Mais la répartition se fait entre toutes les connexions TCP et non entre celles des différentes applications. Équité dans UDP ▷ TCP possède un mécanisme de contrôle de congestion : il offre un traitement équitable en répartissant la capacité entre les ▷ UDP ne possède pas ce mécanisme : ⋄ les applications multimédia utilise plutôt UDP (VoIP, «Voice over IP», Vidéo) : ⋆ elles ne veulent pas voir leur débit modifié par le contrôle de congestion ; ⋆ elles ne veulent pas le surcoût de TCP (gestion de fenêtres d’envoi et de réception, gestion d’erreurs) ; ⋄ la transmission par UDP est faite suivant un débit constant où la perte de paquets est tolérée. ⋄ le trafic UDP peut entraîner une congestion du réseau. différentes connexions : — 13 décembre 2015 — 52 Un autre mécanisme de contrôle de congestion pour TCP et IP ECN, «Explicit Congestion Notification», RFC 3168 ▷ Habituellement, la découverte de la congestion passe par la perte de datagramme : un routeur jette un paquet qu’il ne peut gérer. ▷ ECN permet de notifier les extrémités que le réseau entre en congestion sans jeter le datagramme : ⋄ il est géré dans le datagramme IP (mais en rapport avec un protocole supérieur) ou le segment TCP ; ⋄ l’ECN a été négocié lors de l’établissement de la connexion (utilisation du bit associé dans l’entête IP) ; ⋄ le routeur gérant l’ECN positionne un bit dans l’entête du datagramme IP ou du segment TCP, au lieu de ⋄ le récepteur fait écho de cette indication (au niveau approprié) et réagit comme lors lors d’une perte de jeter le datagramme, pour informer, notifier, le récepteur de l’entrée en congestion du routeur. datagramme (ou du segment encapsulé). Le mécanisme utilise deux bits : ⋆ du champ «Differentiated Services» ou TOS, «Type Of Service» de l’en-tête IPv4 ; ⋆ du champ «Traffic Class» de l’en-tête IPv6 ; ⋆ du champ «flags» de len-tête du segment TCP. Les différentes valeurs des bits et le sens associé : ⋄ 00: Non ECN-Capable Transport — Non-ECT ⋄ 10: ECN Capable Transport — ECT(0) ⋄ 01: ECN Capable Transport — ECT(1) ⋄ 11: Congestion Encountered — CE TCP : l’acquittement sélectif, SACK SYN If set, the hosts should synchronize sequence numbers and establish a connection. FIN If set, the sender had finished sending data and initiated a close of the connection. Table :11.2 Option Types, Showing Abbreviation (Meaning), Length, and RFC TCP lesTCPoptions in Which Established Type Meaning Total Length and Description RFC 0 EOL 1 byte, indicates end of option list (only used if end of options is not end of header) 793 1 NOP 1 byte, no option (used as padding to align header with CHAPTER Header-Length Field)11 Transmission Control Protocol 793 2 MSS 4 bytes, the last 2 of which indicate the maximum payload that one host will try to send another. Can only appear in SYN and does not change. Table 11.2 (continued) Les options 11,12&13 : RFC 1644 proposait de mettre des données dans le SYN et SYN/ACK… abandonnées ! 285 793 879 Les options 6&7 : RFC 1072 abandonnées ! Les options 9&10 : RFC 1693 abandonnées ! Type Meaning Total Length and Description RFC 3 WSCALE 3 bytes, the last establishing a multiplicative (scaling) factor. Supports bit-shifted window values above 65,535. 1072 4 SACKOK 2 bytes, indicating that selective ACKs are permitted. 2018 5 SACK Of variable length, these are the selective ACKs. 1072 6 Echo 6 bytes, the last 4 of which are to be echoed. 1072 7 Echo reply 6 bytes, the last 4 of which echo the above. 1072 8 Timestamp 10 bytes, the last 8 of which are used to compute the retransmission timer through the RTT calculation. Makes sure that an old sequence number is not accepted by the current connection. 1323 1693 9 POC perm 2 bytes, indicating that the partial order service is permitted. 10 POC profile 3 bytes, the last carrying 2-bit flags. 1693 11 CC 6 bytes, the last 4 providing a segment connection count. 1644 12 CCNEW 6 bytes, the last 4 providing new connection count. 1644 13 CCECHO 6 bytes, the last 4 echoing previous connection count. 1644 Certaines de ces options ne sont négociées que lors de l’établissement de la connexion, pour des questions de rétrocompatibilité : leur présence dans les segments des deux interlocuteurs permet leur utilisation. TCP MECHANISMS L’option 8 : permet de calculer le RTT d’un segment, «RTT measurement» (RFC1323) : not be obvious connections should be such a complication. One of ⋆ It might l’émetteur envoiewhy unTCP segment avec un timestamp par rapport à sa propre horloge ; the reasons is that TCP adds more to connectionless IP than connection capability. The ⋆ TCPleservice récepteur lui renvoie cewhat timestamp réponse also provides aspects of the ISO-RMdans definesleassegment Session Layer services,: l’émetteur connait le RTT. services that include the history (a popular term is “state variables”) of the connection progress. Connections also provide a convenient structure with which to associate QoS parameters, although every layer of any protocol stack always has some QoS duties to perform, even if it is only error checking. Officially, TCP is a virtual circuit service that adds reliability to the IP layer, reliTaille de that fenêtre proposée paralsoleprovides récepteur ability is lacking in UDP. TCP sequencing and flow control to the interaction, which in turn provides a congestion control mechanism to the ⋆ host-to-host dépend de as la acapacité, «bandwidth», ; concern, is aware routing network whole (as long as TCP, normallydu anréseau end-to-end congested The flow controld’un mechanism in TCP is a sliding ⋆ of the dépend du condition). temps d’aller-retour paquet, le «RTT» ; window that prevents senders from overwhelming receivers and applies in both ⋆ procedure est calculée par : directions of a TCP connection. TCP was initially defined in RFC 793, refined in RFCs 879, 1106, 1110, and 1323 𝑇 𝑎𝑖𝑙𝑙𝑒 𝑓 𝑒𝑛𝑒𝑡𝑟𝑒 = 𝑐𝑎𝑝𝑎𝑐𝑖𝑡 𝑒´ obsoleted RFC 1072 and RFC 1185). RFCs 1644 and 1693 extended TCP to ⋆ (which Exemple : support transactions, which can be loosely understood as “connection-oriented TCP : calcul initial de la taille de la fenêtre de réception ∗ 𝑅𝑇 𝑇 ⋄ Sur un réseau Ethernet 100𝑀𝑏𝑝𝑠 , avec un RTT de 5𝑚𝑠 : 𝑇 𝑎𝑖𝑙𝑙𝑒 𝑓 𝑒𝑛𝑒𝑡𝑟𝑒 = 100.106 ∗ 5.10−3 = 500𝑘𝑏𝑖𝑡𝑠 ⋄ On choisit une taille en puissance de 2 : 512𝑘𝑏𝑖𝑡𝑠 , soit 64𝐾𝑜 . ⋆ ainsi on adapte la taille de la fenêtre à la capacité du réseau, afin d’optimiser son utilisation : l’émetteur recevra un ACK pour l’envoi d’une fenêtre complète juste à temps pour recommencer. Sélection de la taille de la fenêtre de réception en programmation Socket Sous Python : 1 ma_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 2 ma_socket.setsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF, taille) 3 print 'Taille buffer utilisee:',ma_socket.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF) Pour le transfert d’un fichier de 10 Mo : xterm Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ xterm pef@solaris:~$ time python test_option_tcip.py Connexion : 164.81.60.6 Taille buffer initial: 87380 Taille buffer utilisee: 200000 pef@solaris:~$ time python test_option_tcip.py Connexion : 164.81.60.6 Taille buffer initial: 87380 Taille buffer utilisee: 2240 real user sys real user sys 0m8.213s 0m0.080s 0m0.620s — 5m16.549s 0m0.244s 0m3.912s 13 décembre 2015 — 53 TCP : des mesures sur la connexion TCP : le calcul de débit Débit maximal d’une connexion TCP Le débit d’une connexion TCP dépend du temps d’acheminement des données et de leur acquittement, et de la taille du buffer de réception : ⋄ 𝑅𝑇 𝑇 est le «round trip time» 𝑑 𝑒𝑏𝑖𝑡 ´ ≤ u�u�u�u� u�u� u� ⋄ 𝑅𝑊 𝐼𝑁 est la taille de la fenêtre de réception. Exemple avec la création d’un flux avec iperf ⋆ On mesure le RTT avec la commande ping : Il existe un certain nombre de serveurs permettant de mesurer : ⋆ les caractériques de la connexion (type de ligne de transmission, modifications réalisées par le FAI, etc) ⋆ l’influence sur le protocole TCP : ⋄ de la configuration du système ; ⋄ de la connexion. Sur http://npad.onenet.net/toolkit/gui/perfAdmin/directory.cgi, une liste de serveurs répartis dans le monde. xterm pef@darkstar:~$ ping -c 1 msi.unilim.fr PING msi.unilim.fr (164.81.60.6): 56 data bytes 64 bytes from 164.81.60.6: icmp_seq=0 ttl=50 time=44.537 ms ⋆ On intercepte la communication avec tcpdump xterm pef@darkstar:~$ tcpdump -c 2 -nnvvX tcp and port 5011 reading from file capture_connexion_tcp_msi.pcap, link-type EN10MB (Ethernet) 11:51:34.142682 IP (tos 0x0, ttl 64, id 19178, offset 0, flags [DF], proto TCP (6), length 64, bad cksum 0 (->2454)!) 192.168.42.122.55350 > 164.81.60.6.5001: Flags [S], cksum 0xcbac (incorrect -> 0x0979), seq 3553494331, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 65182048 ecr 0,sackOK,eol], length 0 11:51:34.185676 IP (tos 0x0, ttl 50, id 0, offset 0, flags [DF], proto TCP (6), length 60) 164.81.60.6.5001 > 192.168.42.122.55350: Flags [S.], cksum 0xb687 (correct), seq 4127531836, ack 3553494332, win 5792, options [mss 1460,sackOK,TS val 61550677 ecr 65182048,nop,wscale 6], length 0 ⋆ On apprend que : ⋄ le serveur msi.unilim.fr propose un «WindowScale» de 6, ce qui indique que il faut multiplier la taille de la fenêtre par 26 = 64, soit une taille de fenêtre de réception 5792 ∗ 64 = 370688 ; ⋄ le débit maximal : 370688/0.0445 = 8𝑀𝑏𝑝𝑠 si la taille de la fenêtre ne diminue pas au cours de la communication (débit inférieur à la capacité d’un lien Ethernet 10𝑀𝑏𝑝𝑠 ). TCP : le calcul de débit ⋆ on utilise la commande «iperf» en mode serveur sur ⋆ en mode client sur «darkstar» (le client envoie un flux vers msi.unilim.fr xterm bonnefoi@msi:~$ ./bin/iperf -s -----------------------------------------------------------Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) -----------------------------------------------------------[ 4] local 164.81.60.6 port 5001 connected with xxx port 55350 [ 4] 0.0-12.2 sec 1.25 MBytes 860 Kbits/sec ⋆ on observe avec la commande tcptrace : le serveur) : Dans l’option «more details», on apprend : ⋆ MSS : 1448 octets, modifié par le FAI… TCP : RFC 1323 ou TCP pour les liaisons «hautes performances» Problèmatique des réseaux à débit haute performance Ces réseaux sont appelés des LFN, «Long Fat Network», ils ont un grand BDP, «Bandwidth Delay Product». xterm pef@darkstar:~/iperf-2.0.5/src$ ./iperf -c msi.unilim.fr -----------------------------------------------------------Client connecting to msi.unilim.fr, TCP port 5001 TCP window size: 129 KByte (default) -----------------------------------------------------------[ 3] local 192.168.42.122 port 55350 connected with 164.81.60.6 port 5001 [ID] Interval Transfer Bandwidth [ 3] 0.0-11.0 sec 1.25 MBytes 951 Kbits/sec Les améliorations pour gérer ces «éléphants» sont : ⋆ «window scale factor» : qui permet d’agrandir la taille de la fenêtre de réception en la multipliant par un coefficient 𝑡𝑎𝑖𝑙𝑙𝑒 ∗ 2u�u�u�u� u� u�u�u�u�u�u� ; ⋆ «fast-restransmit»&«fast-recovery» : conserver au mieux le débit ; ⋆ «Selective Acknowledge» : éviter de gaspiller du débit ; ⋆ «Timestamps» : de 1𝑠𝑒𝑐𝑜𝑛𝑑𝑒 à 1𝑚𝑠 qui permettent : ⋄ «RTTM», Round Trip Time Measurement : une meilleur mesure du RTT calculable sur chaque échange y compris ⋄ «PAWS», Protect Against Wrapped Sequence Numbers : ⋆ la taille du numéro de séquence est de 32bits, il faut donc pour «cycler» : les segments retransmis ; Scénario : ▷ un segment perdu Sperdu avec un numéro de séquence 𝑦 arrive sur le récepteur ; ARPANET 56kbps 7KBps 3*10**5 (~3.6 days) ▷ ce segment perdu a été retransmis depuis longDS1 1.5Mbps 190KBps 10**4 (~3 hours) Ethernet 10Mbps 1.25MBps 1700 (~30 mins) temps ; DS3 45Mbps 5.6MBps 380 ▷ la communication à «cyclé» et se trouve au numéro FDDI 100Mbps 12.5MBps 170 de séquence 𝑥 ; Gigabit 1Gbps 125MBps 17 ▷ 𝑦 est proche de 𝑥 et fait partie de la 𝑅𝑐𝑣𝑊 𝑖𝑛𝑑𝑜𝑤 ⇒ Sperdu peut s’insérer de nouveau dans la connexion ! ⋆ On utilise alors le Timestamp pour identifier Sperdu, comme étant un vieux segment à ne plus utiliser : Timestamp(Sperdu) < Timestamp(courant) Network _______ Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ B*8 B bits/sec bytes/sec secs _______ ______ ______ — Twrap 13 décembre 2015 — 54 THE UDP HEADER Les ports et les protocoles UDP & TCP Figure 10.2 shows the UDP header. There are only four fields, and the data inside the TCP : la configuration, le «tuning» La configuration du comportement du protocole TCP sous GNU/Linux : xterm pef@solaris:/proc/sys/net/ipv4$ ls tcp* tcp_abc tcp_fin_timeout tcp_abort_on_overflow tcp_frto tcp_adv_win_scale tcp_frto_response tcp_allowed_congestion_control tcp_keepalive_intvl tcp_app_win tcp_keepalive_probes tcp_available_congestion_control tcp_keepalive_time tcp_base_mss tcp_low_latency tcp_congestion_control tcp_max_orphans tcp_cookie_size tcp_max_ssthresh tcp_dma_copybreak tcp_max_syn_backlog tcp_dsack tcp_max_tw_buckets tcp_ecn tcp_mem tcp_fack tcp_moderate_rcvbuf tcp_mtu_probing tcp_no_metrics_save tcp_orphan_retries tcp_reordering tcp_retrans_collapse tcp_retries1 tcp_retries2 tcp_rfc1337 tcp_rmem tcp_sack tcp_slow_start_after_idle tcp_stdurg tcp_synack_retries tcp_syncookies tcp_syn_retries tcp_thin_dupack tcp_thin_linear_timeouts tcp_timestamps tcp_tso_win_divisor tcp_tw_recycle tcp_tw_reuse tcp_window_scaling tcp_wmem tcp_workaround_signed_windows ⋆ tcp_moderate_rcvbuf vaut 1 : active le mode «autotuning», c-à-d la taille de la fenêtre de réception est adaptée ⋆ tcp_rmem&tcp_wmem :l’espace mémoire d’une connexion donné sous 3 valeurs : ⋄ tcp_rmem 4096873802027520 minimal, initial, maximum pour la réception ⋄ tcp_wmem 4096163842027520 minimal, initial, maximum pour l’émission ⋆ les tailles demandées par l’utilisateur avec SO_SNDBUF et SO_RCVBUF sont limitées par : automatiquement pour chaque connexion ; xterm /proc/sys/net/core/rmem_max /proc/sys/net/core/wmem_max - maximum receive window - maximum send window ⋆ les options les plus importantes sont activées : xterm cat /proc/sys/net/ipv4/tcp_timestamps cat /proc/sys/net/ipv4/tcp_window_scaling cat /proc/sys/net/ipv4/tcp_sack Les paramètres à changer pour 4Mo en BDP élevé «Bandwidth Delay Product», ou RTT*capacité xterm echo echo echo echo echo 1 > /proc/sys/net/ipv4/tcp_moderate_rcvbuf 108544 > /proc/sys/net/core/wmem_max 108544 > /proc/sys/net/core/rmem_max "4096 87380 4194304" > /proc/sys/net/ipv4/tcp_rmem "4096 16384 4194304" > /proc/sys/net/ipv4/tcp_wmem 11 UDP, User Datagram Protocol, RFC 768 Il est : ⋆ différent de TCP : pas de connexion, pas d’accusé de réception, pas de tri des datagrammes à la réception, pas de contrôle de flux, pas de garantie contre les pertes ; ⋆ identifié par le numéro de protocole 17 (11 en hexa) dans le datagramme IP ; ⋆ associé au bit DF du datagramme IP (en général) ; ⋆ «stateless», contrairement à TCP : il n’y a pas d’état conservé par les hôtes l’utilisant pour communiquer (pas de TCB, «transmission control block» contenant les TSAPs, les numéros de séquence&acquittement, les buffers de réception/envoi, les fenêtres d’envoi/congestion etc.) ; ⋆ capable de faire du «multicast» (envoyer simultanément à plusieurs destinataires) ; ⋆ capable d’être multiplexé grâce au numéro de port : ⋄ Well-kown ports : de 0 à 1023, sont associés à des protocoles «système» ; ⋄ registered ports : de 1024 à 49151 peuvent être enregistrés auprès de l’ICANN ; ⋄ dynamic : 49152 à 65535 ; ⋄ ephemeral vs persistent : celui d’un client par rapport à celui d’un serveur ; La liste des associations ports/services est indiquée dans le fichier /etc/services, sous GNU/Linux et dans C:\%SystemRoot%\system32\ drivers\etc\SERVICES sous Windows. datagram (the message) are optional. Pour obtenir la liste des ports en attente de connexion pour TCP et de datagramme pour UDP, sous GNU/Linux, à The header is only 8 bytes (64 bits) long. First are the 2-byte Source Port field and l’aide de la commande netstat : the 2-byte Destination Port field. These fields are the datagram counterparts of the xterm $ sudo netstat -lp --inet source and destination IP addresses at the packet level. But unlike IP addresses, there Connexions Internet actives (seulement serveurs) is no locale structure Adresse to the port fields:Etat All values betweenname 0 and 65,353 are represented as Proto Recv-Q Send-Q Adresse distante PID/Program tcp 0 0 *:https LISTEN 2403/apache2 pure numerics.*:* This does not mean that all port numbers, source and destination, are tcp 0 0 *:17500 *:* LISTEN 1979/dropbox the same, however. be divided into well-known, registered, and dynamic tcp 0 0 localhost:mysql *:* Port values can LISTEN 3535/mysqld tcp 0 0 *:www LISTEN 2403/apache2 port numbers. *:* tcp 0 0 *:domain *:* LISTEN 1677/dnsmasq tcp 0 0 *:ssh The Length *:* LISTENin bytes 1706/sshd field gives the length of the UDP datagram, and includes the tcp 0 0 localhost:ipp *:* LISTEN 1561/cupsd header fields along length is 8 (the header alone), and the udp 0 0 *:52906 *:* with any data.The minimum 470/avahi-daemon udp 0 0 *:domain 1677/dnsmasqmaximum UDP datagram lengths maximum value*:* is 65,353. However, the achievable udp 0 0 *:bootpc *:* 393/dhclient are determined*:* by the size of the send and receive buffers on the host end systems, udp 0 0 *:bootpc 21932/dhclient udp 0 0 *:17500 *:*set to around 8000 bytes 1979/dropbox which are usually (although they can be changed). udp 0 0 *:mdns *:* 470/avahi-daemon As already mentioned, hosts are required2328/freeradius to handle 576-byte IP packets at a minimum, udp 0 0 *:radius *:* but many protocols (the most common being DNS and DHCP) limit the maximum size Des protocoles utilisant UDP : of the UDP datagram that they use to 512 bytes or less. □ NTP permet de mettre les ordinateurs à l’heure à 500 millisecondes prèsUDP ; header.This is because The Checksum field ispar theinternet most interesting field in the the checksum a simpled’un value the UDP header fi; elds and data, □ DNS permet de retrouver une adresseisIPnot en fonction nomcalculated symboliqueon(comme un annuaire) if present. The UDP checksum is computed on what is called the pseudo-header. The □ VoIP permet de communiquer vocalement pseudo-header fields par for Internet IPv4 are; shown in Figure 10.3. The all-zero byte is used to provide alignment of the pseudo-header, and the data □ IPTv pour la télé sur Internet (quelle idée !) ; field must be padded to align it with a 16-bit boundary. The 12 bytes of the UDP □ … pseudo-header are prepended to the UDP datagram, and the checksum is computed on the whole object. For this computation, the Checksum field itself is set to zero, and the 16-bit result placed in the field before transmission. If the checksum computes to zero, an all-1s value is sent, and all-1s is not a computable checksum. The pseudo-header fields are not sent with the datagram. UDP Le format du datagramme UDP 1 byte 1 byte 1 byte Destination Port Length (including header) Checksum Datagram Data (optional) FIGURE 10.2 ∘ la taille du datagramme UDP inclue celle de l’entête : elle varie de 8, juste l’entête, à 65 353 (il dépend de la ∘ il est encapsulé danstoday. un datagramme IP de taille minimale à supporter par les routeurs de 576 octets, soit 556 taille du buffer d’envoi de UDP réception souvent à 8000 octets) Theet four header fields. limité Technically, use of the;checksum is optional, but it is often used octets sans l’entête IP (certains protocoles le limitait à 512 octets comme le protocole DNS, Domain Name 268 PART II Core Protocols Server, dans la RFC1035, mais cette limitation a été levée dans la RFC2671) ; Calcul du Checksum 1 byte Ce protocole est utilisé pour les applications : ⋆ de type «demande-réponse», où l’établissement d’une connexion serait trop coûteuse : la requête et la réponse peuvent être contenues dans un seul datagramme. ⋆ «temps réels» : celles dans lesquelles le plus important est d’avoir les données à temps, comme la transmission du son et de l’image. 1 byte Source Port 1 byte 1 byte 1 byte Source IPv4 Address Destination IPv4 Address ⋆ il est calculé avec une pseudo-entête : FIGURE 10.3 ⋆ il n’est pas obligatoire mais conseillé (obligatoire dans IPv6) : si le client envoie avec un checksum, le serveur All 0 byte Protocol (517) UDP Length ⋆ s’il est mauvais le datagramme est éliminé silently : pas de message d’erreur. répond avec un checksum ; Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — The UDP IPv4 pseudo-header. These fields are used for checksum computation and include fields in the IP header. At the receiver, the value of the Checksum is copied and the field again set to zero. The checksum is again computed on the pseudo-header and compared to the received value. If they match, the datagram is processed by the receiving application indicated by the destination port number. If they do not match, the datagram is silently discarded (i.e., no error message is sent to the source). Naturally, using 32-bit IPv4 addresses to compute transport layer checksums will not work in IPv6, although the procedure is the same. RFC 2460 establishes a different set of pseudo-header fields for IPv6. The IPv6 pseudo-header is shown in 13 décembre 2015 — 55 274 PART II Core Protocols UDP : les différents cas de réponses 12 Le Firewall : la décision d’autoriser ou non le traitement du datagramme TCP is a connection-oriented layer on top of the connectionless IP layer. This means Fonctionnement d’un Firewall sur un système Certains de datagramme peuvent générer une réponse d’erreur host, de typeaICMP thatenvois before any TCP UDP segment can be sent to another TCP : connection mustLorsqu’un be datagramme arrive sur une interface par l’intermédiaire de la couche de niveau 2, c-à-d ethernet, une Outcome Action Condition décision established to that host. Connectionless IP has no concept of a connection, and simply de routage doit être prise, en «amont» de la couche de niveau 3 du système : il est possible d’analyser le paquet avant de l’introduire dans la pile TCP/IP locale forwards packets without any understanding Sender if the gets packets ever really got where they UDP request Server a. si le système n’assure pas les fonctions de rouUDP reply from sent to server available were going. teur : server ⋄ le paquet est à destination du système : In contrast to TCP, UDPPort is aisconnectionless transport layer on top of connectionless closed Sender gets ICMP UDP request il est considéré comme en «Entrée», INPUT, IP. UDP segments forwarded to“Port a destination on server unreachable” under the assumption that sent to serverare simply du système : message sooner or later a response will come back from the remote host. The response forms ⋆ il est filtré et/ou éventuellement modifié par gets ICMP Server host le Firewall ; an impliedUDP or request formal acknowledgment thatSender the UDP segment arrived. “Host unreachable” sent to server does not exist ⋆ s’il est accepté, il est dirigé vers un procesAt the top of the TCP/IP stack is the application, or application services, layer. This is message sus s’il en existe un capable de le gérer ; ⋄ le paquet n’est pas à destination du système : il where theUDP client–server concept comes play.gets TheICMP applications themselves typically request Port is blocked by intoSender est ignoré. — sent to server firewall/router come in client or server versions, which is“Port notunreachable true at other layers of TCP/IP. While a Administrative b. si le système assure les fonctions de routeur : host computer might be able to run client prohibited”message processes and server processes at the same⋄ le paquet est à destination du système : il est considéré comme en «Entrée», INPUT, du système : time, in the simplest case, these processes are two different applications. ⋆ il est filtré et/ou éventuellement modifié par le Firewall ; (timeout) UDP request Port is blocked ⋆ s’il est accepté, il est dirigé vers un processus s’il en existe un capable de le gérer ; Client–server application implementation can be extremely simple. A server process sent to server by silent ⋄ le paquet n’est pas à destination du système : firewall/router can start and basically sit and “listen” for clients to “talk” to the server. For example, a ⋆ choix de «forwarder» le paquet vers une interface de sortie en fonction des règles de routage ; (timeout) UDPisrequest Reply on successfully Web server brought up onis alosthost whether there is a browser client ⋆ modifier le datagramme en sortie : intégration de la QoS, traduction d’@IP, etc. sent to server way back pointed at it or not. The Web server process issues a passive open to TCP/IP and essen-La «Sortie», OUTPUT, correspond à des datagrammes créés et émis par le système lui-même. FIGUREidle 10.6on the network side until some client requests content. However, tially remains UDP protocol actions, showing the request–reply outcomes. the Web browser (the client) process issues an active open to TCP/IP and attempts to Le Firewall : la reconnaissance du trafic TCP entrant ou sortant UDP vs TCP (QWUpH 'pFLVLRQ GH URXWDJH 6RUWLH )25:$5' ,1387 287387 7UDLWHPHQWORFDOPRGLILFDWLRQ ILOWUDJHHWF Stateless vs Stateful Other TCP Client– Server Applications Exemple de scenario : Other ⋆ On veut bloquer les communications web entrantes UDP ⋆ On veut autoriser les communications web sortantes Client– The delivery of UDP datagrams is by no means certain. The lack of an expected Comment faire ? Remote Network Name response on the part of a server to a UDP clientLookup request is Server handled by a simple timeout. ▷ Le «web» indique des communications TCP vers le port 80 ; File File ManageRemote Applica▷and Qelle différence entre «sortantes» en «entrantes» ? Responses are not always expected, as might be the case with streaming audio Transfer Email Service Access ment Access ⋄ les paquets «sortants» vont de 172.16.42.24 vers Invideo. The client might resend the datagram, but in manytions cases this might not be the UDP FTP OPERATION SMTP SSH NFS* SNMP DNS* Bloquer le trafic Web Autoriser le trafic Web 172.16.42.24 best strategy. ⋄ les paquets «entrants» vont d’Internet vers 172.16.42.24 ; In some reliable indication that anything is wrong TCP cases, lack of response is not a UDP □ Première proposition : ⋄ on bloque les paquets «entrants» et on autorise ceux «sortants» : ça ne marche pas ! with the network or remote host.Connectionless, Routers routinely filter out unwanted packets, and Connection-Oriented, Reliable Best-Effort ⋄ Car... une communication TCP est composée de paquets «entrants» et sortants : many do so silently, while others send the appropriate ICMP “administratively prohib⋆ des segments TCP sortent avec la requête utilisateur GET / HTTP/1.0… ited” message. ⋆ des segments TCP entrent avec la réponse du serveur HTTP/1.1 200 ok… Some In general, there are five major possible results when an application sends a UDP ⋆ il y a des ACKs, des PUSH etc. Routing IP (Best-effort) ICMP ARPs request, shown in Figure 10.6. Note that any of the replies can be lost on the way back Protocols □ Seconde proposition : to the sender, generating a timeout. ⋄ on laisse passer les segments de données dans les deux sens ; ternet ; Network Access and Physical Layer (Etherent LANs or other) UDP OVERFLOWS *In some instances, NFS and DNS use TCP. ⋄ on contrôle l’établissement des connexions TCP : ⋆ on autorise seulement les segments contenant un SYN en provenance ou à destination du port 80 : ⋄ Problème : un vilain hacker choisit le port source 80 pour établir sa connexion depuis Internet vers ⋄ On est pas arrivé à bloquer le trafic interdit ! 172.16.42.24 : le segment contient un SYN et provient du port 80 : Bingo ! We’ve looked at UDP as a sort of quick-and-dirty request–response interaction between FIGURE 2.4hosts over a network. Delivery is not guaranteed, but neither is an important network property called flowBonnefoi control. –A http://p-fb.net/ lot of nonsense has been written about flow conCours The «Réseaux Avancés I» – P-F. TCP/IPtrol, protocol stack detail. The idea. manyItpossible applications top and manyever possible which is a in very simple just means that no on sender should be able to network links on the bottom all funnel through the IP “hourglass.” — 13 décembre 2015 — 56 Le Firewall Netfilter : trajet du datagramme Le Firewall : la reconnaissance du trafic TCP entrant ou sortant Exemple de scenario (suite) : ⋆ On veut bloquer les communications web entrantes ⋆ On veut autoriser les communications web sortantes Bloquer le trafic Web Autoriser le trafic Web 172.16.42.24 □ Troisième proposition : on utilise le «handshake TCP» et on mémorise un état 1. 2. 3. 4. on autorise uniquement les paquets SYN depuis 172.16.42.24 vers Internet ; lorsque l’on voit passer un segment SYN autorisé, on mémorise l’établissement de la connexion (état NEW) ; si une connexion a été initiée en (2) alors on autorise le segment SYN/ACK a traversé depuis Internet ; si un ACK correspondant à cette connexion est envoyé depuis 172.16.42.24, la connexion est considérée comme ESTABLISHED et on autorise tous les segments associés ; 5. lorsqu’il n’y a plus d’activité ou lorsque l’on intercepte l’envoi réciproque de FIN, on oublie l’état mémorisé et plus aucun segments associés ne peuvent traversés (pour éviter de confondre une connexion sans échange d’une connexion terminée sans échange mutuel de FIN, on peut utiliser le TCP Keep-Alive). Cette troisième proposition repose sur la mémorisation d’un état, «stateful», correspondant de l’automate TCP : La création d’un règle de firewall, se fait à l’aide de la commande iptables en choisissant la table ainsi que la chaîne en faisant partie dans laquelle on veut entrer la règle. Chacune de ses tables correspond à différentes opérations sur les paquets traversant la pile TCP/IP du système : on a jouté des «hooks» ou crochets, dans les différentes étapes du routage, où l’on peut faire intervenir des règles afin de laisser ou non le paquet transiter (éventuellement après modification). Il existe différentes tables, et pour chacune de ces tables il existe différentes chaînes : ▷ filter : celle utilisée par défaut lorsque l’on indique pas explicitement la table ; ⋄ INPUT : traite les paquets à destination de la machine locale ; ⋄ FORWARD : traite les paquets qui traverseront par routage la machine locale (ne pas oublier d’activer l’option ⋄ OUTPUT : traite les paquets créés sur la machine locale et à destination de l’extérieur ; de «forwarding» du système) ; ▷ nat : pour effectuer de la traduction d’adresse source et/ou destination du datagramme (peut impacter les ports dans le cas d’UDP et de TCP) ⋄ PREROUTING : traite les paquets tout juste entrés et avant qu’ils ne soient éventuellement «forwardés» ; ⋄ OUTPUT : traite les paquets créés localement avant qu’il ne soient routés ; ⋄ POSTROUTING : traite les paquets modifiés avant qu’ils ne quittent la machine mais après avoir été routés ; ▷ mangle : pour effectuer des transformations sur certains champs du datagramme et de son contenu. ⋄ PREROUTING, INPUT, OUTPUT, POSTROUTING, FORWARD. Le firewall sous GNU/Linux : NetFilter L’outil de firewall sous Linux : Netfilter Le Firewall Netfilter : trajet du datagramme NAT and Packet Mangling with iptables Le parkour du datagramme Quand un paquet se présente sur une interface, il circule de la manière suivante : «Give me your invitation, Sir» «Ken Sent Me…» On parle de : SPI, «Stateful Packet Inspection». La commande permettant de contrôler le firewall netfilter est : ⋆ iptables sous IPv4 ⋆ ip6tables sous IPv6. La table à apprendre ⟶ 7KH rules in the PREROUTING chain of the mangle table are analyzed by the kernel Cours «Réseaux Avancés I» – P-F. – before http://p-fb.net/ whenBonnefoi a packet comes in, the routing process takes place. If the packet is not for the router (is destined to a host behind it), the kernel looks up the rules in the mangle table FORWARD chain and afterwards the mangle table POSTROUTING chain. Chaque table intervient à une étape du parcours du datagramme dans ce circuit et peut intervenir sur ce parcours : ⋆ modifier le datagramme ; ⋆ bloquer le datagramme. Un datagramme peut être traité : ▷ avant la décision de routage dans la chaîne PREROUTING, ▷ après dans la chaîne POSTROUTING. — 13 décembre 2015 — 57 Le Firewall Netfilter : la commande iptables Le Firewall Netfilter : les protocoles Gestion des règles : définition & application à l’aide de la commande iptables Par protocole ⋆ tcp : permet de traiter les connexions TCP et les options présentes dans les segments : ⋄ --syn : indique que le segment doit avoir le bit SYN à 1 à l’exclusion des autres. Avec iptables, on peut réaliser les différentes opérations pour une règle : ⋆ -A ou --append : ajouter ⋆ -D ou --delete : effacer ⋆ -I ou --insert : insérer ⋆ -R ou --replace : remplacer Il faut spécifier la table et indiquer l’opération suivie de la chaîne concernée. ⋄ --tcp-flags : permet d’indiquer les drapeaux qui doivent être présents : SYN, RST, ACK, FIN, URG, PSH et Cela permet de désigner les demandes d’établissement connexions ; ALL et NONE. Il est nécessaire de donner une liste des drapeaux que l’on veut surveiller sous forme d’une liste de valeurs séparées par des virgules puis après un espace des drapeaux qui doivent être à 1. Par exemple : --tcp-flags SYN,RST,ACK,FIN (uniquement SYN est équivalent à --syn) ; ⋄ --mss : permet de prendre en compte la taille maximale du segment. ⋄ --source-port ou --sport : on peut éventuellement indiquer un intervalle avec la notation 80:90 ; ⋄ --destination-port ou --dport : idem. Ainsi, avec iptables -t filter -A INPUT , on peut ajouter une règle pour la table de filtrage et dans la chaîne INPUT correspondant aux paquets en entrée d’interface réseau. Enfin une chaîne doit finir par une «cible» ou «target» afin de faire circuler le paquet. Cette cible est indiquée avec l’option -j pour «jump». Ainsi, la règle iptables -t filter -A INPUT -j DROP va rejeter tous les paquets en entrée. iptables -t filter -A OUTPUT -p tcp --syn --sport 80 -j DROP Dans le cas de plusieurs interfaces, on peut préciser avec -i l’interface d’entrée et -o l’interface de sortie. Il faut être cohérent : un -i eth0 s’applique sur la chaîne INPUT mais peut-être pas sur la chaîne OUTPUT. Quand un paquet entre dans une chaîne, il parcours les règles dans l’ordre de leur définition : ⋆ jusqu’à en trouver une qui s’applique sur lui : il poursuit son chemin dans la «cible» indiquée (éventuellement une autre chaine lorsqu’elle a été définie par l’utilisateur) ; ⋆ jusqu’à ce qu’il n’y en est plus : la règle générale ou «policy» s’applique : soit ACCEPT ou DROP (on définie la policy associée à un chaîne avec l’option -P et en indiquant une «cible» qui doit être non définie par l’utilisateur). Exemple : iptables -t filter -P FORWARD DROP . Le Firewall Netfilter : le parcours des chaînes | Règle3: -p UDP -j DROP ---------------------------- | ---------------------------- On sort de la chaine utilisateur : ⋆ avec la «cible» RETURN qui permet de retourner dans la chaîne d’où l’on a été envoyé ⋆ par épuisement des règles sans concordance (circulation ci-contre). iptables -A INPUT -i eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT Cette règle permet de laisser passer les paquets DHCP. ⋆ icmp : pour la gestion du protocole icmp : ⋄ --icmp-type : permet de spécifier le type du paquet icmp iptables -A INPUT -p icmp --icmp-type 8 -j DROP Cette règle supprime les messages ICMP d’«echo request» Le Firewall Netfilter : les modules Le datagramme parcours les règles en cherchant la première qui lui correspond, «match». `INPUT' `test' Pour définir ses propres chaînes et pouvoir combiner des ------------------------------------------------------sélections complexes, on utilise l’option : | Règle1: -p ICMP -j DROP | | Règle1: -s 192.168.1.1 | iptables -N nom_chaine |--------------------------| |--------------------------| (sur l’exemple ci-contre, la chaîne «test» a été ajoutée) | Règle2: -p TCP -j test | | Règle2: -d 192.168.1.1 | |--------------------------| ⋆ udp : permet de traiter le protocole UDP ⋄ --source-port ou --sport : on peut éventuellement indiquer un intervalle avec la notation 80:90 ; ⋄ --destination-port ou --dport : idem. v `INPUT' | __________________________ / ------------------------|--/ | Règle1 | /| |-----------------------|/-| | Règle2 / | |--------------------------| | Règle3 `test' | | |----------------------|---| | Règle2 | | -----------------------v---- /--+___________________________/ ------------------------|--v Faire la concordance entre le datagramme (ou même la trame qui l’a contenu) et une règle : ⋄ avec des options de la commande iptables : -p ou --protocol : qui permet de spécifier le protocole que doit contenir le paquet (tcp, udp ou icmp), -s pour l’@IP source, -d pour l’@IP destination ; ⋄ avec de nombreux modules et l’option -m ou -match : cette option est suivie du nom du module à utiliser, ainsi que des options spécifiques à ce module préfixée avec -De même, il existe différentes cibles, target, qui sont paramètrables avec des options. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ ⋆ ⋆ ⋆ ⋆ --state : où l’état est indiqué par une liste d’états de connexion séparés par des virgules NEW : correspond à l’établissement d’une nouvelle connexion ; ESTABLISHED : correspond aux paquets d’une connexion déjà établie ; RELATED : le paquet est en rapport avec une connexion déjà existante (un message ICMP d’erreur ou par exemple, le protocole FTP, où deux connexions sont liées, l’une de contrôle et l’autre de données) ; ⋆ INVALID : le datagramme ne peut être identifié ou ne correspond pas à un état attendu. La configuration initiale du firewall : verrouillage maximal # Vide toutes les chaînes v -----------------------|---| Règle1 Par état ou «state» : Permet de tenir compte de l’état d’une connexion pour disposer d’un firewall «statefull» /sbin/iptables --flush On autorise les datagrammes associés à une connexion établie, ESTABLISHED,RELATED (autorisée par une règle utilisant NEW). # Autorise tout le trafic possible sur l'interface réseau interne de boucle (loopback) /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A OUTPUT -o lo -j ACCEPT # Positionne les Policies par défaut : on bloque tout /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT DROP Ensuite, viendront les règles autorisant explicitement l’établissement d’une connexion, --syn , suivant une concordance précise. /sbin/iptables -P FORWARD DROP Par exemple, pour les connexions SSH : # Autorise le trafic déjà établie à passer à travers le routeur 22 --syn -j ACCEPT /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Autorise tout trafic en sortie (outbound) /sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT iptables -t filter -D INPUT -p tcp --dport ou de manière équivalente : iptables -t filter -D INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT On peut vérifier avec la commande sudo conntrack -L , l’autorisation du port 22, «SSH» : tcp 6 431264 ESTABLISHED src=192.168.42.122 dst=192.168.42.83 sport=58143 dport=22 src=192.168.42.83 dst=192.168.42.122 sport=22 dport=58143 [ASSURED] mark=0 use=2 sur les anciennes versions de Linux, on consultait le fichier spécial /proc/net/ip_conntrack. On peut également utiliser la commande sudo conntrack -E pour une suveillance en «temps réel». — 13 décembre 2015 — 58 Le Firewall Netfilter : généralisation de la notion de connexion Gestion des datagrammes UDP et ICMP Pour permettre au Firewall d’accepter les datagrammes en retour, la partie «connection tracking» de netfilter : ▷ enregistre les datagrammes en sortie ; ▷ autorise pendant une certaine durée un datagramme en retour : ⋄ de TSAP inverse à celui envoyé dans le cas du protocole UDP ; Avec la commande conntrack : udp 17 30 src=192.168.1.2 dst=192.168.1.5 sport=137 dport=1025 [UNREPLIED] src=192.168.1.5 dst=192.168.1.2 ⋄ de réponse ICMP dans le cas de l’envoi d’un «echo request» (pour un ping) ; Pour le protocole ICMP, on a une notion de : ⋆ «NEW, ESTABLISHED» : lors d’un «ICMP Echo Request» ; ⋆ «NEW, RELATED» : lorsque les protocoles UDP et TCP sont susceptibles d’échouer, on autorise le paquet ICMP d’erreur à traverser le firewall en retour. Pour surveiller, l’application des règles et voir si elles se déclenchent : xterm $ sudo watch ebtables -L --Lc xterm $ sudo watch iptables -t nat -nvL Pour sauvegarder/restaurer ce que l’on a définit dans iptables : ∘ iptables-save ⋆ -c : permet de conserver les valeurs de compteurs à fin de statistiques ; ⋆ -t : permet de sélectionner la table à sauvegarder (si l’option est omise, toutes les tables sont sauvegardées). ∘ iptables-restore ⋆ -c : permet de restaurer les valeurs de compteur ; ⋆ -n : permet de ne pas effacer les règles existantes avant restauration. Pour réinitialiser les compteurs de concordance de règles du firewall : xterm $ sudo iptables -Z FORWARD Pour suivre l’activité des transmissions de trames du protocole TCP sous shell avec tcpdump : Ne pas oublier d’autoriser le trafic «RELATED» : xterm $ sudo tcpdump -ev -i eth0 tcp and port 80 Ici, on ne s’intéresse qu’au trafic TCP, de port source ou destination 80. On peut également utiliser l’affichage «temps réel» des événements avec conntrack : xterm $ sudo conntrack -E Le Firewall Netfilter : les commandes utiles Commandes utiles pour la gestion de l’ensemble des règles du firewall En utilisant l’option supplémentaire -h on peut obtenir de l’aide sur l’utilisation d’un module donné : iptables -m limit -h . L’utilisation d’un «!» devant une sélection permet de faire le contraire (c’est la négation de l’option de sélection). Pour nettoyer une table des chaînes définies, il faut utiliser l’option -F pour «flush» : xterm $ iptables -t nat -F PREROUTING Pour afficher l’ensemble des règles du firewall : xterm $ sudo iptables -t filter -L Seul l’administrateur peut afficher le contenu des règles de firewall, pour des raisons de sécurité. xterm Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN limit: avg 3/min burst tcp -- anywhere anywhere tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN 1 DROP Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ COMPLÉMENT COMPLÉMENT sport=1025 dport=137 use=1 La valeur 30 indique un temps d’attente de 30 secondes. [UNREPLIED] indique que le paquet réponse n’a pas été reçu. ?? Le Firewall Netfilter : les commandes utiles Commandes utiles pour la gestion de l’ensemble des règles du firewall Firewall : le plan de la présentation des usages ▷ le «filtrage» : autoriser ou non des connexions : ⋄ sur le poste local (où tourne le Firewall) ; ⋄ sur les machines du réseau situées derrière le routeur/firewall ; ▷ le «NAT» : faire de la traduction d’@IP lors du routage des datagrammes : ⋄ partage d’@IP globale ; ⋄ protection des postes du réseau situés derrière le routeur/firewall ; ⋄ mise en place de «proxy transparent» ; ⋄ faire du «port forwarding» ; ▷ la «QoS» : faire du «trafic shaping», c-à-d adapter les datagrammes en sortie du routeur/firewall à la QoS : ⋄ classifier le trafic : reconnaître les différents flux (services TCP, RTP, «Real-Time-Protocol» basé sur UDP, ⋄ marquer les datagrammes pour adapter leur prise en charge lors de leur acheminement suivant de la QoS : ⋆ en sortie du routeur : en contrôlant le débit ; ⋆ lors de l’acheminement du datagramme : en fixant les champs TOS/DSCP pour les autres routeurs ; ⋄ faire de l’équilibrage de charge ; ⋄ tenir compte de quota, des heures de bureau etc. VoIP, IPtv, p2p, etc.). On parle de «Deep Packet Inspection», car on s’intéresse à son contenu. ▷ la protection contre les attaques : ⋄ contre les attaques «brute force» : ⋆ ralentir les accès en général ; ⋆ ralentir les accès suivant leur origine ; ⋄ protéger contre les paquets surdimensionnés (le «ping of death», les «buffer overflow», etc.), ⋄ protéger contre des tentatives de réseaux connus (par exemple de Chine ou de Fédération de Russie…) ▷ la programmation en collaboration avec le firewall : le «NFQueue». — 13 décembre 2015 — 59 NAT & PAT : traduction d’adresse et de port NAT & PAT : l’utilisation de netfilter et de la table nat Rappel du contexte SNAT, «Source NAT» & Masquerade ▷ pour communiquer sur Internet, il faut une @IP unique et publique (pas privée) ; ▷ du fait d’un manque d’@IP publiques, il est nécessaire de partager une même @IP avec plusieurs postes ; La solution du NAT Le NAT, «Network Address Translation» permet de traduire une @IP en une autre : réécrire l’@IP source ou destination d’une machine située derrière un routeur réalisant du NAT (c’est le cas des «box ADSL»). Autre avantage du NAT : dissimuler des postes : il ne sont accessibles qu’au travers du routeur et non directement. Pour communiquer depuis l’extérieur vers une machine située à l’intérieur, il faut configurer explicitement le routeur NAT. NAT and Packet Mangling with iptables 7RH[SODLQ1$7LQPRUHGHWDLOOHW VWDNHDORRNDWWKHIROORZLQJGLDJUDP On utilise les réseaux dits privés, réseaux non «routables», (RFC 1918) : ⋆ 10.0.0.0/8 ⋆ 172.16.0.0/12 ⋆ 192.168.0.0/16 ▷ le SNAT correspond à la réécriture de l’@IP source du paquet ; ▷ en absence de configuration, une connexion initiée depuis Internet à destination d’une machine du réseau privée est impossible ; C’est une bonne protection pour les machines du réseau privé. ▷ il existe deux formes : ⋄ le «static SNAT» : une ou plusieurs @IP privées sont réécrites vers la même @IP publique ; ⋄ le «dynamic SNAT» : une ou plusieurs @IP privées sont réécrites vers un ensemble d’@IP publiques. Netfilter utilise pour chaque nouvelle connexion l’@IP publique la moins récemment utilisée ou une @IP aléatoire. ⋄ le «masquerading» ou MASQ fonctionne Chapter 4 comme le «static NAT», mais on ne spécifie pas l’@IP à utiliser : 7KHIROORZLQJGLDJUDPSUHVHQWVDQH[DPSOHRIKRZ61$7RU0DVTXHUDGHZRUNV c’est celle de l’interface de sortie du routeur empruntée par le datagramme. Exemple : ⋆ la machine 192.168.1.3 veut communiquer avec 2.2.2.2 ; ⋆ le routeur effectue du SNAT et réécrit l’@IP source Pour qu’une machine du réseau privé communique sur Internet, le routeur NAT : ⋄ réécrit dans les datagrammes l’@IP privée de la machine avec sa propre @IP publique ; ⋄ doit différencier ses datagrammes de ceux des machines du réseau privé ; ⋄ doit garder une trace de toutes les connexions TCP et UDP (!!!) qui le traverse ; privée en 1.1.1.1, son @IP publique de sortie ; ⋆ le routeur mémorise la connexion (les informations sont consultables dans /proc/net/ip_conntrack) ; ⋆ au retour le routeur réécrit l’@IP destination du pa- On parle de «connection tracking». quet vers 192.168.1.3. C’est le principe des «stateful firewalls». We have a Linux router with one Internet connection and a public IP address—1.1.1.1. We can use whatever IP addresses we want from the private IP segments we presented LQ&KDSWHUVRZHFKRRVHIRUWKLVQHWZRUNDVDVXEQHWIRURXUSULYDWH QHWZRUN7KHSULYDWH,3VHJPHQWVDUHGHVFULEHGLQ5)&DQGDUH x SUHÀ[ x SUHÀ[ x SUHÀ[ 1RZVLQFHLVDSULYDWHQHWZRUNWKRVH,3DGGUHVVHVDUHQRWURXWHG anywhere in the Internet, meaning that no host on the Internet can access the devices LQRXUQHWZRUNVRXVLQJSULYDWH,3DGGUHVVHVDOVRRIIHUVVRPHSURWHFWLRQGRHVQ WLW" In this diagram, the computer with the IP address 192.168.1.3 tries to initiate a FRQQHFWLRQWR7KHSDFNHWLVSDVVHGWRWKH/LQX[URXWHUZLWKWKHVRXUFH,3 address 192.168.1.3 and destination IP address 2.2.2.2. NAT and Packet Mangling with iptables ,IWKHFRPSXWHULV61$7HGRU0DVTXHUDGHGWKH/LQX[URXWHUZLOOFKDQJHWKHVRXUFH IP address in the packet header from 192.168.1.3 to 1.1.1.1 and will pass the packet 8VLQJ61$7RU0DVTXHUDGHFDQLQLWLDWHD towards 2.2.2.2 according to the routing process. Information about this connection is connection to 2.2.2.2, stored in /proc/net/ip_conntrack . but 2.2.2.2 can't initiate a connection to NAT & PAT : traduction d’adresse et de port NAT & PAT : l’utilisation de netfilter et de la table nat Le «connection tracking» When 2.2.2.2 replies, the IP packet NAT» that arrives in the Linux router will have DNAT, «Destination source IP address 2.2.2.2 and destination IP address 1.1.1.1. Linux searches for In order for the hosts using private IP addresses to communicate with other hosts on WKH,QWHUQHWWKH1$7URXWHUUHZULWHVWKHLUSULYDWH,3DGGUHVVHVLQWRLWVRZQSXEOLF,3 ∘ pour UDP, on mémorise l’envoi d’un datagramme UDP et on autorise le retour du datagramme UDP corres[ 90 ] pondant de TSAP inverse (d’où le terme impropre de «connexion» !!!) xterm pef@solaris:~$ sudo conntrack -L tcp 6 431996 ESTABLISHED src=199.47.217.147 dst=192.168.42.83 sport=80 dport=51911 src=192.168.42.83 udp 17 3 src=192.168.42.59 dst=192.168.42.255 sport=138 dport=138 [UNREPLIED] src=192.168.42.255 dst=199.47.217.147 sport=51911 dport=80 [ASSURED] mark=0 use=2 ∘ pour UDP & TCP, on mémorise les @IPs, les numéros de port, le protocole, l’état de la connexion et les timeouts. dst=192.168.42.59 sport=138 dport=138 mark=0 use=2 192.168.1.3, because this is a private IP address. DNAT againstle information stored at the previous At this point, Linux will change the @IP publique à une @IP privée ; ▷ DNAT permet de step. faire correspondre une DN$7RU'HVWLQDWLRQ1HWZRUN$GGUHVV7UDQVODWLRQVPDSVDSXEOLF,3DGGUHVVWR destination IP address in the packet header to 192.168.1.3 and will pass the IP packet DSULYDWH,3DGGUHVV'1$7LVWKHUHYHUVHRI61$7VRLI\RX61$7WRWUDQVODWHD WRZDUGVWKH1$7HGFRPSXWHUDFFRUGLQJWRWKHURXWLQJSURFHVV ▷ le DNAT est le contraire du SNAT (si on utilise le SNAT pour traduire une @IP privée en une @IP publique et SULYDWH,3DGGUHVVLQWRDSXEOLF,3DGGUHVVDQG'1$7WRWUDQVODWHWKHVDPHSXEOLF,3 information about this packet in /proc/net/ip_conntrackDQGÀQGVDPDWFK le DNAT pour faire l’opération inverse sur les mêmes @IP publique et privée, alors on parle de «full NAT»). address into the same private IP address, the [ 93 ] result will be IXOO1$7. '1$7LVXVXDOO\XVHGZKHQ\RXKDYHVHUYHUVEHKLQG1$7VRWKHVDPHSXEOLF,3 address is mapped to different private IP addresses depending on ports or protocols. 7KLVSURFHVVLVDOVRFDOOHGport forwarding. Le DNAT est utilisé dans le cas de serveurs situés derrière le routeur NAT : la même @IP publique est traduite en Let's take a look at the following diagram: différentes @IP privées en fonction du numéro ou du protocole. On parle de «port forwarding». Exemple : ⋆ une connexion est initiée de 2.2.2.2 vers 1.1.1.1 ; ⋆ le routeur NAT détecte que la connexion ne Différents scénarios de réécriture d’adresse ⋆ un vers un, one-to-one, 1:1 : une seule @IP privée est traduite en une @IP publique ; concerne pas lui-même mais un serveur du réseau privé ; ⋆ un vers plusieurs, one-to-many, 1:many : une @IP privée est réécrite en différentes @IP publiques : pour chaque ⋆ le routeur réécrit l’@IP destination en l’@IP pri- connexion le routeur NAT choisie une @IP publique parmi un ensemble disponible (utile pour le respect de vie privée ou privacy) ; ⋆ plusieurs vers une, many-to-one, many:1 : plusieurs @IP privées sont réécrites en une même @IP publique. Si l’@IP appartient au routeur NAT, on parle de «masquerading». ⋆ plusieurs vers plusieurs, many-to-many, many:many : plusieurs @IP privées sont réécrites vers un ensemble d’@IP publiques. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ vée du serveur 192.168.1.3, capable de traiter cette connexion ; ⋆ les réponses en provenance de 192.168.1.3 sont réécrites depuis la source 1.1.1.1 Sur certaines box ADSL, on parle de DMZ, «Demilitarized Zone» pour la fonction de DNAT : il redirige tout le trafic en provenance de l’extérieur vers une machine du réseau privé en plus de faire du masquerading en sortie. [ 94 ] — 13 décembre 2015 — 60 NAT and Packet Mangling with iptables 61$7LVRQHRIWKHPRVWFRPPRQO\XVHGW\SHVRI1$7ZLWKLSWDEOHVEHFDXVHRIWKH topology used. IP_NF_FTP)73SURWRFROVXSSRUWIP_NF_IRC (IRC protocol support), IP_NF_AMANDA (Amanda backup NAT & PATIP_NF_TFTP : le «Full 7)73SURWRFROVXSSRUW NAT» protocol support), and IP_NF_CT_PROTO_SCTP6&73SURWRFROFRQQHFWLRQ Le «Full NAT» ou «Full Cone NAT» x tracking support) are connection tracking helpers for the protocols they ⋆ Le SNAT GHVFULEH,IZHQHHGWRDOORZWKH1$7HGHQGSRLQWVWRRQHRIWKHVHSURWRFROV permet de faire de la traduction d’adresse uniquement lorsqu’une connexion est réalisée depuis le réseau privé vers l’extérieur. ZHQHHGWRFRPSLOHWKDWPRGXOHDQGORDGLWZKHQVWDUWLQJRXUÀUHZDOO ⋄ la connexion est mémorisée ; ⋄ les paquets en retour subissent automatiquement le DNAT associé ; ⋆ le DNAT permet de réécrire l’@IP destination d’une connexion initiée depuis l’extérieur vers un port ou protocole : 7KHchoisie nat table contains three chains—PREROUTING, POSTROUTING, and OUTPUT. Each ⋄chain on change l’@IP destination versare uneexamined @IP du réseau privée. may contain rules that sequentially until one of the rules matches ⋄DSDFNHWWKHVDPHDVIRUWKHFKDLQVLQWKHQHWÀOWHUWDEOH7KHVHFKDLQVFDQEHYLHZHG les paquets en retour subissent automatiquement le SNAT associé. by«Full issuing command ⋆ Le NAT»the correspond à iptables –t nat –L. ⋄ effectuer le DNAT d’une @IP publique toujours vers la même @IP privée ; router:~# iptables -t nat -L ⋄ effectuer le SNAT d’une @IP privée toujours vers la même @IP privée ; Chain PREROUTING (policy ACCEPT) ⋄ ce fonctionnement est appelé «DMZ» par les box ADSL : toute connexion non initiée depuis le réseau privée Let's see, for example, the following scenario: 1HWZRUNLVLQRXURIÀFH:HKDYHDQ(WKHUQHWFRQQHFWLRQIURP RXUSURYLGHUZKLFKDVVLJQHGXVWKH,3DGGUHVVDQGWKHGHIDXOW gateway 1.2.3.2. NAT : les commandes iptables de netfilter et la table nat $OOWKHFRPSXWHUVLQWKHQHWZRUNKDYHWKHGHIDXOWJDWHZD\VHWWR SNAT 192.168.1.1. iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j SNAT –-to 1.2.3.1 Ou dans le cas où l’@IP du routeur est configurée dynamiquement (par exemple en DHCP) The QHW¿OWHUQDW7DEOH target prot opt source destination (donc non référencée dans la table du «connection tracking») est redirigée vers la même @IP privée et ce sans autorisation supplémentaire (pas de DNAT à configurer explicitement ni de SNAT non plus). Chain POSTROUTING (policy ACCEPT) target prot opt source Le PAT, «Port Address Translation» destination Il correspond : Chain àOUTPUT (policy ACCEPT) ⋄ permettre de faire SNAT en mode masqueradingdestination (many-to-one) en changeant au besoin le port targetau routeur prot optdusource d’origine ; ⋄If the fairekernel du DNAT en fonction numérobuilt, de portthe choisi qui peut du port de load destination final. modules ared’un properly Linux boxêtre willdifférent automatically the modules iptable_nat and ip_conntrack when issuing any commands with iptables –t natVRWKHUHLVQRQHHGWRXVH/LQX[XWLOLWLHVLQVPRGRUPRGSUREHIRU iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE Pour donner un ensemble d’@IP : iptables –t nat –A POSTROUTING –s 192.168.1.0/24 Our Linux router has two Ethernet interfaces: –j SNAT –-to 1.2.4.0- 1.2.4.32 x Eth0, with the IP address 192.168.1.1 and netmask 255.255.255.0, is connected WRDVZLWFKWKDWFRQQHFWVRWKHUGHYLFHVLQWKHQHWZRUN x Eth1, with the IP address 1.2.3.1 and netmask 255.255.255.252, is connected to the provider's Premises Equipment), can be a –j DSL DNAT iptables –t CPE nat(Customer –A PREROUTING –d which 1.2.4.1 modem, cable modem, media converter, etc. DNAT –-to 192.168.1.50 Redirection vers une machine sur le port SSH, lorsque la connexion vient sur le routeur sur le port 65521 : WHFDQVHWXS61$7VRWKDWDOOGHYLFHVLQWKHQHWZRUNDFFHVVWKH Internet with only one rule: iptables –t nat –A PREROUTING –d 1.2.4.2 –p tcp –-dport 65521 –j DNAT –-to 192.168.1.100:22 iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j SNAT –-to 1.2.3.1 7KLVFRPPDQGKDVWKHVDPHHIIHFWDVWKHIROORZLQJFRPPDQGZKLFKZHZRXOGXVH Proxy transparent if the IP address of Eth1 were dynamically assigned, or if we used a dial-up modem instead of an Ethernet card: Les chaînes associées 7KHPREROUTING and POSTROUTINGFKDLQVKDYHPHDQLQJIXOQDPHV7KHPREROUTING chain is aQDO\]HGE\WKHNHUQHOEHIRUHDQ\URXWLQJGHFLVLRQLVPDGH7KHUHIRUHZKDW we should do in the chain is to change the address of the destination destination ,3DQGWKHQOHDYHLWWRWKHURXWLQJSURFHVVWRÀQGWKHGHVWLQDWLRQWKDWZHMXVW Chain INPUT (policy ACCEPT 0 packets, 0 bytes) FKDQJHG'1$7 xterm pef@solaris:~$ sudo iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) PREROUTING pkts bytes target prot opt in out source pkts bytes target prot opt in out source destination 7KH chain contains rules that the kernel analyzes after a routing destination GHFLVLRQLVPDGH7KLVPHDQVWKDWZHKDYHDSDWKWRWKHGHVWLQDWLRQDQGVRZHFDQ Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) FKDQJHWKHVRXUFH,3DGGUHVVLIWKDWSDWKLVRXWVLGHRXUQHWZRUN61$7 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) POSTROUTING pkts bytes target prot opt in out source pkts bytes target prot opt in out source destination Example: mark packets to 192.168.1.100 with nfmark 6: Un proxy transparent est un moyen de forcer les utilisateurs à utiliser un proxy, c-à-d-Aun intermédiaire de connexion, si 6 iptables -t mangle POSTROUTING -d 192.168.1.100 -j MARKmême --set-mark [ 102 ] leur navigateur n’est pas configuré pour le faire : 7KH726ÀHOGLVELWVORQJDQGZDVGLVFXVVHGLQWKHSUHYLRXVFKDSWHU$OWHUDWLRQRI WKH726ÀHOGLVYHU\XVHIXOIRU4R6)RUWKLVLSWDEOHVXVHVWKH726WDUJHWZKLFKKDV iptables –t nat –A PREROUTING –s 192.168.1.0/24 –p tcp –-dport 80 –j REDIRECT –-to-port 3128 the --set-tosRSWLRQ:HFDQVHH726WDUJHWRSWLRQVXVLQJ--help in the command line: Le proxy est installé sur le routeur et le «REDIRECT» effectue un DNAT vers l’@IP du routeur lui-même. root@router:~# iptables -j TOS --help Le proxy peut être utilisé pour servir de cache Web, ou pour filtrer les contenus dangereux. … some lines missing… TOS target v1.3.5 options: --set-tos value Set Type of Service field to one of the following numeric or descriptive values: Minimize-Delay 16 (0x10) Maximize-Throughput 8 (0x08) Maximize-Reliability 4 (0x04) Minimize-Cost 2 (0x02) Normal-Service 0 (0x00) 1$7WRZRUN OUTPUT et chain is notnat fully supported, so we will have to ignore that for now. NAT7KH : netfilter la table NAT and Packet Mangling with iptables Netfilter : modifier les paquets, la table mangle ([DPSOHVHW726WRMaximize-ThroughputIRURXWJRLQJ)73GDWD L’utilisation de cette table permet de modifier le contenu de certains champs duPOSTROUTING datagramme : 20 -j TOS --set-tos iptables -t mangle -A -p tcp IP --sport ⋆ le champs TOS, «Type Of Service»/DSCP, «Differentiated Services field» : modifier la priorité du datagramme 7KHUHDUHRQO\ÀYH726YDOXHVZHFDQVHWVRWKH726WDUJHWGRHVQ WPRGLI\WKH ZKROH726E\WH+RZHYHUWKLVFDQEHGRQHZLWK'6&3(Differentiated Services IP en fonction de son origine, de son contenu etc. )LHOG&RGHSRLQWV7KH'6&3ELWVDUHWKHÀUVWVL[ELWVLQWKH726E\WHDVVKRZQLQ WKHIROORZLQJÀJXUH Cette modification permet de faire de la QoS entre routeurs capables de gérer ces priorités (RFC 2474, 2475). 8 Precedence Level Description 7 Stays the same (link layer and routing protocol keep alive) 6 Stays the same (used for IP routing protocols) 5 Express Forwarding (EF) 4 Class 4 3 Class 3 2 Class 2 1 Class 1 LSWDEOHVKDVWKH'6&3WDUJHWWKDWFDQEHXVHGWRDOWHUWKH'6&3ELWV7KHRSWLRQVFDQ be found using --help with the DSCP target. some lines missing… ⋆ le champs TTL : pour le diminuer : empêcher la sortie de…certains datagrammes, ou au contraire l’augmenter : 0 Best effort root@router:~# iptables -j DSCP --help masquer le passage par le routeur ; --set-dscp value Set DSCP field in packet header to value [ 114 ] ⋆ marquer le datagramme : permet ensuite d’appliquer de la QoS sur le paquet en collaboration avec l’outil traffic control, tc. DSCP target options □ la chaîne PREROUTING : elle est traitée avant toute[ 100 décision de routage : c’est dans cette chaîne que l’on effectue ] le DNAT : on changera l’@IP de destination du datagramme et on laissera le routage trouver la destination que l’on vient de changer ; □ la chaîne POSTROUTING : elle est traitée après la décision de routage : c’est dans cette chaîne que l’on le SNAT : on a une destination pour le datagramme après le routage et maintenant on peut changer l’origine du datagramme en l’@IP correspondant à l’interface de sortie (c-à-d l’@IP du routeur qui permet d’être joint en retour sur cette interface de sortie). Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ iptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp 1 iptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp-class EF TTL : permet de modifier la valeur du champ de TTL : ⋄ --ttl-set : positionne la valeur ; ⋄ --ttl-dec et --ttl-inc : incrémente la valeur du TTL. iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1 — 13 décembre 2015 — 61 Le P2P : identification et classification Le P2P : identification et classification Les protocoles d’échanges en «peer-to-peer», c-à-d d’égal à égal : ⋆ sont difficiles à découvrir : les numéros de port varient, les interlocuteurs ont des adresses IP changeante (non connues à l’avance), pas de centralisation (différents serveurs possibles) ; ⋆ consomment beaucoup de débit : de nombreuses connexions peuvent s’établir simultanément rendant difficile le partage de la capacité du support, bandwidth, entre les différents utilisateurs du réseau aux dépens des communications prioritaires de l’organisation. Il est donc souhaitable de les contrôler pour soit les interdire, soit leur affecter des débits contraints. Comment les identifier ? Avec du «Deep Packet Inspection», c-à-d en analysant le contenu du datagramme ▷ par le contenu des paquets échangés : Problème : et si un courrier électronique contient «announce» ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 iptables -N LOGDROP iptables -F LOGDROP iptables -A LOGDROP iptables -A LOGDROP iptables -A FORWARD iptables -A FORWARD LOGDROP iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD LOGDROP iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD # DHT keyword iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD Le «Layer-7 filter» xterm routeur:~# iptables -Z Chapter 5 routeur:~# iptables -A OUTPUT -m layer7 --l7proto http router:~/ipp2p-0.8.0# cp ipt_ipp2p.ko /lib/modules/2.6.12.5-home.made/ kernel/net/ipv4/ router:~# depmod -a Chain OUTPUT (policy ACCEPT 10168 packets, 3433K bytes) router:~# modinfo ipt_ipp2p /lib/modules/2.6.12.5-home.made/kernel/net/ipv4/ pkts bytes target prot opt in out filename: source destination ipt_ipp2p.ko 0 0 all -* * author: 0.0.0.0/0 Eicke 0.0.0.0/0 LAYER7 http Friedrich/Klaus Degner l7proto <[email protected]> description: An extension to iptables to identify P2P traffic. routeur:~# license: GPL vermagic: 2.6.12.5-home.made preempt PENTIUMIII gcc-3.3 depends: ip_tables routeur:~# iptables -L OUTPUT -n -v Pour filtrer : xterm Next, we need to load the module, and it's all set. routeur:~# iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP router:~/ipp2p-0.8.0# modprobe ipt_ipp2p -j -j -m -m LOG --log-prefix "LOGDROP " DROP string --algo bm --string "BitTorrent" -j LOGDROP string --algo bm --string "BitTorrent protocol" -j -m string --algo bm --string "peer_id=" -j LOGDROP -m string --algo bm --string ".torrent" -j LOGDROP -m string --algo bm --string "announce.php?passkey=" -j On peut également faire de la limitation de débit en marquant les paquets avant la phase de routage (table mangle en PREROUTING). Using IPP2P ,333SURYLGHVDQRWKHUPDWFKRSWLRQIRULSWDEOHVVRWKHV\QWD[LV Alternative : IPP2P iptables … -m ipp2p –-option ... be: C’est un autre module qui est orienté uniquementwhere sur leoption traficcanP2P. iptables ... -m ipp2p –-option ... Option --edk P2P network 3URWRFRO 4XDOLW\ H'RQNH\H0XOH.DGHPOLD 7&3DQG8'3 YHU\JRRG -m string --algo bm --string "torrent" -j LOGDROP -m string --algo bm --string "announce" -j LOGDROP -m string --algo bm --string "info_hash" -j LOGDROP --kazaa --gnu .D=D$)DVW7UDFN 7&3DQG8'3 good Gnutella 7&3DQG8'3 good --dc Direct Connect 7&3RQO\ good --bit %LW7RUUHQWH[WHQGHG%7 7&3DQG8'3 good -m string --string "get_peers" --algo bm -j LOGDROP -m string --string "announce_peer" --algo bm -j LOGDROP -m string --string "find_node" --algo bm -j LOGDROP --apple $SSOH-XLFH 7&3RQO\ QHHGIHHGEDFN --winmx :LQ0; 7&3RQO\ QHHGIHHGEDFN --soul SoulSeek 7&3RQO\ JRRGQHHGIHHGEDFN --ares $UHV$UHV/LWH 7&3RQO\ PRGHUDWH'523RQO\ Layer 7 Filtering Another possibility is to use as option --ipp2p, which matches all the protocols stated earlier. Le P2P : identification et classification ,Q&KDSWHURIWKLVERRNZHSUHVHQWHGWKH26,DQG7&3,3QHWZRUNLQJPRGHOV $VZHVDZWKHUHHYHQLIWKH7&3,3PRGHOKDVWKHZLGHVWXVDJHWKHUHIHUHQFH model is OSI. Le «Layer-7 filter» /HW VKDYHDORRNDWWKH7&3,3DQG26,PRGHOVDJDLQ − des patchs à appliquer au noyau : http://l7-filter.sourceforge.net/ − utilise le module ip_conntrack ⟶ à réserver à des machines avec un CPU suffisant permettant une gestion à plus de 5000 pps, «packet per second» ; − permet d’identifier Kazaa, HTTP, Jabber, Citrix, Bittorrent, FTP, Gnucleus, eDonkey2000, etc., quelque soit le port utilisé. Installation et utilisation PDWFKLQJ7&3SDFNHWVZLWKVRXUFHRUGHVWLQDWLRQSRUWZKLFKLVWKHVWDQGDUG # Bittorrent - P2P filesharing / publishing tool - http://www.bittorrent.com +773SRUW+RZHYHUZHEVHUYHUVFDQEHFRQÀJXUHGWRXVHDQ\SRUWVRRXU # This pattern has been tested and is believed to work well. ÀOWHUVSULRULWL]DWLRQVZRQ WZRUNIRUWKDWSDUWLFXODUWUDIÀF # It will, however, not work on bittorrent streams that are encrypted, since # it's impossible to match (well) encrypted data. bittorrent # Does not attempt to match the HTTP download of the tracker # 0x13 is the length of "bittorrent protocol" # Second two bits match UDP wierdness # Next bit matches something Azureus does # This is not a valid GNU basic regular expression (but that's ok). ^(\x13bittorrent protocol|azver\x01$|get /scrape\?info_hash=get /announce\?info_hash= |get /client/bitcomet/|GET /data\?fid=)|d1:ad2:id20:|\x08'7P\)[RP] # This pattern is "fast", but won't catch as much #^(\x13bittorrent protocol|azver\x01$|get /scrape\?info_hash=) Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ WKHVDPH/HW VPDNHVRPHWHVWVDQGFRPSDUHWKHUHVXOWVEHWZHHQ,333DQG/ÀOWHU ⋆ time : iptables A FORWARD -p tcp -m multiport --dport http,https -o eth0 -i eth1 ⋆ quota : [ 133 ] -m time --timestart 12:30 --timestop 13:30 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT iptables -A INPUT -p tcp -m quota --quota 2147483648 -j ACCEPT iptables -A INPUT -j DROP Dans ce cas là, on préférera faire de la QoS, comme diminuer la priorité que de jeter les datagrammes… ⋆ nth : pour faire de l’équilibrage de charge, c-à-d rediriger des connexions vers différents serveurs (round robin) $W/D\HURIWKH26,PRGHOZHÀQG$SSOLFDWLRQ+773)7366+HWF$V \RXFDQVHHIURPWKHSLFWXUHDERYH7&3,3FRPSDFWHG26,/D\HUVDQG LQWRRQH/D\HU7&3,3/D\HU$SSOLFDWLRQZKLFKKDVWKHVDPHQDPHEXW different functionality. Il utilise un répertoire contenant des fichiers de définitions de protocoles disponible sur le site http://sourceforge.net/projects/l7-filter/. FLOWHULQJDQGSULRULWL]LQJWUDIÀFIURPVRPHDSSOLFDWLRQVFDQEHYHU\HDV\DQG Exemple de fichier utilisé pour la détection de bittorent : YHU\KDUGDWWKHVDPHWLPH1RUPDOO\ZHZRXOGÀOWHUSULRULWL]HZHEWUDIÀFE\ netfilter : L’administration des usagers 7KLVQHZPDWFKRSWLRQKDVWKHVDPHUXOHVDVWKH/ÀOWHUSURMHFWDQGLW VEDVLFDOO\ D’autres modules iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 0 -j DNAT --to-destination 192.168.0.5:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 1 Des EXPRESSIONS RÉGULIÈRES !!! -j DNAT --to-destination 192.168.0.6:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 2 -j DNAT --to-destination 192.168.0.7:80 iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 4 --packet 3 -j DNAT --to-destination 192.168.0.8:80 iptables -A -j DNAT iptables -A -j DNAT iptables -A -j DNAT iptables -A -j DNAT PREROUTING -i eth0 -p tcp --dport --to-destination 192.168.0.5:80 PREROUTING -i eth0 -p tcp --dport --to-destination 192.168.0.6:80 PREROUTING -i eth0 -p tcp --dport --to-destination 192.168.0.7:80 PREROUTING -i eth0 -p tcp --dport --to-destination 192.168.0.8:80 — 80 -m state --state NEW -m random --average 25 80 -m state --state NEW -m random --average 25 80 -m state --state NEW -m random --average 25 80 -m state --state NEW 13 décembre 2015 — 62 La protection avec netfilter : contre les accès abusifs (rapide et nombreux) La protection avec netfilter : contre les accès abusifs (rapide et nombreux) L’utilisation du module limit et connlimit Illustration du module limit et de l’option burst ∘ protection contre les attaques en déni de service, «DoS», «Denial of Service» : par exemple, limiter le nombre de ∘ ∘ connexions vers un serveur web (flooding) tout en assurant à tous les clients un accès illimité ; empêcher les attaques «brute force» pour deviner les mots de passe ; etc. iptables -t filter -A FORWARD -m state --state NEW -p tcp -m multiport --dport http,https -o eth0 -i eth1 -m limit --limit 50/hour --limit-burst 5 -j ACCEPT Explications : ▷ le module multiport permet de donner une liste de protocoles basés sur TCP ; ▷ le module limit : ⋄ la règle n’autorise la connexion que lorsqu’un jeton d’autorisation est disponible ; ⋄ --limit 50/hour : permet de limiter à l’obtention de 50 jetons par heure ⋄ --limit-burst : définit la taille maximale du stock de jetons. Le limit indique le rythme de récupération de jeton d’autorisation, alors que le limit-burst indique combien de jetons d’autorisation on peut conserver à la fois. Les règles de firewall suivantes sont ajoutées : iptables -t filter -A FORWARD -s 192.168.10.21 -d 192.168.11.50 -p udp -m limit --limit 30/m --limit-burst 5 -j ACCEPT iptables -t filter -A FORWARD -s 192.168.10.21 -d 192.168.11.50 -p udp -j DROP Explications : ∘ on crée un jeton d’autorisation toutes les 2 sec. (30 par minute), et on autorise à en stocker au plus 5. ∘ on filtre tous les paquets qui arrivent et qui ne trouvent pas de jeton d’autorisation. ∘ on envoie 1000 paquets UDP avec un paquet toutes les 20ms ; ∘ seuls 16 paquets arrivent à traverser : Le temps est indiqué en ordonnée et le numéro du paquet reçu est en abscisse. Les 5 premiers paquets passent immédiatement, «burst», puis un seul paquet passe toute les 2 sec. iptables -A INPUT -p tcp --syn --dport 22 -m limit --limit 3/min --limit-burst 1 -j ACCEPT iptables -A INPUT -p tcp --syn --dport 22 -j DROP Ce module permet de limiter le nombre de connexion réalisée en parallèle depuis le même hôte. Ici, la règle 1 autorise le passage d’une demande de connexion au serveur SSH, une fois toutes les 20 secondes, et la règle 2 filtre toutes les autres tentatives. # allow 2 ssh connections per client host iptables -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT La protection avec netfilter : contre les accès abusifs (rapide et nombreux) Netfilter : bloquer des connexions en fonction de la provenance Le module hashlimit le module recent permet de limiter le nombre paquets pouvant être traités par unité de temps. iptables -I INPUT -m hashlimit -m tcp -p tcp --dport 22 --hashlimit 1/min --hashlimit-mode srcip permet de créer une liste dynamique d’adresses IP, et de comparer de différentes façons les paquets avec le contenu de cette liste : --hashlimit-name ssh -m state --state NEW -j ACCEPT iptables -A INPUT -i eth0 -m recent --name badguys --update --seconds 3600 -j DROP Ici, on interdit plus d’une connexion par utilisateur et par minute afin d’éviter les tentatives d’attaques de type «bruteforce» sur le serveur ssh (découverte du mot de passe d’un utilisateur par essai des différentes combinaisons possibles). iptables -A INPUT Le module length limiter les paquets à une certaine taille iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 86:0xffff -j DROP Cela permet d’éviter les «ping of death» qui plantaient la pile TCP/IP de l’ordinateur le recevant (ici, ce sont les paquets de taille supérieure à 85 octets). Le module owner permet de tenir compte pour les paquets créés localement du processus et de son propriétaire : iptables -A OUTPUT -p tcp --dport 3306 -d localhost -m owner ! --uid-owner www-data -j REJECT -t filter -i eth0 -j DROP -m recent --set --name badguys Explication ⋄ La ligne 1, doit être mise en premier dans les règles du firewall : elle indique que si l’adresse IP du paquet fait partie de la liste alors on le supprime. ⋄ la ligne 2, définie une liste des «bad guys», par exemple en la mettant à la fin de toutes les règles du firewall, c-à-d qu’aucune règle ACCEPT n’a pu être trouvée pour un firewall qui filtre par défaut (l’adresse IP de la machine est ajoutée à la liste). Un classique concernant le protocole SSH, «Secure SHell» : iptables -A INPUT -i eth0 -p tcp --syn --dport ssh -m recent --name ssh --set iptables -A INPUT -i eth0 -p tcp --syn --dport ssh -m recent --name ssh --rcheck --seconds 30 --hitcount 2 -j DROP Ici, on protège contre une tentative d’attaque de type «brute force». Ici, le port 3306 est associé à MySQL, et on interdit les accès autres que ceux réalisés par l’utilisateur associé au serveur Apache. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 63 Netfilter : bloquer des connexions en fonction de la provenance Netfilter : revenir sur les paquets rejetés Le module set REJECT & TARPIT Il est possible : a. de construire une liste avec la commande ipset : ⋄ de bloc ou d’@ IP ; ⋄ de ports ; ⋄ d’@MACs. b. d’utiliser cette liste dans une règle de la commande iptables. Pour construire l’ensemble : ipset create indesirables nethash ipset add indesirables 164.81.0.0/16 ipset add indesirables 192.168.0.0/16 Pour l’utiliser : ▷ REJECT : rejette le paquet comme DROP mais renvoi une erreur avec un paquet ICMP ⋄ --reject-with : avec une valeur parmi : ⋆ icmp-net-unreachable ⋆ icmp-proto-unreachable⋆ icmp-admin-prohibited ⋆ icmp-host-unreachable ⋆ icmp-net-prohibited ⋆ icmp-port-unreachable ⋆ icmp-host-prohibited ▷ TARPIT : permet de «capturer» une connexion TCP sans consommer de ressource et sans répondre aux demandes de terminaison. C’est une protection efficace contre certain vers qui devront attendre longtemps avant de pouvoir établir une nouvelle connexion iptables -A INPUT -p tcp -m tcp --dport 80 -j TARPIT iptables -t filter -A INPUT -m set --match-set indesirables src -j DROP L’intérêt réside dans le fait qu’il est moins coûteux de contrôler des datagrammes par rapport à un set plutôt que par rapport à une liste de règles. Autres listes : ⋆ nethash : une liste d’@IP ; ⋆ macipmap : pour des @MAC ; ⋆ portmap : pour des numéros de port ; Pour bloquer les accès par pays : http://www.ipdeny.com/ipblocks/. netfilter : des usages plus avancés Firewall & IPv6 La journalisation ou «logging» En attendant Ipv6… Pour IPv6 : On bloquera tout trafic IPv6 jusqu’à nouvel ordre ! LOG : permet de garder une trace du paquet. Il faut également répéter la même règle avec une target comme DROP pour jeter le paquet. iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j LOG Cette information peut être consultée à l’aide de la commande demsg : [34985.564466] IN=eth0 OUT= MAC=00:0c:29:9d:ea:19:00:0c:29:22:ca:2f:08:00 SRC=192.168.127.128 DST=164.81.1.9 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=28737 DF PROTO=TCP SPT=37925 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 ⋄ --log-prefix : permet d’ajouter un préfixe pour faciliter la recherche (avec la commande grep par exemple) iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets" Le module u32 Ce module permet de tester les valeurs d’octets particuliers du datagramme IP. La syntaxe est iptables -m u32 --u32 "Start&Mask=Range" où : ⋆ il travaille sur des mots de 32 bits ; ⋆ «start» indique la position des octets à étudier à partir duquel on récupère les 32 bits (commence à zéro). ⋆ «Mask» permet d’appliquer un masque binaire à partir de cet octet. ⋆ il faut se positionner à la frontière de mots de 32bits (4 octets). Exemple ▷ chercher si le drapeau MF est à 1 : # configuration PUBIF="eth0" # nettoyage des tables ip6tables -F ip6tables -X ip6tables -t mangle -F ip6tables -t mangle -X # on autorise sur l'interface loopback ip6tables -A INPUT -i lo -j ACCEPT ip6tables -A OUTPUT -o lo -j ACCEPT # on met en place la policy ip6tables -P INPUT DROP ip6tables -P OUTPUT DROP ip6tables -P FORWARD DROP # on autorise la poursuite des communications autorisées à s'établir ip6tables -A INPUT -i $PUBIF -m state --state ESTABLISHED,RELATED -j ACCEPT # on autorise le trafic sortant ip6tables -A OUTPUT -o $PUBIF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # on autorise l'utilisation du ping en IPv6 (Neighbour Discovery) ip6tables -A INPUT -i $PUBIF -p ipv6-icmp -j ACCEPT ip6tables -A OUTPUT -o $PUBIF -p ipv6-icmp -j ACCEPT iptables -m u32 --u32 "3&0xE0=0x20" ▷ etc. Une adresse intéressante http://www.stearns.org/doc/iptables-u32.v0.1.7.html Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 64 Le durcissement, «hardening,» de la pile TCP/IP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 13 QoS, «Quality of Service» Les besoins en QoS #!/bin/sh # Désactive la fonction de routage automatique du système sysctl net.ipv4.ip_forward = 0 # Désactive le traitement des paquets ICMP echo-request envoyés en broadcast ou multi cast # Utile pour éviter les Smurf Attacks sysctl net.ipv4.icmp_echo_ignore_broadcasts = 1 # Désactive le traitement des paquets routés par la source # où le chemin de routage est explicitement donné sysctl net.ipv4.conf.all.accept_source_route = 0 # Active la protection de type Syn cookie et protège contre les Syn Flood sysctl net.ipv4.tcp_syncookies = 1 # Désactive le traitement des paquets ICMP de redéfinition de route pour détourner le trafic sysctl net.ipv4.conf.all.accept_redirects = 0 # Ne pas autoriser l'envoi des paquets ICMP de redéfinition de route sysctl net.ipv4.conf.all.send_redirects = 0 # Active la protection contre les IP Spoofing # attention à la contradiction avec la fonction de routage... sysctl net.ipv4.conf.default.rp_filter = 1 sysctl net.ipv4.conf.all.rp_filter = 1 # Journalise les paquets avec des adresses impossibles net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 Le durcissement, «hardening,» de la pile TCP/IP Explications sur le transparent suivant ⟹ Explications ⋆ la ligne «25» permet de se protéger de paquets qui ne pourraient pas arriver par l’interface où ils arrivent… C-à-d, par exemple, un paquet arrivant par l’interface eth0 mais avec une adresse qui ne correspondrait qu’à l’interface «eth1» doit être rejeté. Cette protection est mise en œuvre par les FAIs ce qui empêche d’envoyer des datagrammes avec une adresse source différente de celle qu’il fournit à son client. ⋆ la ligne «29» permet d’enregistrer les paquets provenant d’adresses impossibles : adresses de groupe, de classe E réservée, adresse locale, de diffusion, etc. C’est pour cela qu’on les appelle des paquets «martiens»… ⋆ on peut également, dans la cas où le serveur sert de routeur, obliger le serveur à effectuer la défragmentation avant de servir de relais avec les options : sysctl net.ipv4.conf.all.ip_always_defrag = 1 sysctl net.ipv4.conf.default.ip_always_defrag = 1 ⋆ On peut également bloquer les accès extérieurs à la base de données MySQL : iptables -A INPUT -p tcp --dport 3306 -j DROP On pourrait également utiliser le module «owner» de NetFilter pour n’autoriser que l’utilisateur «Web» du système. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ • utilisation grandissante de protocoles «temps-réels» : appels téléphoniques, IPTv : ⋄ problèmes de délais et de pertes de paquets plus visibles pour ces protocoles : ⋆ pertes dues à la congestion ou à des corruptions de données ; ⋆ variations dans les délais, jitter, de remise des paquets (dégradation du son et/ou de la vidéo) ; ⋆ mélanges des paquets provoquant la suppression de ces paquets et encore plus de délai. • utilisation de réseaux «sans-fil» : ce sont dans ces réseaux que les manques sont les plus importants Les réseaux «filaires» ⋄ gèrent des milliers de flux : pas raisonnable de vouloir tous les contrôler ; ⋄ sont-ils le «goulot d’étranglement», bottleneck ? non ⋄ facile d’augmenter la capacité ; ⋄ temps pour organiser le trafic : ∼ 1𝜇𝑠 Les réseaux «sans-fil», «wireless» ⋄ gèrent des dizaines de flux : c’est possible de les contrôler ; ⋄ le réseau est le goulot d’étranglement ! ⋄ difficile d’augmenter la capacité ; ⋄ temps pour organiser le trafic : ∼ 1𝑚𝑠 Plus de temps pour prendre une décision ! • garantir une répartition équitables de la capacité, «fair use» : ⋄ «Network Neutrality» : un FAI ne doit pas bloquer ou dégrader le trafic Internet de ses concurrents dans le ⋄ éviter la sur-consommation des utilisateurs qui téléchargent le plus : vidéo et p2p. but d’accélérer le sien. Dans ce cas là, il est nécessaire de faire du «deep packet inspection» pour analyser le contenu des datagrammes. QoS : plan de la section Définition Wikipedia La qualité de service (QdS) ou Quality of service (QoS) est la capacité à véhiculer dans de bonnes conditions un type de trafic donné, en termes de disponibilité, débit, délais de transmission, gigue, taux de perte de paquets… ⋆ Présentation du trafic «temps réél» avec RTP et comment corriger le «jitter» ; ⋆ La proposition «Integrated Services» : c’est le réseau d’interconnexion en mode «circuitvirtuel» simulé ou non, qui assure la QoS : ⋄ réservation de ressource sur les routeurs ; ⋄ mémorisation de chemins dans chaque routeur ; ⋄ le paquet traverse le routeur au plus vite ; ⋆ La proposition «Differentiated Services» : c’est le routeur qui favorise l’envoi de tel ou tel pa- quet : ⋄ les paquets sont classifiés ; ⋄ les paquets sont mis dans des files d’attente, des «queues» ; ⋄ chaque routeur doit gérer des files d’attentes ; ⋄ le contenu des files d’attente est envoyé sur le réseau suivant la hiérarchie définie entre ces queues. — 13 décembre 2015 — 65 Le streaming Les flux «temps réel» Network Network Pour un même flux de 1, 5𝑀𝑏𝑝𝑠 , reçu simultanément par trois récepteurs différents : • «unicast» : gaspillage de capacité : 3 ∗ 1, 5 = 4, 5𝑀𝑏𝑝𝑠 (a) ; • «multicast» : mutualisation : 1, 5𝑀𝑏𝑝𝑠 seulement (b) ; (a) Unicast 2 Source 3 × 1.5 Mbps 1. 5 packets Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ 1 Source 1 × 1.5 Mbps × 1. 5 M bp s En multicast, les routeurs relaient les datagrammes envoyés sur une adresse de groupe 224.x.y.z de classe D : ▷ chaque récepteur indique qu’il veut entrer/sortir du groupe, en envoyant : ⋄ un message au format IGMP, «Internet Group Management Protocol», avec l’entrée/sortie et l’@IP du groupe ; ⋄ encapsulé dans un datagramme : ⋄ protocole : 2 ; ⋄ TTL de 1 ; ⋄ options : RA, «routeur alert» : indique au routeur de ⋄ transmis à destination du groupe associé à IGMP : traiter le paquet même s’il ne lui est pas adressé ; 224.0.0.22 ; ▷ le routeur reçoit le message IGMP : ⋄ si c’est une entrée pour le groupe 224.x.y.z, il relais les paquets qu’il reçoit d’une entrée vers le segment où il a ⋄ si c’est une sortie, il arrête le relais. reçu le message ; ▷ pour optimiser la diffusion et éviter les boucle : un protocole de «spanning tree», appelé CBT, «Core Based Tree». Streaming vs Jitter Rappel : le Jitter ou «gigue» correspond à la variation du temps de transmission d’un paquet. Les délais de transmission de chaque paquet inNetwork duisent des retards, voire des ré-ordonnancements 8 7 6 5 4 3 2 1 8 6 7 5 3 4 2 1 Source Receiver Packets departing source Packets arriving at receiver des paquets sur le récepteur. Si les délais sont très variables, on parle de fort jitter. 8 8 8 Un fort jitter est mauvais pour les transmissions 7 7 7 6 6 6 «temps-réel». 5 5 5 4 4 4 3 3 3 2 2 1 1 1 0 20 40 60 80 100 120 140 160 180 200 220 240 260 Transit delay experienced (ms) Time when packet arrived (ms) Packets arrived at receiver Playout schedule Packet arrives at receiver 1 2 4 3 5 7 6 8 8 7 Time spent in buffer Packets created at source 6 5 Missed playout 4 Time 3 2 Packet removed from buffer 1 2 3 4 5 7 8 Missed playout q = 100 ms 1 Talk starts 80 Pour annuler le jitter : ⋆ 𝑡1 le temps de départ du paquet ; ⋆ 𝑑1 le délai de transmission ; ⋆ on mesure 𝑟1 , 𝑟1 = 𝑡1 + 𝑑1 , le temps d’arrivée du premier paquet ; ⋆ on détermine 𝑝1 le temps auquel le contenu du paquet est «joué» (audio/vidéo) ; ⋆ on choisit 𝑞 avec 𝑝u� = 𝑡u� + 𝑞 , et 𝑞 > 𝑗𝑖𝑡𝑡𝑒𝑟 . r1 = 58 10 0 12 0 14 0 16 0 18 0 20 0 22 0 24 0 26 0 Time when packet departed (ms) 2 0 20 40 60 80 100 120 60 0 20 40 60 80 100 120 140 160 20 Choix du numéro de port : par le protocole d’établissement de session comme SIP, «Session Initiation Protocol», ou H245 (utilisés pour la VoIP). 0 2 3 4 7 8 15 16 31 ⋆ P : padding ; 2-bit 4-bit ⋆ X : indique la présence d’un en-tête d’extension déver. P X contrib. M 7-bit payload type 16-bit sequence number num src count finie par l’application (rarement utilisé : les données 12 32-bit timestamp contiennent les en-têtes si nécessaire) ; bytes ⋆ contributing source : indique le nombre d’iden32-bit synchronization source (SSRC) identifier tifiants de source si plusieurs incluses dans l’en-tête ; ⋆ M : indicateur si les données sont particulières (par ex. contributing source (CSRC) identifiers (if any) des «frames boundaries») ; ⋆ Payload type : indique le format du contenu (G722, 32-bit extension header (if any) G711 etc.) ; ⋆ Sequence number : permet au récepteur de suppridata mer le «jitter», de détecter la perte de paquet et de les réordonner ; incrémenté de 1 à chaque paquet ; valeur de départ choisie aléatoirement (protection contre 8-bit pad count padding (if any) (in bytes) les attaques par injection sur des données de paquet chiffrées). ⋆ timestamp : combiné au numéro de séquence pour détecter les trous, «gap», dans la transmission ; permet de réordonner des paquets provenant de différentes sources ; dépend de l’horloge de l’émetteur et de l’intervalle d’évolution de cette horloge : plusieurs paquets peuvent avoir le même timestamp. ⋆ SSRC& CSRC : permet d’identifier la ou les sources des flux (les identifiants sont aléatoires) qui sont «mixés» au niveau du récepteur. Multicast 40 ▷ protocole «fourre-tout» qui permet le transport de différents types de flux, il est facilement adaptable ; ▷ basé sur UDP avec un numéro de port recommandé par l’IETF de 6970 < 𝑝𝑜𝑟𝑡 < 6999. (b) Packet number Le protocole RTP, «Real-time Transport Protocol» M bp s 0 Les débits : ▷ constants, CBR, «Constant Bit Rate» : pour transmettre la voix ou une vidéo, on la convertit en un flux binaire avec un débit constant : ⋄ MPEG-1 : standard de compression à flux à débit constant. Le débit du flux dépend des paramètres sélectionnés pour l’algorithme de compression, tels que la dimension écran de la vidéo, le nombre d’images par seconde et la qualité de la «quantization», c-à-d la quantité d’information conservée en numérique par rapport à la version originale. MPEG-1 de mauvaise qualité à 1, 15𝑀𝑏𝑝𝑠 (en Méga-bits par seconde) et de bonne qualité à 3𝑀𝑏𝑝𝑠 . ⋄ pour un signal vocal, on va d’un débit de 4𝑘𝑏𝑝𝑠 pour une très forte compression à un débit de 64𝐾𝑏𝑝𝑠 (un débit de 8𝐾𝑏𝑝𝑠 à 1, 3𝑀𝑏𝑝𝑠 proche de la qualité d’un CD audio). ▷ variables, VBR, «Variable Bit Rate» : le débit peut varier pour s’adapter au mieux au contenu à transmettre. ⋄ MPEG-2 : autorise le VBR : le débit est plus important quand il y a des scènes du film compressé qui bougent rapidement, que lorsque les scènes bougent peu. Les transmissions satellites et la TNT SD (MPEG-4 pour la HD). D’autres normes : ∘ pour la voix : ⋄ G.711 à 64𝐾𝑏𝑝𝑠 ; ⋄ G.729 à 8𝐾𝑏𝑝𝑠 ; ∘ pour la vidéo : ⋄ H.263 à 64𝐾𝑏𝑝𝑠 , c-à-d 8000𝑜𝑐𝑡𝑒𝑡𝑠 par seconde ; ⋄ MPEG-2 à 19, 2𝑀𝑏𝑝𝑠 , ou en VBR de 6𝑀𝑏𝑝𝑠 en moyenne, à 24𝑀𝑏𝑝𝑠 au maximum. Packet number signals × Time [ms] p1 = 120 First packet sent: t1 = 20 L’émetteur construit et envoie chaque paquet suivant un rythme régulier. Si pour un paquet reçu 𝑖 , 𝑟u� > (𝑡u� + 𝑞) alors le paquet est ignoré (6), sinon il est «bufferisé» et joué suivant le même rythme régulier mais avec le retard 𝑞 . — 13 décembre 2015 — 66 QoS : Integrated Services vs Differentiated Services QoS & GNU/Linux Integrated Services et Réservation de ressource Quelques termes ∘ fournie de la QoS à «grain fin», «fine-grained» ; ∘ utilise un mode «circuit virtuel» simulé par les routeurs. ⋄ utilisation de protocoles dédiés : ⋆ RSVP, «Resource ReSerVation Protocol» pour établir un chemin le plus court et le libérer ; ⋆ MPLS, «Multiprotocol Label Switching» pour faire de la commutation au niveau routeur ; ⋄ chaque routeur : ⋆ conserve un état des flux le traversant ; ⋆ réserve une partie de ses ressources au traitement d’un flux ; ∘ beaucoup d’états doivent être mémorisés dans chaque routeur pour la réservation des ressources : ⋄ fonctionne bien à échelle réduite (réseau d’entreprise) ; ⋄ fonctionne mal à grande échelle (pas pour Internet) ; ⋆ «ingress router» : le routeur qui permet l’entrée dans le réseau d’interconnexion ; ⋆ «egress router» : le routeur qui est à la sortie du réseau d’interconnexion. Les termes ingress et egress sont aussi utilisés pour désigner le trafic en entrée et en sortie, respectivement. Traffic shaping et routing policy Attention ▷ Il est seulement possible de modifier le trafic des données en sortie. Cela s’appelle du «traffic shaping» : introduire des délais ou jeter des paquets. Differentiated Services et Classes de trafic ▷ Il n’est pas possible de contrôler le trafic en entrée : elles dépendent de l’activité de matériels que l’on ne ∘ fournie de la QoS à «gros grain», «coarse-grained» ; ∘ rajoute seulement «un peu» de complexité au mode «best-effort» : ⋄ reste en mode «datagramme» ; ⋄ rajoute une priorité à chaque datagramme, mark, éventuellement suivant seulement deux classes de trafic : ⋆ une classe normale ; ⋆ une classe EF, «Expedited Forwarding» : le routeur doit faire passer le paquet avec un délai minimal et sans contrôle pas. Néanmoins, il est possible de limiter le trafic en entrée et d’influencer les émetteurs (ralentissement possible du trafic TCP en utilisant les mécanismes de protection contre la congestion : perte de paquet, utilisation d’ECN). ⋄ utilise des mécanismes de «queues» ou file d’attente pour traiter les paquets : les retarder, garantir un débit de perte. Cela s’appelle du «policing» : jeter des paquets avant qu’ils ne soient pris en charge par la partie routage du noyau GNU/Linux (les retarder nécessiterait une ou plusieurs file d’attente importante). L’outil utilisé est le RED, «Random Early)LUHZDOO3UHUHTXLVLWHVQHWÀOWHUDQGLSURXWH Detection». ⋄ chaque queue correspond à une classe de trafic ; ⋄ le trafic est marqué, marked, mesuré, metered, régulé, policed, et mis en forme, shaped. traversé throughput ; x It's important to know this because this can be a way to optimize how packets travel WKURXJKWKHQHWZRUNLQWHUIDFHVRIRXU/LQX[URXWHUV7KH726E\WHORRNVOLNHWKLV Qos & GNU/Linux : Les queuing disciplines Qos & GNU/Linux : Classless qdiscs «Queuing discipline» : algorithme de gestion de file d’attente L’algorithme pfifo_fast Cet algorithme permet de contrôler : • le volume données envoyées (traffic shaping) ; • la priorité de ces envois en fonction de critères auxquels correspondent ces données. Il existe deux types d’algorithmes de gestion de files d’attente : ∘ ceux «classless» ; ∘ ceux «classful». Classless Queuing Disciplines (Classless qdiscs) Ils correspondent au modèle le plus simple, parce qu’elles ne peuvent que : ▷ accepter ; ▷ retarder ; ▷ rejeter ; ▷ ré-ordonnancer (re-scheduling) ; Ils implémentent différents algorithmes : ⋆ pfifo & bfifo, FIFO : le plus simple des «qdisc» qui correspond au «First In First Out». Cet algorithme utilise un buffer de taille limité, défini en nombre de paquets, pfifo, ou en octets, bfifo. ⋆ pfifo_fast : l’algorithme par défaut sur toutes les interfaces sous GNU/Linux ; ⋆ tbf, «Token Bucket Filter» : un algorithme simple à mettre en oeuvre et peu coûteux en CPU, qui permet de ralentir une ⋆ SFQ, «Stochastic Fair Queuing» : un des algorithmes les plus utilisés qui permet de répartir de manière équitable les envois interface tout en autorisant des courtes rafales d’envoi ; Packets in the 2 band have the lowest priority and are sent out only if there aren't any packets in the 0 and 1 bands. 0 1 2 PRECEDENCE 3 4 5 7\SHRI6HUYLFH³726 6 7 MBZ ⋆ il est proche du fifo ; Normal Service ⋆ il est «classless», car il réalise une répartition fixexdes0000 paquets suivant un critère ; 0001 les paquets Minimize Monetarysuivant Cost (MMC) ⋆ il dispose de 3 canaux de données, ou «band», dansx lesquels se répartissent leur TOS : Maximize Reliability (MR) ⋄ canal 0 : les paquets ont la plus haute priorité ; x 0010 x n’y a pas de 0D[LPL]HWKURXJKSXW07 ⋄ canal 1 : les paquets sont envoyés uniquement lorsqu’il paquets dans le canal 0 ; x ne1000 Delay ⋄ canal 2 : les paquets ont la plus basse priorité : ils sont envoyés Minimize que lorsqu’il n’y(MD) a pas de paquet dans le canal 0 et 1. 7KH726ELWVDUHGHÀQHGDVIROORZV %DVHGRQWKH726E\WHWKHSDFNHWVDUHSODFHGLQRQHRIWKHWKUHHEDQGVDVIROORZV Les valeurs de l’octet TOS dans l’en-tête du datagramme IP : les différentes valeurs des bits : 012 ∘ ∘ ∘ ∘ ∘ 3456 7 PRECEDENCE Type of Service Unused 0000 : service normal ; 0001 : MMC, «Minimize Monetary Cost» ; 0010 : MR, «Maximize Reliability» ; 0100 : MT, «Maximize Throughput» ; 1000 : MD, «Minimize Delay». de données entre différents flux (EFSQ, «Enhanced SFQ», permet d’avoir un contrôle plus fin) ; ⋆ RED & GRED, «Random Early Detection» et «Generic RED» : un algorithme utilisable dans le contexte d’un «backbone» avec des débits supérieurs à 100Mbps, pour les paquets en entrée. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — [ 78 ] 13 décembre 2015 — 67 ----------------------------------------1000 8 Minimize delay (md) 0100 4 Maximize throughput (mt) 0010 2 Maximize reliability (mr) 0001 1 Minimize monetary cost (mmc) 0000 0 Normal Service Chapter 9. Queueing Disciplines for Bandwidth Management 0 Qos & GNU/Linux : Les différents Type de Services, TOS1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ Afficher les différents types de service | | | | | PRECEDENCE | TOS | MBZ | | | | | À l’aide de la commande : As there is 1 bit to the right of these four bits, the actual value of the TOS field is double+-----+-----+-----+-----+-----+-----+-----+-----+ the value $of sudo -vv-v -i eth0 the TOStcpdump bits. Tcpdump -v shows you the value of the entire TOS field, not just the four bits. It is the value you see in the first column of this table: Calculer les priorités Qos & GNU/Linux : Classless qdiscs «Token Bucket Filter» Cet algorithme correspond à : ⋆ une configuration : ⋄ un seau, le bucket : qui se remplit de jetons, tokens, à une fréquence choisie, token rate ; ⋄ une capacité pour le seau en nombre de jetons ; ⋆ l’association d’un paquet et d’un jeton : TOS Bits Means Linux Priority Band Binary Decimcal Meaning ⋄ le jeton est associé à un paquet ; ---------------------------------------------------------------------------------------------------⋄ le jeton est supprimé du seau ; 1000 8 Minimize delay (md) 0x0 0 Normal Service 0 Best Effort 1 0100 4 Maximize throughput (mt) 0x2 1 Minimize Monetary Cost 1 Filler 2 ⋆ deux flux : un pour les jetons et l’autre pour les paquets. 0010 2 Maximize reliability (mr) 0x4 2 Maximize Reliability 0 Best Effort 1 0001 1 Minimize monetary cost (mmc) 0x6 3 mmc+mr 0 Best Effort 1 0000 0 Normal Service Il existe 3 cas possibles : 0x8 4 Maximize Throughput 2 Bulk 2 0xa 5 mmc+mt 2 Bulk 2 1. les paquets arrivent au même rythme que les jetons : chaque paquet est associé à un jeton et traverse la file d’attente sans 0xc 6 mr+mt 2 Bulk 2 Le «dutch packet» : délai ; 0xe 7 mmc+mr+mt 2 Bulk 2 Chapter 9. Queueing Disciplines Bandwidth MMC + MT for + MD + MRManagement = 8+4+2+1 As there is 1 bit to the right of these four bits, the actual value of the TOS field is double the value 0x10 8 Minimize Delay 6 Interactive 0 of the TOS bits. Tcpdump -v -v shows you the value of the entire TOS field, not just four bits. It arrivent à un rythme inférieur à celui des jetons : une partie seulement des jetons est utilisée, et le reste s’accu0x12 9 mmc+md 6 Interactive 0 2. theles paquets The fourth column lists the way the Linux kernel0 interpretsisthe TOS bits, by showing to which 0x14 10 mr+md 6 Interactive the value you see in the first column of this table: mule jusqu’à remplir le seau en fonction de sa taille choisie. Priority they are mapped.6 Interactive 0x16 11 mmc+mr+md 0 Les jetons non utilisés permettent d’envoyer des paquets à un débit supérieur à celui d’arrivée des jetons et pour une 0x18 12 mt+md 4 Int. Bulk 1 courte durée : envoi d’un groupe de paquets en rafale, data burst. TOS Bits Means Linux Priority Band 0x1a 13 mmc+mt+md 4 Int. Bulk 1 The last column shows the4 result the default priomap. On the command line, the default priomap -----------------------------------------------------------0x1c 14 mr+mt+md Int. of Bulk 1 Si le débit continue à dépasser celui des jetons on bascule dans le cas suivant. 0x0 0 Normal Service 0 Best Effort 1 looks like this: 0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 0x2 1 Minimize Monetary Cost 1 Filler 2 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 3. les paquets arrivent à un rythme supérieur à celui d’arrivée des jetons. 0x4 1 le 2paquet Maximize Reliability 0 Best Effort 1 La dernière colonne indique la «priomap», c-à-d dans quel canal est envoyé de chaque valeur de priorité. 0x6 3 mmc+mr 0 Best Effort 1 Les jetons vont s’épuiser et la file d’attente va ralentir le débit des paquets jusqu’à en éliminer, situation appelée overlimit. 0x8 4 Maximize Throughput 2 Bulk 2 Lots of numbers. The second column contains the valuedans of thelerelevant TOS bits, followed by5 Exemple : le paquet de priorité 4 est envoyé canalfour 1 (la priorité commence à zéro). 0xa mmc+mt 2 Bulk 2 Remarque : L’implémentation dans GNU/Linux correspond à assimiler les jetons à des octets. their translated meaning. For example, 15 stands for a packet wanting Minimal Monetary Cost, 6 0xc mr+mt 2 Bulk 2 This means that priority for example, mapped to band number 1. Themmc+mr+mt priomap also allows Maximum Reliability, Maximum Throughput AND 4, Minimum Delay.gets I would call this a0xe ’Dutch 7 2 Bulk 2 you to list higher priorities (> 7) which do not correspond0x10 to TOS mappings, but which are set by 8 Minimize Delay 6 Interactive 0 Packet’. 0x12 9 mmc+md 6 Interactive 0 other means. 0x14 10 mr+md 6 Interactive 0 0x16 11 mmc+mr+md 6 Interactive 0 0x18 12 mt+md 4 Int. Bulk 1 This table from RFC 1349 (read it for more details) tells you how applications might very well set 0x1a 13 mmc+mt+md 4 Int. Bulk 1 their TOS bits: «Type of Service in the Internet Protocol», RFC 1349 43 0x1c 14 mr+mt+md 4 Int. Bulk 1 0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 TELNET 1000 (minimize delay) The four TOS bits (the ’TOS field’) are defined as: Qos & GNU/Linux : Les différents Type de Services, TOS QoS & GNU/Linux : le Tocken Bucket filter Illustration du seau FTP Control 1000 Data 0100 TFTP 1000 SMTP Command phase 1000 DATA phase 0100 ICMP Errors Requests Responses tokens generated at rate r [tokens/sec] bucket holds up to b tokens (minimize delay) (maximize throughput) Token generator 1 token dispensed for each packet Domain Name Service UDP Query 1000 TCP Query 0000 Zone Transfer 0100 NNTP (minimize delay) (maximize throughput) Lots of numbers. The second column contains the value of the relevant four TOS bits, followed by their translated meaning. For example, 15 stands for a packet wanting Minimal Monetary Cost, (minimize delay) Maximum Reliability, Maximum Throughput AND Minimum Delay. I would call this a ’Dutch Packet’. (minimize delay) 43 0001 b = bucket capacity (minimize monetary cost) Token waiting area 0000 0000 (mostly) <same as request> (mostly) to network La configuration des interfaces $ ip link txqueuelen 1: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:11:de:ad:be:ef brd ff:ff:ff:ff:ff:ff The length of this queue is gleaned from the interface configuration, which you can see and set with and ip. To set the queue length to 10, execute: ifconfig eth0 txqueuelen 10 C’est du pfifo_fastifconfig par défaut. You can’t set this parameter with tc! r tokens/sec Token dispenser (bucket) (maximize throughput) Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ token-operated turnstile packet (a) arriving packets Turnstile (b) La différence entre le «leaky bucket», (a), et le «token bucket», (b) : la possibilité d’un mode «burst» dans le «token bucket». — 13 décembre 2015 — 68 Qos & GNU/Linux : Classless qdiscs RED : «Random Early Detection» «Stochastic Fairness Queuing» Exposé du problème Ce comportement permet de répartir l’utilisation de l’interface entre différents flux, ou conversations : • connexions TCP ; • stream UDP (vidéo+son par exemple). Fonctionnement : ⋄ le trafic est décomposé en différentes files d’attente, une pour chaque conversation ; ⋄ l’envoi de paquet est ensuite réalisé à tour de rôle depuis chaque file, «round robin» ; ce qui donne un chance de progresser à chaque conversation, chacune suivant son tour. On évite ainsi qu’une conversation très active entraîne l’interruption des autres. Réalisation : ⋆ on définit un certain nombre de files d’attentes ; ⋆ on utilise une fonction de hashage permettant d’associer une conversation à une de ces files d’attentes (par exemple en appliquant la fonction de hashage sur le couple de TSAPs des échanges) ; ⋆ en cas de collision, c-à-d où deux conversations seraient affectées à la même file d’attente, on a un débit divisé par deux. Pour éviter cette situation, on change régulièrement les paramètres de la fonction de hashage, ce qui permet de ne pas avoir de collision, pour une même conversation, que durant un court moment (quelques secondes). Remarque : l’intérêt de cet algorithme intervient quand l’interface de sortie est saturée. Une «file d’attente», queue, est FIFO : ∘ les paquets de tête traversent le routeur ; ∘ les paquets entrants se placent en queue, tail ; ∘ lorsqu’un problème de débit arrive, c-à-d que des paquets arrivent avec un débit plus grand que celui géré ou autorisé, ces paquets entrants sont rejetés, on parle de «DropTail» ; ∘ ces rejets vont entraîner des perturbations sur les flux affectés : ⋄ pour un flux TCP, il y aura un «backoff» du à l’algorithme de protection contre la congestion ; ⋄ en affectant plusieurs flux simultanément, tous ces flux vont faire un «backoff» : résultat le trafic en entrée va fortement diminuer et la capacité de la ligne de transmission va être sous-employée. Présentation d’une solution L’idée de l’algorithme RED est de : ⋆ détecter le passage en saturation ; ⋆ prévenir les flux de cette saturation en marquant le paquet : ⋄ avec l’ECN s’il est géré (marquer le paquet comme overlimit) ; ⋄ en le rejetant ; ⋆ marquer les paquets de manière aléatoire : suivant une probabilité proportionnelle à la situation de congestion ; ⋆ favoriser TCP au dépens d’UDP qui ne dispose pas de mécanisme de contrôle de congestion ; L’algorithme RED : ▷ le fonctionnement est «probabiliste», on définit : ⋄ une limite 𝑚𝑖𝑛 où le paquet a une faible probabilité d’être marqué (cela correspond à une taille de la queue, puisque pour un paquet arrivant trop vite, il n’est pas traité tout de suite et il est donc mis dans la queue) ; ⋄ on définit une limite 𝑚𝑎𝑥 à partir de laquelle les paquets sont sûrement marqués (probabilité forte) ; ▷ tout paquet de la file d’entrée situé après le 𝑚𝑖𝑛 a une «chance» d’être marqué. Chapter 3 7KLVPHDQVWKDWE\GHIDXOW/LQX[LVVPDUWHQRXJKWRSULRULWL]HWUDIÀFDFFRUGLQJWR WKH726E\WHV8VXDOO\DSSOLFDWLRQVOLNH7HOQHW)736073PRGLI\WKH726E\WH to work in an optimal way. We will see later in this book how to optimize the WUDIÀFRXUVHOYHV Qos & GNU/Linux : Stochastic Fairness Queuing Qos & GNU/Linux : Classful qdiscs Classful Queuing Classful QueuingDisciplines Disciplines (Classful qdiscs) 7KHVHTGLVFVDUHXVHGIRUVKDSLQJGLIIHUHQWW\SHVRIGDWD7KHFRPPRQO\XVHG uneareclasse est une catégorie de trafic ; classful⋆qdiscs CBQ (CODVV%DVHG4XHXLQJDQG+7%+LHUDUFKLFDO7RNHQ%XFNHW Illustration ⋆ une qdisc «classful» est un algorithme de gestion de file FirVWRIDOOZHQHHGWROHDUQKRZFODVVIXOTXHXLQJGLVFLSOLQHVZRUN7KHZKROH SURFHVVLVQRWGLIÀFXOWVR, OOWU\WRH[SODLQLWDVVLPSO\DVSRVVLEOH différentes classes : Class 1 queue (Waiting line) Transmitter (Server) Class 2 queue Arriving packets Classifier Scheduler d’attente basé sur l’utilisation d’un partitionnement du trafic en ⋄ based pour à quelle classe appartient paquet il faut utiliser un «classifier» ; Everything is on savoir a hierarchy. First, every interface has oneun root qdisc that WDONVWRWKHNHUQHO6HFRQGWKHUHLVDFKLOGFODVVDWWDFKHGWRWKHURRWTGLVF7KHFKLOG ⋄ la classification peut être réalisée à l’aide de filtres : un filtre s’applique s’il y a class further has child classes that have qdiscs attached to schedule the data and leaf etchild le paquet à the traiter. classes, which are classes of child classes. ⋆ après classification, il est nécessaire de définir l’ordre $OOFRQIXVHG"+DYHDORRNDWWKHIROORZLQJLPDJHZKLFKZLOOH[SODLQDZD\ the confusion: L’organisation est hiérarchique : une correspondance entre sa définition d’envoi des différents paquets, «scheduling». ▷ chaque interface dispose d’une qdisc racine à laquelle est associée une catégorie ; ▷ une catégorie peut avoir : ⋄ une qdisc parent pour envoyer son trafic (par défaut Class n queue Scheduling discipline ⋄ une catégorie parent ; ⋄ une ou plusieurs catégories filles ; ⋄ aucun enfant : c’est une catégorie feuille ou «leaf» ; c’est du pfifo_fast) ; Packet drop when queue full Ici, le «round robin» est réalisé par le «scheduler». ▷ l’identification de ces éléments est faite à l’aide de la notation <major>:<minor> : 6REDVLFDOO\&%4RU+7%TGLVFVDOORZXVWRFUHDWHFKLOG&%4RU+7%FODVVHVZKLFK ⋄ to la racine identifiée 1: ouclass, 1:0, «10:» we can set up shape someest kind of data. Forpar each child weici canpar attach a qdisc; for scheduling within that doivent child class. Next,le wemême can create leaf classes, ⋄ packets les catégories avoir «major» quewhich leur parent, qui doit être unique are child classes of the qdiscs we attached to the child classes, or we can create leaf ⋄ le «minor» doit être unique dans le même qdisc et les catégories associées. classes as child classes' child classes attached to the root qdisc. pour une même interface : [ 79 ] Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 69 This qdisc is very useful in case you want to prioritize certain kinds of traffic without using only TOS-flags but using all the power of the tc filters. You can also add an other qdisc to the 3 predefined classes, whereas pfifo_fast is limited to simple fifo qdiscs. Qos & GNU/Linux : Classful qdiscs Qos & GNU/Linux : un exemple avec HTB HTBBecause it doesn’t actually shape, the same warning as for SFQ holds: either use it only if your physical link is really full or wrap it inside a classful qdisc that does shape. The latter holds for almost all cable Exemple : modems 1: and DSL devices. On veut limiter : Les algorithmes les plus utilisés sont : ▷ PRIO, «Priority» : un algorithme dérivé de pfifo_fast, avec la possibilité d’augmenter le nombre de canaux et per- ∘ le trafic Web à 5 Mbps ; 1:1 // | \words, the PRIO ∘ le istrafic SMTP à 3 Mbpsscheduler. ; In formal qdisc a Work-Conserving // | \ ∘ le trafic restant dispose d’un petit débit ou de tout le débit si les deux autres sont absents. 1:10 1:20 1:30 ∘ les deux ensemble ne doivent pas dépasser 6 Mbps. |9.5.3.1. | PRIO | parameters & usage | mettant d’utiliser des filtres basés sur plus d’information que le TOS ; ▷ CBQ, «Class Based Queuing» : c’est l’algorithme le plus complexe et aussi le plus utilisé qui utilise également les informations du TOS ; ▷ HTB, «Hierarchical Token Bucket» : permet d’aller au-delà des limitations de CBQ. 10: sfq − il permet de répartir le débit de la carte entre différentes catégories de trafic : ⋄ chaque catégorie reçoit l’allocation d’un débit maximum ; ⋄ une catégorie peut ou non prendre le débit associé à une autre classe si celle-ci est inactive : ⋆ du point de vue du «préteur» : «isolated» ou «sharing» ; ⋆ du point de vue de «l’emprunteur» : «bounded» ou non. − il permet également de classifier suivant «chaque bit» du TOS pour effectuer une prise de décision rapide. 30: sfq The following parameters are recognized by tc: On configure les qdisc : CBQ Cet algorithme a pour but de contrôler les débits de sortie d’une interface sans réaliser de calculs complexes : − il utilise le temps d’inactivité, «idle time», de l’interface pour déduire son débit effectif : ⋄ pour réduire le débit d’une interface de 100Mbps à 10Mbps, il faut qu’elle reste inutilisée à 90% ; ⋄ pour mesurer ce temps d’inactivité, l’algorithme mesure le délai en micro-secondes entre les appels matériels à la carte réseau : ⋆ problème matériel : la carte réseau n’obtient pas toujours le débit réseau maximum par rapport à la technologie de la carte (mauvais pilote ou mauvaise qualité des composants) ; ⋆ l’évaluation finale peut être très différente de la valeur réelle. 20: sfq xterm # tc qdisc add dev eth0 root handle 1: htb default 30 bands # tc Number class add dev to eth0 parent 1: classid htb ratechange 6mbitthis burst 15kyou must also of bands create. Each band is in fact a1:1 class. If you number, # tc change: class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k # tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k priomap # tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k # tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 If you do not provide tc filters to classify traffic, the PRIO qdisc looks at the TC_PRIO priority to decide how to enqueue traffic. # tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 # tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10 justcatégories, like with the pfifo_fast qdisc mentioned earlier, see there for lots of detail. Puis le This traficworks vers les avec tc filter : xterm # tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10 The bands are classes, and are called major:1 to major:3 by default, so if your PRIO qdisc is called 12:, tc filter traffic to 12:1 to grant it more priority. # tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 25 0xffff flowid 1:20 Reiterating, band 0 goes to minor number 1! Band 1 to minor number 2, etc. Qos & GNU/Linux : La commande tc, ou «traffic control» Sample configuration Qos9.5.3.2. & GNU/Linux : un exemple avec PRIO Afficher et supprimer une configuration Classful qdiscs : PRIO We will: create this tree: Exemple Afficher l’algorithme qdisc associé à une interface : xterm $ tc -s qdisc ls dev eth1 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1654333 bytes 21160 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 Supprimer la configuration d’un algorithme qdisc, c-à-d. revenir à la configuration par défaut : xterm $ sudo tc qdisc del dev DEV root Réaliser la classification à l’aide de filtre Trafic de source Web et de destination SSH en priorité 1, trafic autre en priorité basse : xterm # tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip dport 22 0xffff flowid 10:1 / / 1:1 | 10: sfq band 0 1: / | \ | | 1:2 | 20: tbf 1 xterm # tc qdisc add dev eth0 root handle 1: prio root qdisc # # This *instantly* creates classes 1:1, 1:2, 1:3 \ \ 1:3 | 30: sfq 2 # tc qdisc add dev eth0 parent 1:1 handle 10: sfq # tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 20kbit classes qdiscs buffer 1600 limit 3000 qdiscs # tc qdisc add dev eth0 parent 1:3 handle 30: sfq Ce qui donne : # tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip sport 80 0xffff flowid 10:1 xterm ## tc -s qdisc ls dev eth0qdisc prio 1: root refcnt 2 bands 3 priomap # tc filter add dev eth0 protocol ip parent 10: prio 2 flowid 10:2 1 Le 80 0xffff indique configuration binaire égale à la valeur sur deux octets 80 uniquement. Trafic identifié par la source ou la destination : xterm # tc filter add dev eth0 parent 10:0 protocol ip prio 1 u32 match ip dst 4.3.2.1/32 flowid 10:1 # tc filter add dev eth0 parent 10:0 protocol ip prio 1 u32 match ip src 1.2.3.4/32 flowid 10:1 Trafic identifié par la source et par un port : xterm # tc filter add dev eth0 parent 10:0 protocol ip prio 1 u32 match ip src 4.3.2.1/32 match ip sport 80 0xffff flowid 10:1 Trafic identifié par le TOS, (ici, le trafic dit interactif) : xterm # tc filter add dev eth0 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:4 Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 55 backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:1 limit 127p quantum 1514b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc tbf 20: parent 1:2 rate 20000bit burst 1600b lat 560.0ms Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:3 limit 127p quantum 1514b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 — 13 décembre 2015 — 70 router:~# Qos & GNU/Linux : combiner qdisc et iptables Méthodologie : marquer les paquets Il est possible de «marquer» un paquet à l’aide d’iptables et ensuite de le traiter dans un qdisc : a. on utilise le fwmark, c-à-d une marque utilisée pour le «forwarding» ; b. on place la marque dans la table «mangle» et dans la chaîne PREROUTING ; c. on utilise tc filter pour tenir compte de cette marque. xterm # iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 6 # iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j MARK --set-mark 1 # tc filter add dev eth1 protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:1 Ici, la valeur de la marque est 6, mais elle peut être choisie librement. Avantages ▷ on n’apprend pas la syntaxe de tc filter mais seulement celle de iptables ! 7KHHUURUZHJRWZKHQUXQQLQJWKHlimits script was generated because no limits existed on that interface, meaning that no root class was present. If we will run it again, we will not get any errors. Qos & GNU/Linux : combiner qdisc et iptables Now, the commands iptables –t mangle –L POSTROUTING –n –v and tc –s class Le module L7-filter show dev eth1 should generate the same number of bytes and packets matched for ∘ il utilise des expressions régulières pour analyser le contenu du protocole ; ∘ l’ensemble de ces expressions régulières correspondent aux «protocols definition» (certaines sont communes à différents $FFRXQWLQJZLWK/¿OWHU each rule and corresponding class. up accountingilscripts to see how many are consumed by applications in ∘ une fois le module L7-filter installé dans GNU/Linux, est nécessaire de lesbytes récupérer : protocoles) ; $FFRXQWLQJLVWKHHDVLHVWDSSOLFDWLRQWKDW\RXFDQGRZLWK/ÀOWHU<RXFDQVHW your network. http://sourceforge.net/projects/l7-filter/files/Protocol%20definitions/ Let's take the following example on a building router with 11 clients connected. We Exemple ZDQWWRVHHZKDWWKHWUDIÀFORRNVOLNHDWWKHDSSOLFDWLRQOD\HUVRZHZLOOVHWXSDQ accounting script like this: Faire de la QoS : xterm iptables -A FORWARD -m layer7 --l7proto directconnect router:~# iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 5 iptables -A ftp FORWARD -m layer7 --l7proto bittorrent6 router:~# iptables -t mangle -A POSTROUTING -m layer7 --l7proto –d 192.168.1.100 -j MARK --set-mark iptables -A ftp FORWARD -m layer7 --l7proto http router:~# iptables -t mangle -A POSTROUTING -m layer7 --l7proto –d 192.168.1.112 -j MARK --set-mark 7 iptables -A FORWARD -m layer7 --l7proto ftp iptables -A FORWARD -m layer7 --l7proto yahoo Filtrer iptables -Z xterm router:~# iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP $IWHUDIHZPLQXWHVZHFDQJHWDQLGHDRQZKDWW\SHRIWUDIÀFLVPRVWSRSXODUZLWK Faire du suivi : iptables iptables iptables iptables iptables iptables -A -A -A -A -Z -L FORWARD FORWARD FORWARD FORWARD those clients: -m -m -m -m layer7 layer7 layer7 layer7 --l7proto --l7proto --l7proto --l7proto bittorrent http ftp yahoo FORWARD -n -v router:~# iptables -L FORWARD -n -v Chain FORWARD (policy ACCEPT 289K packets, 209M bytes) pkts bytes target prot opt in out source destination 62318 55M all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto directconnect 6978 1202K all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto bittorrent 8037 6116K all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto http 0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto ftp 108 10724 all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto yahoo $QGWKHZLQQHULVGFZLWKDERXWRIWKHWUDIÀF [ 131 ] Qos & GNU/Linux : combiner qdisc et iptables Les limites de l’utilisation d’iptables Pour pouvoir tenir compte de protocoles de la couche «application» (couche 5 du modèle TCP/IP ou 7 du modèle OSI), il est nécessaire de pouvoir identifier ces protocoles : − en général : ⋄ ils sont basés sur les protocoles de transport UDP ou TCP : ⋄ ils utilisent un numéro de port connu en destination ou en source ; − mais : ⋄ ils n’utilisent pas toujours le port associé au service : service «non officiel», déplacement volontaire pour dissimuler l’accès au service… ⋄ ils utilisent parfois des numéros de port variables : FTP, «File Transfert Protocole», P2P, «peer-to-peer», VoIP, «Voice over IP», … ⋄ ils utilisent les mêmes numéros de port que d’autres protocoles : le port 80 peut être utilisé en p2p. Il est nécessaire d’analyser le contenu des échanges pour pouvoir les identifier ! Le module L7-filter ∘ il permet de classifier le trafic disponible à http://l7-filter.clearfoundation.com/ ; ∘ il se présente comme un module d’extension pour netfilter (iptables) ; ∘ il utilise beaucoup de ressources CPU : ⋄ il introduit de la latence qui peut se traduire par la perte de paquet ; ⋄ il n’est pas recommandé pour une solution de routage à débit élevé ; ⋄ cette latence dépend de la nature des données plus que du volume : ⋆ du trafic Web à 20Mbps ne sera pas ralenti : analyse simple ; ⋆ du trafic VoIP à 2Mbps sera ralenti de manière importante : analyse complexe. ∘ il est bien adapté dans un contexte SOHO, «small office, home office» : détection de virus, limitation des téléchargements ∘ par p2p, etc. ; il est associé au module de suivi de connexion ip_conntrack qui consomme des ressources. Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ Qos & GNU/Linux : routage suivant la QoS Il est possible de choisir une route en fonction du TOS : xterm # ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default # ip route add default via 164.81.1.254 table 8 # ip rule add tos 0x08 table 8 # ip route flush cache # ip rule show 0: from all lookup local 32765: from all tos 0x08 lookup 8 32766: from all lookup main 32767: from all lookup default En fonction d’une marque : xterm # iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j MARK --set-mark 1 # ip rule add from 192.168.100.17 tos 0x08 fwmark 1 table 8 Il est possible de faire du NAT avec ip rule : xterm # ip rule add nat 164.81.1.10 from 192.168.100.17 # ip rule show 0: from all lookup local 32765: from 192.168.100.17 lookup main masquerade 32766: from all lookup main 32767: from all lookup default — 13 décembre 2015 — 71 There are several ways of doing this. One of the easiest and straightforward ways is ’TEQL’ - "True" (or "trivial") link equalizer. Like most things having to do with queueing, load sharing goes both ways. Both ends of a link may need to participate for full effect. QoS & Gnu/Linux : simuler des conditions réseaux avec netem Qos & GNU/Linux :Imagine combiner plusieurs interfaces, «load sharing» this situation: L’influence du jitter sur le protocole TCP On peut vouloir répartir la charge, «load sharing», sur deux interfaces reliant au même réseau : Ici, deux routeurs A et B : Mesure de la commande iperf sans «netem» : +-------+ eth1 +-------+ | |==========| | ’network 1’ ----| A | | B |---- ’network 2’ | |==========| | +-------+ eth2 +-------+ xterm root@INTERNAL_HOSTA:~/RESEAUX_I/FIREWALL# iperf -c 137.204.212.208 -----------------------------------------------------------Client connecting to 137.204.212.208, TCP port 5001 xterm # tc qdisc add dev eth1 root teql0 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ # tc qdisc add dev eth2 root teql0 A and B are routers, and for the moment we’ll assume both run Linux. If traffic is going from network 1 # ip link set dev teql0 up to network 2, router A needs to distribute the packets over both links to B. Router B needs to be to acceptles this. Same goes: the other way around, when packets go from network 2 to network Et pour définir le routage, ilconfigured faut configurer interfaces 1, router B needs to send the packets over both eth1 and eth2. Sur le routeur A : xterm # ip addr add dev eth1 10.0.0.0/31 3] local 137.204.212.11 port 42168 connected with 137.204.212.208 port 5001 [ ID] Interval Transfer Bandwidth [ 1.22 GBytes 1.05 Gbits/sec 3] 0.0-10.0 sec Ajout de netem : xterm sudo tc qdisc add dev bridge_dmz root netem delay 100ms 75ms The distributing part is done by a ’TEQL’ device, like this (it couldn’t be easier): # ip addr add dev eth2 10.0.0.2/31 # ip addr add dev teql0 10.0.0.4/31 Sur le routeur B : [ La mesure : xterm root@INTERNAL_HOSTA:~/RESEAUX_I/FIREWALL# iperf -c 137.204.212.208 # tc qdisc add dev eth1 root teql0 xterm # tc qdisc add dev eth2 root teql0 # ip addr add dev eth1 10.0.0.1/31 # ip link set dev teql0 up ------------------------------------------------------------ # ip addr add dev eth2 10.0.0.3/31 Client connecting to 137.204.212.208, TCP port 5001 # ip addr add dev teql0 10.0.0.5/31 TCP window size: 16.0 KByte (default) Les interfaces eth1 de A et B sont dans le même réseau (comme eth2 et teql). Don’t forget the ’ip link set up’ command! La passerelles d’accès pour «Network1» est 10.0.0.4/31 et pour «Network 2» : 10.0.0.5/31. Il faudra enlever la protection contre l’IP spoofing : -----------------------------------------------------------[ xterm This needs to be done on both hosts. The device teql0 is basically a roundrobbin distributor over eth1 and # sysctl -w net.ipv4.conf.eth1.rp_filter 0 ever comes in over an teql device, that just appears on the ’raw’ eth1 eth2, for sending packets. No=data 3] local 137.204.212.11 port 42167 connected with 137.204.212.208 port 5001 [ ID] Interval Transfer Bandwidth [ 3.38 MBytes 2.79 Mbits/sec 3] 0.0-10.2 sec and eth2. # sysctl -w net.ipv4.conf.eth2.rp_filter = 0 QoS & Gnu/Linux :to simuler réseaux avec netem both links, anddes a /31 conditions to the teql0 device as well: But now we just have devices, we also need proper routing. One way to do this is to assign a /31 network Utilisation de netem, «network emulator» QoS & Gnu/Linux : simuler des conditions réseaux avec netem En utilisant tcpdump et tcptrace, on peut analyser le flux transmis avec iperf sous l’influence de netem : A: les applications en condition «réelles», on peut ainsi : Le module netem permetOnderouter tester ⋆ introduire du retard sur le passage des paquets : xterm tcpdump -i veth_DMZ_WEB -s 80 -w capture_netem_iperf.pcap tcp and port 5001 xterm $ sudo tc qdisc add dev bridge_dmz root netem delay 100ms 75ms Chaque paquet est retardé de 100𝑚𝑠 avec une variation de ±75𝑚𝑠 , ce qui entraîne leur réordonnancement. 71 Puis l’analyse : xterm tcptrace -Tn capture_netem_iperf.pcap xplot.org -mono a2b_tput.xpl Ce qui donne le graphique suivant, pour l’évolution du débit, throughput : Affichage des 50 premiers paquets sur 1000 envoyés. Pas d’application de netem. ⋆ introduire des pertes de paquets : Application de netem : les paquets arrivent dans le désordre (réception de paquets jusqu’au numéro 65). xterm tc qdisc change dev eth0 root netem loss 0.1% ⋆ abîmés certains paquets aléatoirement : xterm tc qdisc change dev eth0 root netem corrupt 0.1% Cours «Réseaux Avancés I» – P-F. Bonnefoi – http://p-fb.net/ — 13 décembre 2015 — 72