Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
É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.
ResAvI
1 Deux topologies de réseaux : diffusion et point-à-point 8
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
Contraintes
? chaque machine appartenant au réseau doit disposer d’une adresse.
Avantages
◦ 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 ».
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. . . ).
ResAvI
L’adressage dans un réseau à diffusion 10
08:00:09:XX:XX:XX HP ...
Sun Cisco HP
00:09:BF:XX:XX:XX Nintendo id. carte sur 3 octets
00:D0:F1:XX:XX:XX Sega ... ... ... ... ... ... ... ...
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 ? »
Ces réseaux sont formés d’un grand nombre de connexions entres les machines prises deux à deux.
Problème ? Comment choisir par quels intermédiaires passer, ce qui s’appelle du « routage » ?
Cas d’un réseau L’algo. de routage est simple : le site central reçoit et renvoie tous les messages.
en « étoile »
Le fonctionnement est simple, mais la panne du site central paralyse tout le réseau.
Cas d’une « bouclechaque nœud recevant un message de son voisin en amont le réexpédie à son voisin en aval.
simple »
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 ».
Subnet Router
. diffusion : réseau de petite taille, LAN,
Local Area Network ;
Exemple :Ethernet
. point-à-point : réseau d’interconnexion,
constitué uniquement de routeur et de ligne
Host de tranmission Exemple : liaison satellite.
. la combinaison des deux : WAN,
Wide Area Network.
LAN
Client Telephone
Point ; system
Server farm
Corporate
LAN
Router
ResAvI
Network Printer
File Server
topologie
11 ?
la
la plus courante pour définir un LAN : plusieurs
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
unto « switch » ou un point d’accès sans fil : le nœud a la
operate 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
Computer
2011 and is now part of the IEEE 802.11-2012 standard. Computer
capacité de mettre en relation deux matériels voulant com-
Wireless
Computers
Manufacturers currently are using proprietary Layer 2 routing protocols, forming
Computer
tem (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
Mesh networks can be either wired or wireless devices.
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 matériels ;
Mesh Routers
? cette topologie offre une meilleur :
c01.indd 10
une meilleure résistance, « resilience », en cas de rupture d’un
8/25/2012 3:00:25 PM
Before we continue with wireless LAN technology, you should have some background on
28 Chapter 1 u Internetworking
Le matériel d’interconnexion 16
F I G U R E 1 .17 A hub in a network
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 ; A B C D
? font parti du même domaine de diffusion ; 26 Chapter 1 Internetworking u
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
ResAvI
La technologie Ethernet 802.3 ou Ethernet II 18
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.
ResAvI
La commande « ethtool » 19
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
? IEEE, « Institute of Electrical and Electronics Engineers » : organisation internationale chargée de superviser le dévelop-
pement 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 ».
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. Une tech-
nologie comme ATM, « Asynchronous Transfer Mode » est un standard ITU-T.
? Des forums : promouvoir une technologie et sa standardisation.
Exemple le MEF, « Metro Ethernet Forum ».
? Obligations de se conformer aux régulateurs nationaux, comme le FCC, « Federal Communications Commission » qui
surveille, par exemple, l’utilisation des différents fréquences dans le cas de transmission sans fil.
ResAvI
a huge number are not). Work related to an experimental situation
affect Internet operation comprise experimental RFCs. These RFCs sh
be implemented
feedback is required (most of the feedback is provided in the drafting process). Each as part of any functional Internet service.
RFC is edited, assigned a number, and available to all. Not all RFCs are standards, even
Lesthose
documents de références Informational RFCs—Some RFCs contain general, historical, 21 or tutorial
that define protocols.
tion
This book will make heavy use of RFCs to explain all aspects of TCP/IP and the rather than instructions.
Les Internet,
« Request for details
so a few Commentare in » & l’IETF,
order. « Internet
RFCs have Engineering
various maturity Task
levels that they Force
go »
through in their lifetimes, according to their requirement levels. The RFCs
RFCare further classified into one of five requirement levels, as shown in Fi
life-cycle
maturity
IETF :organisme responsable
levels are shown in Figure 1.5.du Note
développement des
that the timeline standards
does not alwaysde l’Internet.
apply,
isson
or not applied
propreinsystème
a uniform de fashion.
standardisation des protocoles Required—These RFCs must
utilisés par les matériels be implemented
connectés à Internet.by all Internet systems t
minimum
A specification can fall into one of six maturity levels, after which it passes
Les protocoles concernés sont plus proches de l’utilisateur (applications)
to his-conformance. For example, IPv4 and ICMP, both discussed in
que du matériel.
torical status and is useful only for tracking a protocol’s development. Following
this book,intro- are required protocols. However, there are very few requir
duction
Les standards Internet
as an Internet draft, :the
des spécifications
specification can be testées
a: et qui doivent être suivies.
la procédure d’élaboration est stricte : Recommended—These RFCs are not required for minimum conformanc
Proposed standard—The specification is now well understood, very stable, and For example, FTP is a recommended protocol.
useful.
? « Internet
sufficiently interesting
draft » :todocument
the Internetde community. The specification
travail, souvent modifié sans is now
statut particulier et de durée de vie d’au plus 6 mois ;
usually tested and implemented by several groups, if this has not already in this category are not required and not recommended.
? les développeurs travaillent à partir de ces « draftsElective—RFCs
happened at the draft level.
»;
systems can use them for their benefit if they like, so they form a
? un draft peut être publié sous la forme d’un RFC (juste“option
Draft standard—After at least two successful and independent implementations,
une appellation, il n’y a plus besoin de retour ou feedback).
set” for Internet protocols.
theRFC identifiée
proposed par un
standard numéro,tolibrement
is elevated consultable
a draft standard. Withoutet, suivant le niveau de requirements, obligatoire, ou pas.
complications,
Limited Use—These RFCs are only used in certain situations. Most expe
andTouswith modifications
les RFCs ne sont if specific
pas desproblems are uncovered,
standards, même draft
ceuxstandards
définissantnor- des protocoles entiers.
mally become Internet standards. RFCs are in this category.
Après un certain temps, la RFC peut arriver à maturité et finir dans les « RFC historiques ».
Internet Draft
RFC Requirement Levels
Six months
Recommended: All systems should implement
Draft Standard
Internet
Standard
Limited Use: Used in certain situations, such as experimental
Recherche »
??
2 Le réseau TCP/IP 23
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.
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) ;
Propriétés
. elle est codée sur 32 bits.
. elle est représenté par commodité sous forme 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’identifi-
cation des réseaux.
FIGURE 4.2
ResAvI
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.
!"#$%%$%&'(&#)%$#*)$%&+,-#&"$%&-%./$%&+.#012-31$#%
4$%&."#$%%$%&+.#012-315#$%
Adresses IP réservées pour des usages particuliers
#$%&'()$%%$%&*$)+$,,$-,&(.$//$0,1$)23 26
($%&$-456%&($&+$%%'7$%&+18,69($%,6-','6)$%
!
! (:%67-$)&8'&+'0;6-$&051)'-,$
Ces adresses permettent d’effectuer : X51,&O&Y:)5 ZP5)(6-',$1)&8169+E+$
! (:%67-$)&8$&):%$'1&051)'-,<
!"#$%&'()(*(+,-.(/011$203
! ($%&,$%,%&($&857606$8%&):%$'1F<
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 : ?LL<?LL<?LL<?LL&$%,&1-$&'()$%%$&($&(6//1%65-&850'8$&0')&$88$&(:%67-$&,51,$%&8$%&+'0;6-$%&(1&):%$'1&
!
8$%&'()$%%$%&($&08'%%$&#&($&>"?<>VS<G<G&O&>"?<>VS<?LL<?LL&=>"?<>VS<G<GR>VD<
!
!" cette adresse. pas besoin de connaissance du réseau.
appartient l’ordinateur qui utilise
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 !
$ whois -h riswhois.ripe.net 192.168.0.0
route: 192.0.0.0/3
origin: AS3303
ResAvI
??
Combiner réseau à diffusion et réseau IP 27
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 norme IP, « Internet Protocol » ;
◦ un réseau à diffusion fait circuler des messages de nature différente : les trames (on parle de trame Ethernet
ou 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 ;
c. Qui peut dire à quelle adresse IP correspond tel adresse MAC ? L’ordinateur lui même !
d. Définition d’un protocole pour « questionner » les ordinateurs : ARP, Address Resolution Protocol
ResAvI
Correspondance entre @MAC et @IP : le protocole ARP 28
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.
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 ARP locale
sinon il y a mise à jour de 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 le cas
le message est détruit, sinon si le message ARP est une requête, une réponse ARP est envoyée.
ResAvI
??
Illustration d’ARP 29
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.
3
What’s the MAC address of 10.10.12.52?
1 Tell 10.10.12.166, okay ?
Here’s my MAC address...
Ethernet LAN
ARP
Request 4
Broadcast
Sender
ARP Reply
Sender MAC: A3- A3-B0-
B0-21-
21-A1-
A1-60-
60-35 IP: 192.200.96.23
Sender IP: 192.200.96.23 MAC: A3-B0-21-A1-60-35
Target MAC: 01-
01-23-
23-45-
45-67-
67-89-
89-AB
Target IP: 192.200.96.21
+5DD(2(),%-++2(//%/5I(/A%-/%/,-)+-2+5I(+%C>%,'(%06K6%Lhttp://iana.org/$#%&'(%3-89(,%D5(4+/%-2(M%
•%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#%
CHAPTER 5 Address Resolution Protocol 157 ??
Illustration d’ARP : les échanges 31
10.10.12.166 10.10.12.52
Inxclient winsvr2
00:b0:dO:45:34:64 00:0e:0c:3b:88:56
LAN2
0!0001 0!0800
0!06 0!04 0!00001
0!00B0D0453464
0!0A0A0CA6 ARP Request
(10.10.12.166)
0!000000000000
0!0A0A0C34 (10.10.12.52)
Source Destination
CRC Data (28 bytes) 0!0806 0!00B0D0453464 0!FFFFFFFFFFFF
0!0001 0!0800
ARP Reply 0!06 0!04 0!00002
(10.10.12.52) 0!00E0C3B8856
0!0A0A0C34
(10.10.12.166) 0!00B0D0453464
0!0A0A0CA6
Destination Source
0!00B0D0453464 0!00E0C3B8856 0!0806 Data (28 bytes) CRC
ARP VARIATIONS
??
Illustration d’ARP 32
Le protocole RARP “Reverse Address Resolution Protocol”
Il réalise l’opération inverse :
◦ une machine sans adresse IP connue peut envoyer une requête RARP pour demander son adresse IP.
◦ une machine particulière (un serveur gérant le réseau) lui répond et lui affecte son adresse IP.
◦ 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.
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).
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
??
34
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. . .
permet de connaître la configuration 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
des interfaces actives : carte réseau,
pef@solaris:~/RESEAUX_I/FIREWALL$ ip address show eth0
pont (bridge), interface virtuelle. . . 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
Case 1: Find the address Case 2: Find the address 1. hôte vers hôte : l’émetteur est un hôte qui veut envoyer
of a host on the same of a router on the same
subnet as the source. subnet as the source. un paquet à un autre hôte dans le même réseau local.
Sending Host Sending Host
ARP ARP
Dans ce cas, l’@IP de destination est connue et
bsdclient Wincli1
l’@MAC de destination doit être trouvée.
LAN LAN
Inxserver CEO 2. hôte vers routeur : l’émetteur est un hôte et veut en-
Receiving Host Receiving Router
voyer un paquet à un autre hôte appartenant à un autre
Case 3: Find the address Case 4: Find the address réseau local.
of a router on the same of a host on the same
subnet as the source router. subnet as the source router. Il doit consulter la table de routage, « forwarding table »
Sending Router Sending Router ou « Forwarding Information Base », pour trouver l’@IP
ARP ARP
CE0 CE6
du routeur.
LAN LAN
L’@IP du routeur est connue et l’@MAC du routeur doit
PE5 bsdserver être trouvée.
Receiving Router Receiving Host
3.FIGURE 5.2 vers routeur : l’émetteur est un routeur et veut « faire suivre » un paquet à un autre routeur connecté dans le
routeur
Four ARP scenarios. Note that routers employ ARP just as hosts do, and that an ARP stays on the
même réseau local.
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
another router on the same LAN. A forwarding (routing) table is used to find
the IP address
4. routeur of the: router.
vers hôte In thisest
l’émetteur case,
unthe IP address
routeur of the
et veut « router is known
faire suivre » un
paquet vers un hôte dans le même réseau local.
and the MAC address of the destination router must be found.
L’@IP de l’hôte est connue, elle est contenue dans le paquet et l’@MAC de l’hôte doit être trouvée.
Router to host—The ARP sender is a router and wants to forward a packet to a
hostRemarque
on the same LAN. In this case, the IP address of the host is known (from
the IP destination address on the packet) and the MAC address of the host
« must
...dans le même réseau local » ! ARP ne sert quand dans un réseau
be found. local.
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
ResAvI
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
Encapsulation en technologie Ethernet 39
Où :
CHAPTER 3 Network Link Technologies
« Preamble » : identifie le début de la trame, jamais transmis aux programmes ;
@MAC destination & source ;
Length si valeur < 1500 (IEEE 802.3) ou Type si valeur > 1500 (Ethernet II) :
? nombre d’octets du champ Information (la longueur de ce champ est comprise entre 0 et 1500 octets) ;
DIXEthernet
? en Ethernetv2.0,
Frame Structure
champ EtherType à la place : 0x0800 pour un datagramme IPv4, 0x08DD pour un
datagramme IPv6, 0x806 pour un message ARP, 0x888E pour du 802.1x, 0x8100 pour du VLAN. . .
Destination Address Source Address Type Information FCS
Information ou Data : les données de la trame, complétées éventuellement par du bourrage ;
6 bytes 6 bytes 2 bytes 46–1500 bytes 4 bytes
Bourrage ou « padding » (PAD) : 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). Type 5 030800 for IP packets
IEEE 802.3 LANs Frame Structure
Destination Address Source Address Length Information FCS
6 bytes 6 bytes 2 bytes 48–1492 bytes 4 bytes
ResAvI
Encapsulation
!"#$%&'()'($#(*#+,-.'()/-"'(,.#0'(1('"*#+&-$#,23"(4,.#0'(456(4786999 40
:#+,-.'()/-"'(,.#0'(;($/#2)'()'(<2.'&=#.>
Un datagramme IP est contenu dans une trame, par exemple une trame Ethernet :
!"#$%&'()(*(+,-.(/011$203
!"
Le datagramme IP encapsule lui-même un datagramme UDP. . .
ResAvI
Routage direct illustré 41
La modification malveillante de cette table est possible : « ARP Spoofing » (usurpation d’identité), « ARP Cache
Poisoning » (insertion d’association erronée).
ResAvI
Routage indirect illustré 44
Le paquet de la machine 164.81.1.178 est routé par l’intermédiaire du routeur vers la machine 193.50.3.12.
ResAvI
Routage indirect illustré 45
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.
ResAvI
5 Le DNS, « Domain Name Server » : Principe de délégation 46
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.
ResAvI
Les bases « WhoIs » 47
WhoIs « unilim.fr »
darkstar:~ pef$ whois unilim.fr registrar: RENATER
%% type: Isp Option 1
%% This is the AFNIC Whois server. address: 23-25 Rue Daviel
%% address: PARIS
%% complete date format : DD/MM/YYYY country: FR
%% short date format : DD/MM phone: +33 1 53 94 20 30
%% version : FRNIC-2.5 fax-no: +33 1 53 94 20 31
%% e-mail: domaine@renater.fr
%% Rights restricted by copyright. website: http://www.renater.fr
%% See http://www.afnic.fr/afnic/web/mentions-legales-whois_en anonymous: NO
%% registered: 01/01/1998
%% Use ’-h’ option to obtain more information about this service. source: FRNIC
%%
%% [2a01:0e35:8a71:bec0:66b9:e8ff:fed2:23ba REQUEST] » unilim.fr nic-hdl: DM269-FRNIC
%% type: PERSON
%% RL Net [##########] - RL IP [#########.] contact: Daniele Mercurio
%% address: centre Universitaire de Calcul de Limoges
domain: unilim.fr address: 87065 Limoges Cedex
status: ACTIVE country: FR
hold: NO phone: +33 5 55 45 75 75
holder-c: UDL3-FRNIC fax-no: +33 5 55 45 75 95
admin-c: DM269-FRNIC e-mail: dmercurio@unilim.fr
tech-c: GR1378-FRNIC notify: dmercurio@unilim.fr
zone-c: NFC1-FRNIC changed: 15/10/2000 migration-dbm@nic.fr
nsl-id: NSL5796-FRNIC anonymous: NO
registrar: RENATER obsoleted: NO
anniversary: 01/01 source: FRNIC
created: 01/01/1995
last-update: 11/03/2009
source: FRNIC Le responsable du domaine : le « CUCL » ...
ns-list: NSL5796-FRNIC
nserver: limdns.unilim.fr [164.81.1.4]
nserver: limdns2.unilim.fr [164.81.1.5]
nserver: cnudns.cines.fr [193.48.169.40 2001:660:6301:301::2:1]
source: FRNIC
ResAvI
La requête DNS 48
Modèle de fonctionnement client / serveur
− 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 :
$ telnet ishtar.msi.unilim.fr
connexion établie avec 164.81.60.43
ResAvI
Mécanismes 49
Resolver
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).
ResAvI
Les 13 serveurs racines 50
Le terme « anycast » permet d’offrir des services DNS de proximité à l’aide de cette capacité
offerte par IPv6.
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 SOA = Start of Authority Spécifie que ce serveur de nom a autorité sur le domaine
2 ; Database file msi.unilim.fr zone.
3 unilim.fr IN SOA msi.unilim.fr
4 ( 2006110204 ; serial number (ex : AAAAMMJJnn)
5 21600 ; refresh (ex : 6h période de mise à jour des secondaires)
6 3600 ; retry (ex: 1h durée minimale avant procaine interrogation)
7 86400 ; expire (ex: 1 jour)
8 3600 ) ; minimum TTL des entrées dans le cache
9 NS dns.msi.unilim.fr
10 TXT « Departement Informatique »
11 ishtar IN A 164.81.60.43
12 msi IN A 164.81.60.6
13 www IN CNAME msi ; des alias
14 164.81.60.6.in-addr IN PTR msi.unilim.fr
ResAvI
Certains champs correspondent à des services 54
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 :
bonnefoi@unilim.fr plutot que bonnefoi@msi.unilim.fr ;
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 :
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.
ResAvI
Le DNS : utilisation de la commande dig 55
Une requête plus concise
bonnefoi@msi:~$ dig +noall +answer web.unilim.fr
web.unilim.fr. 83023 IN A 164.81.1.61
Pour IPv6 avec des champs adresses 4 fois plus grand (AAAA)
bonnefoi@msi:~$ dig +short AAAA www.renater.fr
2001:660:3001:4002::10
Interrogation du SOA
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
On remarque que la réponse du serveur DNS est : Il correspond à répartir un trafic (HTTP par exemple) afin d’équilibrer la charge entre
? multiple ; différents serveurs.
? l’ordre de ces réponses change avec le temps On « fait tourner » différentes réponses (algo. de « Round-Robin »).
Une requête Wikipedia au travers du protocole DNS
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 :
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
? configuration de l’interface pour utiliser le client DHCP, « Dynamic Host », dans le fichier
/etc/network/interfaces :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
? en ligne de commande :
$ 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.
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 proto kernel scope link src 192.168.42.83
default via 192.168.42.254 dev eth0
ResAvI
Plan de la partie Protocoles 60
Éléments importants
. Notion de couches et de processus pairs ;
. 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.
ResAvI
1 Abstraction du réseau : les « couches » 61
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 coucheoffrir certains services aux couches plus hautes, en leur masquant l’implémentation de ces
services.
Notion de « protocole » :
Les règles et conventions utilisées pour cette conversation sont connues sous le nom de « protocole de la couche
n »:
− 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.
HTTP/1.1 200 OK
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)
Connection: close
Last-Modified: Thu, 15 Sep 2011 14:01:18 GMT
Content-Type: text/html; charset=utf-8
Content-Language: fr
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.
L’ensemble des protocoles utilisés par un système, avec un protocole par couche, est appelé souvent « pile
de protocoles ».
ResAvI
??
Programmation d’une couche : primitives de service et programmation Socket 66
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;
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.
ResAvI
Les Couches 67
Deux concepts importants
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é !
Le concept abstrait de processus pair est crucial pour la conception des réseaux.
0 The OSI
Le model
modèle OSI, « Open Systems Interconnection » 68
Application Layer 7
? 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,
Presentation Layer 6 Transport, Application ;
2 couches « applicatives » dans TCP/IP : Session, Présentation ;
Session Layer 5 ? chaque couche réalise un travail distinct avec des « moyens » interchangeables
(protocoles, technologies) :
Transport Layer 4 Physique : technologie WiFi, Ethernet, Bluetooth, etc.
Liaison de données : trame 802.3/Ethernet II ;
Network Layer 3 Réseau : datagramme IPv4, IPv6 ;
Transport : UDP, « User Datagram Protocol », TCP, « Transmission Control
Data Link Layer 2 Protocol », SCTP, « Stream Control Transmission Protocol », etc.
14 Application : navigateur Web, logiciel de messagerie. etc.
Chapter 1 Introduction to Computer Networking
Physical Layer 1 ? Présentation : 48encodageChapter
des1 données,
Internetworking
représentation ;
u
Presentation
HY, the Physical layer) consists of bit-level data streams and computer
Upper layer data Session
ardware connecting the devices together. This hardware
APPLICATION includes network
APPLICATION
Direct Connection TCP header Upper layer data Transport Segment
PRESENTATION
ards, cables, switches, PRESENTATION
wireless access points, and bridges. In the case of
SESSION SESSION
tworking, radio TRANSPORT
frequency (RF) uses air as the medium for wireless com-
TRANSPORT IP header Data Network Packet
Direct Connection
ns. The Physical NETWORK
layer consists of two sublayers: the NETWORK
Physical Layer Conver-
LLC header Data FCS
ocol (PLCP) andDATA LINK
Physical
PHYSICAL
Medium Dependent (PMD). DATA LINK
The PLCP, the higher
PHYSICAL
Data Link Frame
layers, is the interface between the PMD and Media Access Control (MAC)
Direct Connection MAC header Data FCS
Physical Bits
he PMD is the lower sublayer at the bottom of the protocol stack and is
Encapsulation 0101110101001000010
ResAvI
for transmitting the data onto the wireless medium. Each segment is then handed to the Network layer for network addressing and routing
Encapsulation
ata Link layer) is responsible for organizing the bit-level data for communica-
through the internetwork. Logical addressing (for example, IP) is used to get each segment
to the correct network. The Network layer protocol adds a control header to the segment
en devices on a network and detecting and correcting Physical layer errors.
handed down from the Transport layer, and what you have now is called a packet or data-
??
Le modèle
Ivanen
Marsiccouches : le modèle OSI « illustré »
• Rutgers University 22 69
• Application
7: Application services (SIP, FTP,
HTTP, Telnet, )
• Dialog control
5: Session • Synchronization
• Reliable (TCP)
4: Transport • Real-time (RTP)
• Source-to-destination (IP)
3: Network • Routing
• Address resolution
• Radio spectrum
• Infrared
1: Physical • Fiber
• Copper
ResAvI
"#$! %$&$'! ()*$+%! ,)'! -$! ,.',$/01)((*! .+2)'34$5! 0.! 0#+$$! %1-2+.1/%6! 73+%08! ()*$+%! 98! :8! )'5! ;<
44 PART I Networking Basics
Application
IPv4 IP Support
IP NAT
Protocols: Routing
ICMPv4 Protocols:
Network
ICMPv6 RIP, OSPF,
Neighbor BGP
IPv6 IPSec Discovery
ARP RARP
Data Link
Protocols and Links Determined by Underlying Network
(includes SLIP and PPP)
Physical
? certains protocolesTCP/IP protocols and layers. Note the position of some protocols between layers.
comme RIP, OSPF, BGP utilisent des protocoles de niveau 4, « Transport ».
? le protocole ARP est entre les couches 2 et 3.
ResAvI
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
frames and how to get them out again. Many RFCs define IP mapping into these lower-
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 71
Pas de couche « Présentation » et de couche « session » dans TCP/IP par rapport à OSI.
Some similarities between the two models are:
ResAvI
x %RWKPRGHOVDUHOD\HUHGPRGHOVDQGKDYHWKHEHQHÀWVRIOD\HUHG
communication models.
Networking Fundamentals
Let
VVHHDQH[DPSOHLQD7&3,3QHWZRUN
TCP/IP : couches, protocoles et routage 72
$SDFNHWRULJLQDWLQJIURPKRVW;ZLOOJHWWRKRVW<E\WUDYHUVLQJURXWHUV$%DQG&
Chaque matériel dispose d’une pile TCP/IP, plus ou moins complète.
ResAvI
/HW
VVD\IRUH[DPSOHWKDWKRVW;LVDZHEVHUYHUUHSO\LQJWRDUHTXHVWRULJLQDOO\
initiated from host Y.
Modélisation de protocole 73
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’émet-
teur et/ou le récepteur.
? 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.
? 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.
ResAvI
Modélisation d’une transaction : Message Sequence Charts 76
Limitations
? modélisation limitée à une transaction ou à une ses-
sion complète (plusieurs transactions la suite) ;
Pour décrire tout le protocole, il faut envisager de
nombreux scenarii, voire tous les scenarii possibles!
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.
ResAvI
La modélisation d’un protocole avec un automate fini 77
ResAvI
Le protocole HTTP, « HyperText Transfer Protocol », RFC 1945 78
Utilisation de cookies, de données de formulaires, de contenus JSON, d’URL particulière (REST), etc.
ResAvI
Le protocole SMTP 84
ResAvI
??
HTTP over UDP 85
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 ....@......Q.D..
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
ResAvI
Programmation d’un protocole : le problème de la synchronisation 86
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 produc-
teur/consommateur).
ResAvI
Synchronisation distante vs locale 87
Modèle producteur/consommateur en mode message asynchrone
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’émis-
sion et de réception.
? Le récepteur
décide de traiter un message ;
prend le premier message disponible ;
Le message était dans une file d’attente de réception.
ResAvI
Synchronisation et programmation : comment ça marche dans l’OS ? 88
Synchronisation locale
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 !
ResAvI
Plan de la partie Programmation Socket 89
Éléments importants
. TSAP, « Transport Service Access Point » ;
. Mode « orienté connexion » vs mode datagramme ;
. Protocoles TCP et UDP ;
. Mode « client/serveur » ;
ResAvI
2 La programmation Socket ou la programmation de la couche 4 90
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
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 ».
ResAvI
Notion de port : multiplexage et identification d’un processus 91
Modèle Client/Serveur
Un logiciel « serveur » attend la communication en provenance d’un logiciel « client ».
Localisation du logiciel serveur
◦ 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
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 ?
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é !
ResAvI
La notion de numéro de port : « multiplexer » les communications 92
Notion de numéro de port
différentes communications peuvent avoir lieu pour des protocoles différents, donc des programmes différents,
donc des numéros de port différents ;
chaque communication sur une machine est identifiée par un TSAP, « Transport Service Access Point », c-à-d
un couple (@IP, numéro de port).
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.
ResAvI
ResAvI
"#$%&'()*)+),-./)0122%314
!
Connexion
!"##$%&"#'(!)
94 TCP
Les « Sockets » Berkeley utilisées dans TCP/IP 95
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).
ResAvI
Les « Sockets » Berkeley utilisées dans TCP/IP 96
Le protocole UDP
C’est un protocole de transport non fiable, sans connexion.
L’échange de données se fait par datagrammes.
L’ordre dans lequel les paquets sont envoyés peut ne pas être respecté lors de leur réception.
Schéma de fonctionnement en TCP
Serveur Client
1 socket 1 socket
2 bind 2 connect
3 listen 3 recv, send
4 accept 4 close
5 recv, send
6 close
Schéma de fonctionnement en UDP
Serveur Client
1 socket 1 socket
2 bind 2 recvfrom, sendto
3 recvfrom, sendto 3 close
4 close
ResAvI
Les « Sockets » Berkeley utilisées dans TCP/IP 97
Les primitives de l’interface socket
? socket : Elle permet de créer un nouveau point d’accès de service de transport
? listen :
Utilisée dans le mode connecté lorsque plusieurs clients sont susceptibles d’établir une ou
plusieurs connexions avec le serveur.
Il permet de fixer le nombre d’appel maximum que pourra traiter le serveur (les appels non
gérés immédiatement sont alors mis en attente).
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
de connexion.
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
nouvelle socket de structure identique à la précédente.
1 #include <sys/types.h>
2 #include <sys/socket.h>¸
3 int accept (int nouvelle_socket, struct sockaddr_in *adresse_client,
4 int longueur_adresse_client);
ResAvI
Les « Sockets » Berkeley utilisées dans TCP/IP 100
? 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, seule 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, int longueur_adresse);
? 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 fichiers avec une option
supplémentaire pour préciser des options de communication
1 #include <sys/types.h>
2 #include <sys/socket.h>
4 int send (int socket, char *zone, int longueur_zone, int options);
5 int recv (int socket, char *zone, int longueur_zone, int options);
Les options permettent d’indiquer si les données urgentes, etc.
ResAvI
Les « Sockets » Berkeley utilisées dans TCP/IP : version Python 101
Le client
1 import os, socket, sys
3 adresse_symbolique_serveur = ’localhost’
4 adresse_serveur = socket.gethostbyname(adresse_symbolique_serveur)
5 numero_port_serveur = 6688
9 try:
10 ma_socket.connect((adresse_serveur, numero_port_serveur)) #SAP désignant le serveur
11 except Exception, message:
12 print "probleme de connexion", message
13 sys.exit(1)
15 while 1:
16 entree_clavier = raw_input(’:>’)
17 if not entree_clavier:
18 break
19 ma_socket.sendall(clavier)
20 ma_socket.close()
ResAvI
Les « Sockets » Berkeley utilisées dans TCP/IP : version Python 102
Le serveur
1 import sys, os, socket, select
» sn,unans=traceroute(["www.unilim.fr"],maxttl=10)
Begin emission: AS3303
[SWISSCOM Swisscom (Switzerland) Ltd]
**Finished to send 10 packets.
192.168.42.254
*******
Received 9 packets, got 9 answers, remaining 1 packets 12322
[PROXAD Free SAS]
164.81.1.61:tcp80
1 192.168.42.254 11 88.167.27.254
2 88.167.27.254 11
3 213.228.42.62 11 213.228.42.62
4 212.27.57.137 11
5 212.27.57.89 11
212.27.57.137
6 212.27.51.57 11
7 212.27.51.82 11
9 193.51.189.37 11 212.27.57.89
10 193.51.189.126 11
212.27.51.57
ATTENTION
Une erreur s’est glissée dans l’affichage à droite, où il est indiqué que le ré- 212.27.51.82
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.
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
ResAvI
Multicast et programmation 110
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 :
1 gestion_mcast = struct.pack("4sl", socket.inet_aton("224.0.0.127"), socket.INADDR_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.
et les paquets IGMP diffusés (TO_EX {empty} =⇒ quitter l’exclusion donc joindre) :
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..(..@....b....
0x0010: e000 0016 9404 0000 2200 f97e 0000 0001 ........"..~....
0x0020: 0400 0000 e000 007f 0000 0000 0000 ..............
routeur.
Localisation de service dans réseaux locaux privés 112
Solution de DNS pour réseau local
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
UDP port 5353
se combine avec l’auto-configuration des adresses IP, APIPA, « Automatic Private IP Addressing »,
(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.
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 |>
ResAvI
Extension des DNS : l’enregistrement SRV 113
Recherche de machine par service fourni (RFC 2782)
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
> 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!\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-
ResAvI
DATA
32 bits
FIGURE 6.3
◦ version sur 4 bits : le numéro de version (en général 4, IPv4
mais bientôt 6. . . ).
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
longueur de 20 octets, mais peut être plus grande en présence d’options).
ResAvI
Le format du datagramme IP 115
◦ le type de service sur 8 bits : indique la manière dont doit être géré le datagramme par les routeurs :
01234 5 6 7
priorité D T R C
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.
◦ longueur totale sur 2 octets : contient la taille en octet du datagramme (inclus la taille de l’en-tête)
◦ 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 mes-
sage 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
1 ICMP 6 TCP 2 IGMP 17 UDP
◦ 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é pendant
la transmission.
◦ 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 :
? HL − 20 = 0, pas d’options
? HL − 20 > 0, présence d’options
ResAvI
ICMP : « Internet Control Message Protocol
Networking », RFC 792
Fundamentals 117
? actuellement : les machines filtrent les paquets 36 Mobile regis- 0, 16 Varies Opt Opt Opt Opt
tration reply
« echo request » pour être « invisibles » sur le ré- 39 SKIP 0 Varies Opt Opt Opt Opt
seau (mode « stealth » sous Mac os X par ex.) ; 40 Photurius 0–3 Varies Exp Exp Exp 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, « Au-
thentication Header » et ESP, « Encapsulating Security Protocol » et choix des protocoles cryptographiques ;
? le protocole « photuris » sert également à la cryptographie : « Session-Key Management Protocol ».
ResAvI
Les attaques utilisant ICMP 119
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 n de sauts, « hops », jusqu’au firewall ;
deuxième phase : envoyer des datagrammes avec une TTL égale à n + 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 indispo-
nible du réseau, ce qui informe, par déduction, l’attaquant sur les machines présentes dans le réseau.
ResAvI
Les attaques utilisant ICMP 120
>>> 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=[]
|<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 |>>>>
>>> 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
|<Raw load=’abcdefghijklmnopqrstuvwabcdefghi’ |>>>>
? « ICMP floods » : en inondant la victime de message ICMP, on peut la ralentir et, éventuellement, l’empêcher de com-
muniquer :
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)
Begin emission:
*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]
(<IP frag=0 proto=icmp dst=192.168.127.1
|<ICMP type=echo-request
|<Raw load=’ceci est un test’ |>>>,
<IP 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
options=[] |<ICMP type=echo-reply code=0 chksum=0x2ee8 id=0x0 seq=0x0 |<Raw load=’ceci est un test’ |<Padding load=’\x00\x00’ |>>>>)
ResAvI
??
Encapsulation du datagramme IP dans une trame Ethernet 123
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 !
ResAvI
mathis-frag-harmful-00.txt) took this one step further with the title, “F
Considered Very Harmful.”The paper asserts that most of the harm occur
ment of packet content, especially the first, is lost on the network. And
older network attacks involved sending long sequences of fragments to
finishing the sequence, until the host or router ran out of buffer space and
5.1 Encapsulation du datagramme IP ⇒ fragmentation ? 124
Unité de transfert du réseau
Table 6.1 Typical MTU Sizes*
Un datagramme IP a une taille maximale de Link Protocol Typical MTU Limit Maximum IP Packet
Ethernet 1518 1500
65535 octets (taille indiquée sur 16bits).
IEEE 802.3 1518 1492
Ce datagramme lors de son acheminement doit
Gigabit Ethernet 9018 9000
emprunter des réseaux dont la taille maximale IEEE 802.4 8191 8166
des paquets transportables peut être inférieure. IEEE 802.5 (Token Ring) 4508 4464
La taille maximale d’une trame d’un réseau est FDDI 4500 4352
32 bits
FIGURE 6.3
◦ IPv4
flags, drapeaux : il est composé de trois bits
Packet and Header
Le processus de réassemblage
? À la réception du premier fragment, le destinataire final déclenche un temporisateur de réas-
semblage ;
? 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
datagramme 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.
0000 00 22 AA 01 21 31 00 D0 F1 10 12 13 08 00 45 00 ."..!1........E.
0010 00 28 02 37 00 00 23 06 F9 23 C1 32 B9 12 C9 1B .(.7..#..#.2....
0020 59 15 08 10 01 BB 00 00 00 00 00 00 00 00 50 02 Y.............P.
0030 20 00 E9 A1 00 00
fragmentée en :
0000 00 22 AA 01 21 31 00 D0 F1 10 12 13 08 00 45 00 ."..!1........E.
0010 00 1C 02 37 20 00 23 06 D9 2F C1 32 B9 12 C9 1B ...7 .#..2̇....
0020 59 15 08 10 01 BB 00 00 00 00 Y.........
et :
0000 00 22 AA 01 21 31 00 D0 F1 10 12 13 08 00 45 00 ."..!1........E.
0010 00 1C 02 37 20 01 23 06 D9 2E C1 32 B9 12 C9 1B ...7 .#....2....
0020 59 15 00 00 00 00 50 02 20 00 Y.....P. .
Ce qui donne ?
ResAvI
6 Quelques métriques 128
Ces métriques correspondent à des mesures des performances d’un réseau
Elles peuvent être mesurées au cours du temps, ou seulement, à certains moments, ou bien encore, uniquement
avec une valeur approchée.
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 !)
La gigue ou « jitter »
? mesure la variation de la latence au cours du temps :
Jitter = latency(n){latency(n − 1), où la mesure n − 1 est prise à un temps t et n à un temps t + δt
? 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.
ResAvI
Quelques
Chapter 3 • métriques
Multimedia and Real-time Applications 195 129
Influence du jitter sur l’ordre de remise des datagrammes
Network
O P Q 5 R 2 4 S O Q P 5 2 R 4 S
Source Packets departing source Packets arriving at receiver Receiver
8 8 8
7 7 7
6 6 6
Packet number
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 20 40 60 80 100 120 140 160 0 20 40 60 80 100 120 0 20 40 60 80 100 120 140 160 180 200 220 240 260
Time when packet departed (ms) Transit delay experienced (ms) Time when packet arrived (ms)
!"#$%&'()"&%*+&,)+#)+-.()(&/+.#01)!"#$%&')234)→)!"#$%&')235)
Quelques mesures de RTT 130
Sender Receiver
Layer 2 Layer 2 Transport layer Processing delay within transport layers Transport layer
(sender) (receiver)
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"F
*%&:2';#! J)'/&<! 81;*2:4%7+%(%*&/! (8B! =%! "#$$%&'()*+! E*F2*! 78&8! 381;%&/! 12()*+! =81;! 62'! &,%!
'%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;%&!
ResAvI
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 t1 ;
. le serveur note t1 et mesure t2 l’heure d’arrivée du paquet ;
. le serveur après traitement du protocole envoie un message de réponse où il mesure t3 et indique t2 ;
. le client mesure t4 , l’heure d’arrivée du message de réponse ;
Client Server
network
Receive Timestamp: t2
Transmit Timestamp: t3
er msg
serv
Destination Timestamp: t4
. à la fin de l’échange, le client et le serveur connaissent t1 , t2 , t3 et t4 et peuvent calculer une valeur approchée
du RTT !
ResAvI
Quelques métriques 133
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)
Éléments importants
. Une ancienne technologie de réseaux :
la commutation de circuit ou « Circuit Switching » qui s’améliore pour devenir de la com-
mutation de paquets ou « Packet Switching » ;
le « multiplexage temporel » ;
. le choix en un acheminement du paquet suivant :
toujours le même chemin en mode « virtual circuit » ;
un chemin défini progressivement en mode « datagram ».
ResAvI
6.1 Du réseau « Circuit-Switched » au réseau « Packet-switched » 135
Le réseau « Circuit-Switched »
◦ 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.
Exemple : le réseau ATM, « Asynchronous Transfer Mode » : proposé par les opérateurs télécommunications ;
Exemple d’utilisation :
? Connexion Internet d’un particulier :
? un réseau sans fil, « Wireless LAN » ;
ADSL
modem
? un modem ADSL et une ligne téléphonique : accès au
réseau ATM ; Internet
Telephone
network ISP core
network
? un lien vers l’ISP, « Internet Service Provider » ou FAI,
« Fournisseur d’accès Internet ». Fig. 1.8 A residential wireless LAN connected to the Internet
ResAvI
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 residen-
Généralisation du réseau « Packet-switched » 136
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,
X.25 (virtuellement2 TCP...) ;
. les « datagram networks », ou « réseau en mode datagramme », exemple : Internet ;
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
virtuels » ;
les paquets partagent de manière dynamique la puissance de traitement des commutateurs/routeurs, ses res-
sources mémoires ; 1.4 Network classification 11
crossed router taking it a little bit closer. As in virtual circuit networks, here too data-
grams queue up in routers and experience unpredictable delays before reaching the
Ttx
i th link
Tt
i
other packets. Even if at the end of each link we do not find a router, yet the
Commutateur ou routeur ? « circuit virtuel » ou « datagramme » ! 138
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 µs
◦ « 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 ms
. chaque
! 791:%-'7*&7%*)'-0*,)-'(-2312)'%2-'3-'7-,'%2*)6,'3-')-+(,'8
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;
Il est ainsi possible de partager les lignes entre 10 circuits !
<&'#,)'593,9'%*,,9=&#'1#'%5:)56#:'&#,'&963#,'#3):#'-/'29:2+9),'>
Il est
' souhaitable de partager les lignes de transmissions entre différents circuits :
? à;.'-,)',$%91*)1<.-'3-'(1&)14-&'.-,'.*42-,'3-')&12,+*,,*$2,'-2)&-'3*==6&-2),'7*&7%*),'5
l’instant T 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'
A et B peuvent communiquer pendant un temps δt (exemple : δ = 1/10) ;
A'-)'B'(-%@-2)'7$++%2*:%-&'(-2312)'%2')-+(,'3)'C-0-+(.-'5'3'G'HIHJE'8
? à! l’instant T + δt les lignes de transmissions sont affectées à un autre circuit ;
>'./*2,)12)'?K3)'.-,'.*42-,'3-')&12,+*,,*$2,',$2)'1==-7)6-,'>'%2'1%)&-'7*&7%*)F
? pendant
! (-2312)'3)'*.'-,)'($,,*<.-'3/679124-&'%2'$%'(.%,*-%&,'+-,,14-,F
δt, il est possible d’échanger un ou plusieurs messages entre C et D.
!"#$%&'()(*(+,-.(/011$203
L
L
A B
A B
4(5631#7%17(8(9(:7
4(5631#7%17(8
M M
!"
ResAvI
??
Commutation de paquets, « Packet Switching » 142
!"##$%&%'"()*+),&-$+%.
Réduction de la taille des échanges suivant une même unité
/0*$1%'"()*+)2&)%&'22+)*+.)013&(4+.).$'5&(%)$(+)#6#+)$('%0
Chaque message est découpé en paquets
"#$%&'()'**$+'('*,(-./0&1.('2(,&-$+%.(
◦ de
! petite taille, souvent fixe ;
-'(1',3,'(,$344'5(*0&6'2,(738'(9(
! ($#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)*+.),&-$+%.
On >2(/0)<32'(4?&,343*$,302(-'(1$%&',*(',(4'(1$:,$+'(-'*(43+2'*(-'(,:$2*)3**302*(@
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':=
"
!"#$%&'()(*(+,-.(/011$203
B C
!! D
ResAvI
??
!"##$%&%'"()*+)#+,,&-+,)!"#$%$)!"##$%&%'"()*+).&/$+%,
Commutation de messages vs Commutation de paquets 143
#$%&'(%)*+,,+-,%)+
.,'$(/0((01$2
!"#$%&'()(*(+,-.(/011$203
!"
ResAvI
Circuit virtuel vs Routage 144
Circuit virtuel
Router Subnet
Sending host Receiving host
C
Packet Router C makes a
Sending process Receiving process
choice to forward
packets to E and
not to D
ResAvI
Commutation de paquet : le format du paquet 145
Chaque paquet a un numéro d’ordre résultant du découpage des données initiales (message).
. 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).
ResAvI
??
6.2 Mode « Circuit virtuel » matériel : ATM, Asynchronous Transfer Mode 146
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 48
Le contrôle de flux augmente l’utilisation du réseau et diminue son débit (envoi d’accusé de réception,
retransmission, etc) ;
Sender
Sender
Feedback:
“Not much
Feedback:
getting through”
“Receiver
overflowing”
Receiver
Receiver
Figure 2-5:
? La congestion dépend deFlow
l’étatcontrol compared
du réseau to congestion
global, control.
qui tient compte de toutes les communications entre tous
les matériels connectés ;
"#$%&%'$%(!&%)(%&!'*+,-(!.+#',-$!)#+$*%&!'+,&.%!/+&!0+&%!(%$)"-'1!%2321!45$%6%#'!7889:!;%$%&'+#!<!
=)6"%!>??@:!A,&+'%!<!B+''!>?7?C2!
? le contrôle de flux ne s’applique que sur une communication et entre deux interlocuteurs.
ResAvI
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%!
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”
Mise en oeuvre du contrôle de flux ou « flow control »
transport indicator. When the machine waiting to transmit the rest of its datagrams
receives this “go” indictor, it resumes its transmission.
150
F I G U R E 1 .1 0
qu’un émetteur rapide sature un récepteur lent » =⇒ le récepteur contrôle l’émetteur.
Transmitting segments with flow control
« Éviter
? lorsque le récepteur reçoit une « rafale » ou un « burst » de paquets : buffé-
Sender Receiver risation, le problème est résolu si l’afflux de paquets tient dans le buffer ;
Transmit
? lorsque le récepteur reçoit trop de paquets et que son buffer est plein : risque
Buffer full
de perte de paquets
Not ready—
STOP!
le récepteur transmets à l’émetteur un indicateur « Not ready » pour stop-
Segments
processed
per son émission ;
GO! le récepteur transmets ensuite un indicateur « Go » pour autoriser de nou-
veau l’émetteur ;
Transmit
Error Control
8 Contrôle d’erreur Error control refers to mechanisms to correct and detect errors that occur in the
151
transmission of frames. The model that we will use, can shown in Figure 7.5. As before, data
Le contrôle d’erreur sur une ligne de transmission
are sent as a sequence of frames:
Les « trames » sont envoyées de l’émetteur vers
le récepteur en séquence :
. elles peuvent être retardées par le support de
transmission ;
. elles peuvent être perdues : la trame est abî-
mée par des erreurs au point qu’on ne sache
plus que c’était une trame ;
. elles peuvent être endommagées : seuls quelques
bits ont été altérés mais la trame reste recon-
naissable.
◦ les acquittements positifs : le récepteur envoie un acquittement pour chaque trame reçue sans erreur ;
◦ la retransmission après expiration d’un délai d’attente, timed-out : l’émetteur renvoie une trame après avoir attendu
un acquittement positif sans succès ;
◦ un acquittement négatif : le récepteur renvoie un acquittement pour chaque trame reçue avec des erreurs et force la
retransmission depuis l’émetteur.
Contrôle d’erreur 152
Définition et localisation
? Une « erreur simple » correspond à l’inversion de la valeur d’un bit constituant le message.
? Une erreur peut intervenir n’importe où : sur les informations de contrôle ou sur les données.
? Une erreur est généralement détectée par le récepteur, plus rarement par l’émetteur.
Exemple, suivant les technologies utilisées et les algorithmes de MAC, « Medium Access Control », associés :
CSMA/CD, « Carrier Sense, Multiple Access, with Collision Detection » : l’émetteur « écoute » le support de transmis-
sion pour détecter si une transmission simultanée a lieu ce qui entraîne une collision, qui est elle-même détectée par
le récepteur (exemple : Ethernet).
MACA, « Multiple Access with Collision Avoidance » : l’émetteur ne peut pas savoir si une collision a lieu au niveau
du récepteur. L’algorithme essaye de les « éviter » par des techniques prévisionnelles (exemple : WiFi).
Gestion des erreurs et couches réseau
. couche 4, « transport » : une erreur correspond à la perte d’un datagramme ou à un datagramme endommagé
TCP :
? récepteur : il n’y a pas d’acquittement du segment perdu ou contenant une erreur ;
? émetteur : réémission automatique du segment après expiration du délai d’attente de l’acquittement.
UDP : le datagramme perdu ou endommagé est ignoré ;
. Au niveau de l’émetteur :
l’émetteur ajoute des données de contrôle aux données
à émettre.
Ces données de contrôles sont déterminées ou calculées
en fonction des données à émettre suivant une fonction
f , appelée « fonction de code détecteur d’erreur ».
Cette fonction est souvent associée à la technologie de
transmission, et surtout, elle doit être connue du récep-
teur.
lors de la transmission effective, l’émetteur envoie les
données suivies des données de contrôle, appelées sur
le schéma E , ou « code de détection d’erreur ». Fig. 7.7 Error detection
This is the kind of result that motivates the use of error-detection techniques. All
these techniques operate on the following principle which is shown in Figure 7.7. For a give
. Au niveau du récepteur : frame of bits, additional bits that constitute an error-detecting code are added by th
le récepteur reçoit les données et les données contrôle, E
detransmitter. This
; code is calculated as a function of the other transmitted bits. The receiv
performs the same calculation and compares the two results. A detected error occurs if an
il calcule avec la même fonction f que celle utilisée par l’émetteur, ses propres données de contrôle ;
Distance de Hamming
Le nombre de bits de différence entre deux séquences de n bits (celle transmise et celle reçue par exemple) est appelée
« distance de Hamming ».
Exemple : la séquence 10001001 et 10110001 sont différentes de 3 bits,
soit une distance de Hamming de 3.
Il est possible de calculer cette distance à l’aide d’un « ou exclusif » et de compter le nombre de bits à 1. Sur l’exemple
précédent : 10001001 xor 10110001 = 00111000 soient 3 bits à 1.
Cette distance correspond également au nombre d’erreurs simples nécessaires pour passer d’une séquence à l’autre
(le nombre de bit inversé entre les deux séquences).
ResAvI
8.4 Distance de Hamming d’un code détecteur d’erreur 157
Distance de Hamming d’un code
Ces codes de détection, ou de correction d’erreur, sont déterminés à partir d’un algorithme appliqué sur les
données appelé « code ».
b. pour chaque paire de « mot de code » possible, déterminer la distance de Hamming qui les sépare ;
Elle indique le nombre d’erreurs maximales que le code peut détecter ou corriger.
ResAvI
8.5 Exemples de code 158
Est-il efficace ?
ResAvI
8.6 Détection ou Correction ? 159
Notion de détection et de correction d’erreurs
. La détection d’une erreur consiste à savoir si un bloc d’information (bits de données + bits de contrôle) correspond ou
non à un « mot de code » :
si le bloc reçu n’est pas un « mot de code » alors il y a eu une ou plusieurs erreurs de transmission.
. La correction d’erreur consiste, une fois la détection d’erreur réalisée, à chercher le « mot de code » originellement transmis
qui a subit ces erreurs, c-à-d. :
le « mot de code » qui se rapproche le plus du bloc d’information reçu.
Il faut alors que le nombre d’erreurs simples subies soit inférieur à un seuil !
Autrement dit
◦ d est la distance de Hamming du code complet, c-à-d la plus petite distance séparant deux « mots de code » ;
◦ le « mot de code » transmis subit p erreurs simples :
Si p < d le « mot de code » n’a pas franchi la distance qui le sépare d’un autre « mot de code », il n’a pas pu devenir un
autre « mot de code » =⇒ Le récepteur détecte une erreur et peut éventuellement la corriger !
Si p ≥ d le « mot de code » a franchi la distance qui le sépare d’un autre « mot de code », alors il a pu devenir :
? un autre « mot de code » donc plus d’erreur détectable avec p = d !
? un autre « mot de code » puis à partir de ce « mot de code » subir de nouvelles modifications vers autre chose qu’un
« mot de code » (ou pas) d’où plus de correction d’erreur possible avec p > d !
ResAvI
Quel code pour faire de la Correction et de la Détection ? 160
Distance de Hamming nécessaire
Lors d’une transmission, le bloc d’information (bits de données + bits de contrôle) est susceptible de subir p erreurs simples
(c-à-d p inversion de bits) suivant le taux d’erreurs de la ligne de transmission.
La distance de Hamming nécessaire pour un code pour gérer ces p erreurs est :
◦ p + 1 si on veut pouvoir détecter la présence d’erreurs.
Si les « mots de code » ont une distance de Hamming minimale de p + 1 entre eux, alors il est impossible qu’un « mot de
code » subissant p inversions ou erreurs se transforme en un autre « mot de code ».
◦ 2p + 1 si on veut pouvoir corriger la présence d’erreurs.
Dans ce cas là, on veut pouvoir retrouver le « mot de code » original, c-à-d celui qui se rapproche le plus du bloc d’information
reçu.
Pour pouvoir faire de la correction, il faut que la distance de Hamming du code soit supérieure ou égale à 2p + 1 !
ResAvI
8.7 Exemple de code : le contrôle de parité 161
Le controle de parité
L’algorithme se décrit de la manière suivante :
. À l’émission :
pour chaque séquence de i bits (i valant généralement 7 ou 8) on associe un bit de parité ;
la valeur de ce bit de parité est choisie de telle manière que le nombre de bits à 1 dans la séquence des (i + 1) bits
soient toujours pair.
. À la réception :
on fait la somme des bits valant 1 de la séquence des i + 1 bits reçus ;
si la somme est paire alors on considère qu’il n’y a pas eu d’erreur de transmission ;
si la somme est impaire alors il y a eut erreur de transmission et la séquence doit être retransmise.
La valeur d’un bit de contrôle est choisie de manière à ce qu’elle vérifie la parité d’une séquence de bits.
. à partir de chaque décomposition obtenue, on détermine ce que chaque bit de contrôle vérifie, c-à-d quelle séquence
de bits il vérifie.
Cette séquence de bits est obtenue en sélectionnant le rang pour lequel le bit de contrôle apparait dans la décomposition.
ResAvI
La méthode de Hamming sur un exemple 164
Exemple de calcul de la valeur des bits de contrôle
a vaut 1001000, soit xx1x001x000 (les x sont les bits réservés aux contrôle)
? le bit de contrôle de rang 8 apparait dans la décomposition des rangs 8, 9, 10 et 11.
Pour le codage de a, on obtient xx1x001 0 000
? le bit de contrôle de rang 4 apparait dans la décomposition des rangs 4, 5, 6, 7.
Pour le codage de a, on obtient xx1 1 0010000
? le bit de contrôle de rang 2 apparait dans la décomposition des rangs 2, 3, 6, 7, 10 et 11.
Pour le codage de a, on obtient x 0 110010000
? le bit de contrôle de rang 1 apparait dans la décomposition des rangs 1, 3, 5, 7, 9, et 11.
Pour le codage de a, on obtient 0 0110010000.
Vérification et correction lors de la réception
a. le récepteur vérifie un bit de contrôle de rang k ;
b. si le bit est incorrect, il mémorise cette valeur k dans un compteur ;
c. le récepteur passe au bit de contrôle de rang suivant 2k ;
d. si de nouveau le bit est incorrect alors il additionne la valeur 2k au compteur.
e. etc.
Si à la fin du traitement de tous les bits de contrôle, le compteur n’est pas vide, alors il contient le rang du bit qui a été modifié
et on peut alors corriger la séquence.
Exemple :
. codage de a 00110010000, glissons une erreur : 00 0 10010000
. quand le récepteur vérifie :
le bit de contrôle de rang 1 est incorrect ! On met son rang dans le compteur ! soit compteur = 1.
le bit de contrôle de rang 2 est incorrect ! On ajoute son rang, compteur = 3.
le bit de contrôle de rang 4 est correct.
le bit de contrôle de rang 8 est correct.
. L’erreur s’est donc glissée dans le bit ayant pour rang la valeur du compteur 3 !
ResAvI
8.10 Le cas des erreurs en rafale 165
Utilisation de la méthode de correction d’erreur de Hamming
Il est possible d’utiliser la méthode de Hamming pour la correction des erreurs en rafale (altération d’une sé-
quence de bits).
On considère une séquence de caractères (ici, « Hamming Code »).
Cette séquence de caractères est interprétée comme une séquence de valeurs en ASCII.
Pour chaque séquence de bits de chacun de ces caractères, on calcule la séquence binaire avec la méthode de
Hamming.
On obtient alors une table de k lignes, pour k caractères encodés.
Le CRC :
◦ utilise une valeur de vérification : « check » ;
◦ introduit de la redondance, « redundancy » (augmentation de la taille du message sans ajout d’information) ;
◦ se base sur l’utilisation des codes cycliques, « cyclic codes » ;
◦ est facile à implémenter de manière matérielle (intégration dans la carte réseau pour du « offload ») ;
◦ est bien adapter à détecter des erreurs causées par du bruit lors de la transmission (erreurs en rafale).
Présentation de l’algorithme
? pour m-bits de données, l’émetteur calcule une séquence de k -bits appelées FCS, « Frame Check Sequence » ;
? l’émetteur transmet ensuite une trame composée des m + k bits ;
? ces m + k bits sont divisibles par un nombre de valeur prédeterminée connue de l’émetteur et du récepteur ;
? lorsque le récepteur reçoit la trame composée des m + k bits, il divise ces m + k bits par le même nombre :
s’il n’y a pas de reste alors la trame n’a pas subie d’erreur !
Pour comprendre l’opérations de division utilisée, il est nécessaire de considérer l’arithmétique modulo 2.
Arithmétique modulo 2
Cette arithmétique utilise des opérations binaires sans retenue : l’addition et la 1111 11001
soustraction correspondent à la même opération : le xor, c-à-d le « ou exclusif » + 1010 * 11
=⇒ ---- -----
0101 11001
11001
------
101011
Règle : la division de deux séquences binaires est possible si et seulement si elles sont de même longueur.
Le reste est toujours de taille inférieure, en nombre de bits, à la taille du diviseur.
ResAvI
8.12 Les codes polynomiaux 167
Codes de détection d’erreurs à redondance cyclique (CRC)
Ce sont des codes « polynomiaux » : ils ajoutent des bits dont les valeurs sont des combinaisons linéaires des bits de
l’information à transmettre.
La séquence de bits b1 , b2 , b3 . . . bn est considérée comme un polynôme P (x) :
P (x) = b1 xn−1 + b2 xn−2 + b3 xn−3 + . . . bn . Exemple : 1001 est équivalent à P (x) = x3 + 1
Le degré d’un polynôme correspond à celui de son terme le plus élevé. Exemple : P (x) = x3 + 1, deg(P ) = 3.
Pour pouvoir employer cette méthode de détection des erreurs, l’émetteur et le récepteur doivent se mettre d’accord
sur le polynôme générateur G(x) à employer =⇒ il est associé à la technologie et intégré dans la carte réseau.
ResAvI
Codes polynomiaux 168
Pour la détection d’erreur à la réception, on divise de manière binaire la séquence de bits reçues par le même polynôme
générateur. Si le reste de la division est nulle, pas d’erreur de transmission.
Exemple : 1OO11O1O1111 divisé par 11001 donne 00000 !
Propriétés des codes polynomiaux
Soient les polynômes :
M (x) : les données à transmettre ; M 0 (x) : la trame reçue qui peut ou non contenir des er-
T (x) : la trame à transmettre (les données + le FCS, reurs ;
« Frame check sequence ») ; E(x) : les erreurs qui ont pu se produire.
Soient :
◦ M = 1010001101 sur 10 bits ;
◦ G = 110101 sur 6 bits ;
◦ FCS, « Frame check sequence », ou R sur 5 bits (rappel : la division de deux séquences binaires est possible ssi elles
sont de même longueur, donc le reste est au plus de dimension longeur(G) − 1).
Calcul du reste 182 COMPUTER NETWORK
P ! 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 " 2n M
1 1 0 1 0 1
1 1 1 0 1 1
1 1 0 1 0 1
1 1 1 0 1 0
1 1 0 1 0 1
1 1 1 1 1 0
1 1 0 1 0 1
1 0 1 1 0 0
1 1 0 1 0 1
1 1 0 0 1 0
1 1 0 1 0 1
0 1 1 1 0 " R
4. The
c. on ajoute le reste R = 01110 à M∗2 5 , ce qui(R
remainder = 01110)
donne is added to 2nM to
: 101000110101110 lesgive T = 101000110101110,
données transmises. which is
ResAvI
transmitted
5. If there are no errors, the receiver receives T intact. The received frame is divided
by P.
1 1 0 1 0 1
0 1 1 1 0 " R
4. The remainder (R = 01110) is added to 2nM to give T = 101000110101110, which is
Code transmittedd’application
polynomiaux : exemple 170
5. If there are no errors, the receiver receives T intact. The received frame is divided
À la réception by P.
Equation
a. On divise les données reçues!par le polynôme générateur G = 110101 :
1 1 0 0 1 0 1 0 0 1 1 " Q
P ! 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 " 2n M + R
1 1 0 1 0 1
1 1 1 0 1 1
1 1 0 1 0 1
1 1 1 0 1 0
1 1 0 1 0 1
1 1 1 1 1 0
1 1 0 1 0 1
1 0 1 1 1 1
1 1 0 1 0 1
1 1 0 1 0 1
1 1 0 1 0 1
0 0 0 0 0 0 " R
b. on trouve que le reste vaut 0, il n’y a donc pas eu d’erreur lors de la transmission !
ResAvI
8.14 Les codes polynomiaux : exemple de codes utilisés 171
Exemples de polynômes générateurs
◦ la méthode du bit de parité correspond à l’utilisation du polynôme générateur x + 1 ;
◦ CRC-CCITT = x16 + x12 + x5 + 1
◦ CRC-12 = x12 + x11 + x3 + x2 + x + 1 pour un codage d’information sur 6bits,
◦ CRC-16 = x16 +x15 +x2 +1 pour un codage des informations sur 8 bits, utilisé par exemple dans le protocole
HDLC.
Pour pouvoir détecter une erreur il faut que le polynôme représentant cette erreur ne soit pas divisible par le
polynôme générateur.
Ou que le polynôme d’erreur ne soit pas un multiple du polynôme générateur.
8.16 Implémentation
which were used earlier in the discussion. 173
Part (a) of the figure shows the register implementation. The process begins with the
shiftIlregister
est possible d’implémenter
cleared (all de or
zeros). The message, manière
dividend,efficace les CRC
is then entered, : at a time,
one bit
starting with the most significant bit.
Exemple : M=1010001101, M (X) = x + x + x + x + 1 et G = 110101, G(X) = x5 + x4 + x2 + 1
9 7 3 2
Initial 0 0 0 0 0 0 0 1 1 "
Step 1 0 0 0 0 1 0 0 0 0 #
#
Step 2 0 0 0 1 0 0 1 1 1 # Message
Step 3 0 0 1 0 1 0 0 0 0 # to be
#
Step 4 0 1 0 1 0 1 1 0 0 # sent
$
Step 5 0 1 1 0 0 1 1 1 0 #
Step 6 1 1 1 0 1 0 1 0 1 #
#
Step 7 0 1 1 1 0 1 1 1 1 #
Step 8 1 1 1 0 1 0 1 1 0 #
#%
Step 9 0 1 1 1 1 1 1 1 1
Step 10 1 1 1 1 1 0 0 1 0 " Five
Step 11 0 1 0 1 1 1 1 0 0 # zeros
#
Step 12 1 0 1 1 0 1 0 1 0 # added
$
Step 13 1 1 0 0 1 0 1 1 0 #
#
Step 14 0 0 1 1 1 0 1 0 0 #
%
Step 15 0 1 1 1 0 1 1 0 —
Fig. 7.8 (b) Circuit with shift registers for dividing by polynomial X5 + X4 + X2 + 1
ResAvI
Part (b) is a table that shows the step-by-step operation as the input is applied one bit
at a time. Each row of the table shows the values currently stored in the five shift-register
elements. In addition, the row shows the values that appear at the outputs of the three
Quelques définitions utilisées dans la transmission numérique 174
Le BER, « Bit Error Rate »
N ombre de bits
BER = N ombre total de bits transmis mesuré pendant un intervalle de temps donné.
C’est une approximation de la probabilité d’erreur indiqué par le « Taux d’erreur » vu précédemment.
In this simplified example, both the sending and receiving machines are workstations.
So, the size of the window controls how much information is transferred from one end
In reality, this is not done in simple, small numbers but in the amount of bytes that can
to the other. While some protocols quantify information by observing the number of pack-
be sent. Acheminement d’un flux de donnés découpé en segments numérotés
ets, TCP/IP measures it by counting the number of bytes. 176
As you can see in Figure 1.11, there are two window sizes—one set to 1 and one set to 3.
Le mécanisme defailsfenêtre
If a receiving host to receive all the bytes that it should acknowledge,
F I G U R E 1 .11 Windowing
the host can improve the communication session by decreasing the win-
dow size. ? ne pas attendre un acquittement avant de continuer à émettre ;
? optimiser le temps d’accès au réseau :
Acknowledgments
la taille d’un paquet dépend de la technologie du réseau pas du récep-
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 duplicatedteur
or ;
lost. This is achieved through something called positive acknowledgment with retransmis-
sion—a technique that requires a receiving machine to communicate with the transmitting réseau est rapide (beaucoup plus rapide que lorsque la taille du pa-
le
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
quet a été choisie) ;
next segment. When it sends a segment, the transmitting machine starts a timer and retrans-
l’émetteur a remporté la compétition d’accès au support ;
mits 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
le réseau lui est alloué ;
acknowledges it has received them by requesting segment 4. When it receives the acknowl-
le temps d’allocation est supérieur au temps d’émission d’un paquet ;
edgment, 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 ?
ne pas saturer le récepteur : le récepteur définit une taille de fenêtre ;
be resent. The sending machine will then resend the lost segment and wait for an acknowl-
edgment, which it must receive in order to move on to the transmission of segment 7.
When you’ve configured a window size of 1, the sending machine waits for an acknowl-
Le mécanisme d’acquittement positif avec retransmission
F I Gedgment
U R E 1for.1 each
2 Transport layer
data segment reliableindelivery
(measured bytes) it transmits before transmitting another.
If you’ve configured a window size of 3, it’s allowed to transmit three bytes of data before
an acknowledgment is received. ? garantie l’absence de perte et de duplication des segments ;
? le récepteur envoie un acquittement en retour à l’émetteur lorsqu’il reçoit
Sender Receiver
1 2 3 4 5 6 1 2 3 4 5 6
un segment ;
? l’émetteur :
Send 1
Send 2 envoie un segment et attend l’acquittement avant d’envoyer le suivant ;
Send 3 lors de l’envoi, un compte à rebours démarre : s’il expire avant la récep-
Ack 4
Send 4
tion de l’acquittement, le segment est renvoyé ;
Send 5 Connection lost! ? Si on combine avec le mécanisme de fenêtre :
Send 6
Ack 5
l’émetteur envoie plusieurs segments suivant la taille de la fenêtre ;
Send 5 le récepteur envoie un acquittement demandant le segment suivant de
Ack 7
tous ceux de numéros consécutifs qu’il a bien reçu.
ResAvI
9.1 TCP : Segmentation 177
Segmentation
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ée 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 To application: stream of bytes
Application
Slice into
Concatenate to the byte stream
TCP segments
TCP TCP TCP TCP
OSI Layer 4/5: TCP hdr payload hdr payload
Network
Network
Application PDU
Presentation
Each segment is then handed to the Network layer for network addressing and routin
ResAvI
through the internetwork. Logical addressing (for example, IP) is used to get each segme
TCP : réémission & acquittement 179
Gestion des erreurs
TCP garantit l’arrivée des données, en cas de perte les deux extrémités sont prévenues :
Dans la suite des transparents, le temps d’attente avant réémission automatique est appelé RTO, « Re-
transmission TimeOut », et il est calculé en fonction du RTT d’un segment (temps de transmission du
segment+temps de réception de l’acquittement).
ResAvI
TCP : la fenêtre glissante, sliding window 180
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 n segments (dont la somme des tailles < T), sans attendre
l’acquittement de chaque segment envoyé, avant de ne plus pouvoir émettre.
Bufférisation
FIGURE 11.5
TCP sliding window. Elle permet de :
Packet departs source 1 2 3 4 5 6 7 8 « lisser » le débit
en sortie ;
Flow Packet
Control andat Congestion
arrives buffer 1 Control
2 3 4 5 6 7 8 gérer les trous,
gaps.
When flow control is used as a form ofincongestion
Time buffer control for the whole network, the
Packet removed from buffer 1 2
network nodes themselves are the “receivers” and try to 3limit
4 5the
6 amount
7 8 of data that
senders dump into the network. Gap in playback
But now there is a problem.
0 How can
5 routers tell
10 the hosts using
15 TCP (which
20 is an
end-to-end protocol) that there is congestion Time on the
(sec)network? Routers are not sup-
posed to play around with the TCP headers in transit packets (routers have enough to
do), but they are allowed to play around with IP headers (and often have to).
ResAvI
Routers know when a network is congested (they are the first to know), so they can
Fig.fl5-31.
easily ip someSmoothing theand
bits in the IPv4 output streamofby
IPv6 headers thebuffering
packets theypackets.
route. These bits
are in the TOS (IPv4) and Flow (IPv6) fields, and the hosts can read these bits and react
Bufférisation vs Application 182
Increasing Increasing
Sent & Allowed to sequence num. Delivered to Gap in sequence num.
acked send application recv’d data
TCP TCP
sender’s receiver’s
byte stream byte stream
Observation Il faut des algorithmes empiriques pour gérer les mécanismes de contrôle
de TCP.
Solution de Clarke attendre que l’espace libre sur le récepteur soit suffisamment grand avant de
prévenir l ’émetteur...
ResAvI
TCP : cas d’exception 185
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.
◦ FIGURE 11.2
Acknowledgement number :
The TCP header fields. Note that some fields are a single bit wide, and others, like the options
fi numéro
eld, can be up to 40de séquence
bytes (320 bits) long. du prochain segment attendu ;
acquitter les octets précédemment reçus (ceux de séquence < à celle du prochain segment
actual data in the received segment, the acknowledgment number increments
demandé) ;
by 1. (Every byte in TCP is still counted, but that’s not all that contributes to
the sequence numbercumulatif
acquittement field.) : il peut correspondre à plusieurs
segments déjà reçus.
Header length—The TCP header length in 4-byte units.
◦ Taille par défaut du segment : 536 octets de données + 20 octets d’en-tête : 556 octets.
Reserved—Four bits are reserved for future use.
ECN flags—The two explicit congestion notification (ECN) bits are used to tell
ResAvI
the host when the network is experiencing congestion and send windows
should be adjusted.
URG, ACK, PSH, RST, SYN, FIN—These six single-bit fields (Urgent, Acknowledg-
ment, Push, Reset, Sync, and Final) give the receiver more information on how
CHAPTER 11 Transmission Control Protocol 283
TCP : le format du segment 187
the host when the network is experiencing congestion and send windows
should be adjusted.
URG, ACK, PSH, RST, SYN, FIN—These six single-bit fields (Urgent, Acknowledg-
ment, Push, Reset, Sync, and Final) give the receiver more information on how
TCP : le format du segment 188
◦ 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,
...
ResAvI
TCP : Calcul de la somme de contrôle 189
Méthode
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.
ResAvI
9.3 TCP : établissement d’une connexion 190
Technique du “Piggybacking” ou mode en superposition
L’acquittement d’un paquet paquet de A → B , peut être transmis dans un paquet allant de B → A.
La communication pouvant être bidirectionnel simultanée, elle peut nécessiter la transmission d’information de A →
B et de B → A simultanément.
L’établissement de la connexion, ou handshake
? se fait en 3 étapes ;
? correspond à une demande d’ouverture de la part de
chaque interlocuteur ;
? permet de synchroniser l’ISN, « Initial Sequence Num-
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.
? [S] : indique un SYN ; listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
? [S.] : indique un SYN/ACK ; 22:07:26.954500 IP 192.168.42.83.56149 > 164.81.1.45.25: Flags [S], seq 1249996154,
win 14600, options [mss 1460,sackOK,TS val 138100882 ecr 0], length 0
? [.] : indique un ACK.
? connexion de : 22:07:26.999157 IP 164.81.1.45.25 > 192.168.42.83.56149: Flags [S.], seq 4144328101, ack 1249996155,
192.168.42.83 port 56149win 5792, options [mss 1460,sackOK,TS val 1968359736 ecr 138100882], length 0
vers
22:07:26.999227 IP 192.168.42.83.56149 > 164.81.1.45.25: Flags [.], ack 1,
164.81.1.45 port 25. win 14600, options [nop,nop,TS val 138100893 ecr 1968359736], length 0
3 packets captured
0 packets dropped by kernel
ResAvI
TCP : la connexion classique vs simultanée 191
Connexion classique
N◦ TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT –> <SEQ=100><CTL=SYN> –> SYN-RECEIVED
3. ESTABLISHED <– <SEQ=300><ACK=101><CTL=SYN,ACK> <– SYN-RECEIVED
4. ESTABLISHED –> <SEQ=101><ACK=301><CTL=ACK> –> ESTABLISHED
5. ESTABLISHED –> <SEQ=101><ACK=301><CTL=ACK><DATA> –> ESTABLISHED
Connexion simultanée
TCP A TCP B
1. CLOSED CLOSED
2. SYN-SENT –> <SEQ=100><CTL=SYN> ...
3. SYN-RECEIVED <– <SEQ=300><CTL=SYN> <– SYN-SENT
4. ... <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> <– SYN-RECEIVED
7. ... <SEQ=101><ACK=301><CTL=ACK> –> ESTABLISHED
La connexion simultanée est difficile à mettre en œuvre, et elle est rarement implémentée dans
les piles TCP/IP.
ResAvI
9.4 TCP : la fermeture 192
Déconnexion
Client Server
TCP A TCP B
Client State Server State
ESTABLISHED
1. ESTABLISHED ESTABLISHED
ESTABLISHED #1
Normal Operation
Receive Close 2. (Close)
signal from App, FIN
Send FIN Receive FIN, FIN-WAIT-1 –> <SEQ=100><ACK=300><CTL=FIN,ACK> –> CLOSE-WAIT
Send ACK,
FIN-WAIT-1 #2 Tell App to Close 3. FIN-WAIT-2 <– <SEQ=300><ACK=101><CTL=ACK> <– CLOSE-WAIT
CLOSE-WAIT
Wait for ACK and ACK 4. (Close)
FIN from Server
(Wait for App)
TIME-WAIT <– <SEQ=300><ACK=101><CTL=FIN,ACK> <– LAST-ACK
Receive ACK
FIN-WAIT-2
App is ready to 5. TIME-WAIT –> <SEQ=101><ACK=301><CTL=ACK> –> CLOSED
#1
Close, Send FIN LAST-ACK
Wait for Server FIN 6. (2 Maximum Segment Lifetime)
FIN
Wait for ACK
Receive FIN, to FIN CLOSED
#2
Send ACK
TIME-WAIT
ACK Receive ACK
CLOSED
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.
ResAvI
9.5 TCP : l’automate de fonctionnement 193
Timeout after two maximum
segment lifetimes (2*MSL)
CLOSED
LISTEN
SYN/SYN + ACK
SYN RCVD SYN SENT
ACK
Close/FIN ESTABLISHED
Close/FIN FIN/ACK
ACK Close/FIN
FIN +
ACK/ACK
CLOSING
FIN WAIT 2 LAST ACK
ACK
FIN/ACK
TIME WAIT
ResAvI
TCP : l’automate de communication expliqué 194
CLOSED
timeout / send:RST
normal transition for client
Ap
Appl:passive open / pl
close se :a normal transition for server
send:<nothing> nd c
: S tive Appl -- state transition take when
YN op
Ap en application issues operation
CK LISTEN pl:
YN,A Se se /
d:S nd nd
/ sen passive open :S data
N; YN /
:SY T / ing>
rcv :RS oth
rcv d:<n
sen
Appl:close
rcv: SYN /
SYN_RCVD or timeout /
rcv send:SYN, ACK SYN_SENT
:A reset
CK simultaneous open
Se active open
nd / /
:< CK
no
thi N,A Server
SY
Appl: close / ng
> r cv: K
:AC
send: FIN s end rcv: FIN /
ESTABLISHED CLOSE_WAIT
s e/ send: ACK
clo
pl:
Ap IN data transfer state
nd:F
Client se
AppL:close /
rcv: ACK /
send:FIN
rcv: FIN /
FIN_WAIT_1 CLOSING send: <nothing>
send: ACK
TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT –> <SEQ=100><CTL=SYN> ... pas encore reçu
3. (duplication) ... <SEQ=90><CTL=SYN> –> SYN-RECEIVED
4. SYN-SENT <– <SEQ=300><ACK=91><CTL=SYN,ACK> <– SYN-RECEIVED
5. SYN-SENT –> <SEQ=91><CTL=RST> –> LISTEN
6. ... <SEQ=100><CTL=SYN> –> SYN-RECEIVED
7. SYN-SENT <– <SEQ=400><ACK=101><CTL=SYN,ACK> <– SYN-RECEIVED
8. ESTABLISHED –> <SEQ=101><ACK=401><CTL=ACK> –> 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, SYN-
SENT, SYN-RECEIVED) et le segment entrant acquitte
quelque chose qui n’a pas été envoyé (ACK mauvais) un
segment RST est envoyé.
ResAvI
9.7 TCP : Améliorations par l’utilisation d’options 196
? MSS, Maximum Segment Size : la taille maximale des données contenues dans un segment (sans tenir compte de
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 2coef ) :
Cette option est très utile pour les connexions très rapide (Gbits).
Pour la désactiver sous GNU/Linux :
$ 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)
Cette option est négociée à l’établissement de la connexion Dans le champs options peut être indiqué une liste de
(adresse début, adresse fin) de données reçues mais non encore acquittées
? Timestamp : permet de calculer le RTT d’un segment (RFC1072) :
il existe deux champs contenant un timestamp : « Echo », « Echo reply » :
l’émetteur envoie un segment avec un timestamp par rapport à sa propre horloge ;
le récepteur lui renvoie ce timestamp dans le segment réponse : l’émetteur connait le RTT.
Autres améliorations
Keep-Alive, correspond à l’envoi de plusieurs segments de taille nulle ou déjà acquitté.
Cela permet pour les connexions inactives où aucun échange n’a lieu.
« garder en vie » la connexion en évitant qu’un routeur réalisant du filtrage, « firewall » supprime la connexion du
fait de son inactivité ;
de tester la présence de l’interlocuteur : sans réponse, on mettra fin à la connexion.
ResAvI
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
FIGURE 11.3
Client–server interaction with TCP, showing the three connection phases of setup, data transfer,
and release (disconnect).
TCP : mode interactif 198
Timeout trop
court se
traduit par un Timeout
timeout trop long
prématuré Utilisation
insuffisante de
Transmission
Temps non nécessaire la capacité
! Gaspillage de (bandwidth)
la capacité
(bandwidth)
α = 0.125
250
RTT (milliseconds)
Calcul :
EstimatedRT T = (1 − 0.125) ∗ 250
+0.125 ∗ 70 = 218.75 + 8.75 = 227.5ms 200
En résumé :
quand un ACK est reçu, on calcul le RTO avec T imeoutInterval = EstimatedRT T + 4 ∗ DevRT T
quand un timeout se produit, on modifie le RTO : RT O = RT O ∗ 2
◦ lorsque toutes les données envoyées ont été acquittées, il faut arrêter le timer ;
Seq=92 timeout
100,
20 by
timeout
=1 0 0
=100 tes d
timeout
ata
ACK Seq=1
00, 20 ACK
bytes
X 10
0 data
loss K=
AC ACK=
120 X
loss
Seq=9
2, 8 b Seq=9
ytes d 2, 8 b
ata Offset ytes d
ata
= 100 Offset =120
ACK
Seq=92 timeout
Offset = 120 Offset
100 = 120 2 0 = 120
C K= K=1
A AC
Offset
= 100 Offset
= 120 time
premature timeout t
time time Cumulative ACK scenario
lost ACK scenario
. limiter le débit :
utiliser une nouvelle fenêtre d’autorisation d’émission : la fenêtre de congestion, « congestion window » ;
la taille de cette fenêtre : CongW in = w ∗ M SS octets, où w varie en fonction de l’état perçu du réseau.
fonctionnement :
? La fenêtre réception, RcvW indow, & la fenêtre congestion déterminent la quantité d’octets à émettre ;
? L’émetteur envoie au plus une taille t de données, telle que t < min(CongW in, RcvW indow)
Exemple :
? Le récepteur indique « Autorisation d’envoyer 8ko »,RcvW indow = 8ko
. Si l’émetteur dispose d’une CongW in = 4ko, il envoie au plus 4ko de données ;
. Si l’émetteur dispose d’une CongW in = 32ko, il envoie au plus 8ko 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.
rement au-delà.
TCP : contrôle de la congestion 207
Fonctionnement du mode « congestion avoidance »
? 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) :
◦ ssthresh = CongW indow/2 ;
◦ mode « fast-recovery » : CongW indow = CongW indow/2 ;
◦ mode « fast-retransmit » : envoi immédiat du segment « perdu » sans attendre le RTO ;
. congestion forte (timeout) : fonctionnement à la Tahoe
◦ ssthresh = CongW indow/2
◦ CongW indow = 1M SS ;
◦ 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.
Résumé : ◦ quand CongW indow < ssthresh augmentation exponentielle de la taille de CongW indow (∗2) ;
◦ quand CongW indow ≥ ssthresh augmentation linéaire de la taille de CongW indow (+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 CongW indow 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 ».
ResAvI
TCP : contrôle de la congestion 208
Comportement de Tahoe vs Reno
? initialement, le ssthresh = 8 ∗ M SS
? le pic correspond à une perte de segment :
CongW indow = 12 au moment du pic ;
ssthresh = CongW indow/2 = 6M SS ;
Tahoe repart en « slow start » avec CongW indow = 1M SS ;
Reno utilise mieux la capacité du support : il repart de CongW indow/2 = ssthresh ;
Et finalement le débit moyen d’une connexion TCP ?
(CgW ∗M SS) (CgW ∗M SS) .75∗CgW ∗M SS
Le débit en « dent de scie » passe de (2RT T ) à RT T , d’où : throughputaverage = RT T
ResAvI
TCP : contrôle de congestion 209
Est-ce que TCP est un protocole « équitable »
TCP connexion 1 Objectif de l’équité, fairness :
− Si K connexions utilisent la même ligne de transmis-
sion de capacité R ;
Bottleneck − chaque connexion doit obtenir un débit de R/K .
TCP
“goulot d’étranglement”
connexion 2
routeur
capacité R
On observe que les deux connexions vont se répartir la capa- Débit souhaité
R Partage équitable de la
cité de la ligne de transmission : capacité
en A : les deux connexions atteignent un débit inférieur à
R, pas de pertes, la taille de CongW in augmente de 1 à D
Débit
chaque RTT et la courbe évolue à 45◦ ; Connexion 2 B
throughput
en B : le débit des connexions dépasse R et les deux
C Ligne d’utilisation
connexions perdent des segments et reviennent en C ; A complète de la capacité
Débit Connexion 1 R
en D : ça recommence. . . throughput
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 différentes connexions :
. 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.
ResAvI
Un autre mécanisme de contrôle de congestion pour TCP et IP 210
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 d’un 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
jeter le datagramme pour informer, notifier, le récepteur de l’entrée en congestion du routeur.
le récepteur fait écho de cette indication (au niveau approprié) et réagit comme lors lors d’une perte de
datagramme (ou du segment encapsulé).
TCPTable
: les options
11.2 TCP Option Types, Showing Abbreviation (Meaning), Length, and RFC 212
in Which Established
Type Meaning Total Length and Description RFC Les options 11,12&13 : RFC 1644 proposait de
0 EOL 1 byte, indicates end of option list (only used if end of 793 mettre des données dans le SYN et SYN/ACK. . .
options is not end of header)
abandonnées !
1 NOP 1 byte, no option (used as padding to align header with 793
CHAPTER
Header-Length Field)11 Transmission Control Protocol 285
2 MSS 4 bytes, the last 2 of which indicate the maximum payload 793 Les options 6&7 : RFC 1072 abandonnées !
that one host will try to send another. Can only appear in 879
SYN and does not change.
Table 11.2 (continued)
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. 1072
Supports bit-shifted window values above 65,535.
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 retrans- 1323
mission timer through the RTT calculation. Makes sure that an
old sequence number is not accepted by the current connection.
9 POC perm 2 bytes, indicating that the partial order service is permitted. 1693
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étro-compatibilité : 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) :
It might not be obvious why TCP connections should be such a complication. One of
? the
l’émetteur envoie
reasons is that unmore
TCP adds segment avec unIPtimestamp
to connectionless than connectionpar rapport
capability. Theà sa propre horloge ;
TCP service also provides aspects of what the ISO-RM defines as Session Layer services,
? le récepteur lui renvoie ce timestamp dans le segment réponse : l’émetteur connait le RTT.
ResAvI
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.
TCP : calcul initial de la taille de la fenêtre de réception 213
Taille de fenêtre proposée par le récepteur
? dépend de la capacité, « bandwidth », du réseau ;
? dépend du temps d’aller-retour d’un paquet, le « RTT » ;
? est calculée par :
T aille f enetre = capacité ∗ RT T
? Exemple :
Sur un réseau Ethernet 100M bps, avec un RTT de 5ms :
T aille f enetre = 100.106 ∗ 5.10−3 = 500kbits
On choisit une taille en puissance de 2 : 512kbits, soit 64Ko.
? 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.
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 = 8M bps si la taille de la fenêtre ne diminue pas au cours de la commu-
nication (débit inférieur à la capacité d’un lien Ethernet 10M bps).
ResAvI
TCP : le calcul de débit 215
? on utilise la commande « iperf » en mode serveur sur ? en mode client sur « darkstar » (le client envoie un flux
msi.unilim.fr vers le serveur) :
bonnefoi@msi:~$ ./bin/iperf -s pef@darkstar:~/iperf-2.0.5/src$ ./iperf -c msi.unilim.fr
–––––––––––––––––––––––––––––– ––––––––––––––––––––––––––––––
Server listening on TCP port 5001 Client connecting to msi.unilim.fr, TCP port 5001
TCP window size: 85.3 KByte (default) TCP window size: 129 KByte (default)
–––––––––––––––––––––––––––––– ––––––––––––––––––––––––––––––
[ 4] local 164.81.60.6 port 5001 connected with xxx port 55350 [ 3] local 192.168.42.122 port 55350 connected with 164.81.60.6
[ 4] 0.0-12.2 sec 1.25 MBytes 860 Kbits/sec port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-11.0 sec 1.25 MBytes 951 Kbits/sec
? tcp_moderate_rcvbuf vaut 1 : active le mode « autotuning », c-à-d la taille de la fenêtre de réception est
adaptée automatiquement pour chaque connexion ;
? tcp_rmem&tcp_wmem :l’espace mémoire d’une connexion donné sous 3 valeurs :
tcp_rmem 4096 87380 2027520 minimal, initial, maximum pour la réception
tcp_wmem 4096 16384 2027520 minimal, initial, maximum pour l’émission
? les tailles demandées par l’utilisateur avec SO_SNDBUF et SO_RCVBUF sont limitées par :
/proc/sys/net/core/rmem_max - maximum receive window
/proc/sys/net/core/wmem_max - maximum send window
D’après Wikipedia
La prise d’empreinte de la pile TCP/IP (en anglais : TCP/IP stack fingerprinting ou OS fingerprinting) est un procédé permettant de déterminer
l’identité du système d’exploitation utilisé sur une machine distante en analysant les paquets provenant de cet hôte.
Il y a deux types différents de fingerprinting :
? L’OS fingerprinting passif : identifier le système d’exploitation uniquement à l’aide des paquets qu’il reçoit ;
? L’OS fingerprinting actif : envoie des paquets et attend les réponses (ou l’absence de réponses). Ces paquets sont parfois formés de
manière étrange car les différentes implémentations des piles TCP/IP répondent différemment face à de telles erreurs.
Quelques outils de détection d’OS :
. Actif : Nmap, xprobe [1], Scapy,
. Passif : p0f (basé sur ouvertures de connexion TCP, paquets TCP SYN), Scapy, Ettercap, le pare-feu Netfilter de noyau >2.6.31 de Linux.
? déterminer si la cible est sur le réseau : envoie un ICMP ping request, et essaye de se connecter sur le port 80 (HTTP) ;
? balayer les ports ouverts pour trouver au moins un port ouvert (une application est en écoute et attend une connexion) et
un port fermé (pas d’application attachée à ce port) ;
? déclencher l’OS fingerprint :
envoyer un paquet unique SYN : initier une connexion TCP ;
envoyer un second paquet sans drapeaux (pas de SYN, ACK, PSH etc.). Ce paquet est appelé « null scan »
envoyer un troisième paquet avec les drapeaux : URG, PSH, SYN et FIN
Ces paquets sont appelées dans la RFC 1025 : nastygram, kamikaze, christmas tree
en cas de service connu ouvert : faire du « banner grabbing » :
pef@darkstar:~/$ nmap -A 192.168.42.83
Starting Nmap 5.51 ( http://nmap.org ) at 2011-10-09 17:25 CEST
Nmap scan report for 192.168.42.83
Host is up (0.0023s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.8p1 Debian 1ubuntu3 (protocol 2.0)
| ssh-hostkey: 1024 8c:02:1e:99:51:e6:29:21:46:95:6e:95:a5:ed:b7:50 (DSA)
|_2048 cc:1b:0d:e8:36:65:fe:ac:61:10:50:35:98:18:81:f9 (RSA)
53/tcp open domain dnsmasq 2.57
80/tcp open http Apache httpd 2.2.17 ((Ubuntu))
|_http-title: Site doesn’t have a title (text/html).
8080/tcp filtered http-proxy
Service Info: OS: Linux
Selective
La Acknowledgment
trace recueillie is: permissible) used for tracking data trans-
avec tcpdump
mission across
pef@solaris:~$ sudo the TCP
tcpdump session
-i eth0 -nvvXtohost
the192.168.42.122
server. If theandSYN
host packet reaches
192.168.42.83 an
open port, the
18:26:35.987561 server
IP (tos 0x0, TCP stack
ttl 255, responds
id 33680, offsetwith a SYN/ACK
0, flags [DF], prototo
TCPacknowledge
(6), length 64)
own sequence number back to the client. The client receives the SYN/ACK
options [mss 1460,nop,wscale 3,nop,nop,TS val 71119834 ecr 0,sackOK,eol], length 0
and responds with an acknowledgment to the server. At this point, both sides
18:26:35.987666 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 56)
have agreed on the connection parameters (including the initial sequence
192.168.42.83.80 > 192.168.42.122.56733: Flags [S.], cksum 0xd648, seq 832218517, ack 604272314, win 14480,
numbers), and the connection state is defined as established and ready to
options [mss 1460,sackOK,TS val 212522325 ecr 71119834], length 0
transfer data.
In the context
18:26:35.987892 of the
IP (tos 0x0, ttl TCP connect()
255, id scan,
37505, offset 0, the scanner
flags sends
[DF], proto TCP both the SYN
(6), length 52)
and the ending ACK packet for each scanned port. Any normal user can
192.168.42.122.56733 > 192.168.42.83.80: Flags [.], cksum 0x36ab, seq 1, ack 1, win scan
65535,
a remote system inval
options [nop,nop,TS this modeecr
71119834 with Nmap; length
212522325], no special
0 privileges are required.
Below are some of the iptables log messages displayed from a SYN scan
along with the Nmap output. You can see that the http and https ports are
18:26:35.987900 IP (tos 0x0, ttl 255, id 48576, offset 0, flags [DF], proto TCP (6), length 40)
open, and the options portion of the SYN packet contains a substantial
192.168.42.122.56733 > 192.168.42.83.80: Flags [R.], cksum 0x89d5, seq 1, ack 1, win 65535, length 0
ResAvI
number of options:
A SYN or half-open scan is similar to a connect() scan in that the scanner sends
a SYN packet to each TCP port in an effort to elicit a SYN/ACK or RST/ACK
response that will show if the targeted port is open or closed. However, the
scanning system never completes the three-way handshake because it deliber-
Un outilately fails to:return
d’audit nmap the ACK packet to any open port that responds with a 223
SYN/ACK. Therefore, a SYN scan is also known as a half-open scan because
three-way
TCP SYN or handshakes
half-openare never given -sS)
scan—(Nmap a chance to un
: envoi gracefully
seul SYNcomplete,
(pas deaslog sur la cible, mais attention à la réception
depicted in Figure 3-5.
d’un SYN/ACK ou RST/ACK) ;
(1) SYN
pef@darkstar:~$ sudo nmap -sS -p80 192.168.42.83
(2) SYN + ACK
Ici, le port ciblé est le port 80.
(ACK is never sent)
TCP Client TCP Server
Nmap uses a raw socket to manually build the TCP SYN packets used
within its SYN scan mode (-sS ), the default scanning mode for privileged
users. Because the characteristics of these packets are determined by Nmap
Un outil d’audit : nmap 224
TCP FIN, XMAS, and NULL scans—(Nmap -sF, -sX, -sN) : envoi de segments avec les drapeaux choisis ;
pef@darkstar:~$ sudo nmap -sF -p80 192.168.42.83
Starting Nmap 5.51 ( http://nmap.org ) at 2011-10-09 18:54 CEST
Nmap scan report for 192.168.42.83
Host is up.
PORT STATE SERVICE
80/tcp open|filtered http
pef@solaris:~$ sudo tcpdump -i eth0 -nvvX host 192.168.42.122 and host 192.168.42.83
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
18:54:43.662791 IP (tos 0x0, ttl 53, id 25131, offset 0, flags [none], proto TCP (6), length 40)
192.168.42.122.47432 > 192.168.42.83.80: Flags [F], cksum 0xcc21, seq 1638066792, win 2048, length 0
18:54:44.662309 IP (tos 0x0, ttl 43, id 33275, offset 0, flags [none], proto TCP (6), length 40)
192.168.42.122.47433 > 192.168.42.83.80: Flags [F], cksum 0xc41e, seq 1638132329, win 4096, length 0
pef@solaris:~$ sudo tcpdump -i eth0 -nvvX host 192.168.42.122 and host 192.168.42.83
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:03:45.471095 IP (tos 0x0, ttl 39, id 55545, offset 0, flags [none], proto TCP (6), length 40)
192.168.42.122.55365 > 192.168.42.83.80: Flags [.], cksum 0xba54 (correct), seq 0, ack 3429526113, win 4096, length 0
19:03:45.472226 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.42.83.80 > 192.168.42.122.55365: Flags [R], cksum 0xca60 (correct), seq 3429526113, win 0, length 0
ResAvI
TCP Idle Scans
Un outil The
d’audit
TCP idle scan is:annmap
advanced scanning mode that requires three systems: 225
a system to launch the scan, a scan target, and a zombie host running a TCP
server that is not heavily utilized (hence the “idle” part of the scan’s name).
TCP idle scan—(Nmap -sI) :
The idle scan is illustrated in Figure 3-6.
Figure 3-6: TCP idle scan voie un RST à la cible et incrèmente cet IPID).
UDP The idle scan exploits the fact that IP increments the IP ID value by one
scan—(Nmap -sU) : envoi d’un datagramme
for every packet that is sent through the IP stack. The scan combines this
UDP et attente d’un ICMP de type « Port unreachable »
fact with the requirement that a TCP stack send a SYN/ACK in response to a
pour savoir si le port est ouvert ou fermé.
SYN packet to an open port, or a RST/ACK packet in response to a SYN packet
to a closed port. In addition, all TCP stacks are required to ignore unsolicited
RST/ACK packets. Taken together, these facts allow the scanner to watch
how the zombie host increments the IP ID values during a TCP session that
. les valeurs retournées sont :
is maintained from scanner to the zombie host, while the scanner spoofs SYN
packets with the zombie host’s IP address at the target system. As a result, the
« open » : il y a une application accessible associée à ce port ;
scanner is able to monitor IP ID values in the IP header of packets coming from
the zombie system, and from this information it is able to extrapolate
« closed » : il n’y a pas d’application attachée ;
whether ports are open or closed on the target.
When a SYN packet is sent from the scanner to an open port on the target
« filtered » : il peut y avoir une application attachée à ce port, mais les communication sont bloquées.
(see Figure 3-6) with the source IP address spoofed as the zombie’s IP address,
the target responds with a SYN/ACK (to the zombie system). Because the
Il n’y a pas de « RST » envoyé, en le bloquant avec le firewall « netfilter » sous GNU/Linux :
SYN packet that the zombie receives is actually unsolicited (it was spoofed
from the scanner), it responds with a RST5 to the target system, thereby
incrementing the IP ID counter by one. If a SYN packet is sent from the
$ sudo iptables -A OUTPUT -p tcp –sport 80 –tcp-flags RST RST -j DROP
scanner to a closed port on the target (again with the source IP address spoofed),
the target responds to the zombie with a RST/ACK, and the zombie ignores
this unsolicited packet. Because in this case no packet is sent from the zombie,
the IP ID value is not incremented.
Les règles du RST : RST ou RST/ACK ?
By monitoring how the IP ID values are incremented (by one for open
ports on the target, and not at all for closed ports), the scanner can infer
T ra n s por t La y er At t ac ks an d D efe ns e 59
ResAvI
10 UDP, User Datagram Protocol, RFC 768 226
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.
Pour obtenir la liste des ports en attente de connexion pour TCP et de datagramme pour UDP, sous GNU/Linux,
à l’aide de la commande netstat :
$ sudo netstat -lp –inet
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 *:https *:* LISTEN 2403/apache2
tcp 0 0 *:17500 *:* LISTEN 1979/dropbox
tcp 0 0 localhost:mysql *:* LISTEN 3535/mysqld
tcp 0 0 *:www *:* LISTEN 2403/apache2
tcp 0 0 *:domain *:* LISTEN 1677/dnsmasq
tcp 0 0 *:ssh *:* LISTEN 1706/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1561/cupsd
udp 0 0 *:52906 *:* 470/avahi-daemon
udp 0 0 *:domain *:* 1677/dnsmasq
udp 0 0 *:bootpc *:* 393/dhclient
udp 0 0 *:bootpc *:* 21932/dhclient
udp 0 0 *:17500 *:* 1979/dropbox
udp 0 0 *:mdns *:* 470/avahi-daemon
udp 0 0 *:radius *:* 2328/freeradius
Des protocoles utilisant UDP :
− NTP permet de mettre les ordinateurs à l’heure par internet à 500 millisecondes près ;
− DNS permet de retrouver une adresse IP en fonction d’un nom symbolique (comme un annuaire) ;
− VoIP permet de communiquer vocalement par Internet ;
− IPTv pour la télé sur Internet (quelle idée !) ;
−. . .
ResAvI
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 228
Le format du datagramme UDP
1 byte 1 byte 1 byte 1 byte
FIGURE
◦ la taille du datagramme UDP10.2
inclue celle de l’entête : elle varie de 8, juste l’entête, à 65 353 (il dépend de la
taille du buffer d’envoiThe
et four UDP header
de réception fields.limité
souvent Technically,
à 8000use of the; checksum is optional, but it is often used
octets)
today.
◦ il est encapsulé dans un datagramme IP de taille minimale à supporter par les routeurs de 576 octets, soit 556
octets sans l’entête IP (certains protocoles268
le limitait à 512 octets comme le protocole DNS, Domain Name
PART II Core Protocols
Server, dans la RFC1035, mais cette limitation a été levée dans la RFC2671) ;
Calcul du Checksum
1 byte 1 byte 1 byte 1 byte
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
274 PART II Core Protocols
UDP : les différents cas de réponses 229
Certains envois de datagramme UDP peuvent générer une réponse d’erreur de type ICMP :
Action Condition Outcome
FIGURE 10.6
ResAvI
Other Other
FTP SMTP SSH NFS* SNMP DNS* UDP
TCP
Client– Client–
Remote Network Name Server
Server
File Remote File Manage- Lookup
Applica- Applica-
Transfer Email Access Access ment Service
tions tions
TCP UDP
Connection-Oriented, Reliable Connectionless, Best-Effort
Some
Routing IP (Best-effort) ICMP ARPs
Protocols
FIGURE 2.4
The TCP/IP protocol stack in detail. The many possible applications on top and many pos
11 Conception de réseaux : la segmentation 231
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
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 joi-
gnables à 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.
ResAvI
??
11.1 Problème de croissance d’Internet 232
Croissance du réseau Internet
Le protocole IP a été utilisé intensivement depuis des dizaines d’années. Son succès s’est accompagné d’une crois-
sance exponentielle du réseau Internet.
Problème du manque d’adresses
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.
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. . .
ResAvI
Les Solutions 233
Le « subnetting »
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. . .
ResAvI
192.168.15.1 192.168.15.2 192.168.15.129 192.168.15.253 192.168.15.254
192.168.15.0
network
192.168.15.255 Router
Subnetting
130 : Protocols
PART II Core RFC 950 255.255.255.0
broadcast
234
mask Internet
Before Subnetting
Avant
Defining the Subnet Mask / Extended-Prefix Length Après
Hosts Hosts
The first step is to determine the number of bits required to define the six subnets. Since
a192.168.15.1
network address can only 192.168.15.129
192.168.15.2 192.168.15.253 192.168.15.254
be subnetted along binary boundaries, subnets must192.168.15.1
be 192.168.15.126 192.168.15.129 192.168.15.253 192.168.15.254
created in blocks of powers of two [ 2 (21), 4 (22), 8 (23), 16 (24), etc. ]. Thus, it is
impossible to 192.168.15.0
define an IP address block such that it contains exactly six subnets. For 192.168.15.0 192.168.15.128
network administrator must define a block of 8 (23) and have two
this example, thenetwork network network
192.168.15.255 Router for future growth. 192.168.15.127 Router 192.168.15.255
unused subnets that can be reserved broadcast broadcast
broadcast
255.255.255.0 255.255.255.128
Since 8 = 23, three bits are required to enumerate the eight subnets in the block. In this
mask mask
Internet Internet
example, the organization is subnetting
Before Subnetting a /24 so it will need three more bits, or a After
/27,Subnetting
as
the extended-network-prefix. A 27-bit extended-network-prefix can be expressed in
Exemple
dotted-decimal notation as 255.255.255.224.
Hosts This is illustrated in Figure 11. FIGURE 4.4
Subnetting a LAN, showing how the value of the initial bits determines the subnet. Host addresses,
192.168.15.1 192.168.15.126 192.168.15.129 192.168.15.253 192.168.15.254
if assigned manually, must follow the subnet mask convention.
subnet- host- Découpage du réseau 193.1.1.0/24 en 8 sous-
number number
192.168.15.0 192.168.15.128 bits
A
réseaux : sometimes tricky subnet issue is determining exactly what the subnet address (all
bits
network network 0 bits after the mask) and broadcast address (all 1 bits after the mask) are for a given IP
192.168.15.127 Router 192.168.15.255
network-prefix ? 193.1.1.0/27
address and subnet mask. This can be difficult because subnet masks do not always fall
broadcast broadcast on byte boundaries as do classful addresses. An IP address like 172.31.0.128 might not
193.1.1.0/24
255.255.255.128
= 11000001.00000001.00000001.00000000 ? 193.1.1.32/27
look like the address of the network itself, but it might be. A network address, in some
mask
After Subnetting
extended-network-prefix
Internet ? .implementations of TCP/IP, cannot be assigned to a host. (172.31.0.128 with a subnet
. . of 255.255.255.128
mask is a network address.)
255.255.255.224 = 11111111.11111111.11111111.11100000
? Consider the address 172.18.0.126 with a subnet mask of 255.255.255.192. What
193.1.1.224/27
FIGURE 4.4 27-bits is the subnet and broadcast address for this subnet? What range of host addresses can
Subnetting a LAN, showing how the value 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: Example #1 - Defining the Subnet Mask/Extended-Prefix Length
Pourif assigned
décider dumust
manually, nombre de bits
follow the subnet à affecter aux sous-réseaux
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.
deA combien
−This sometimes tricky
de subnet
réseauxissue isl’organisation
determining exactlyawhat the subnet
besoin address (all
aetcontiguous
dans le futur of?mask by writing down the mask bits. Then the subnet portion of the address
subnet
0 bitsmeans that
after the each
mask) subnetwork
and with a (all
broadcast address 27-bit prefix
1 bits after represents
the mask) are for a given IPblock
can be easily marked off by “turning on” the masked bits. Next, it is easy to form the sub-
5 (32) individual
− combien de machines au maximum dans un des sous-réseaux,
2address and subnet IP addresses.
mask. This can However,
be difficult since
because the all-0s
subnet and
masks all-1s
do not host
always addresses
fall dans leaddress
net and broadcast futurfor? the subnet by setting the rest of the bits in the address
on bytebe
cannot boundaries
allocated,asthere
do classful
are 30addresses. An IP address
(25 -2) assignable likeaddresses
host 172.31.0.128 mightsubnet.
on each not (the host bits) first to all 0 bits (network) and then to all 1 bits (broadcast). The result-
look like the address of the network itself, but it might be. A network address, in some ing address range forms the limits of the subnet.
Attention
implementations
Defining Each ofof TCP/IP, cannotNumbers
the Subnet be assigned to a host. (172.31.0.128 with a subnet
mask of 255.255.255.128 is a network address.)
◦ Consider
La pour le subnetting dans une même structure.
The eightRFC 950
subnets willautorise
the address be numbered
172.18.0.126
unwith
0seul
through masque
7. mask
a subnet Throughoutde sous-réseau
the remainder
of 255.255.255.192 . Whatof this
◦ Sur de vieux routeurs, classful, on évite d’utiliser le sous réseau
paper,
is the the XXX
subnet and2 notation
broadcast indicates
address forthe binary
this subnet? representation
What range of of the
host number.
addresses The
can 3-bit « tout à zéro » et « tout à 1 ».
be assigned
binary to this subnet?
representation These
of the questions
decimal come
values up all the7time,
0 through are:and there
0 (000 2),are utilities
1 (001 2), 2 (0102),
3available
(0112),on the Internet
4 (100 that2),do6this
2), 5 (101 (110 quickly.
2), and But7 here’s
(1112).one way to do it by hand.
ResAvI
The first thing to do is to mask out the network portion of the IP address with the
subnet mask by writing down the mask bits. Then the subnet portion of the address
In general, to define Subnet #n, the network administrator places the binary
can be easily marked off by “turning on” the masked bits. Next, it is easy to form the sub-
representation 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 (110 )
- Multiple subnet masks permit more efficient use of an organization's assigned IP
address space.
- Multiple subnet masks permit route aggregation which can significantly reduce the
amount of routing information at the "backbone" level within an organization's
routing domain.
VLSM : Variable Length Subnet Masks RFC 1009 235
Efficient Use of the Organization's Assigned IP Address Space
But : Permettre d’utiliser plusieurs VLSM
masques supports
de more efficient use pour
sous-réseaux of an organization's
le subnetting,assigned
d’oùIPlaaddress
notionspace.
de One
of the major problems with the earlier limitation of supporting only a single subnet
« variable length ». mask across a given network-prefix was that once the mask was selected, it locked the
organization into a fixed-number of fixed-sized subnets. For example, assume that a
Exemple 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 subnet-number host-number
bits bits
1022 machines chacun :
network-prefix
Si un réseau ne contient que 30 machines, on
130.5.0.0/22 = 10000010.00000101.00000000.00000000
perd énormément d’adresses !
extended-network-
prefix
Figure 15: 130.5.0.0/16 with a /22 Extended-Network Prefix
En /26, ce qui donne 1024 sous-réseaux, subnet-number host-number
bits bits
pour 62 machines chacun : Please refer to Figure 15. A /16 network with a /22 extended-network prefix permits 64
C’est mieux, mais l’idéal serait de disposer du subnets (26), each of whichnetwork-prefix
supports a maximum of 1,022 hosts (2 10-2). This is fine if
the organization wants
130.5.0.0/26 = to deploy a number of large subnets, but what about the
10000010.00000101.00000000.00000000
/22 et du /26 simultanément. 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
Contraintes approximately 1,000 IP host addresses for each small subnet deployed! Limiting the
association of a network number with a single mask did not encourage the flexible and
. plusieurs masques de sous-réseau
Route
efficient Aggregation
use compatibles
of an organization's addresshiérarchiquement
space. ;
. l’utilisation de routeurs qui emploient :
VLSM also allows the recursive division of an organization's address space so that it can
One solution to this
be reassembled andproblem
aggregatedwas to
to reduce
allow athesubnetted
amountnetwork to be
of routing assigned more
information at thethan
top
des protocoles de oneconstruction
subnet
level. Conceptually,deatable
mask. Assume thatde
network routage
inisthe previous
first dividedqui transmettent
example,
into somele
the network
subnets, masque
ofadministrator
the subnets is
are
also allowed to configure the 130.5.0.0/16 network with a /26 extended-network-prefix.
de sous-réseau pour
furtherchaque
Please divided
refer
réseau
into
to Figure
destination
sub-subnets,
16. A /16 networkand some;address
of the sub-subnets
with are divided into
a /26 extended-network sub2-
prefix
subnets. This allows the detailed structure of routing information for one subnet group
un algorithme depermits
« forwarding » qui
1024 subnets
to be hidden (210utilise
from routers ), each le « longest
of which
in another subnet
matching » ;
supports
group.a maximum of 62 hosts (2 -2).
6
The /26 prefix would be ideal for small subnets with less than 60 hosts, while the /22
une affectation des sous-réseaux qui soit topologiquement adapté.
prefix is well suited for larger subnets containing up to 1000 hosts.
11.1.1.0/24
11.1.2.0/24 11.1.253.32/27
ResAvI
11.1.0.0/16 11.1.253.64/27
11.2.0.0/16 11.1.253.0/24
11.1.254.0/24 11.1.253.160/27
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.
For example, if a packet's destination IP address is 11.1.2.5 and there are three network
VLSM subnet-number host-number
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
236
bits bits the greatest number of corresponding bits in the Destination IP address of the packet.
Algorithme de forwarding basé sur le « longest
network-prefix
match
This»is illustrated in Figure 19.
130.5.0.0/26 = 10000010.00000101.00000000.00000000
Pour un datagramme à destination de l’adresse Destination 11.1.2.5 = 00001011.00000001.00000010.00000101
extended-network-prefix
11.1.2.5, on sélectionne la route qui correspond Route #1 11.1.2.0/24 = 00001011.00000001.00000010.00000000
Figure 16: 130.5.0.0/16 with a /26 Extended-Network Prefix
avec le plus grand nombre de bits d’un des sous- * Route #2 11.1.0.0/16 = 00001011.00000001.00000000.00000000
Route Aggregation
réseaux, ici, 11.1.2.0/24 Route #3 11.0.0.0/8 = 00001011.00000000.00000000.00000000
VLSM also allows the recursive division of an organization's address space so that it can
be reassembled
Attention : laandmachine
aggregated to reduce the amount
11.1.2.5 of routing
doit bien information at Figure
être connectée the top 19:
dansBest Match is with the Route Having the Longest Prefix (Most Specific)
le réseau 11.1.2.0/24. Dans le réseau 11.1.0.0/16
level. Conceptually, a network is first divided into subnets, some of the subnets are
elle ne serait pas accessible !
further divided into sub-subnets, and some of the sub-subnets are divided into There
sub 2- is a very subtle but extremely important issue here. Since the destination address
subnets. This allows the detailed structure of routing information for one subnetmatches
group all three routes, it must be assigned to a host which is attached to the
Aggrégation derouters
to be hidden from routesin another subnet group. 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, the routing system will never route traffic to the host
11.1.1.0/24 L’aggrégation permet deassumes
simplifier lehost
routage : le
since the "longest match algorithm" that the is part of the réseaux
11.1.2.0/24
11.1.2.0/24 11.1.253.32/27
subnet. This means that great care must be taken when assigning host addresses to
11.1.0.0/16 11.1.253.64/27 11.0.0.0/8 est décomposé
make sure that every host is reachable! en /16 , puis le sous-
11.1.253.0/24
11.2.0.0/16 réseau 11.1.0.0/16 est décomposé en /24.
11.1.253.160/27 Topologically
11.3.0.0/16 11.1.254.0/24 Significant Address Assignment
11.1.253.192/27 LeOSPF
Since processus est
and I-IS-IS récursif,
convey mais n’impose pas
the extended-network-prefix que lawith
information taille
each
11.0.0.0./8
11.253.32.0/19 route,
duthepréfixe
VLSM subnets
soit lacan be scattered
même throughout
à chaque an organization's
niveau de l’arbre. topology.
11.252.0.0/16 11.253.64.0/19
However, to support hierarchical routing and reduce the size of an organization's routing
11.253.0.0/16 tables, addresses should be assigned so that they are topologically significant.
11.254.0.0/16 11.253.160.0/19
Hierarchical routing requires that addresses be assigned to reflect the actual network
11.253.192.0/19
topology. This reduces the amount of routing information by taking the set of addresses
Figure 17: VLSM Permits the Recursive Division of a Network Prefix assigned to a particular region of the topology, and aggregating them into a single
On diminue la taille des tables de routage nécessaires : 11.1.0.0/16
routing advertisement for the entire set. Hierarchical
11.2.0.0/16 routing allows this to be done
11.1.1.0/24
−In
leFigure 17, the 11.0.0.0/8 network is first configured with a /16 extended-network-
routeur D « cache » 6 sous-réseaux derrière 11.1.253.0/24 ;
recursively at various
prefix. The 11.1.0.0/16 subnet is then configured with a /24 extended-network-prefix
points withinRouter the
A hierarchy
11.3.0.0/16 of the routing
Router B topology.
11.1.2.0/24 If addresses
doNote
not have a topological significance, aggregation cannot be performed and the size of
−and
le the 11.253.0.0/16
routeur C cachesubnet is6configured with a /19 extended-network-prefix.
sous-réseaux avec 11.253.0.0/16
that the recursive process does not require that the same extended-network-prefix
; 11.0.0.0/8 11.252.0.0/16 11.1.252.0/24
theberouting tables cannotorbe11/8reduced. Remember this point when we discuss CIDR
11.254.0.0/16 11.1.254.0/24
−assigned
la structure des
at each level sous-réseaux
of the est
recursion. Also, the cachée
recursive of the aggregation
de l’extérieur
sub-division avec later in this paper.
organization's address space can be carried out as far as the network administrator needs
to11.0.0.0/8
take it. . Internet 11.253.0.0/16 11.1.253.0/24
Router C Router D
11.253.32.0/19 11.1.253.32/27
11.1.253.64/27
11.253.64.0/19
11.1.253.96/27
11.1.253.128/27
11.253.160.0/19 11.1.253.160/27
11.253.192.0/19 11.1.253.192/27
ResAvI
Figure 18: VLSM Permits Route Aggregation - Reducing Routing Table Size
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
CIDR : routage sans classe, RFC 1519 237
La technique du CIDR “Classless InterDomain Routing” RFC 1519
Allouer des adresses de classe C (2 millions disponibles) sous forme de blocs de taille variable.
Exemple :
. si un site a besoin de 2000 adresses, on lui alloue un bloc de 2048 adresses (8 réseaux de classe C contigus).
. si un site a besoin de 8000 adresses on lui alloue un bloc de 8192 adresses (32 réseaux de classe C contigus).
Ce principe est étendu vers les réseaux de classe A et B également.
Distribution des adresses de manière régionale, RFC 1174
Les règles d’attribution d’adresses de classe C sont changées, le monde est partagé en 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 à destina-
tion de 194.x.y.z ou 195.x.y.z, il doit l’expédier vers un routeur
européen.
ResAvI
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 134 PART II Core Protocols
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
CIDR
network 192.168.64.0/18 is a CIDR “supernet” because the mask contained fewer bits
than the natural mask in classful IP addressing. Table 4.5 CIDR Prefixes and Addressing* (Continued)
238
Les différents préfixes possibles Prefix Length Dotted Decimal Number of Classful Number of Usable IPv4
Table 4.5 CIDR Prefixes and Addressing* Netmask Networks Addresses
Prefix Length Dotted Decimal Number of Classful Number of Usable IPv4 /18 255.255.192.0 64 Class C’s 16,382
Netmask Networks Addresses
/19 255.255.224.0 32 Class C’s 8,190
/1 128.0.0.0 128 Class A’s 2,147,483,646
/20 255.255.240 16 Class C’s 4,094
/2 192.0.0.0 64 Class A’s 1,073,741,822
/21 255.255.248.0 8 Class C’s 2,046
/3 224.0.0.0 32 Class A’s 536,870,910
/22 255.255.252.0 4 Class C’s 1,022
/4 240.0.0.0 16 Class A’s 268,435,454
/23 255.255.254.0 2 Class C’s 510
/5 248.0.0.0 8 Class A’s 134,217,726
/24 255.255.255.0 1 Class C 254
/6 252.0.0.0 4 Class A’s 67,108,862
/25 255.255.255.128 1/2 Class C 126
/7 254.0.0.0 2 Class A’s 33,554,430
/26 255.255.255.192 1/4 Class C 62
/8 255.0.0.0 1 Class A or 256 Class B’s 16,777,214
/27 255.255.255.224 1/8 Class C 30
/9 255.128.0.0 128 Class B’s 8,388,606
/28 255.255.255.240 1/16 Class C 14
/10 255.192.0.0 64 Class B’s 4,194,302
/29 255.255.255.248 1/32 Class C 6
/11 255.224.0.0 32 Class B’s 2,097,150
/30 255.255.255.252 1/64 Class C 2
/12 255.240.0.0 16 Class B’s 1,048,574
/31 255.255.255.254 1/128 Class C 0
/13 255.248.0.0 8 Class B’s 524,286
/32 255.255.255.255 1/256 Class C (1 host) – (1 host route)
/14 255.252.0.0 4 Class B’s 262,142
*All possible mask lengths are shown, for /1 to /32. The /0 mask matches the whole Internet and will be
/15 255.254.0.0 2 Class B’s 131,070 discussed in the routing chapters.
/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
Step #3: Divide the reserved address block (200.25.28.0/22) into two equal size blocks.
CIDR : une méthodologie 240
Chapter 1 • Introduction to Computer Networking 75
Une abstraction du réseau et sa configuration en CIDR
Une première abstraction du réseau indépendam- A Subnet-1
C
ment de• Rutgers
Ivan Marsic l’adresse
University réseau de l’organisation : 54 R1 Subnet-2
Network 1: B
A Ethernet
C
C
Interfaces on
D
R1 A Network 2
Subnet-3
D
B Network 2:
Wi-Fi
D
Interfaces on R1
Network 3:
Network 1
Interfaces on
R2
Point- to-point Subnet-4
Network 3
B
R2 Interfaces on
Subnet-5
Network 4: Network 4
Point-to-point Network 5: Ethernet R2
Interfaces on
Network 5 A,B E F
9*: E F 9A: E F
Figure 1-35: Example internetwork: (a) The physical networks include 2 Ethernets, 2 point-
to-point links, and 1 Wi-Fi network. (b) Topology of the internetwork and interfaces.
Organization’s address subspace: Subnet-1: C
w.x.y.z/28 204.6.96.176/30
"#$%&'()! *$! (+*,-.(! &$/()$(/0#)1! &$! 2&34)(! 56789*:;! 0<&=<! =#$%&%/%! #>! >&?(! -<@%&=*.! $(/0#)1%! 204.6.94.180
&$/()=#$$(=/('! A@! /0#! )#4/()%B! C<(! 4$'().@&$3! $(/0#)1! /<*/! *! '(?&=(! 4%(%! /#! =#$$(=/! /#! #/<()! A Subnet-2:
81
Ivan '(?&=(%!
Marsic =#4.'! A(! *! DEF!
• Rutgers =#$$(=/&#$! .&1(! G/<()$(/! #)! C#1($! H&$3;! *! 0&)(.(%%! DEF! .&$1! %4=<! *%!
Une seconde abstraction du réseau avec la notion
University 76 204.6.94.176 204.6.96.180/30
.1
94
IJKB55! 91$#0$! *%! L&62&:! #)! M.4(/##/<;! #)! *! '&*.4-;! NOD;! #)! *! C65! =#$$(=/&#$B! G*=<! -<@%&=*.!
6.
4.
$(/0#)1!0&..!3($()*..@!4%(!&/%!#0$!>)*,(!>#),*/;!*$'!(*=<!>#),*/!<*%!*!.&,&/!#$!<#0!,4=<!'*/*! D
20
de « sub-net » et l’adresse réseau : 204.6.96.176/28
Table=*$!A(!%($/!&$!*!%&$3.(!>)*,(!9.&$1!PCQ;!O(=/&#$!5B5B7:B!
1-3: CIDR hierarchical address assignment for the internetwork in Figure
1-47.
204.6.94.177
204.6.94.182
Subnet-1: Subnet-2: Subnets-3&4: Subnet-5:
C0#!/@-(%!#>!$(/0#)1!$#'(%!*)(!'&%/&$34&%<('R!<#%/%!?%B!)#4/()%B!G*=<!!"#$!4%4*..@!<*%!*!%&$3.(! w.x.y.z/30 w.x.y.z+4/30 w.x.y.z+8/30 w.x.y.z+12/30 R1
Subnet Subnet mask Network prefix Interface addresses
Su 04.
$(/0#)1!*//*=<,($/!-#&$/;!1$#0$!*%! network interface;!*$'!/<()(>#)(!&/!=*$$#/!)(.*@!-*=1(/%!>#)!
2
bn 6.9
UH!!!!!!!204.6.94.176!
et 6.1
#/<()!$#'(%B!G?($!&>!*!<#%/!<*%!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%;!%4=<!*%!$#'(!M!&$!2&34)(!56789*:;!
20
-3 8
&/! &%!(!$#/! &$/($'('!
204.6.94.176/30 11001100 00000110 01011110 101100-- [(A(H!!204.6.94.177!
: 4/
4.
/#! A(! 4%('! >#)! /)*$%&/! /)*>>&=B! S#%/%! 4%4*..@! '#! $#/! -*)/&=&-*/(! &$! /<(! )#4/&$3!
6.
204.6.94.178
94
*.3#)&/<,B!Q$.&1(!<#%/%;! %"&$'%#!<*?(!/<(!-)&,*)@!>4$=/&#$!#>!)(.*@&$3!/)*$%&/!/)*>>&=!>)#,! XA(H!!!!#/<()!
204.6.94.178!
.1
31
B 204.6.94.185
84
$#'(%B!G*=<!)#4/()!<*%!*!,&$&,4,!#>!/0#;!A4/!4%4*..@!,*$@!,#)(;!$(/0#)1!&$/()>*=(%B!T$!2&34)(! \H!!!!!!!204.6.94.180!
56789*:;!
"! A#/<! 204.6.94.180/30 ! <*?(!
)#4/()%! H5! *$'! HK! /<)((! $(/0#)1!
11001100 00000110 *//*=<,($/!
01011110 -#&$/%! 9&$/()>*=(%:!
101101-- (*=<B! G*=<!
[(A"H!! 204.6.94.181! Subnet-3: Subnet-4: 204.6.94.187 204.6.94.186
&$/()>*=(!#$!(?()@!<#%/!*$'!)#4/()!,4%/!<*?(!*!$(/0#)1!*'')(%%!/<*/!&%!3.#A*..@!4$&U4(B 8
!E!$#'(! w.x.y.z+8/31 w.x.y.z+10/31 R2
]H!!!!!!! 204.6.94.182! Subnet-4:
0&/<!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%!&%!%*&'!/#!A(! multihomedV!9#);!,4./&=#$$(=/(':B!F#/&=(!/<*/! 204.6.94.188
204.6.94.184/31! 11001100 00000110 01011110 1011100-
[(ABH!!204.6.94.184! 204.6.96.186/31 204.6.94.189
B!
,4./&<#,('!<#%/%!'#!("$!-*)/&=&-*/(!&$!)#4/&$3!#)!>#)0*)'&$3!#>!/)*$%&/!/)*>>&=B!P4./&<#,('!<#%/%!
*=/! *%! *$@! #/<()! ($'! <#%/;! (+=(-/! /<(@! ,*@! 4%(! '&>>()($/! &$/()>*=(%! >#)! '&>>()($/!["A(H!! 204.6.94.185!
'(%/&$*/&#$%;! 204.6.94.190
'(-($'&$3!#$!/<(!'(%/&$*/&#$!'&%/*$=(B!
$! 204.6.94.186/31! 11001100 00000110 01011110 1011101-
["A"H!!204.6.94.186! AHB A>B Subnet-5:
204.6.96.188/30 E F
XA"H!!!!
C<(! 0<#.(! &'(*! A(<&$'! *! $(/0#)1! .*@()! -)#/#=#.! &%! /#! &,-.(,($/! /<(! =#$=(-/! #>! *! W?&)/4*.!
204.6.94.187!
$(/0#)1X!0<()(!'(?&=(%!/*.1!(?($!/<#43<!/<(@!*)(!>*)!*0*@;!=#$$(=/('!4%&$3!'&>>()($/!-<@%&=*.! ["ABH!!204.6.94.188!
I! 204.6.94.188/30! 11001100 00000110 01011110 101111-- TH!!!!!!!204.6.94.189!
$(/0#)1!/(=<$#.#3&(%B!C<&%!,(*$%!/<*/!/<(!.*@()%!*A#?(!/<(!$(/0#)1!.*@()!'#!$#/!$(('!/#!0#))@!
Figure 1-47: (a) Example internetwork with five physical networks reproduced from Figure
*A#4/! '(/*&.%;! %4=<! *%! '&>>()($=(%! &$! -*=1(/! >#),*/%! #)! %&Y(! .&,&/%! #>! 4$'().@&$3! CH!!!!!!! 204.6.94.190!
.&$16.*@()! 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!
V
!P#%/!$#/(A##1!=#,-4/()%!$#0*'*@%!=#,(!0&/<!/0#!#)!,#)(!$(/0#)1!&$/()>*=(%;!%4=<!*%!G/<()$(/;!L&62&;! !"##$%&' ($)' *+&' %,-&' $(' .//"%*),*.$0' *+,*' 1$"' ,)&' ,23.0.%*&).04' 1$")' $)4,0.5,*.$06%' 0&*7$)-' ,%'
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! %+$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'
ResAvI
F<1@4.G7!<.46:.5!:1!:-87!7.3:81/H!F<1@4.G!(%BI!→!J!
! ,%%.40'*+&3'$#*.3,//1'*$'*+&'+$%*%C'G$")'(.)%*'*,%-'.%'*$'2&*&)3.0&'+$7'3,01',22)&%%&%'*$')&F"&%*C'
C892<.! (ABI! K<.7./:7! 6! /6L;.! ;8.=! 1?! :-.! M/:.</.:N! =-.<.! G6/0! -17:7! 6<.! G2:26440! D%'%&&0'.0'!&>*.$0'9C?C9='H$*+')$"*&)%'I9',02'IJ'+,K&';'0&*7$)-'.0*&)(,>&%'&,>+C'L&>,"%&'1$")'
31//.3:.5! ;86! 8/:.<G.586<0! /15.7! D<12:.<7! 1<! 7=8:3-.7E! :-6:! 48;.! 8/785.! :-.! O/.:=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.!:-.!@.7:!7.<;83.!:1!:-.!31/72G.<7R!-17:7%! 1$"' 0&&2' 9;' "0.F"&' MN' ,22)&%%&%C' O$7&K&)=' 1$"' 7$"/2' /.-&' *$' %*)">*")&' 1$")' $)4,0.5,*.$06%'
11.2 La segmentation : les commandes « classiques » 241
Pour configurer une interface réseau sous Gnu/Linux
$ ifconfig - a permet d’afficher toutes les interfaces réseaux présentes sur la machine qu’elle soit
ou non activée.
$ sudo ifconfig eth0 up Active l’interface réseau (down pour la désactiver).
$ sudo ifconfig eth0 192.168.1.1/24 permet de définir l’@IP d’une interface réseau.
Pour configurer une interface avec DHCP, « Dynamic Host Configuration Protocol »
$ sudo dhclient eth0 lance la configuration de l’interface par DHCP (@IP + @IP passerelle + @IP DNS
+ etc.).
$ sudo dhclient eth0 - r dé-configure l’interface en « libérant » la configuration IP
$ sudo route add default gw 192.168.1.254 eth0 ajoute la passerelle « par défaut » vers le routeur 192.168.1.254.
$ sudo route add -net 172.16.10.10/24 gw 192.168.1.254 ajoute un chemin de routage vers le réseau indiqué (l’op-
tion del au lieu de add permet la suppression de la route).
sudo route add -host 98.76.54.32 gw 12.34.56.1 ajoute un chemin pour un « host » donné.
ResAvI
La segmentation : les commandes « modernes » 242
$ ip link set eth0 promisc on passer l’interface en mode « promiscuous » pour laisser passer les trames qui ne
sont pas à destination de cette interface.
$ ip link set eth0 mtu 1500 configure la MTU de l’interface.
$ ip route add 10.0.0.0/24 via 193.233.7.65 ajouter une route vers un réseau en passant par un routeur. On utilisera
del pour enlever cette route.
$ ip route add default via 192.168.0.254 ajouter la route par défaut.
ResAvI
La segmentation : les commandes 243
Exemples
$ 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
$ ip address show
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
inet 127.0.0.1/8 scope host lo
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
$ ip route show
192.168.127.0/24 dev eth0 proto kernel scope link src 192.168.127.131 metric 1
default via 192.168.127.2 dev eth0 proto static
ResAvI
La segmentation : la configuration du noyau GNU/Linux 244
Déclencher les fonctions de routage sous GNU/Linux
À l’aide de la commande sysctl :
1 sudo sysctl net.ipv4.ip_forward=1
2 sysctl net.ipv4.ip_forward
La ligne 1 active le « forwarding » et la ligne 2 vérifie l’activation.
Pour le rendre permanent, c-à-d activé lors du prochain redémarrage, il faut ajouter la ligne
suivante dans le fichier /etc/sysctl.conf
1 net.ipv4.ip_forward = 1
Pour prendre en compte la modification du fichier :
1 sudo sysctl -p /etc/sysctl.conf
Le routage aura lieu entre les différentes interfaces présentes sur le système, en accord avec la
table de routage du système.
ResAvI
11.3 Segmentation : domaine de diffusion et de collision 245
Domaine de diffusion
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.
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.
Un domaine de collision est une zone du réseau où il existe une compétition pour l’accès à cette zone.
Le résultat de cette compétition peut être la création de collision et une baisse de débit par rapport à la capacité du réseau.
ResAvI
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.
Segmentation des
BRIDGES, ROUTERS, AND réseaux locaux : commutation
SWITCHES 246
The TCP/IP protocol stack establishes an architecture for internetworking. These
protocols can be used :to une
La commutation connect LANs in the
affaire desame building, on a campus, or around
matériel
the world. Not all internetworking devices are the same. Generally, network architects
seeking to extend the reach of a LAN can choose from one of four major interconnec-
Letionmatériel utilisé
devices: repeaters, pour
bridges, réaliser
routers, cette commutation :
and switches.
Not long ago, the network configuration and the available devices determined
◦ le répéteur, « repeater », pour allonger les distances physiques de transmission ;
which type of internetworking device should be used. Today, network configurations
are growing more and more complex, and the devices available often combine the fea-
◦ le pont, « bridge », pour connecter des domaines de diffusion avec intelligence ;
tures of several of these devices. For example, the routers on the Illustrated Network
◦have
le «allconcentrateur
the features of traditional routers, plus»
commuté some
ouswitching
« switch capabilities.
», pour connecter et isoler surtout.
In their simplest forms, repeaters, bridges, and routers operate at different layers 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.
Couches, commutation & routage
Host Host
? Le routeur intervient sur la couche 3.
Layer 5 Application Layer Application Layer Il retransmet, « forward », des datagrammes ;
Il réalise du routage.
Layer 4 Transport Layer Transport Layer
Router ? Le pont intervient sur la couche 2.
Layer 3 Network Layer Network Layer
4 Transmission of packets
Transmission of packets
ResAvI
Le fonctionnement d’un routeur 248
“Interface 2”
(a) “Interface 1”
Forwarding table
Il possède des circuits électroniques spécialisés, des NFE, « Network Flow Engine » :
Input port Output port Routing processor CPU Forwarding & Routing
Input port processor
NFE processor NFE processor CPU Memory
Network layer Memory Network layer Output port
packets
Link layer
Link layer
Line card Line card
Line card Line card
packets
Computer Computer
Computer
Ethernet Hub
Twisted pair
cable Network
port
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.
ResAvI
11.4 Segmentation des réseaux locaux : le pont ou « bridge » 250
Le pont
◦ 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.
Fonctionnement :
Pour chaque trame, suivant l’@MAC de destination :
◦ « forwarded » : la trame est envoyée uniquement dans le seg-
ment 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).
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.
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.
Sur l’exemple, les 4 machines sont configurées dans le même réseau IP.
ResAvI
Segmentation des réseaux locaux : le pont 252
Le STP, « Spanning Tree Protocol »
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.
Il est nécessaire d’installer le paquetage de gestion des ponts : $ sudo apt-get install bridge-utils
Puis de configurer le pont sur le système disposant d’au moins deux interfaces réseaux :
1 sudo bash En ligne 7 et 8, on configure les interfaces sans adresse IP et en mode « promis-
2 ifconfig eth0 down cuous », car ses interfaces vont recevoir des trames ethernet qui devront franchir le
3 ifconfig eth1 down pont et qui ne sont pas destinées au pont lui-même.
4 brctl addbr monpont
5 brctl addif monpont eth0 La ligne 10, qui permet la configuration du pont est nécessaire si on prévoit d’accéder
6 brctl addif monpont eth1 depuis le réseau à la machine mettant en œuvre le pont.
7 ifconfig eth0 0.0.0.0 promisc up
8 ifconfig eth1 0.0.0.0 promisc up
9 ifconfig monpont up
10 dhclient monpont
On peut regarder ce que le pont à « appris » comme adresse MAC connectées à ces différentes interfaces à l’aide de la commande
brctl showmacs :
port no mac addr is local? ageing timer
1 00:0c:29:22:ca:2f yes 0.00
2 00:0c:29:22:ca:39 yes 0.00
2 00:0c:29:22:ea:19 no 6.87
1 00:50:56:fa:2c:a8 no 12.95
1 00:50:56:fe:7d:70 no 13.62
ResAvI
Le pont : les risques 254
Attention !
Un pont sert d’intermédiaire de communication, c’est une sorte de « routeur » de niveau 2,
il faut donc faire attention à des attaques de type MiTM, « Man in The Middle », où :
un attaquant se fait désigner comme pont racine par les autres ponts et peut ainsi inter-
cepter le trafic réseau. On parle « d’attaque sur le STP » ;
un attaquant transmets des trames sous l’identité, adresse MAC, d’un autre poste pour se
faire retransmettre les trames à destination de cet autre poste en corrompant les tables
d’association (MAC spoofing) ;
un attaquant transmets « énormément » de trame sous des identités différentes pour sa-
turer la mémoire cache de la table associative du pont associée au port.
Il arrive que dans ce cas le switch passe en mode concentrateur uniquement, « hub », et
diffuse toute trame sur tous les ports (il arrête de travailler !).
ResAvI
Le pont : le filtrage 255
Il est possible d’établir des règles de firewall sur les ponts, c-à-d sur les trames ethernet de niveau 2, à l’aide d’une extension
de NetFilter les « ebtables ».
Pour pouvoir les utiliser, il faut installer le paquetage suivant :
$ sudo apt-get install ebtables
Il est ainsi possible :
− de faire du filtrage en tenant compte que l’on travaille au niveau des trames :
1 ebtables -P FORWARD DROP
2 ebtables -A FORWARD -p Ipv4 -j ACCEPT
3 ebtables -A FORWARD -p ARP -j ACCEPT
Comme pour le firewall de niveau 3, basé sur iptables, on peut définir une « policy », puis autorisé le trafic IP et ARP
seulement.
Les options « -P », pour « policy », « -A » pour « Add », « p » pour « protocol » sont similaires à celles utilisées pour
netfilter qui sera vu plus loin.
ResAvI
Le pont : le filtrage 256
Remarque
Cette règle peut également s’écrire avec iptables :
1 iptables -A FORWARD -s 172.16.1.4 -m mac –mac-source ! 00:11:22:33:44:55 -j DROP
Le traitement est moins rapide car ebtables intervient en amont d’iptables.
On peut également traiter plusieurs associations, en utilisant une policy basée sur DROP :
1 ebtables -A FORWARD -p IPv4 –among-dst 00:11:22:33:44:55=172.16.1.4,00:11:33:44:22:55=172.16.1.5
2 -j ACCEPT
ResAvI
Le pont : le filtrage 257
− faire de la « traduction » d’adresse, « NAT », sur les adresses MAC, seulement pour des adresses qui existent sur des
interfaces différentes (si la trame est réécrite avec une adresse MAC destination qui est sur l’interface d’où elle est venue
intialement, elle ne sera pas retransmise) :
1 ebtables -t nat -A PREROUTING -d 00:11:22:33:44:55 -i eth0 -j dnat –to-destination 54:44:33:22:11:00
Ici, on utilise la table « nat » pour réécrire des adresses MAC dans les trames au passage dans le pont.
1 ebtables -t nat -A POSTROUTING -s 00:11:22:33:44:55 -i eth0
2 -j snat –to-source 54:44:33:22:11:00 –snat-target ACCEPT
Ici, on change l’adresse MAC source.
− répondre automatiquement à des requêtes arp :
1 ebtables -t nat -A PREROUTING -p arp –arp-opcode Request –arp-ip-dst 192.168.127.2 -
2 j arpreply –arpreply-mac de:ad:be:ef:ca:fe
Ici, on peut répondre automatiquement à une requête ARP, par exemple en donnant une adresse MAC différente pour
une adresse IP connue et faire du MiTM. . .
ResAvI
external device, such as a router, is always required to internetwork the domains.
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.
11.5 Segmentation des réseaux locaux : commutation et switch, les VLANs
On a WAN, the term “switch” means a class of network nodes that behave very differ- 258
ently than routers. We’ll look more closely at how “fast packet network” devices, such as
Le switch
Frame Relay and ATM switches as network nodes, differ from routers in a later chapter.
Il permet :
−Virtual LANs
de segmenter un domaine de diffusion entre plusieurs domaines de collisions, avec plus de deux ports de
A VLAN, according to the official IEEE definition, defines broadcast domains at Layer 2.
connexion
VLANs, à la 2manière
as a Layer d’un
entity, really pont
have ; to do with the TCP/IP protocol stack,
little
− de créer plusieurs domaines de diffusion and
but VLANs make a huge difference in how switches routers operate
segmentés : on a TCP/IP
network.
Routers
en associant un oubroadcasts
do not propagate plusieurs as ports
bridgesàdo, un
so domaine de diffusion
a router automatically ;
defines
broadcast domains on
en assurant uneach interface.
travail Layer entre
de pont 2 LAN switches logically create
ces différents portsbroadcast
;
domains based on configuration of the switch. The configuration tells the LAN switch
en
what permettant
to do l’utilisation
with a broadcast receiveddeson aautres portsoflibres
port in terms pour ports
what other définir un ou plusieurs autres domaines de diffusion.
should
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
cannot be determined just by looking at the network diagram. Systems can belong to
Les different,
VLANsthe same, or even multiple, broadcast domains. The configuration files in the
Les domaines de diffusion, « broadcast domain »,
LAN Switch
VLAN1 et VLAN2 sont des « entités logiques » dont
les matériels sont connectés par des pont virtuels.
FIGURE 2.6
VLANs in a LAN switch. Broadcast domains are now logical entities connected by “virtual bridges”
ResAvI
in the device.
Segmentation des réseaux locaux : commutation et routage, les VLANs 259
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 ap-
partenant à différents VLANs, il est nécessaire de savoir à quel VLAN
appartient une trame.
Les fonctionnalités de plus en plus étendues des commutateurs empiètent sur les fonctions
classiquement dévolues aux routeurs. De ce fait, les commutateurs les plus sophistiqués
sont souvent appelés des commutateurs-routeurs. Désormais, en plus des fonctions tradi-
tionnelles de commutation d’un port à l’autre, les commutateurs-routeurs sont capables
Les VLANs et le trunking
CHAPTER 2 TCP/IP Protocols and Devices 67 262
La norme 802.1Q
Ethernet Frame Structure Elle ajoute :
Destination Source
Address Address
Tag
4 bytes
Type
2 bytes
Information
46–1500 bytes
FCS
4 bytes
− 4 octets au format de la trame, entre l’@MAC source et le
6 bytes 6 bytes
champs type contenu dans la trame ;
La taille maximale de la trame passe de 1518 octets à 1522
Tag Protocol ID Priority CFI VLAN ID
16 bits 3 bits 1 bit 12 bits octets.
TPID: 802.1p VID (unique): − un identifiant de VLAN qui peut aller de 0 à 4095.
0 3 8100 (defaut), priority levels 0 to 4095
0 3 9100, (027)
0 3 9200
(Canonical Format Indicator: 0 5 canonical MAC, 1 5 noncanonical MAC) Il est possible d’utiliser un double étiquetage, appelé « q in q »
Ethernet q-in-q VLAN tags
pour permettre à un FAI d’avoir ses propres VLANs an plus de
DA SA Type Data FCS Original Ethernet Frame 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).
DA SA Tag Type Data FCS 802.1q Tagged Frame
LaFIGURE
norme2.7 802.1p intègre des notions de priorités pour favoriser le trafic d’un VLAN et faire de la QoS.
VLAN tags
Description and frames.
: 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) ;
Cutting down on broadcasts—Some network protocols are much worse than
. PCP, « Priority
others CodetoPoint
when it comes » : champ
broadcasts. Thesesur 3 bitsframes
broadcast allantcan de be
la an
priorité
issue 1 la plus faible à 7 la plus forte (la valeur 0 indique pas
because they rarely carry user data and each and every system on the segment
demust
priorité).
process the content of a broadcast frame. VLANs can isolate protocol
broadcasts
Ces priorités so that they arrive
peuvent êtreonly at the systems
associées à des that need to hear
classes voix, vidéo, données. . . ;
them.:Also,
de trafic
a number of hosts that might otherwise make up a very large logical network
. CFI,
(e.g., Page 19 what we will call later a “/19-sized wireless subnet”) could useRing : une trame dont le CFI est à 1, c-à-d non canonical,
« Canonical Format Indicator » : compatibilité avec les Token
VLANs
alors la because
trame ne theydoit
can pas
be just plain
être noisy. vers un port non tagé, non associé à un VLAN ;
relayée
Router delay—Older routers can
. VID, « VLAN Identifier » : identifie lebe much slower
VLAN, than le
LAN switches.
numéro 1VLANs can
est associé à un VLAN de gestion administrative, et la valeur 0
be used to establish logical boundaries that do not need to employ a router to
ResAvI
indique que
get traffic la one
from trameLANn’appartient à aucun
segment to another. VLAN.many routers today
(In fairness,
route at “wire speed” and do not introduce much latency into a network.)
The Illustrated Network uses Gigabit Ethernet links to connect the customer-edge
Les VLANs : la gestion sous GNU/Linux 263
Pour créer une interface virtuelle vers un VLAN, de numéro 10, connectée à une interface réelle
donnée :
sudo vconfig add eth0 10
? la « paravirtualisation » : on utilise également un mode hyperviseur, mais on utilise uniquement des OS qui ont
été modifiés pour tenir compte de cette virtualisation.
On obtient les meilleurs performances, mais on ne peut l’exploiter que pour certains OS modifiables.
Exemple : Xen.
? la « virtualisation d’OS » : qui est également appelé « containerization » ou « zoning » qui permet de définir
différents « espaces utilisateurs » en utilisant un seul noyau.
Les performances sont excellentes, et le container ne s’applique que sur les éléments que l’on veut mettre
dans un container.
Exemple : OpenVZ, Linux-Vserver LXC.
ResAvI
??
Les containers Linux 265
Dans notre cas, nous allons virtualiser une pile TCP/IP afin de disposer de plusieurs machines reliées par diffé-
rents types de liens, etc.
La configuration d’un container
Exemple : on va définir :
− un pont mon_pont ;
− deux containers possédant chacun une interface connectée à ce pont :
1 # fichier lxc-ishtar1.cfg 1 # fichier lxc-ishtar2.cfg
2 lxc.utsname = ishtar1 2 lxc.utsname = ishtar2
3 lxc.tty = 3 3 lxc.tty = 3
4 lxc.pts = 1024 4 lxc.pts = 1024
5 lxc.network.type = veth 5 lxc.network.type = veth
6 lxc.network.flags = up 6 lxc.network.flags = up
7 lxc.network.link = mon_pont 7 lxc.network.link = mon_pont
8 lxc.network.name = eth0 8 lxc.network.name = eth0
9 lxc.network.ipv4 = 192.168.0.100/24 9 lxc.network.ipv4 = 192.168.0.200/24
Pour les exécuter et les arrêter :
$ sudo lxc-execute -f lxc-ishtar1.cfg -n Ishtar1 bash
$ sudo lxc-execute -f lxc-ishtar2.cfg -n Ishtar2 bash
$ sudo lxc-stop -n Ishtar1
Ici, on crée un container disposant d’une interface réseau et qui ne « confine » qu’un shell bash.
Attention : utiliser Ubuntu 10.10, avec la version de LXC > 0.7.2 !
ResAvI
??
Définition d’interface virtuelles sous GNU/Linux 266
Création d’une interface réseau virtuelle
Pour pouvoir créer une interface réseau virtuelle, de deux types :
− appelée TUN : pour le niveau 3, c-à-d. IP, qui permettra de faire du routage, par exemple à
travers un tunnel ;
− appelée TAP : pour le niveau 2, c-à-d. Ethernet, qui permettra de mettre en place un pont, ou
« bridge », c-à-d. la possibilité de faire passer une trame Ethernet d’une interface à une autre.
Pour connecter un container par un VLAN, on va d’abord créer une nouvelle interface virtuelle
sur la machine hôte :
$ sudo tunctl -t vers_net1
Puis configurer le container afin de s’accrocher à cette interface virtuelle :
1 lxc.utsname = ishtar1
2 lxc.network.type = vlan
3 lxc.network.vlan.id = 128
4 lxc.network.flags = up
5 lxc.network.link = vers_net1
6 lxc.network.name = eth0
7 lxc.network.ipv4 = 192.168.0.100/24
− à la ligne 2, on indique que la connexion du container sera faite au travers d’un VLAN ;
− en ligne 3, on choisit le VLAN d’identifiant 128 ;
− en ligne 5, on relie l’interface eth0 du container à l’interface virtuelle vers_net1 du container.
ResAvI
??
Utilisation de VLAN dans un container 268
On peut configurer un container pour que ses communications soient encapsulés dans un VLAN
en utilisant le type « vlan » pour définir son interface dans le fichier de configuration du container :
1 lxc.utsname = ishtar1
2 lxc.network.type = vlan
3 lxc.network.vlan.id = 128
4 lxc.network.flags = up
5 lxc.network.link = vers_net1
6 lxc.network.name = eth0
7 lxc.network.ipv4 = 192.168.0.100/24
On définira une interface virtuelle à laquelle le container s’accrochera, de type TUN avec la
commande :
$ sudo tunctl -t vers_net1
La table à apprendre −→
ResAvI
7KH rules in the PREROUTING chain of the mangle table are analyzed by the kernel
when a packet comes in, before the routing process takes place.
Le Firewall Netfilter : trajet du datagramme 273
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
de « forwarding » du système) ;
OUTPUT : traite les paquets créés sur la machine locale et à destination de l’extérieur ;
. 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.
ResAvI
Le Firewall Netfilter : trajet du datagramme 274
Le parkour du datagramme
Quand un paquet se présente sur une interface, il circule de la manière suivante :
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é en amont de la décision de routage dans la chaîne PREROUTING, ou après dans
la chaîne POSTROUTING.
ResAvI
Le Firewall Netfilter : la commande iptables 275
Gestion des règles : définition & application à l’aide de la commande iptables
Avec iptables, on peut réaliser les différentes opérations pour une règle :
? -A ou : ajouter
? -D ou –delete : effacer
? -I ou –insert : insérer
? -R ou –replace : remplacer
Il faut spécifier la table, indiquer l’opération suivie de la chaîne concernée.
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.
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 .
ResAvI
Le Firewall Netfilter : le parcours des chaînes 276
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 faire des sé-
---------------------------- ---------------------------- lections complexes avec l’option :
| Règle1: -p ICMP -j DROP | | Règle1: -s 192.168.1.1 |
iptables -N nom_chaine
|--------------------------| |--------------------------|
| Règle2: -p TCP -j test | | Règle2: -d 192.168.1.1 |
(sur l’exemple ci-contre, la chaîne « test » a été ajoutée)
|--------------------------| ----------------------------
| Règle3: -p UDP -j DROP |
----------------------------
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 également paramètrable avec des options.
ResAvI
Le Firewall Netfilter : les protocoles 277
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.
Cela permet de désigner les demandes d’établissement connexions ;
–-tcp-flags : permet d’indiquer les drapeaux qui doivent être présents : SYN, RST, ACK, FIN, URG, PSH et
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.
iptables -t filter -A OUTPUT -p tcp –-syn –-sport 80 -j DROP
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 » :
$ iptables -t nat -F PREROUTING
Pour suivre l’activité des transmissions de trames du protocole TCP sous shell avec tcpdump :
1 tcpdump -ev -i eth0 tcp and port 80
Ici, on ne s’intéresse qu’au trafic TCP, de port source ou destination 80.
ResAvI
12.1 Firewall : le plan de la présentation des usages 282
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
NAT and Packet Manglingcommuniquer
with iptables depuis l’extérieur vers une machine située à l’intérieur, il faut configurer explicitement le routeur NAT.
7RH[SODLQ1$7LQPRUHGHWDLOOHW
VWDNHDORRNDWWKHIROORZLQJGLDJUDP
On utilise les réseaux dits privés, réseaux non « routables », (RFC 1918) :
? 172.16.0.0/16
? 192.168.0.0/16
? 10.0.0.0/8
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 ;
On parle de « connection tracking ».
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
ResAvI
x SUHÀ[
x SUHÀ[
x SUHÀ[
1RZVLQFHLVDSULYDWHQHWZRUNWKRVH,3DGGUHVVHVDUHQRWURXWHG
anywhere in the Internet, meaning that no host on the Internet can access the devices
NAT & PAT : traduction d’adresse et de port 284
Le « connection tracking »
◦ pour UDP, on mémorise l’envoi d’un datagramme UDP et on autorise le retour d’un datagramme UDP
(d’où le terme impropre de « connexion » !!!)
pef@solaris:~$ sudo modprobe ip_conntrack
pef@solaris:~$ sudo more /proc/net/ip_conntrack
tcp 6 431996 ESTABLISHED src=199.47.217.147 dst=192.168.42.83 sport=80 dport=51911 src=192.168.42.83
dst=199.47.217.147 sport=51911 dport=80 [ASSURED] mark=0 use=2
udp 17 3 src=192.168.42.59 dst=192.168.42.255 sport=138 dport=138 [UNREPLIED] src=192.168.42.255
dst=192.168.42.59 sport=138 dport=138 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.
? 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.
ResAvI
NAT & PAT : l’utilisation de netfilter et de la table nat 285
SNAT, « Source NAT » & Masquerade
. 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 :
c’est celle de l’interface de sortie du routeur.
7KHIROORZLQJGLDJUDPSUHVHQWVDQH[DPSOHRIKRZ61$7RU0DVTXHUDGHZRUNV
Exemple :
? la machine 192.168.1.3 veut communiquer
avec 2.2.2.2 ;
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
en différentes
Let's take privées en fonction du numéro ou du protocole. On parle de « port forwarding ».
@IPdiagram:
a look at the following
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
concerne pas lui-même mais un serveur du réseau
privé ;
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).
ResAvI
61$7LVRQHRIWKHPRVWFRPPRQO\XVHGW\SHVRI1$7ZLWKLSWDEOHVEHFDXVHRIWKH
topology used.
Let's see, for example, the following scenario:
1HWZRUNLVLQRXURIÀFH:HKDYHDQ(WKHUQHWFRQQHFWLRQIURP
RXUSURYLGHUZKLFKDVVLJQHGXVWKH,3DGGUHVVDQGWKHGHIDXOW
NAT : les commandes iptables de netfilter et la table nat
gateway 1.2.3.2. 289
$OOWKHFRPSXWHUVLQWKHQHWZRUNKDYHWKHGHIDXOWJDWHZD\VHWWR
SNAT
192.168.1.1.
7KLVFRPPDQGKDVWKHVDPHHIIHFWDVWKHIROORZLQJFRPPDQGZKLFKZHZRXOGXVH
iptables –t nat –A PREROUTING –d 1.2.4.2 –p tcp
if the IP address of Eth1 were dynamically assigned, or if we used a dial-up modem
–-dport 65521 –j DNAT –-to 192.168.1.100:22
instead of an Ethernet card:
Proxy transparent [ 102 ]
Un proxy transparent est un moyen de forcer les utilisateurs à utiliser un proxy, c-à-d un intermédiaire de connexion, même
si leur navigateur n’est pas configuré pour le faire :
iptables –t nat –A PREROUTING –s 192.168.1.0/24 –p tcp –-dport 80 –j REDIRECT –-to-port 3128
Le proxy est installé sur le routeur et le « REDIRECT » effectue un DNAT vers l’@IP du routeur lui-même.
Le proxy peut être utilisé pour servir de cache Web, ou pour filtrer les contenus dangereux.
ResAvI
Z#$%,5#*.$=$Y#./$*22,+#%$*.$0*:($#/$*.$[#W$\
Z#$%,5#*.$O$Y#./$*22,+#%$*.$0*:($0*:5$)*5$*.$]#W
Z#$%,5#*.$O$)#./A:($;,W#%'#%$(#$5:/#$[#W$+#$(1#"/%#)%:5#$^
W$U$T"+:6.#%$(*$23"-:'.%*/:3"$)3.%$2;*6.#$%3./#.%$+#5$-:%#[*((5$)%,5#"/$5.%$#.97
Description rapide de STUN, « Session Traversal Utilities for (NAT) », RFC 5389
!"$5#%Y#.%$V_M$*$,/,$:"5/*((,$+*"5$(#$%,5#*.$>$)3.%$-3"2/:3""#%$.":6.#0#"/$)3.%$(#5$ 290
%,5#*.9$=N$O$#/$>7$
Ce protocole sert à savoir si l’utilisateur est « derrière » un NAT, comment est configuré le NAT et si un flux UDP entrant
?*%$53.2:5$+#$5,2.%:/,N$:($+3:/$`/%#$:0)355:W(#$+#$23"/*2/#%$."$5#%Y#.%$V_M$#9/,%:#.%7$
est possible (par exemple pour faire de la VoIP).
2$U$a3+:-:#%$(#5$-:2;:#%5$+#$-:(/%*'#$#"$23"5,6.#"2#7
http://www.bortzmeyer.org/5389.html
ResAvI
--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)
Netfilter : modifier les paquets, la table mangle Normal-Service 0 (0x00) 291
([DPSOHVHW726WRMaximize-ThroughputIRURXWJRLQJ)73GDWD
L’utilisation de cette table permet de modifier le contenu de certains champs du datagramme IP :
iptables -t mangle -A POSTROUTING -p tcp --sport 20 -j TOS --set-tos 8
? 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).
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
LSWDEOHVKDVWKH'6&3WDUJHWWKDWFDQEHXVHGWRDOWHUWKH'6&3ELWV7KHRSWLRQVFDQ
1 Class 1 be found using --help with the DSCP target.
0 Best effort root@router:~# iptables -j DSCP --help
… some lines missing…
DSCP target options
? le champs TTL : pour le diminuer : empêcher la sortie de certains datagrammes, ou au contraire l’augmenter :
--set-dscp value Set DSCP field in packet header to value
masquer le passage par le routeur ; [ 114 ]
? marquer le datagramme : permet ensuite d’appliquer de la QoS sur le paquet en collaboration avec l’outil traffic
control, tc.
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
ResAvI
Le P2P : identification et classification 292
Installation et utilisation
$W/D\HURIWKH26,PRGHOZHÀQG$SSOLFDWLRQ+773)7366+HWF$V
\RXFDQVHHIURPWKHSLFWXUHDERYH7&3,3FRPSDFWHG26,/D\HUVDQG
LQWRRQH/D\HU7&3,3/D\HU$SSOLFDWLRQZKLFKKDVWKHVDPHQDPHEXW
Il utilise un répertoire contenant des fichiers de définitions de protocoles disponible sur le site
different functionality.
http://sourceforge.net/projects/l7-filter/.
FLOWHULQJDQGSULRULWL]LQJWUDIÀFIURPVRPHDSSOLFDWLRQVFDQEHYHU\HDV\DQG
YHU\KDUGDWWKHVDPHWLPH1RUPDOO\ZHZRXOGÀOWHUSULRULWL]HZHEWUDIÀFE\
Exemple de fichier utilisé pour la détection de bittorent :
PDWFKLQJ7&3SDFNHWVZLWKVRXUFHRUGHVWLQDWLRQSRUWZKLFKLVWKHVWDQGDUG
+773SRUW+RZHYHUZHEVHUYHUVFDQEHFRQÀJXUHGWRXVHDQ\SRUWVRRXU
# Bittorrent - P2P filesharing / publishing tool - http://www.bittorrent.com Des EXPRESSIONS RÉGULIÈRES !!!
ÀOWHUVSULRULWL]DWLRQVZRQ
WZRUNIRUWKDWSDUWLFXODUWUDIÀF
# This pattern has been tested and is believed to work well.
# It will, however, not work on bittorrent streams that are encrypted, since
# it’s impossible to match (well) encrypted data.
bittorrent
# 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=)
ResAvI
Le P2P : identification et classification 294
Le « Layer-7 filter »
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/
routeur:~# iptables -L OUTPUT -n -v kernel/net/ipv4/
Chain OUTPUT (policy ACCEPT 10168 packets, 3433K bytes)router:~# depmod -a
router:~# modinfo ipt_ipp2p
pkts bytes target prot opt in out source filename:
destination/lib/modules/2.6.12.5-home.made/kernel/net/ipv4/
ipt_ipp2p.ko
0 0 all -- * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto http
author: Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>
routeur:~# description: An extension to iptables to identify P2P traffic.
license: GPL
Pour filtrer : vermagic: 2.6.12.5-home.made preempt PENTIUMIII gcc-3.3
depends: ip_tables
routeur:~# iptables -A FORWARD -m layer7 –-l7proto edonkey -j DROP
Next, we need to load the module, and it's all set.
mangle en PREROUTING).
Using IPP2P
,333SURYLGHVDQRWKHUPDWFKRSWLRQIRULSWDEOHVVRWKHV\QWD[LV
Alternative : IPP2P iptables … -m ipp2p –-option ...
Another possibility is to use as option --ipp2p, which matches all the protocols
stated earlier.
7KLVQHZPDWFKRSWLRQKDVWKHVDPHUXOHVDVWKH/ÀOWHUSURMHFWDQGLW
VEDVLFDOO\
netfilter : L’administration des usagers 295
D’autres modules
? time :
iptables A FORWARD -p tcp -m multiport –-dport http,https -o eth0 -i eth1
-m time –-timestart 12:30 –-timestop 13:30 –-days Mon,Tue,Wed,Thu,Fri -j ACCEPT
? quota :
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)
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
-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 PREROUTING -i eth0 -p tcp –-dport 80 -m state –-state NEW -m random –-average 25
-j DNAT –-to-destination 192.168.0.5:80
iptables -A PREROUTING -i eth0 -p tcp –-dport 80 -m state –-state NEW -m random –-average 25
-j DNAT –-to-destination 192.168.0.6:80
iptables -A PREROUTING -i eth0 -p tcp –-dport 80 -m state –-state NEW -m random –-average 25
-j DNAT –-to-destination 192.168.0.7:80
iptables -A PREROUTING -i eth0 -p tcp –-dport 80 -m state –-state NEW
-j DNAT –-to-destination 192.168.0.8:80
ResAvI
La protection avec netfilter : contre les accès abusifs (rapide et nombreux) 296
L’utilisation du module limit et connlimit
◦ 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.
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
ResAvI
La protection avec netfilter : contre les accès abusifs (rapide et nombreux) 297
Le module hashlimit
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
–-hashlimit-name ssh -m state –-state NEW -j ACCEPT
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 combi-
naisons possibles).
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
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.
ResAvI
La protection avec netfilter : contre les accès abusifs (rapide et nombreux) 298
Illustration du module limit et de l’option burst
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 nu-
méro du paquet reçu est en abscisse.
Les 5 premiers paquets passent immédiate-
ment, « burst », puis un seul paquet passe
toute les 2 sec.
ResAvI
Netfilter : bloquer des connexions en fonction de la provenance 299
le module recent
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 :
iptables -A INPUT -i eth0 -m recent --name badguys --update --seconds 3600 -j DROP
iptables -A INPUT -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).
Autres listes :
? nethash : une liste d’@IP ;
? macipmap : pour des @MAC ;
? portmap : pour des numéros de port ;
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 :
iptables -m u32 –-u32 "3&0xE0=0x20"
. etc.
Une adresse intéressante http://www.stearns.org/doc/iptables-u32.v0.1.7.html
ResAvI
Netfilter : revenir sur les paquets rejetés 302
REJECT & TARPIT
. 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
ResAvI
NFQUEUE : passer les paquets en « espace utilisateur », userspace 303
NFQUEUE : permet de faire passer les paquets dans un programme utilisateur
$ sudo iptables -t filter -i bridge_dmz -A FORWARD -p tcp –-sport 5001 -j NFQUEUE –-queue-num 0
1 #!/usr/bin/python
16 q = nfqueue.queue()
17 q.open()
18 q.unbind(socket.AF_INET)
19 q.bind(socket.AF_INET)
20 q.set_callback(traite_paquet)
21 q.create_queue(0)
23 try:
24 q.try_run()
25 except KeyboardInterrupt, e:
26 print "interrupted"
28 q.unbind(socket.AF_INET)
29 q.close()
ResAvI
NFQUEUE : passer les paquets en « espace utilisateur », userspace 304
1 #!/bin/sh
14 # Active la protection de type Syn cookie et protège contre les Syn Flood
15 sysctl net.ipv4.tcp_syncookies = 1
17 # Désactive le traitement des paquets ICMP de redéfinition de route pour détourner le trafic
18 sysctl net.ipv4.conf.all.accept_redirects = 0
? 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
• utilisation de réseaux « sans-fil » : ce sont dans ces réseaux que les manques sont les plus importants
Les réseaux « filaires » Les réseaux « sans-fil », « wireless »
gèrent des milliers de flux : pas raisonnable de vouloir gèrent des dizaines de flux : c’est possible de
tous les contrôler ; les contrôler ;
sont-ils le « goulot d’étranglement », bottleneck ? non le réseau est le goulot d’étranglement !
facile d’augmenter la capacité ; difficile d’augmenter la capacité ;
temps pour organiser le trafic : ∼ 1µs temps pour organiser le trafic : ∼ 1ms
Plus de temps pour prendre une décision !
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. . .
Network
Network
signals packets
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 constan: :
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, 15M bps (en Méga-bits par seconde) et de bonne qualité à 3M bps.
pour un signal vocal, on va d’un débit de 4kbps pour une très forte compression à un débit de 64Kbps (un débit de
8Kbps à 1, 3M bps 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 rapi-
dement, 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 à 64Kbps ;
G.729 à 8Kbps ;
◦ pour la vidéo :
H.263 à 64Kbps, c-à-d 8000octets par seconde ;
MPEG-2 à 19, 2M bps, ou en VBR de 6M bps en moyenne, à 24M bps au maximum.
ResAvI
Le protocole RTP, « Real-time Transport Protocol » 312
. 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 < port < 6999.
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
ver. P X contrib. M 7-bit payload type 16-bit sequence number ? X : indique la présence d’un en-tête d’extension dé-
num src count
finie par l’application (rarement utilisé : les données
12
32-bit timestamp
bytes contiennent les en-têtes si nécessaire) ;
? contributing source : indique le nombre d’identi-
32-bit synchronization source (SSRC) identifier
fiants de source si plusieurs incluses dans l’en-tête ;
contributing source (CSRC) identifiers (if any) ? M : indicateur si les données sont particulières (par ex.
des « frames boundaries ») ;
32-bit extension header (if any) ? Payload type : indique le format du contenu (G722,
G711 etc.) ;
data ? Sequence number : permet au récepteur de suppri-
mer le « jitter », de détecter la perte de paquet et de les
padding (if any)
8-bit pad count réordonner ; incrémenté de 1 à chaque paquet ; valeur
(in bytes)
de départ choisie aléatoirement (protection contre les
attaques par injection sur des données de paquet chif-
frées).
? timestamp : combiné au numéro de séquence pour détecter les trous, « gap », dans la transmission ; permet de réor-
donner 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.
ResAvI
Le streaming 313
(b)
Multicast
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 ;
Source
8 7 6 5 4 3 2 1 8 6 7 5 3 4 2 1
Receiver
duisent des retards, voire des ré-ordonnancements
Packets departing source Packets arriving at receiver
des paquets sur le récepteur.
8 8 8
Si les délais sont très variables, on parle de fort
7 7 7
6 6 6
jitter.
Packet number
5 5 5
4 4 4
Un fort jitter est mauvais pour les transmissions
3
2
3
2
3
2
« temps-réel ».
1 1 1
0 20 40 60 80 100 120 140 160 0 20 40 60 80 100 120 0 20 40 60 80 100 120 140 160 180 200 220 240 260
Time when packet departed (ms) Transit delay experienced (ms) Time when packet arrived (ms)
Playout Packets
Pour annuler le jitter : arrived schedule
Packet arrives at receiver
at receiver 1 2 4 3 5 7 6 8
? t1 le temps de départ du paquet ; 8
? d1 le délai de transmission ;
Packet number
7 Time spent
Packets Packet removed from buffer
in buffer
? on mesure r1 , r1 = t1 + d1 , 6 created
at source 1 2 3 4 5 7 8
5
le temps d’arrivée du premier pa- Missed
4 playout Time Missed
quet ; 3 playout
(audio/vidéo) ;
0
80
20
0
40
60
0
0
0
24
10
12
18
26
14
16
20
22
Time [ms]
? on choisit q avec pi = ti + q , et Talk starts r = 58 p = 120 1 1
le trafic est marqué, marked, mesuré, metered, régulé, policed, et mis en forme, shaped.
13.3 QoS : « packet switching » avec MPLS 316
Le protocole MPLS, « Multi-Protocol Label Switching », RFC 3031 & 3032
• il combine :
le « packet switching » de technologie comme ATM ;
le routage IP ;
• le routeur :
peut ainsi passer :
? du routage « hop by hop » ;
? au « switching » de ATM, c-à-d où les datagrammes empruntent une « sorte » de circuit virtuel ;
ce qui évite :
? d’analyser les en-têtes du datagrammes en mode « switching », ce qui diminue la latence ;
? de faire de la fragmentation ;
• cette approche est appelée « tag switching » ;
• aux bases de données de routage sont intégrées dans des « label information base », où certains flux de datagrammes
peuvent être étiquetés :
une fois étiqueté, un datagramme passe directement en mode switching sans passer par le routage ;
les étiquettes doivent être gérées entre les différents routeurs à l’aide du « label distribution protocol » ou LDP ;
le réseau d’interconnexion est décomposé en :
? LER, « Label Edge Routers » : qui sont situés en bordure et qui sont chargés de classifier et d’étiqueter les flux de
donnéees ;
? LSR, « Label Switching Routers » : qui sont dans le noyau du réseau d’interconnexion et qui « switchent » les
datagrammes en fonction de leur étiquettes ;
? le protocole LDP est utilisé entre ces différents routeurs pour maintenir la table des étiquettes et faire également la
réservation d’un circuit virtuel, « label-switched Path », ou LSP, entre les routeurs : ils envoient des « LDP requests ».
Il est également possible d’employer le protocole RSVP-TE, « RSVP - Traffic Engineering » RFC 3209.
ResAvI
carry IP traffic over an Ethernet network is shown in Fig. 8.14.
When an LER realizes that a new packet flow must be label-switched, it forwards an
LDP request to the following routers along the path toward the destination, to trigger
the association between outgoing and incoming labels for that flow. When this request
QoS : « packet switching » avec MPLS reaches the egress edge router, this router chooses a label value for identifying the flow 317
Le réseau d’interconnexion avec MPLS
Label switch
(ATM switch/router)
IP network
IP
IP network
IP
IP
IP network
IP 52 .1 .1 .1 2
Fig. 8.15
Les datagrammes empruntent le Label-switched
même chemin path
suivant l’étiquette MPLS qu’ils ont reçus.
ResAvI
In recent years, MPLS has been extended to generalized multi-protocol label switching
(GMPLS) [118], which is a multipurpose control plane paradigm able to manage not only
packet switching devices, but also devices that perform switching in time, wavelength
and space domains. Generalized multi-protocol label switching aims at extending the
Label Stacking
FR
Header
... DLCI ...
Of all the MPLS terms outlined in the previous section, the one that is essential to
Label
understand is the concept of “nested” LSPs; that is, LSPs which include one or more
Fig. 8.13
QoS :
other « packet
LSPs switching
along their » avec
path from ingress MPLS
to egress.
MPLS label encapsulation in existing WAN environments
When this happens, there will be 318
more than one label in front of the IP packet for at least part of its journey.
Integration dans TCP/IP
It is common for many : modification de three
large ISPs to stack la trame
labelsEthernet
in front of802.3
an IP packet. Often,
the end of two LSPs is at the same router and two labels are pushed or popped at once.
20 bits 3 1 8 On insère une « étiquette MPLS » entre l’en-tête de la
The current limit is eight labels.
There are several instances where this stacking ability comes in handy. trame Ethernet
A larger ISP 802.3 avec un type 0x8847, et le data-
Label value Exp S TTL
can buy a smaller ISP and simply “add” their own LSPs onto (outside) thegramme existing ones.
IP :
In addition, when different signaling protocols are used in core routers and border
routers, these domains can be nested instead of discarding one or the other.
◦ Label : 20bits identifie les paquets comme étant inclus
The general idea of nested MPLS domains with label stacking is shown in dans Figureun flux au travers d’un « tunnel » MPLS ;
17.7.
There are five MPLS domains, each with its own way of setting up LSPs: static,
◦ Exp RSVP, « Class of Service » : 3bits utilisés pour clas-
: CoS,
and LDP. The figure shows the number of labels stacked at each point and the le
sifier order
flux parmi une des 8 catégories ;
MAC MPLS IP Data
Similaire au TOS du datagramme IP.
Fig. 8.14 MPLS label encapsulation in IP/LAN environments ◦ S, « Stack bit » : permet d’avertir le routeur qu’une autre
MPLS Domain 1 étiquette est empilée après les 32bits de l’étiquette cou-
on its incoming link and returns it to the upstream router along the path. The upstreamrante ;
LSR gets this label, stores it in its table for identifying the flow on its outgoing link,◦ TTL, « Time to Live » : 8bits utilisés de la même manière
assigns another label to the same flow for identification on its3 incoming link, stores it inque le TTL de l’entête du datagramme IP ;
MPLS Domain
the table associated to the2outgoing label and forwards it backward to the next upstream
MPLS Domain
MPLS MPLS Cette valeur peut être copiée depuis ou vers celle du
router.
R When a label is finally returnedR toDomain
the ingress
4 edge Domain
R router who
5 sent
R the request,
an edge-to-edge path is established and it isLDP LDP path (LSP). All thedatagramme IP.
called a label-switched
following packets Static
of the same flow will then followRSVPthis path. One of the main results is
then to provide connection-oriented functionalities to IP-based networks, as illustrated
by the example in Fig. 8.15.
Les étiquettes peuvent être empilées ou « stackées »,
Recent advances in hardware-based processing and ultra-fast random access memories entre différents domaines, qui peuvent être combinés de
have boosted the evolution of IP router architectures to the point that the fast IP switching
différentes manières.
RSVP
paradigm behind the original motivations for deploying MPLS networks is not critical
anymore. However,
Two stacked networkThree
labels operators arelabels
stacked still very keen on adopting
Three stackedMPLS
labels in their
core(MPLS2,
infrastructures
MPLS1,because
IP) of(MPLS4,
the enormous
MPLS3,advantages offered by such
(MPLS5, a technology
MPLS3,
MPLS1,
that integrates the flexibility of the IP) with the traffic control
IP world MPLS1,andIP)management
capability
Remarque achievable
FIGURE 17.7 through a connection-oriented
: les avancées en terme de puissanceswitching paradigm.
de routeur In fact,
netoday
rend plus la solution MPLS incontournable, néanmoins
MPLS is mainly used to implement quality of service, traffic engineering and virtual
elle permet
MPLS de showing
domains, faire dehowla QoS, de manière
the domains très or
can be nested efficace
chained,: and
fournit
how des garanties
multiple labels sur la QoS.
private network solutions.
ResAvI
are used.
QoS : « packet switching » avec MPLS 319
Chapter 5 • Mechanisms for Quality-of-Service 275
Illustration
A G
F
Egress LSR
MPLS domain
Flow of IP
datagrams
D
(denoted
by FEC)
C
B
E
MPLS label
Link-layer hdr
IP header
LSR = Label switching router
IP payload FEC = Forwarding equivalence class
LFIB LSP = Label switched path H
LIFB = Label forwarding information base
D+,'9<.@IB% *1.&1),2% <)15% .,% ),2&'**% #$>B% 2+),2% 15&+025% ),1'&?'/).1'% #$>*B% )=% .,@B% .,/% ',/),2%
•!9&!:7366.0!;12.1,,7.12!<:;=)!3>.?./$!/5!+@,0.6$!758/,+!>3+,4!51!7,+5870,!051+/73.1/+A!73/#,7!/#31!
<)15%.,%'2&'**%#$>7%-=%/.1.%,''/*%1+%1&.A'(%),%15'%+33+*)1'%/)&'41)+,%.*%<'((B%<5)45%)*%0*0.((@%1&0'B%
15',%.%*'3.&.1'%+,'9<.@%10,,'(%?0*1%:'%:0)(1%),%15'%+33+*)1'%/)&'41)+,7%J+%*0??.&)N'B%.,%EKM%)*%
51!4.+/310,!<+#57/,+/!@3/#=!51?$!<(,0/.51!BCDCE=C!%&'(!344+!/#,!3>.?./$!/5!657-374!@30F,/+!5G,7!
0,)L0'(@% .**+4).1'/% <)15% .,% #$"7% K.45% 3.)&% +=% &+01'&*% .2&''*% +,% .% (.:'(% ),/'3',/',1(@%+=% +15'&%
« Switching » vs « routing » : les performances 320
Time
First bit received
Reception delay = t xI
Transmission
queuing delay
First bit transmitted
Output port
Transmission delay = t xO
Pour le switching :
? on consulte le « circuit-virtuel » auquel appartient le paquet en entrée ;
? on supprime le temps de décision, « Forwarding decision delay » tf ;
? on réduit le temps de « switching », le « Switch Fabric traversal dealy » ts
ResAvI
13.4 Qos & GNU/Linux : Les queuing disciplines 321
« Queuing discipline » : algorithme de gestion de file d’attente
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 ».
? tbf, « Token Bucket Filter » : un algorithme simple à mettre en oeuvre et peu coûteux en CPU, qui permet de ralentir
une interface tout en autorisant des courtes rafales d’envoi ;
? SFQ, « Stochastic Fair Queuing » : un des algorithmes les plus utilisés qui permet de répartir de manière équitable les
envois 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.
ResAvI
QoS & GNU/Linux 322
Quelques termes
? « 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.
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.
. 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 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).
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 Detection ».
ResAvI
x 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.
It's important to know this because this can be a way to optimize how packets travel
13.5 Qos & GNU/Linux : Classless WKURXJKWKHQHWZRUNLQWHUIDFHVRIRXU/LQX[URXWHUV7KH726E\WHORRNVOLNHWKLV
qdiscs 323
L’algorithme pfifo_fast 0 1 2 3 4 5 6 7
PRECEDENCE 7\SHRI6HUYLFH³726 MBZ
? il est proche du fifo ;
? il est « classless », car il réalise une répartition7KH726ELWVDUHGHÀQHGDVIROORZV
fixe des paquets suivant un critère ;
? il dispose de 3 canaux de données, ou « band », dans lesquels les paquets
x 0000 se répartissent suivant leur TOS :
Normal Service
canal 0 : les paquets ont la plus haute priorité ; x 0001 Minimize Monetary Cost (MMC)
canal 1 : les paquets sont envoyés uniquement xlorsqu’il 0010 n’y a pas de paquets
Maximize dans le(MR)
Reliability canal 0 ;
canal 2 : les paquets ont la plus basse priorité : xils ne sont envoyés
que lorsqu’il n’y a pas de paquet dans le canal 0
0D[LPL]HWKURXJKSXW07
et 1. x 1000 Minimize Delay (MD)
%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
SMTP
Command phase 1000 (minimize delay)
DATA phase 0100 (maximize throughput)
ICMP
Errors 0000
Requests 0000 (mostly)
Responses <same as request> (mostly)
$ ip link
txqueuelen
1: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
The length of thisbrd
link/ether 00:11:de:ad:be:ef queue is gleaned from the interface configuration, which you can see and set with
ff:ff:ff:ff:ff:ff
ifconfig and ip. To set the queue length to 10, execute: ifconfig eth0 txqueuelen 10
C’est du pfifo_fast par défaut.
ResAvI
2. les paquets arrivent à un rythme inférieur à celui des jetons : une partie seulement des jetons est utilisée, et le reste
s’accumule jusqu’à remplir le seau en fonction de sa taille choisie.
Les jetons non utilisés permettent d’envoyer des paquets à un débit supérieur à celui d’arrivée des jetons et pour une
courte durée : envoi d’un groupe de paquets en rafale, data burst.
Si le débit continue à dépasser celui des jetons on bascule dans le cas suivant.
Remarque : L’implémentation dans GNU/Linux correspond à assimiler les jetons à des octets.
ResAvI
QoS & GNU/Linux : le Tocken Bucket filter 327
Illustration du seau
tokens generated
at rate r [tokens/sec]
bucket holds
up to b tokens
r tokens/sec
Token dispenser
(bucket)
b = bucket capacity
Token
waiting area
to network
arriving
token-operated packets
turnstile Turnstile
packet
(a) (b)
La différence entre le « leaky bucket », (a), et le « token bucket », (b) : la possibilité d’un mode
« burst » dans le « token bucket ».
ResAvI
Qos & GNU/Linux : Classless qdiscs 328
« Stochastic Fairness Queuing »
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.
ResAvI
Qos & GNU/Linux : Stochastic Fairness Queuing 329
Illustration
Class 1 queue (Waiting line)
Transmitter
Class 2 queue (Server)
Arriving packets
Classifier Scheduler
Class n queue
Scheduling
discipline
Packet drop
when queue full
7KLVPHDQVWKDWE\GHIDXOW/LQX[LVVPDUWHQRXJKWRSULRULWL]HWUDIÀFDFFRUGLQJWR
WKH726E\WHV8VXDOO\DSSOLFDWLRQVOLNH7HOQHW)736073PRGLI\WKH726E\WH
13.6 Qos & GNU/Linux : Classful qdiscs
to work in an optimal way. We will see later in this book how to optimize the
WUDIÀFRXUVHOYHV
331
Classful Queuing Disciplines (Classful qdiscs)
Classful Queuing Disciplines
? une classe est une catégorie de trafic ;
7KHVHTGLVFVDUHXVHGIRUVKDSLQJGLIIHUHQWW\SHVRIGDWD7KHFRPPRQO\XVHG
classful qdiscs are CBQ (CODVV%DVHG4XHXLQJDQG+7%+LHUDUFKLFDO7RNHQ%XFNHW
? une qdisc « classful » est un algorithme de gestion de file d’attente basé sur l’utilisation d’un partitionnement du trafic en
FirVWRIDOOZHQHHGWROHDUQKRZFODVVIXOTXHXLQJGLVFLSOLQHVZRUN7KHZKROH
différentes classes :
SURFHVVLVQRWGLIÀFXOWVR,
OOWU\WRH[SODLQLWDVVLPSO\DVSRVVLEOH
pour savoir à quelle classe appartient un paquet il faut utiliser un « classifier » ;
Everything is based on a hierarchy. First, every interface has one root qdisc that
la classification peut être réalisée à l’aide de filtres : un filtre s’applique s’il y a une correspondance entre sa définition
WDONVWRWKHNHUQHO6HFRQGWKHUHLVDFKLOGFODVVDWWDFKHGWRWKHURRWTGLVF7KHFKLOG
class further has child classes that have qdiscs attached to schedule the data and leaf
et le paquet à traiter.
classes, which are child classes of the child classes.
? après classification, il est nécessaire de définir l’ordre d’envoi des différents paquets, « scheduling ».
$OOFRQIXVHG"+DYHDORRNDWWKHIROORZLQJLPDJHZKLFKZLOOH[SODLQDZD\
the confusion:
L’organisation est hiérarchique :
. chaque interface dispose d’une qdisc racine à laquelle
est associée une catégorie ;
[ 79 ]
Qos & GNU/Linux : Classful qdiscs 332
. PRIO, « Priority » : un algorithme dérivé de pfifo_fast, avec la possibilité d’augmenter le nombre de canaux et per-
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.
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.
− 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.
ResAvI
13.7 Qos & GNU/Linux : La commande tc, ou « traffic control » 333
Afficher et supprimer une configuration
Afficher l’algorithme qdisc associé à une interface :
$ 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 :
$ sudo tc qdisc del dev DEV root
Le 80 0xffff indique configuration binaire égale à la valeur sur deux octets 80 uniquement.
Trafic identifié par la source ou la destination :
# 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
Ce qui donne :
# tc -s qdisc ls dev eth0qdisc prio 1: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0 55
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
ResAvI
13.9 Qos & GNU/Linux : combiner qdisc et iptables 336
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.
Avantages
. on n’apprend pas la syntaxe de tc filter mais seulement celle de iptables !
ResAvI
Qos & GNU/Linux : combiner qdisc et iptables 337
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.
ResAvI
Chapter 5