Créer un site internet

RSX217

SDN-IP

Table des matières

1     Présentation de la topologie. 2

2     Configurations mises en œuvre. 4

2.1     Machine virtuelle « mininet ». 4

2.2     Machine virtuelle « Contrôleur Onos ». 5

2.3     Machine virtuelle « GNS3 ». 8

3     Résultats obtenus. 10

4     Conclusion.. 10

5     Références. 11

 

Présentation du sujet

 

Nous avons choisi le sujet numéro 5 qui consistait en la mise en œuvre du SDN-IP proposé par le contrôleur Onos. Le sujet est le suivant : « Mettre en place une topologie pour mettre en place un SDN-IP avec Onos. SDN-IP permet à un réseau SDN de se connecter à internet à l’aide de BGP. Montrez que vous arrivez a pingez les serveurs de Google à partir de votre Host en passant par votre réseau SDN. En externe, du point de vue BGP, le réseau SDN apparaît comme un système autonome unique (AS) qui se comporte comme n'importe quel AS traditionnel. Au sein de l'AS, l'application SDN-IP fournit le mécanisme d'intégration entre BGP et ONOS. Au niveau du protocole, SDN-IP se comporte comme une communication BGP ordinaire. Du point de vue ONOS, il s'agit simplement d'une application qui utilise ses services pour installer et mettre à jour l'état de transfert approprié dans le plan de données SDN. »

  1. Présentation de la topologie

Afin de pouvoir répondre au sujet, nos recherches se sont fixées sur le site cité en référence (xueguofeng, 2017) qui détail la méthodologie de mise en place d’un réseau SDN-IP avec le contrôleur Onos.

Notre objectif est de monter une architecture accueillant un contrôleur utilisant ONOS avec comme particularité, l’Appliance SDN-IP.

Fig1

Figure 1 - Présentation de la topologie

Pour répondre à cette problématique, nous utiliserons le logiciel VMWare. Nous avons créé 3 machines virtuelles (VM), chacune accueillant une partie de l’architecture et tournant avec le système d’exploitation Ubuntu server 20.04. La Figure 1 présente la topologie dans son ensemble.

On décomposera cela comme suit :

  • Une VM où est installée le logiciel Mininet. Ce logiciel est capable de virtualiser une configuration de switches et d’hôtes, et est compatible avec les contrôleurs ONOS ;
  • Une VM où est installée le logiciel GNS3. Ce logiciel est capable de virtualiser des routeurs, des switches, des réseaux type cloud ou NAT etc …
  • Une VM où est installée le logiciel ONOS. Celui-ci est notre contrôleur, métronome de notre architecture.

Afin de comprendre comment les machines vont dialoguer entre elles la Figure 2 présente un tableau récapitulatif.

Fig2

Figure 2 - Présentation des interfaces des machines virtuelles

On configure une interface NAT sur chacune des VM afin qu’elles soient dans le même réseau. Dans le tableau, c’est l’interface eth0.

Par la suite, grâce au segment LAN, nous allons pouvoir diriger le flux des interfaces en nommant ces différents segments.

Le segment 102 sera utilisé pour le switch S2 de Mininet et le routeur R1 sur F0/0 dans GNS3. Le segment 103, pour S1 et R2, le segment 104 pour S3 et R3, enfin, le segment 104 pur R1 F0/1 et ONOS. La Figure 3 présente une vue schématique des connexions réalisées entre les différentes machines virtuelles de notre topologie.

Fig3 

Figure 3 - Présentation des interfaces reliant les machines virtuelles de notre topologie

  1. Configurations mises en œuvre

Chacune des machines virtuelles a été configurés de façon a ce que notre topologie réponde au sujet de ce mini projet.

    1. .1 Machine virtuelle « mininet »

Pour créer les hôtes et les commutateurs de notre réseau SDN, nous avons utilisé le simulateur de réseau virtuelle « mininet ». Nous avons créé 3 commutateurs (s1, s2 et s3) avec pour chacun d’eux une machine hôte (h1, h2 et h3). La commande utilisée pour créer cette topologie est la suivante :

