Table of Contents
ODL: Plugin L2switch
Introduction
Le projet de commutateur L2 fournit les fonctionnalités de commutateur Layer2 suivantes:
- Packet Handler (Gestionnaire de paquets): Décode les paquets arrivant au contrôleur et les distribue de manière appropriée
- Loop Remover: Supprime les boucles du réseau
- Arp Handler: Traite les paquets ARP décodés
- Address Tracker: Apprend les adresses (MAC et IP) des entités du réseau
- Host Tracker: Suit les emplacements des hôtes du réseau
- L2 Switch Main (Commutateur L2 principal): Installe les flux sur chaque commutateur en fonction du trafic réseau
Les exemples de flux sur cette page sont testés pour fonctionner avec OVS
Exécution du commutateur L2
Pour exécuter le commutateur L2 dans la distribution OpenDaylight, installer simplement la feature odl-l2switch-switch-ui;
feature:install odl-l2switch-switch-ui
Modification de la configuration dans le commutateur L2
Paramètres configurables
Le tableau ci-dessous fournit des détails sur les paramètres de configuration des composants pouvant être configurés.
| Module | attibut | Description | valeur par défaut |
|---|---|---|---|
| loop-remover-config | is-install-lldp-flow | Utilisé dans LoopRemoverModule. “True” signifie qu'un flux qui envoie tous les paquets LLDP au contrôleur sera installé sur chaque commutateur. «False» signifie que ce flux ne sera pas installé | true |
| lldp-flow-table-id | Le flux LLDP sera installé sur la table de flux spécifiée de chaque commutateur.Ce champ n'est pertinent que lorsque «is-install-lldp-flow» est défini sur «true». | 0 | |
| lldp-flow-priority | Le flux LLDP sera installé avec la priorité spécifiée. Ce champ n'est pertinent que lorsque «is-install-lldp-flow» est défini sur «true». | 0 | |
| lldp-flow-idle-timeout | Le flux LLDP expirera (il sera supprimé du commutateur) s'il ne transmet pas de paquet pendant x secondes. Ce champ n'est pertinent que lorsque «is-install-lldp-flow» est défini sur «true». | 0 | |
| lldp-flow-hard-timeout | Le flux LLDP expirera (retiré du commutateur) au bout de x secondes, quel que soit le nombre de paquets qu'il achemineCe champ n'est pertinent que lorsque «is-install-lldp-flow» est défini sur «true». | 0 | |
| graph-refresh-delay | Utilisé dans TopologyLinkDataChangeHandler. Une valeur plus élevée présente l’avantage de faire moins de mises à jour de graphique, au coût potentiel de perte de certains paquets car le graphique ne se met pas à jour immédiatement. Une valeur inférieure présente l’avantage de gérer plus rapidement les modifications de la topologie du réseau, au prix de calculs supplémentaires. | 1000 | |
| arp-handler-config | is-proactive-flood-mode | «True» signifie que des flux d'inondation seront installés sur chaque commutateur. “False” signifie que les flux d'inondation mentionnés précédemment ne seront pas installés. Au lieu de cela, un flux ARP sera installé sur chaque commutateur qui envoie tous les paquets ARP au contrôleur. | true |
| flood-flow-table-id | Le flux d’inondation sera installé sur la table de flux spécifiée de chaque commutateur. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “true”. | 0 | |
| flood-flow-priority | Le flux d'inondation sera installé avec la priorité spécifiée. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “true”. | 2 | |
| flood-flow-idle-timeout | Le flux d’inondation expire (il est supprimé du commutateur) s'il ne transmet pas de paquet pendant x secondes. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “true”. | 0 | |
| flood-flow-hard-timeout | Le flux d’inondation expire (retiré du commutateur) au bout de x secondes, quel que soit le nombre de paquets qu’il transmet. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “true”. | 0 | |
| arp-flow-table-id | Le flux ARP sera installé sur la table de flux spécifiée de chaque commutateur. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “false”. | 0 | |
| arp-flow-priority | Le flux ARP sera installé avec la priorité spécifiéeCe champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “false”. | 1 | |
| arp-flow-idle-timeout | Le flux ARP expirera (retiré du commutateur) s'il ne transfère pas de paquet pendant x secondes. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “false”. | 0 | |
| arp-flow-hard-timeout | Le flux ARP expire (il est supprimé du commutateur) après le délai d'arp-flow-hard-dur-out, quel que soit le nombre de paquets qu'il transfère. Ce champ n'est pertinent que lorsque “is-proactive-flood-mode” est défini sur “false”. | 0 | |
| address-tracker-config | timestamp-update-interval | Un horodatage en dernier lieu est associé à chaque adresse. Cet horodatage en dernier lieu ne sera mis à jour qu'après des millisecondes timestamp-update-interval. Une valeur plus élevée présente l'avantage de réduire le nombre d'écritures dans la base de données. Une valeur inférieure a l'avantage de savoir à quel point une adresse est fraîche. | 600000 |
| observe-addresses-from | Les adresses IP et MAC peuvent être observées/apprises à partir des paquets ARP, IPv4 et IPv6. Définit les paquets à partir desquels effectuer ces observations. | arp | |
| l2switch-config | is-install-dropall-flow | «True» signifie qu'un flux “drop-all” sera installé sur chaque commutateur. L'action par défaut consiste donc à supprimer un paquet au lieu de l'envoyer au contrôleur. «False» signifie que ce flux ne sera pas installé | true |
| dropall-flow-table-id | Le flux dropall sera installé sur la table de flux spécifiée de chaque commutateur. Ce champ n'est pertinent que lorsque «is-install-dropall-flow» est défini sur «true». | 0 | |
| dropall-flow-priority | Le flux dropall sera installé avec la priorité spécifiée. Ce champ n'est pertinent que lorsque «is-install-dropall-flow» est défini sur «true». | 0 | |
| dropall-flow-idle-timeout | Le flux dropall expirera (sera retiré du commutateur) si le flux ne transfère pas un paquet pendant x secondes Ce champ n'est pertinent que lorsque «is-install-dropall-flow» est défini sur «true». | 0 | |
| dropall-flow-hard-timeout | Le flux dropall expirera (sera retiré du commutateur) au bout de x secondes, quel que soit le nombre de paquets transférés. Ce champ n'est pertinent que lorsque «is-install-dropall-flow» est défini sur «true». | 0 | |
| is-learning-only-mode | «True» signifie que le commutateur L2 n’apprendra que les adresses. Aucun flux supplémentaire pour optimiser le trafic réseau ne sera installé. «False» signifie que le commutateur L2 réagira au trafic réseau et installera des flux sur les commutateurs pour optimiser le trafic. Actuellement, les flux MAC à MAC sont installés. | false | |
| reactive-flow-table-id | Le flux réactif sera installé sur la table de flux spécifiée de chaque commutateur. Ce champ n'est pertinent que lorsque “is-learning-only-mode” est défini sur “false” | 0 | |
| reactive-flow-priority | Le flux réactif sera installé avec la priorité spécifiée. Ce champ n'est pertinent que lorsque “is-learning-only-mode” est défini sur “false”. | 10 | |
| reactive-flow-idle-timeout | Le flux réactif expirera (sera retiré du commutateur) si le flux ne transfère pas un paquet pendant x secondes. Ce champ n'est pertinent que lorsque “is-learning-only-mode” est défini sur “false”. | 600 | |
| reactive-flow-hard-timeout | Le flux réactif expirera (sera retiré du commutateur) au bout de x secondes, quel que soit le nombre de paquets qu'il achemine. Ce champ n'est pertinent que lorsque “is-learning-only-mode” est défini sur “false”. | 300 |
Exemple de configuration de arp-handler
Par défaut Arp Handler est configuré en mode proactif inondation. L'exemple de modification des configurations des composants du commutateur L2 suivant montre comment changer le mode inondation proactif en mode réactif.
Effectuer l'appel REST à l'URL : http://x.x.x.x:8181/restconf/config/arp-handler-config:arp-handler-config/
<?xml version="1.0" encoding="UTF-8"?> <arp-handler-config xmlns="urn:opendaylight:packet:arp-handler-config"> <is-proactive-flood-mode>false</is-proactive-flood-mode> </arp-handler-config>
APIs RESTCONF
Les APIs netconf/restconf sont accessibles aux urls :
- http://x.x.x.x:8080 (Jetty: MD-SAL RESTCONF, Jolokia)
- http://x.x.x.x:8181 (Jetty: MD-SAL RESTCONF, Jolokia, AAA auth endpoints, Dlux, DluxApps)
Liste des APIs
| URI | métode | Libellé | Description/arguments |
|---|---|---|---|
| /restconf/operational/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2 | statut STP ajoutés par LoopRemover | Les informations d'état STP sont ajoutées à l'arborescence de données d'inventaire. Un statut de «transfert» signifie que le lien est actif et que des paquets y circulent, Un statut de «rejet» signifie que le lien est inactif et que les paquets ne sont pas envoyés par dessus. | |
| /restconf/operational/l2-address-tracker:l2-addresses/ | mappages appris par AddressTracker | ||
| /restconf/config/opendaylight-inventory:nodes/node/openflow:<switchId>/table/<tableId> | Flux configurés par FlowWriterService | switchId: DPID valide d'un commutateur (hexadécimal ou numérique), tableId: Id de table | |
| restconf/operational/opendaylight-inventory:nodes/node/openflow:<switchId>/table/<tableId> | Flux opérationnels | switchId: DPID valide d'un commutateur (hexadécimal ou numérique), tableId: Id de table |
Exemple d'utilisation
Pour créer une nouvelle règle dans la table openflow d'un commutateur, utiliser POSTMAN avec les paramètres suivants:
PUT http://x.x.x.x:8181/restconf/config/opendaylight-inventory:nodes/node/<Node-id>/table/<Table-#>/flow/<Flow-#> - Accept: application/xml - Content-Type: application/xml
Le numéro de table et le numéro de flux dans l'URL et dans le XML doivent correspondre.
Le format du XML de programmation de flux est déterminé par le flux de regroupement dans le modèle yang de opendaylight-flow-types: MISSING LINK.
