MPLS Prática com Linux Edgard Jamhour 2008, Edgard Jamhour Instalação • yum update • yum install udev.i386 071-0.FC4.3 • yum install hardlink • yum install bridge-utils • rpm -ivh kernel-2.6.15-1.1831_FC4mpls_1.950.i686.rpm • rpm -ivh iproute-2.6.11-1_mpls_1.950d.i386.rpm • rpm -ivh --force iproute-2.6.11-1_mpls_1.950d.i386.rpm • rpm -ivh ebtables-2.0.6-7_mpls_1.950d.i386.rpm • rpm -ivh iptables-ipv6-1.3.0-2_mpls_1.950d.i386.rpm • rpm -ivh --force iptables-1.3.0-2_mpls_1.950d.i386.rpm • rpm -ivh kernel-devel-2.6.15-1.1831_FC4mpls_1.950.i686.rpm • rpm -e iptables-1.3.0-2 • rpm -e iproute-2.6.11-1 2008, Edgard Jamhour Princípio FEC = Forwarding Equivalency Classes No LER origem NHLFE = Next Hop Label Forwarding Entry Ação sobre label e encaminhamento FEC (destino) FTN= FEC X NHLFE Key 0x2: push label1 e nexthop para ip1 Se subrede1 Key 0x3: push label2 e nexthop para ip2 Se subrede 2 Key 0x4: push label3 e nexthop para ipn NHLFE ILM - Incomming Label Map No LER saída ou no LSR No LSR XC Interface X Label Se eth0 X label4 Label entrada – Label saída Se label4 então label 0 Se label 5 então label 0 Se eth0 X label5 ILM Label Space por Interface Se label 6 então label 0 Se não houver entrada na XC, então é o LSR de saída 2008, Edgard Jamhour Comandos Cria uma entrada nhlfe que adiciona o label 1000 e encaminha os pacotes para 10.0.0.3 pela interface eth1. 2008, Edgard Jamhour Comandos Mapeia uma FEC para uma NHLFE 2008, Edgard Jamhour Comandos O labelspace define que o roteador irá esperar pacotes marcados como mpls em sua interface 2008, Edgard Jamhour Comandos A tabela ILM diz quais labels serão esperados 2008, Edgard Jamhour Comandos Este comando implementa encaminha um pacote rotulado para uma nhlfe 2008, Edgard Jamhour Seqüência para o Egress Router • Se for necesário encaminhar o pacote e fazer o pop do label – mpls labelspace set dev ethIN labelspace 0 – mpls ilm add label gen 1000 labelspace 0 – mpls nhlfe add key 0 instructions nexthop ethOUT ipv4 ipGateway – (returns key 0x2) – mpls xc add ilm_label gen 1000 ilm_labelspace 0 nhlfe_key 0x2 • Se for necessário fazer apenas o pop do label – mpls labelspace set dev ethIN labelspace 0 – mpls ilm add label gen 1000 labelspace 0 2008, Edgard Jamhour Cenário 1 • LER: Label Edge router LABEL 1000 192.168.0.1/24 192.168.0.2/24 10.26.128.A Host A eth0 eth1:1 10.26.128.B eth1:1 LERB LERA eth1 eth0 Host B eth1 192.168.1.1/24 192.168.1.2/24 2008, Edgard Jamhour Configuração • # HOST A • ip route add 192.168.1.0/24 via 192.168.0.2 src 192.168.0.1 • # LERA • mpls nhlfe add key 0 instructions push gen 1000 nexthop eth1 ipv4 10.26.128.B • ip route add 192.168.1.0/24 via 10.26.128.B mpls 0x2 • echo 1 > /proc/sys/net/ipv4/ip_forward • # LER2 • mpls labelspace set dev eth1 labelspace 0 • mpls ilm add label gen 1000 labelspace 0 2008, Edgard Jamhour Script MPLS para LER 1 #!/bin/bash -x # Carrega o módulo de mpls modprobe mpls4 key_value=`mpls nhlfe add key 0 instructions push gen 1000 nexthop eth1 ipv4 10.26.128.B `; key=`echo $key_value|awk '{print $4}'`; ip route add 192.168.1.0/24 via 10.26.128.B mpls $key echo 1 > /proc/sys/net/ipv4/ip_forward 2008, Edgard Jamhour Comandos para Evitar Redirecionamento • sysctl net.ipv4.conf.eth1.send_redirects=0 • sysctl net.ipv4.conf.eth1.accept_redirects=0 • sysctl net.ipv4.conf.all.send_redirects=0 • sysctl net.ipv4.conf.all.accept_redirects=0 2008, Edgard Jamhour Cenário 2 • LSR: Label Switching Router 192.168.0.0/24 Host A .1 eth0 10.26.128.0/17 .2 eth1:1 .2 .1 LERA eth1 .1 LERB eth1 eth1:2 eth1:1 .2 Host B eth0 eth1:2 .5 .10 10.0.0.4/30 10.0.0.8/30 .9 .6 eth1:2 eth1:1 LABEL 2000 192.168.1.0/24 LSRC LABEL 2001 2008, Edgard Jamhour Configuração • # HOST A • ip route add 192.168.1.0/24 via 192.168.0.2 src 192.168.0.1 • # LER1 • mpls nhlfe add key 0 instructions push gen 2000 nexthop eth1:2 ipv4 10.0.0.6 • ip route add 192.168.1.0/24 via 10.0.0.6 mpls 0x3 • echo 1 > /proc/sys/net/ipv4/ip_forward • # LSR • mpls labelspace set dev eth1 labelspace 0 • mpls ilm add label gen 2000 labelspace 0 • mpls nhlfe add key 0 instructions push gen 2001 nexthop eth1:2 ipv4 10.0.0.10 • mpls xc add ilm_label gen 2000 ilm_labelspace 0 nhlfe_key 0x2 • echo 1 > /proc/sys/net/ipv4/ip_forward • # LER2 • mpls labelspace set dev eth1:2 labelspace 0 • mpls ilm add label gen 2001 labelspace 0 2008, Edgard Jamhour Script para o LSR #!/bin/bash -x # Carrega o módulo de mpls modprobe mpls4 mpls labelspace set dev eth1:1 labelspace 0 mpls ilm add label gen 2000 labelspace 0 key_value=`mpls nhlfe add key 0 instructions push 2001 nexthop eth1:2 ipv4 10.0.0.10`; key=`echo $key_value|awk '{print $4}'`; mpls xc add ilm_label gen 2000 ilm_labelspace 0 nhlfe_key $key echo 1 > /proc/sys/net/ipv4/ip_forward 2008, Edgard Jamhour