# Virtual routing and forwarding

Virtual routing and forwarding (VRF) est une technologie dans le domaine des réseaux informatiques qui permet à plusieurs instances d'une table de routage de coexister dans le même routeur en même temps.
Étant donné que les instances de routage sont indépendantes, les adresses IP identiques ou qui se chevauchent peuvent être utilisées sans conflit les unes avec les autres. La fonctionnalité réseau est améliorée car des réseaux IP peuvent être segmentés sans nécessiter plusieurs routeurs.
Une VRF peut être implémentée dans un périphérique réseau par une paire de tables de routage (RIB – Routing Information Base) et de transmission (FIB – Forwarding Information Base) distinctes, une par instance de routage. En variante, un périphérique réseau peut avoir la capacité de configurer différents routeurs virtuels, chacun ayant ses propre RIB et FIB qui ne seront accessibles à aucune autre instance de routeur virtuel sur le même périphérique.

## Implémentations
### Implémentation simple

La forme la plus simple de mise en œuvre VRF est VRF Lite. Dans cette implémentation, chaque routeur du réseau participe à l'environnement de routage virtuel de manière homologue. Bien qu'il soit simple à déployer et approprié pour les petites et moyennes entreprises et les centres de données partagés, VRF Lite n'atteint pas la taille requise par les entreprises mondiales ou les grandes entreprises car il est nécessaire d'implémenter chaque instance VRF sur chaque routeur et sur toutes les interconnexions, y compris sur les routeurs intermédiaires. Les VRF ont été initialement introduits en combinaison avec MPLS (Multiprotocol Label Switching), mais la VRF s'est avéré si utile qu'il a évolué pour devenir indépendant de MPLS. C'est l'explication historique du terme VRF Lite: utilisation de VRF sans MPLS.

### Implémentation complète

Les limitations de mise à l'échelle de VRF Lite sont résolues par l'implémentation de VPN IP (L3VPN). Dans cette implémentation, un réseau fédérateur de base est responsable de la transmission de données à travers la zone étendue entre les instances de VRF à chaque emplacement périphérique. Les réseaux privés virtuels IP ont été traditionnellement déployés par les opérateurs pour fournir un réseau dorsal étendu et partagé à plusieurs clients. Ils sont également appropriés dans les environnements de grandes entreprises, de multi-locataires et de centres de données partagés.
Dans un déploiement type, les routeurs à la clientèle (CE) traitent le routage local de manière traditionnelle et diffusent les informations de routage dans les routeurs d'extrémité (Provider Edge – PE) où les tables de routage sont virtualisées. Le routeur PE encapsule ensuite le trafic avec un label MPLS (le marque pour identifier l'instance VRF du routeur destination) et la transmet à travers le réseau dorsal vers le routeur PE de destination. Le routeur PE de destination décapsule ensuite le trafic et le transmet au routeur CE à destination. Le réseau dorsal est totalement transparent à l'équipement du client, permettant à plusieurs clients ou communautés d'utilisateurs d'utiliser le réseau fédérateur commun tout en assurant la séparation du trafic de bout en bout.
Les routes à travers le cœur de réseau (backbone) sont maintenues en utilisant un protocole de routage externe (y compris entre les routeurs internes au réseau) : BGP (Border Gateway Protocol), et notamment son extension MultiProtocole BGP (MP-BGP).
IP VPN est le plus souvent déployé sur un backbone MPLS (en tant que L3VPN) car l'étiquetage inhérent des paquets dans MPLS se prête à l'identification du VRF client. Certaines implémentations IP VPN (notamment IP-VPN Lite de Nortel) utilisent une encapsulation IP-in-IP plus simple sur un backbone IP pur, éliminant ainsi la nécessité de maintenir et de supporter un environnement MPLS.
Une VRF est locale au routeur. Un VPN MPLS (L3VPN) est commun au réseau MPLS (donc à plusieurs routeurs).

## Routage L3VPN et fuite de routage entre VRF distinctes

La communication entre routeurs de VRF identiques (pour former un VPN MPLS), voire entre VRF totalement distinctes, peut être implémentée de deux façons:

### Routes statiques et table de routage globale

Cette configuration statique consiste à utiliser des routes statiques et à se servir de la table de routage globale pour permettre à des routes dans une VRF d’être présentes dans une autre. Les configurations avec des routes statiques ne doivent pas être implémentées pour des réseaux de données de grande taille car chaque route doit être ajoutée manuellement et aussi parce que la maintenance de cette configuration prend beaucoup de temps.

### Importation et exportation des route-targets

Cette configuration dynamique consiste à utiliser une combinaison des trois éléments suivants :

#### MP-BGP (BGP Multiprotocole)

Le MultiProtocole BGP (MP-BGP) est une extension au protocole de routage BGP qui permet à différentes familles d’adresses d’être distribuées en parallèle entre routeurs (en l'occurrence pour les L3VPN : adresses VPN IPv4/v6 avec labels MPLS). Les routeurs d'un réseau MPLS communiquent ainsi en i-MP-BGP (interior MultiProtocol BGP).

#### Route Distinguisher

Le route distinguisher (RD) est l’information majeure qui identifie une VRF et les préfixes d’une VRF en rajoutant une valeur de 64 bits à chaque préfixe, le rendant ainsi totalement unique sur un réseau de type VPN IP MPLS. Ce RD est noté en deux parties séparées par «:».
Exemple pour le VRF client_A :
   IP VRF client_A rd 65535:1
Le préfixe suivant : 192.168.0.0 de la VRF client_A prendra alors cette forme :
   65535:1:192.168.0.0
Le préfixe 192.168.0.0 plus le RD 65535:1 rendent donc le préfixe unique sur le réseau VPN IP MPLS.

#### Route Target

Le route target (RT) est une information supplémentaire associée à tout préfixe d'une VRF lors de son export vers BGP. Cette valeur peut être égale au RD (route distinguisher) ou pas. Elle est utilisée pour distinguer et filtrer les préfixes reçus en MP-BGP afin de déterminer vers quelles VRF locales ils doivent être importés. Du point de vue BGP il s'agit d'une communauté BGP étendue (64 bits). Un préfixe peut recevoir un ou plusieurs RT.
Classiquement une VRF importera et exportera un route-target similaire à son route-distinguisher. Toutefois dans le but de faire communiquer des VRF différentes entre elles, les valeurs de RT pourront être également différentes pour permettre les import/export de préfixes provenant de VRF distinctes.
Exemple pour le VRF client_A :
   IP VRF client_A rd 65535:1 route-target import 999:1