sudo mn --controller=remote,ip=192.168.231.133 --topo=linear,3

L’adresse IP correspond à celle de la machine virtuelle hébergeant le contrôleur Onos. L’option « topo=linear,3 » précise que nous créons une topologie de type linéaire avec 3 commutateurs et 3 hôtes.

Une fois la topologie créée, nous avons déclaré les interfaces ethernet aux différents commutateurs dans mininet :

sh ovs-vsctl add-port s1 eth2

sh ovs-vsctl add-port s2 eth1

sh ovs-vsctl add-port s3 eth3

Ces commandes nous ont permis de déclarer respectivement les interfaces eth2, eth1 et eth3 aux commutateurs s1, s2 et s3. L’interface eth2 communique avec le routeur R2, eth1 avec le routeur R1 qui est le speaker BGP et l’interface eth3 communique avec le routeur R3.

Nous avons également modifié les adresses IP des machines hôtes du réseau SDN et nous leurs avons déclaré l’adresse IP du routeur R1 comme passerelle par défaut avec les commandes suivantes :

h1 ifconfig h1-eth0 10.1.1.1 netmask 255.255.255.0

h1 ifconfig h2-eth0 10.1.1.2 netmask 255.255.255.0

h1 ifconfig h3-eth0 10.1.1.3 netmask 255.255.255.0

h1 route add default gw 10.1.1.254

h2 route add default gw 10.1.1.254

h3 route add default gw 10.1.1.254

Une fois cette configuration mise en place nous avons pu vérifier que les bridges communiquaient bien avec le contrôleur comme montré par la Figure 4.

Fig4

Figure 4 - Communication mininet avec Onos

    1. . 2 Machine virtuelle « Contrôleur Onos »

La version du contrôleur Onos utilisé est 2.0.0. Au lancement du contrôleur, nous avons activé les cinq applications suivantes :

  • openflow : suite de support du protocole Openflow ;
  • fwd : permet le transfert ;
  • config : permet la configuration dynamique (fichier json) ;
  • proxyarp : permet à Onos de répondre aux requêtes ARP entre les routeurs BGP externes et le routeur BGP interne « BGPspeaker » ;
  • sdnip : installer sdn-ip sur Onos.

La Figure 5 montre l’activation de ces applications dans l’interface de paramétrage Onos.

Fig5

Figure 5 – Liste des applications activées dans Onos

Seules, ces applications ne permettent pas au contrôleur de communiquer avec le routeur « SpeakerBGP » et avec les routeurs externals BGP. Le contrôleur doit connaître l’emplacement des interfaces de sortie et l’adresse MAC de l’interface du Speaker BGP qui communique avec le réseau SDN (mininet).

La Figure 6 présente le résultat de la commande netcfg dans l’interface Onos. Le fichier renvoyé est celui que nous avons créé et intégré dans le contrôleur Onos via la commande suivante :

curl --user onos:rocks -X POST -H “Content-Type:application/json” http://192.168.231.133:8181/onos/v1/network/configuration/ -d @/tmp/network-cfg.json

L’adresse IP utilisée est celle de l’interface eth0 de la machine hôte du contrôleur. Et le fichier network-cfg.json est celui que nous avons créé.

Dans le fichier netcfg, pour l’application org.onosproject.router, le numéro openflow of:0000000000000002/4 correspond à l’identifiant de l’interface physique de l’emplacement de R1 connecté à l’interface eth1 de s2. Les adresses IP 10.1.1.253 et 10.1.2.253 correspondent aux routeurs eBGP (R2 et R3).

Lors de la définition des ports :

  • of:0000000000000003/3 correspond à l’identifiant de l’emplacement physique de R3 connecté à l’interface eth3 de s3 ;
    • 10.1.2.254/24 : correspond est l’adresse IP secondaire de l’interface f0/0 du routeur R1 ;
    • CA:01:3D:74:00:00 : adresse MAC de l’interface f0/0 du routeur R1.
  • of:0000000000000001/3 correspond à l’identifiant de l’emplacement physique de R2 connecté à l’interface eth2 de s1 ;
    • 10.1.1.254/24 : correspond est l’adresse IP de l’interface f0/0 du routeur R1 ;
    • CA:01:3D:74:00:00 : adresse MAC de l’interface f0/0 du routeur R1.

