\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]{ven. mai 26 12:45:04 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={teamd.conf},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Fichier de configuration de teamd},
CreationDate={D:20170526124504},
ModDate={D:20170526124504},
Keywords={réseaux;Linux}
}}
\begin{document}
 
\begin{center}
{\Huge teamd.conf }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Fichier de configuration de teamd}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} device]{Nom du périphériques du nouveau périphérique team}
\item[\hspace{1mm} debug\_level]{Niveau de debug. 0 = désactivé}
\item[\hspace{1mm} hwadr]{Adresse MAC souhaitée pour le nouveau périphérique}
\item[\hspace{1mm} runner.name]{Nom du périphérique team:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} broadcast]{transmets les paquets via tous les ports}
\item[\hspace{6mm} roundrobin]{mode de transmission round-robin}
\item[\hspace{6mm} activebackup]{Sélection un port actif}
\item[\hspace{6mm} loadbalance]{load balancing passif, utilise une fonction de hashage BPF pour déterminer le port pour la transmission des paquets}
\item[\hspace{6mm} lacp. Pour un load balancing actif, les hash sont placés sur les ports disponible en tentant d'atteindre la balance parfaite]{Implément le protocole 802.3ad.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} notify\_peers.count]{Nombre de NA non-solicités et ARP gratuitous envoyés après qu'un port ait été activé/désactivé}
\item[\hspace{1mm} notify\_peers.interval]{interval en ms entre les bursts de paquets notify-peer}
\item[\hspace{1mm} mcast\_rejoin.count]{Monbre de bursts de requêtes rejoin de groupe multicast envoyés une fois qu'un port soit activé/désactivé}
\item[\hspace{1mm} mcast\_rejoin.interval]{Interval en ms entre les bursts des requêtes rejoin de groupe multicast}
\item[\hspace{1mm} link\_watch.name | ports.PORTIFNAME.link\_watch.name]{Nom du surveillant de lien à utiliser:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} ethtool]{Utilise libteam pour obtenir les changements d'état de port}
\item[\hspace{6mm} arp\_ping]{Les requêtes ARP sont envoyés via un port. Si une réponse ARP, le lien est considéré up}
\item[\hspace{6mm} nsna\_ping]{Similaire, mais utilise Neighbor Solicitation/Advertisement IPv6.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} ports]{Liste des ports, périphériques réseaux, à utiliser dans le périphérique team}
\item[\hspace{1mm} ports.PORTIFNAME.queue\_id]{ID de file auquel ce port doit être mappé}
\end{description}
 
\vspace{1cm}{\huge Options spécifiques au mode active-backup }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} runner.hwaddr\_policy]{Définis la stratégie pour définis les adresses hardware et les périphériques ports du périphérique team durant sa durée de vie:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} same\_all]{Tous les ports ont toujours la même adresse hardware}
\item[\hspace{6mm} by\_active]{le team adopte l'adresse hardware du port actif}
\item[\hspace{6mm} only\_active]{Seul le port actif adopte de l'adresse hardware du team}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} ports.PORTIFNAME.prio]{Priorité du port}
\item[\hspace{1mm} ports.PORTIFNAME.sticky]{Flag indiquant sile port est sticky, ce port n'est pas désélectionné si un autre port avec une priorité plus élevée ou de meilleurs paramètres deviennent disponibles}
\end{description}
 
\vspace{1cm}{\huge Options spécifiques au mode load-balance }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} runner.tx\_hash]{Liste des types de fragment qui devraient être utilisés pour le calcul du hash Tx du paquet:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} ethtool]{Utilise les adresses MAC source et destination}
\item[\hspace{6mm} vlan]{Utilise l'id de vlan}
\item[\hspace{6mm} ipv4]{Utilise les adresses IPv4 source et destination}
\item[\hspace{6mm} ipv6]{Utilise les adresses IPv6 source et destination}
\item[\hspace{6mm} ip]{Utilise les adresse IPv4 et IPv6 source et destination}
\item[\hspace{6mm} l3]{idem}
\item[\hspace{6mm} tcp]{Utilise les ports TCP source et destination}
\item[\hspace{6mm} udp]{Utilise les ports UDP source et destination}
\item[\hspace{6mm} sctp]{Utilise les ports SCTP source et destination}
\item[\hspace{6mm} l4]{Utilise les ports TCP, UDP, et SCTP source et destination}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} runner.tx\_balancer.name]{Nom du balancer tx actif. (actuellement seulement 'basic')}
\item[\hspace{1mm} runner.tx\_balancer.balancing\_interval]{En dixième de seconde. Interval périodique entre le rebalancing}
\end{description}
 
