\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. juin 15 11:32:35 CEST 2015}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={ip-route},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Gestion des tables de routage},
CreationDate={D:20150615113235},
ModDate={D:20150615113235},
Keywords={réseaux;Linux}
}}
\begin{document}
 
\begin{center}
{\Huge ip-route }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Gestion des tables de routage}
 
\vspace{10mm}
 
\hspace{1mm}  ip route est utilisé pour manipules les entrées dans les tables de routage du kernel. Les types de routes sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} unicast]{L'entrée décrit des véritables chemins vers les destinations couvertes par le préfixe de route.}
\item[\hspace{1mm} unreachable]{Ces destinations sont inatteignables. Les paquets sont supprimés silencieusement.}
\item[\hspace{1mm} prohibit]{Ces destinations sont inatteignables. les paquets sont supprimés silencieusement et un message ICMP est généré.}
\item[\hspace{1mm} local]{Les destinations sont assignées à cet hôte. Les paquets sont délivrés localement.}
\item[\hspace{1mm} broadcast]{Les destinations sont des adresses de broadcast. Les paquets sont envoyés sur des liens broadcast.}
\item[\hspace{1mm} throw]{Une route de contrôle spéciale utilisé avec les règles de stratégie. Si une telle route est séléctionée, rechercher dans cette table se termine en prétendant qu'aucune route n'a été trouvée et un ICMP unreachable est émis.}
\item[\hspace{1mm} anycast]{non implémenté}
\item[\hspace{1mm} multicast]{Un type spécial utilisé pour le routage multicast. N'est pas présent dans les tables de routage normales.}
\end{description}
 
\hspace{1mm}  Linux 2.x peut grouper les routes dans plusieurs tables de routage identifiées par un numéro dans la plage 1 à 2\textasciicircum 31 ou par un nom depuis le fichier \textbf{/etc/iproute2/rt\_tables}. Par défaut, toutes les routes sont insérées dans la table \textbf{main} (254) et le kernel n'utilise que cette table. Les valeurs 0, 253, 254 et 255 sont réservés.
\vspace{5mm} \\
 
 
\hspace{1mm}  Actuellement, une autre table existe toujours, qui est invisible mais importante, la table \textbf{local} (255). Cette table consiste de routes pour les adresses locales et de broadcast. Le kernel maintient cette table automatiquement et l'administrateur n'a généralement pas besoin de la modifier.
\vspace{5mm} \\
 
 
\hspace{1mm}  Les tables de routages multiples entrent en jeu quand des stratégies de routage sont utilisées.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} add]{Ajouter une nouvelle route}
\item[\hspace{1mm} change]{Changer une route}
\item[\hspace{1mm} replace]{Changer ou ajouter une nouvelle route}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} to TYPE PREFIX]{Préfix de destination de la route. Si type est omis, assume unicast. PREFIX est une adresse IP ou IPv6 suivi optionnellement par un masque. les PREFIX spécial \textbf{default} est équivalent à \textbf{0/0} ou \textbf{::/0}}
\item[\hspace{6mm} tos TOS]{}
\item[\hspace{6mm} dsfield TOS]{La clé Type Of Service. Cette clé n'a pas de masque associé et le match le plus long est interprété comme: 1, compare le TOS de la route et du paquet. S'il ne sont pas égal, le paquet peut matcher une route avec un TOS 0. TOS est soit un nombre hexa 8-bits, soit un identifiant de /etc/iproute2/rt\_dsfield.}
\item[\hspace{6mm} metric NUMBER]{}
\item[\hspace{6mm} preference NUMBER]{La valeur de préférence de la route. NUMBER est un nombre 32-bits arbitraire.}
\item[\hspace{6mm} table TABLEID]{La table où ajouter cette route. TABLEID peut être un nombre ou une chaîne du fichier /etc/iproute2/rt\_tables. Si omis, assume la table main.}
\item[\hspace{6mm} dev NAME]{Nom du périphérique de sortie.}
\item[\hspace{6mm} via ADDRESS]{L'adresse du prochain saut.}
\item[\hspace{6mm} src ADDRESS]{L'adresse source à préférer en envoyant au destinations couvertes par le préfixe de route.}
\item[\hspace{6mm} realm REALMID]{Le domaine auquel la route est assignée. Peut être un nombre ou une chaîne depuis le fichier /etc/iproute2/rt\_realms}
\item[\hspace{6mm} mtu MTU]{}
\item[\hspace{6mm} mtu lock MTU]{Le MTU associé avec le chemin de la destination. Si lock n'est pas utilisé, le MTU peut être mis à jours par le kernel via le Path MTU Discovery.}
\item[\hspace{6mm} window NUMBER]{Fenêtre TCP maximum à annoncer à ces destinations, mesurée en octets. Il limite les salves de données maximales que les paires TCP sont autorisés à nous envoyer.}
\item[\hspace{6mm} rtt TIME]{Le RTT (Round Trip Time) initial estimé. Si aucun suffixe n'est spécifié les unités sont des valeurs brutes passées directement au code de routage pour maintenir la compatibilité avec les versions précédentes. Sinon un suffixe de s, sec, ou secs est utilisé pour spécifier les secondes et ms, msec ou msecs pour spécifier les millisecondes.}
\item[\hspace{6mm} rttvar TIME]{Variante RTT initiale estimée. Les valeur sont spécifiée comme avec rtt.}
\item[\hspace{6mm} rto\_min TIME]{TimeOut de retransmission TCP minimum à utiliser en communiquant avec cette destination. Les valeurs sont spécifiées comme pour rtt.}
\item[\hspace{6mm} ssthresh NUMBER]{Une estimation pour le seuil initial de début lent.}
\item[\hspace{6mm} cwnd NUMBER]{le clamp pour la fenêtre de congestion. Il est ignoré si le flag lock n'est pas utilisé.}
\item[\hspace{6mm} initcwnd NUMBER]{La taille de fenêtre initialement reçue pour les connexions à cette destination. La taille de fenêtre actuelle est cette valeur multipliée par le MSS de la connexion. La valeur par défaut est 0, signifiant l'utilisation d'une valeur Slow Start}
\item[\hspace{6mm} quickack BOOL]{Active/désactive ack rapide pour les connexions à cette destination.}
\item[\hspace{6mm} advmss NUMBER]{le MSS (Maximal Segment Size) à annoncer aux destinations en établissant des connexions TCP. Si non spécifié, Linux utilise une valeur par défaut calculée depuis le premier MTU du prochain périphérique.}
\item[\hspace{6mm} reordering NUMBER]{Ré-ordonnancement maximum dans le chemin vers cette destination. Si non donné, Linux utilise la valeur sélectionnée avec sysctl (net/ipv4/tcp\_reordering)}
\item[\hspace{6mm} nexthop NEXTHOP]{Le prochain saut d'une route multi-path. NEXTHOP est une valeur complexe avec sa propre syntaxe similaire à la liste des argument top-level:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{12mm} via ADDRESS]{Router suivant}
\item[\hspace{12mm} dev NAME]{Périphérique de sortie}
\item[\hspace{12mm} weight NUMBER]{Poid pour cet élément d'une route multi-path reflétant sa bande passante relative ou qualité.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} scope SCOPE\_VAL]{Le scope des destinations couvertes par le préfixe de route. SCOPE\_VAL peut être un nombre ou une chaîne du fichier /etc/iproute2/rt\_scopes. Si omis, ip assume le scope global pour toutes les routes unicast avec gateway, le scope link pour toutes les routes unicast et broadcast directes, et le scope host pour les routes locales.}
\item[\hspace{6mm} protocol RTPROTO]{L'identifiant de protocole de routage de cette route. RTPROTO peut être un nombre ou une chaîne depuis le fichier /etc/iproute2/rt\_protos. De nombreuses valeurs de protocole one une interprétation fixée:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{12mm} redirect]{La route a été installée due à une redirection ICMP}
\item[\hspace{12mm} kernel]{La route a été installée par le kernel durant l'autoconfiguration}
\item[\hspace{12mm} boot]{La route a été installée durant la séquence de boot.}
\item[\hspace{12mm} static]{La route a été installée par l'administrateur}
\item[\hspace{12mm} ra]{La route a été installée par Router Discovery Protocol.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} onlink]{Prétend que le prochain saut est directement attaché à ce lien, même s'il ne matche pas de préfixe d'interface.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} delete]{Supprime une route. A les même arguments que ip route add, mais leur sémantique sont un peu différents. Les valeur de clé (to, tos, preference et table) sélectionnent la route à supprimer. Si des attributs optionnels sont présents, ip vérifie qu'ils coïncident avec les attributs de la route à supprimer. Si aucune route n'est trouvée, ip route del échoue.}
\item[\hspace{1mm} show]{Liste les routes. La commande affiche le contenu des tables de routage ou des routes sélectionnées par les critères.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} to SELECTOR]{Sélectionne seulement les routes depuis la plage de destinations données. SELECTOR consiste d'un modifier optionnel (root, match ou exact) et d'un préfixe. root PREFIX sélectionne les routes avec les préfixes pas plus cours que PREFIX. ex: root 0/0 sélectionne toute la table de routage. match PREFIG sélectionne les routes avec les préfixe pas plus long que PREFIX. ex: match 10.0/16 sélectionne 10.0/16, 10/8 et 0/0, mais pas 10.1/16 et 10.0.0/24. exact PREFIX sélectionne les routes avec le préfixe exact. Non spécifié, assume root 0/0.}
\item[\hspace{6mm} tos TOS]{}
\item[\hspace{6mm} dsfield TOS]{Selectionne seulement les routes avec le TOS donné}
\item[\hspace{6mm} table TABLEID]{Affiche les routes depuis cette table. défaut: table main. TABLEID peut être soit l'ID soit le nom de la table, ou une des valeurs spéciales:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{12mm} all]{Liste toutes les tables}
\item[\hspace{12mm} cache]{dump le cache de routage}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} cloned]{}
\item[\hspace{6mm} cached]{Liste les routes clonnées, par ex. les routes qui ont été forkée dynamiquement depuis d'autres routes parce que certains attributs de route ont été mis à jours (ex: MTU). Actuellement équivalent à table cache.}
\item[\hspace{6mm} from SELECTOR]{Même syntaxe que to, mais lie la plage d'adresse source au lieu de destination. ne fonctionne qu'avec les routes clonées.}
\item[\hspace{6mm} protocol RTPROTO]{Liste seulement les routes de ce protocole}
\item[\hspace{6mm} scope SCOPE\_VAL]{Liste seulement les routes dans ce scope}
\item[\hspace{6mm} type TYPE]{Liste seulement les routes de ce type}
\item[\hspace{6mm} dev NAME]{Liste seulement les routes allant via ce périphérique}
\item[\hspace{6mm} via PREFIX]{Liste seulement les routes allant via les routeurs de prochains saut sélectionnés par PREFIX}
\item[\hspace{6mm} src PREFIX]{Liste seulement les routes avec les adresses sources préférées sélectionnées par PREFIX}
\item[\hspace{6mm} realm REALMID]{}
\item[\hspace{6mm} realms FROMREALM/TOREALM]{Liste seulement les routes avec ces domaines}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} flush]{Vide les routes sélectionnée par certains critères. Les arguments ont la même syntaxe et sémantique de ip route show, mais les tables de routage ne sont pas listées, mais purgées. La seule différence est l'action par défaut: show dump toute la table de routage main, mais flush affiche l'aide. Avec l'option -statistics, la commande devient verbeuse. Si donné 2 fois, dumps également toutes les routes supprimées.}
\item[\hspace{1mm} get]{Récupère une simple route et affiche sont contenu exactement comme le kernel la vois.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} to ADDRESS]{Adresse de destination}
\item[\hspace{6mm} from ADDRESS]{Adresse source}
\item[\hspace{6mm} tos TOS]{}
\item[\hspace{6mm} dsfield TOS]{Le type de service}
\item[\hspace{6mm} iif NAME]{Le périphérique depuis lequel ce paquet est prévu d'arriver}
\item[\hspace{6mm} oif NAME]{Force le périphérique de sortie sur lequel ce paquet sera routé.}
\item[\hspace{6mm} connected]{Si aucune adresse source (option from) n'est donnée, recherche la route avec le jeu source à l'adresse préférée reçue depuis la première recherche.}
\end{description}
 
\hspace{6mm}  Noter que cette opération n'est pas équivalente à ip route show. show affiche les routes de sortie. get les résous et créé de nouveaux clones is nécessaire. Essentiellement, get est équivalent à envoyer un paquet sur ce chemin. Si iif n'est pas donné, le kernel créé une route pour sortir les paquets via de destination demandée. C'est équivalent à pinger la destination avec un ip route ls cache, cependant, aucun paquet n'est actuellement envoyé. Avec iif, le kernel prétent qu'un paquet est arrivé depuis cette interface et recherche un chemin pour forwarder le paquet.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} save]{Sauvegarde les information de la table de routage. Fonctionne comme show, excepté que la sortie est une donnée utilisable par restore.}
\item[\hspace{1mm} restore]{Restaure les informations de table de routage}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Affiche toutes les entrées de route dans le kernel: \\
\hspace{1mm} \textbf{ip ro} \\
\hspace{1mm} Ajoute une route par défaut via 192.168.1.1 qui peut être atteins via eth0: \\
\hspace{1mm} \textbf{ip route add default via 192.168.1.1 dev eth0} \\
\end{flushleft}
\end{document}
