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

Documents pareils