\vspace{1cm}{\huge Options spécifiques au mode lacp }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} runner.active]{Si active est true, les frames LACPDU sont envoyés avec les liens configurés périodiquement.}
\item[\hspace{1mm} runner.fast\_rate]{Spécifie le taux auquel demander au partenaire du lien de retransmettre les paquets LACPDU. À true, les paquets sont envoyés une fois par seconde, sinon, une fois toutes les 30 secondes}
\item[\hspace{1mm} runner.tx\_hash]{Idem pour le runner load-balancer}
\item[\hspace{1mm} runner.tx\_balancer.name]{idem}
\item[\hspace{1mm} runner.tx\_balancer.balancing\_interval]{idem}
\item[\hspace{1mm} runner.sys\_prio]{priorité système (0-65535)}
\item[\hspace{1mm} runner.min\_ports]{Nombre minimum de ports qui doivent être actifs avant d'affirmer le porteur dans l'interface maître. 1-255}
\item[\hspace{1mm} runner.agg\_select\_policy]{Sélection la stratégie de séléction de l'aggrégateur}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} lacp\_prio]{Aggrégrateur avec haute priorité en accord avec le standard LACP}
\item[\hspace{6mm} lacp\_prio\_stable]{Idem, mais ne remplace pas l'aggrégateur séléctionné s'il est utilisable}
\item[\hspace{6mm} bandwidth]{Aggrégateur avec la bande passante la plus élevée}
\item[\hspace{6mm} count]{Aggrégateur avec le plus grand nombre de ports}
\item[\hspace{6mm} port\_config]{Aggréateur en accord avec les options prio et sticky.}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{1mm} ports.PORTIFNAME.lacp\_prio]{priorité de port en accord avec le standard LACP}
\item[\hspace{1mm} ports.PORTIFNAME.lacp\_key]{Clé de port en accord avec le standard LACP}
\end{description}
 
\vspace{1cm}{\huge Options du surveillant ethtool }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} link\_watch.delay\_up | ports.PORTIFNAME.link\_watch.delay\_up]{délay en ms entre le lien devenant up, et la notification au runner}
\item[\hspace{1mm} link\_watch.delay\_down | ports.PORTIFNAME.link\_watch.delay\_down]{Délai en ms entre le lien devenant down et la notification au runner}
\end{description}
 