Fig6

Figure 6 - Fichier netcfg.json intégré dans Onos

Pour résumer, l’intégration du fichier de configuration nous a permis de :

    • au SDN-IP de connaitre où  se situe le routeur BGPspeaker et les routeurs BGP externes ;
    • au SDN-IP de répondre aux requêtes ARP ;
    • mettre en place la connectivité pour le trafic BGP.

L’application SDN-IP du contrôleur Onos écoute par défaut pour les connexions entrantes BGP sur le port TCP 2000 alors que le port standard est 179. On active donc dans « Netfilter » un transfert de port entre 2000 et 179 avec la commande suivante :

iptables -t nat -A PREROUTING -ptcp --dport 179 -j REDIRECT --to-ports 2000

Après ces différents paramétrages, la machine hôte et le contrôleur Onos sont configurés. Les routeurs et les bridges et hôtes SDN peuvent communiquer avec le contrôleur. La Figure 7 montre l’interface GLI du contrôleur et la bonne détection des différents composants de la topologie.

Fig7

Figure 7 - Topologie dans l'interface graphique du contrôleur Onos

    1. .3 Machine virtuelle « GNS3 »

La configuration de la machine virtuelle sur laquelle le logiciel GNS3 est utilisé consiste à configurer les routeurs de type c1700 mis en place dans la topologie. Les différentes connections mises en place correspondent à la Figure 3. Les interfaces de la machine virtuelle ont été configurées comme vu dans la partie 1.

La Figure 8 présente la topologie ainsi que les connexions entre les différents éléments mis en place avec le simulateur GNS3. Pour chacun des routeurs, nous avons configuré les interfaces conformément au plan d’adressage IP en Figure 2. Puis, nous avons mis en place le protocole BGP en définissant les différents systèmes autonomes.

Pour le routeur eBGP R3, nous avons artificiellement augmenter la valeur « TTL » lors de l’annonce de ses routes afin que le routeur iBGP ou Speaker BGP privilégie le routeur R2 pour son choix de routage. Seul R2 est connecté à internet. Il annonce donc une route par défaut dans BGP.

Fig8

Figure 8 - Topologie mis en place avec GNS3

Le Tableau 1 montre le détail des configurations des routeurs R1, R2 et R3 utilisés lors de ce mini-projet.

R1#sh run

Building configuration...

 

Current configuration : 1556 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R1

!

boot-start-marker

boot-end-marker

!

no aaa new-model

no ip icmp rate-limit unreachable

!

ip cef

no ip domain lookup

!

ip tcp synwait-time 5

!

interface FastEthernet0/0

 ip address 10.1.2.254 255.255.255.0 secondary

 ip address 10.1.1.254 255.255.255.0

 duplex half

!

interface Ethernet1/0

 ip address 10.213.166.94 255.255.255.0

 duplex half

!

router bgp 65501

 no synchronization

 bgp router-id 10.213.166.94

 bgp log-neighbor-changes

 neighbor 10.1.1.253 remote-as 65502

 neighbor 10.1.2.253 remote-as 65503

 neighbor 10.1.2.253 ebgp-multihop 255

 neighbor 10.1.2.253 next-hop-self

 neighbor 10.213.166.68 remote-as 65501

 no auto-summary

!

no ip http server

!

no cdp log mismatch duplex

!

control-plane

!

gatekeeper

 shutdown

!

line con 0

 exec-timeout 0 0

 privilege level 15

 logging synchronous

 stopbits 1

line aux 0

 exec-timeout 0 0

 privilege level 15

 logging synchronous

 stopbits 1

line vty 0 4

 login

!

!

end

R2#sh run

Building configuration...

 

Current configuration : 1620 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R2

!