\vspace{1cm}{\huge Options du surveillant arp ping }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} link\_watch.interval | ports.PORTIFNAME.link\_watch.interval]{Interval en ms entre les requêtes ARP}
\item[\hspace{1mm} link\_watch.init\_wait | ports.PORTIFNAME.link\_watch.init\_wait]{délai en ms entre l'initialisation du surveilant et le premier ARP}
\item[\hspace{1mm} link\_watch.missed\_max | ports.PORTIFNAME.link\_watch.missed\_max]{Nombre de réponse ARP non reçu max avant de reporter le lien down}
\item[\hspace{1mm} link\_watch.source\_host | ports.PORTIFNAME.link\_watch.source\_host]{hostname source pour l'envoie des requêtes ARP}
\item[\hspace{1mm} link\_watch.target\_host | ports.PORTIFNAME.link\_watch.target\_host]{hostname auquel envoyer les requêtes ARP}
\item[\hspace{1mm} link\_watch.validate\_active | ports.PORTIFNAME.link\_watch.validate\_active]{Valide les paquets arp dans le ports actifs, sinon, tous les paquets entrants sont considéré comme de bonnes réponses}
\item[\hspace{1mm} link\_watch.validate\_inactive | ports.PORTIFNAME.link\_watch.validate\_inactive]{Valide les paquets reçus sur les ports inactif. Sinon, tous les paquets entrants sont considérés comme de bonnes réponses}
\item[\hspace{1mm} link\_watch.send\_always | ports.PORTIFNAME.link\_watch.send\_always]{Permet d'envoyer des requêtes arp également sur les ports inactifs}
\end{description}
 
\vspace{1cm}{\huge Options du surveillant NS/NA }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} link\_watch.interval | ports.PORTIFNAME.link\_watch.interval]{Interval en ms entre les envoies de paquets NS}
\item[\hspace{1mm} link\_watch.init\_wait | ports.PORTIFNAME.link\_watch.init\_wait]{délai en ms entre l'initialisation du surveillant et le premier NS envoyé}
\item[\hspace{1mm} link\_watch.missed\_max | ports.PORTIFNAME.link\_watch.missed\_max]{Nombre de NA manqué maximum, avant de reporter le lien down}
\item[\hspace{1mm} link\_watch.target\_host | ports.PORTIFNAME.link\_watch.target\_host]{hostname auquel envoyer les paquets NS}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{"name": "roundrobin"\},\\ \hspace{2mm}"ports": \{"eth1": \{\}, "eth2": \{\}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Configuration très basique
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{"name": "activebackup"\},\\ \hspace{2mm}"link\_watch": \{"name": "ethtool"\},\\ \hspace{2mm}"ports": \{\\ \hspace{2mm}\hspace{2mm}"eth1": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": -10,\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"sticky": true\\ \hspace{2mm}\hspace{2mm}\},\\ \hspace{2mm}\hspace{2mm}"eth2": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": 100\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Cette configuration utilise le runner active-backup avec surveillant ethtool. le port eth2 a la plus haute priorité, mais le flag sticky s'assure que eth1 reste active.
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{"name": "activebackup"\},\\ \hspace{2mm}"link\_watch": \{\\ \hspace{2mm}\hspace{2mm}"name": "ethtool",\\ \hspace{2mm}\hspace{2mm}"delay\_up": 2500,\\ \hspace{2mm}\hspace{2mm}"delay\_down": 1000\\ \hspace{2mm}\},\\ \hspace{2mm}"ports": \{\\ \hspace{2mm}\hspace{2mm}"eth1": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": -10,\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"sticky": true\\ \hspace{2mm}\hspace{2mm}\},\\ \hspace{2mm}\hspace{2mm}"eth2": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": 100\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Similaire au précédent, mais les changements de lien ne sont pas propagés au runner immédiatement
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{"name": "activebackup"\},\\ \hspace{2mm}"link\_watch": \{\\ \hspace{2mm}\hspace{2mm}"name": "arp\_ping",\\ \hspace{2mm}\hspace{2mm}"interval": 100,\\ \hspace{2mm}\hspace{2mm}"missed\_max": 30,\\ \hspace{2mm}\hspace{2mm}"target\_host": "192.168.23.1"\\ \hspace{2mm}\},\\ \hspace{2mm}"ports": \{\\ \hspace{2mm}\hspace{2mm}"eth1": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": -10,\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"sticky": true\\ \hspace{2mm}\hspace{2mm}\},\\ \hspace{2mm}\hspace{2mm}"eth2": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"prio": 100\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Cette configuration utilise un surveillant ARP
 
{\ttfamily
\{\\ "device": "team0",\\ "runner": \{"name": "activebackup"\},\\ "link\_watch": \texttt{[}\\ \hspace{2mm}\{\\ \hspace{2mm}\hspace{2mm}"name": "arp\_ping",\\ \hspace{2mm}\hspace{2mm}"interval": 100,\\ \hspace{2mm}\hspace{2mm}"missed\_max": 30,\\ \hspace{2mm}\hspace{2mm}"target\_host": "192.168.23.1"\\ \hspace{2mm}\},\\ \hspace{2mm}\{\\ \hspace{2mm}\hspace{2mm}"name": "arp\_ping",\\ \hspace{2mm}\hspace{2mm}"interval": 50,\\ \hspace{2mm}\hspace{2mm}"missed\_max": 20,\\ \hspace{2mm}\hspace{2mm}"target\_host": "192.168.24.1"\\ \hspace{2mm}\}\\ \texttt{]},\\ "ports": \{\\ \hspace{2mm}"eth1": \{\\ \hspace{2mm}\hspace{2mm}"prio": -10,\\ \hspace{2mm}\hspace{2mm}"sticky": true\\ \hspace{2mm}\},\\ \hspace{2mm}"eth2": \{\\ \hspace{2mm}\hspace{2mm}"prio": 100\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Similaire, mais 2 surveillant sont utilisés
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{\\ \hspace{2mm}\hspace{2mm}"name": "loadbalance",\\ \hspace{2mm}\hspace{2mm}"tx\_hash": \texttt{[}"eth", "ipv4", "ipv6"\texttt{]}\\ \hspace{2mm}\},\\ \hspace{2mm}"ports": \{"eth1": \{\}, "eth2": \{\}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Configuration passive hash-based
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{\\ \hspace{2mm}\hspace{2mm}"name": "loadbalance",\\ \hspace{2mm}\hspace{2mm}"tx\_hash": \texttt{[}"eth", "ipv4", "ipv6"\texttt{]},\\ \hspace{2mm}\hspace{2mm}"tx\_balancer": \{\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}"name": "basic"\\ \hspace{2mm}\hspace{2mm}\}\\ \hspace{2mm}\},\\ \hspace{2mm}"ports": \{"eth1": \{\}, "eth2": \{\}\}\\ \}\\
}
\vspace{8mm}
 
\hspace{1mm} Configuration active load-balancing
 
{\ttfamily
\{\\ \hspace{2mm}"device": "team0",\\ \hspace{2mm}"runner": \{\\ \hspace{2mm}\hspace{2mm}"name": "lacp",\\ \hspace{2mm}\hspace{2mm}"active": true,\\ \hspace{2mm}\hspace{2mm}"fast\_rate": true,\\ \hspace{2mm}\hspace{2mm}"tx\_hash": \texttt{[}"eth", "ipv4", "ipv6"\texttt{]}\\ \hspace{2mm}\},\\ \hspace{2mm}"link\_watch": \{"name": "ethtool"\},\\ \hspace{2mm}"ports": \{"eth1": \{\}, "eth2": \{\}\}\\ \}\\
}
\vspace{8mm}
\end{flushleft}
\end{document}