boot-start-marker

boot-end-marker

!

no aaa new-model

no ip icmp rate-limit unreachable

!

ip cef

no ip domain lookup

!

ip tcp synwait-time 5

!

interface Loopback0

ip address 172.18.1.1 255.255.255.0

!

interface Loopback1

ip address 172.18.2.1 255.255.255.0

!

interface FastEthernet0/0

ip address 10.1.1.253 255.255.255.0

duplex half

!

router bgp 65502

bgp router-id 10.1.1.253

bgp log-neighbor-changes

neighbor 10.1.1.254 remote-as 65501

!

address-family ipv4

neighbor 10.1.1.254 activate

no auto-summary

no synchronization

network 0.0.0.0

network 172.18.1.0 mask 255.255.255.0

network 172.18.2.0 mask 255.255.255.0

exit-address-family

!

no ip http server

!

no cdp log mismatch duplex

!

control-plane

!

gatekeeper

shutdown

!

line con 0

exec-timeout 0 0

privilege level 15

logging synchronous

stopbits 1

line aux 0

exec-timeout 0 0

privilege level 15

logging synchronous

stopbits 1

line vty 0 4

login

!

end

R3#sh run

Building configuration...

 

Current configuration : 1614 bytes

!

version 12.4

service timestamps debug datetime msec

service timestamps log datetime msec

no service password-encryption

!

hostname R3

!

boot-start-marker

boot-end-marker

!

no aaa new-model

no ip icmp rate-limit unreachable

!

ip cef

no ip domain lookup

!

ip tcp synwait-time 5

!

interface Loopback0

ip address 172.19.1.1 255.255.255.0

!

interface Loopback1

ip address 172.19.2.1 255.255.255.0

!

interface FastEthernet0/0

ip address 10.1.2.253 255.255.255.0

duplex half

!

router bgp 65503

no synchronization

bgp router-id 10.1.2.253

bgp log-neighbor-changes

network 0.0.0.0

network 172.19.1.0 mask 255.255.255.0

network 172.19.2.0 mask 255.255.255.0

neighbor 10.1.2.254 remote-as 65501

neighbor 10.1.2.254 ebgp-multihop 255

no auto-summary

!

ip route 0.0.0.0 0.0.0.0 dhcp

!

no ip http server

!

no cdp log mismatch duplex

!

control-plane

!

gatekeeper

shutdown

!

line con 0

exec-timeout 0 0

privilege level 15

logging synchronous

stopbits 1

line aux 0

exec-timeout 0 0

privilege level 15

logging synchronous

stopbits 1

line vty 0 4

login

!

!

end

Tableau 1 - Configuration des routeurs iBGP et eBGP

  1. Résultats obtenus

Suite aux configurations des différents équipements, la topologie choisie est désormais configurée et opérationnelle.

Nous vérifions tout d’abord la configuration BGP du contrôleur ONOS. La commande bgp-neighbors nous indique que le routeur R1 (dont l’adresse IP termine en 94) est membre de l’AS 65501. Ensuite, la commande bgp-speakers montre que le routeur R1 est un routeur iBGP de cet AS. La commande nous informe également que R1 a deux pairs eBGP (qui sont R2 et R3 dans notre topologie). Les résultats de ces deux commandes sont présentés par la Figure 9.

Fig9

Figure 9 - Résultats des commandes bgp-neighbors et bgp-speakers sur le contrôleur ONOS

Ensuite, nous vérifions que la configuration BGP du routeur R1 est fonctionnelle. La Figure 10 montre le résultat de la commande show bgp summary. Il nous indique que R1 a bien trois connexions actives : celle avec le contrôleur ONOS en iBGP et les deux connexions à R2 et R3 (les adresses 10.1.1.253 et 10.1.2.253) en eBGP.

Fig10

Figure 10 - Résultat de la commandes show bgp summary sur le routeur R1

À ce stade, nous avons donc réussi à configurer l’application SDN-IP afin qu’elle fournisse le mécanisme d’intégration entre BGP et ONOS. En externe, du point de vue BGP, le réseau SDN apparaît comme un système autonome unique (AS).

Nous vérifions ensuite que les routeurs R2 et R3, qui n’ont pas de lien direct entre eux dans notre topologie, peuvent tout de même communiquer. C’est bien le cas puisque nous constatons que chacun de ces deux routeurs répond aux requêtes ICMP envoyées l’un vers l’autre, comme montré par les Figure 11 et Figure 12.

Fig11

Figure 11 - Résultat de la commande ping depuis le routeur R2 vers le routeur R3

Fig12

Figure 12 – Résultat de la commande ping depuis le routeur R3 vers le routeur R2

Comme nous constatons que tous les routeurs communiquent bien entre eux, nous vérifions ensuite que le contrôleur ONOS récupère bien les informations depuis ces routeurs.

La commande bgp-routes, exécutée dans ONOS, nous montre que c’est bien le cas puisque nous constatons que désormais les routes vers les réseaux 172.18 et 172.19, réseaux des routeurs R2 et R3, font désormais partie de la configuration du contrôleur. La Figure 13 montre le résultat de cette commande.

Fig13

Figure 13 – Résultat de la commande bgp-routes sur le contrôleur ONOS

De plus, la commande route, en Figure 14, démontre que la source de ces routes dans le plan de contrôle sont bien issues du contrôleur puisque c’est bien son adresse IP qui est indiquée comme source dans le résultat de la commande.

Fig14

Figure 14 - Résultat de la commande routes sur le contrôleur ONOS

Pour finir, nous testons le ping d’un hôte du réseau SDN vers un serveur DNS de Google. Comme le montre la Figure 15, nous constatons que le ping fonctionne et que les paquets passent par notre routeur R2, le routeur de l’AS 65502 puisque c’est son adresse IP (10.1.1.253) qui est indiquée comme prochain saut.

Fig15

Figure 15 – Résultat de la commande ping depuis l’hôte h1 vers le serveur Google 8.8.8.8

Afin de confirmer que le ping de notre hôte vers le serveur DNS de Google passe bien par notre réseau SDN, nous avons effectué une capture Wireshark du lien entre le routeur R2 et la machine virtuelle Mininet depuis GNS3.

La Figure 17 montre le résultat de cette capture Wireshark, capture représentée sur la Figure 16 :

Fig16

Figure 16 – Lien capturé avec Wireshark depuis GNS3

Le résultat de la capture confirme que notre hôte ping bien le serveur Google en passant par notre réseau SDN.

Fig17

Figure 17 – Résultat de la capture Wireshark

  1. Conclusion

Nous avons créé deux systèmes autonomes externes afin de valider la prise en compte du réseau SDN comme un système autonome indépendant. Ces deux systèmes autonomes nous ont permis de suivre le cheminement de requêtes ICMP au sein du réseau SDN. Nous avons ainsi validé la bonne communication des routes entre le routeur Speaker BGP, le contrôleur Onos et les hôtes du réseau SDN. Cette étape était nécessaire avant de passer aux tests vers Internet.

Nos tests démontrent l’efficacité de notre architecture. Notre réseau se connecte à internet à l’aide du protocole BGP grâce à SDN-IP. Les hôtes du réseau SDN parviennent à « pinguer » les serveurs de Google.

Pour améliorer notre topologie, celle-ci pourrait contenir de la redondance. À savoir 2 contrôleurs dans un conteneur Docker, en mode distribué ; ou bien un second routeur speaker BGP palliant la défaillance de R1 ou encore augmenter le nombre de systèmes autonomes.

  1. Références

onosproject.org. (2020). ONOS - Wiki [Wiki]. Onos Project.

https://wiki.onosproject.org/display/ONOS/ONOS

xueguofeng. (2017, septembre 18). SDN in Action : Build a mini-lab environment and practice SDN-IP/ONOS with GNS3, Mininet and VMware图文】_xueguofeng_51CTO博客 [Blog]. https://blog.51cto.com/u_8493144/1966215

 

Ajouter un commentaire

 
×