MPLS Prática com Linux 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
Configuração LER de Ingresso mpls nhlfe add key 0 instructions push gen LABEL nexthop ETHO ipv4 NEXTHOP ip route add SUBREDE via NEXTHOP mpls KEY Chave Ação NHLFE 0x2 push label1 e envia por eth0 para ip1 0x3 push label2 e envia por eth1 para ip2 FTN = FEC X NHLFE FEC (destino) subrede1 subrede2 eth0 label1 ip1 LSR subrede1 LER LSR subrede2 eth1 label2 ip2
Configuração LER de Egresso mpls labelspace set dev ETHI labelspace 0 mpls ilm add label gen LABEL labelspace 0 labelspace Interface Label ILM eth0 label1 1 eth1 label2 LSR label1 eth0 LER subrede1 LSR label2 eth1
Configuração do LSR mpls labelspace set dev ETHI labelspace 0 mpls ilm add label gen LABEL labelspace 0 mpls xc add ilm_label gen LABEL ilm_labelspace 0 nhlfe_key KEY Chave ação NHLFE 0x2 push label11 e enviar por eth2 para ip1 0x3 push label21 e enviar por eth3 para ip2 ILM labelspace If Label eth0 label10 1 eth1 label20 XC LSR label10 eth0 eth2 label11 ip1 LER LSR LER label20 eth1 eth3 label21 ip2 LSR
Exercício 1 Host A Host B LABEL 1000 LER1 LER2 a a b a b a LABEL 2000 eth1 192.168.0.2 LER 1 eth1:1 192.168.0.1 b 10.0.0.1/30 LER 2 10.0.0.2/30 192.168.1.1 HOST B 192.168.1.2
Configuração HOST A LER 1 LER 2 ip route add 192.168.1.0/24 via 192.168.0.1 src 192.168.0.2 LER 1 mpls nhlfe add key 0 instructions push gen 1000 nexthop eth1 ipv4 10.0.0.2 ip route add 192.168.1.0/24 via 10.0.0.2 mpls 0x2 echo 1 > /proc/sys/net/ipv4/ip_forward LER 2 mpls labelspace set dev eth1 labelspace 0 mpls ilm add label gen 1000 labelspace 0
Script MPLS para LER 1 #!/bin/bash -x ip_ler2a=10.0.0.2 if_ler1b=eth1 feca=192.168.1.0/24 modprobe mpls4 key_value=`mpls nhlfe add key 0 instructions push gen 1000 nexthop $if_ler1b ipv4 $ip_ler2a `; key=`echo $key_value|awk '{print $4}'`; ip route add $feca via $ip_ler2a mpls $key sysctl -w net.ipv4.ip_forward=1
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
Cenário 2 192.168.1.0/25 192.168.0.0/24 b a b d a c a b a c a Host B L:1000 b d a Host A LER 1 LER 2 c a b a c Host C L:2000 LSR L:2001 a 192.168.1.128/25 LER 1 a eth1 192.168.0.1 b eth1:1 10.0.0.1/30 c eth1:2 10.1.0.1/30 LER 2 10.2.0.2/30 10.0.0.2/30 192.168.0.129 d eth1:3 192.168.1.1 LSR a eth1 10.1.0.2/30 b eth1:1 10.2.0.1/30 HOST A 192.168.0.2 HOST B 192.168.1.2 HOST C 192.168.1.130
Configuração LER 1 LER1 (Rota Vermelha) LER1 (Rota Azul) Roteamento mpls nhlfe add key 0 instructions push gen 1000 nexthop eth1:1 ipv4 10.0.0.2 ip route add 192.168.1.0/25 via 10.0.0.2 mpls 0x2 LER1 (Rota Azul) mpls nhlfe add key 0 instructions push gen 2000 nexthop eth1:2 ipv4 10.1.0.2 ip route add 192.168.1.128/24 via 10.1.0.2 mpls 0x3 Roteamento echo 1 > /proc/sys/net/ipv4/ip_forward
Configuração LSR # LSR (Rota Azul) 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:1 ipv4 10.2.0.2 mpls xc add ilm_label gen 2000 ilm_labelspace 0 nhlfe_key 0x2 echo 1 > /proc/sys/net/ipv4/ip_forward
Configuração LER 2 LER2 (Rota Vermelha) LER2 (Rota Azul) mpls labelspace set dev eth1 labelspace 0 mpls ilm add label gen 1000 labelspace 0 LER2 (Rota Azul) mpls labelspace set dev eth1:1 labelspace 0 mpls ilm add label gen 2001 labelspace 0
Configuração Hosts HOST A HOST B HOST C ip route add 192.168.1.0/24 via 192.168.0.2 src 192.168.0.1 HOST B ip route add 192.168.0.0/24 via 192.168.1.2 src 192.168.1.2 HOST C ip route add 192.168.0.0/24 via 192.168.1.129 src 192.168.1.130
Exemplo: Script para o LSR #!/bin/bash -x if_lsra=eth1 if_lsrb=eth1:1 ip_ler2a=10.2.0.2 modprobe mpls4 mpls labelspace set dev $if_lsra labelspace 0 mpls ilm add label gen 2000 labelspace 0 key_value=`mpls nhlfe add key 0 instructions push 2001 nexthop $if_lsrb ipv4 $ip_ler2a `; 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
Exercício 2 Implemente o cenário 2 de forma que os pacotes enviados pelo host A para a subrede: 192.168.0.0/25 sigam o caminho vermelho 192.168.0.128/25 sigam o caminho vermelho Escreva o script de configuração de um dos caminhos Capture os quadros mpls em LSR1 ou LER2, conforme o caminho.
Cenário 3 192.168.0.0/24 L:1001 L:1002 a b L:1000 a b FEC A LER1 LSR2 FEC C c c d b a b a b LER2 LSR3 FEC B L:2000 L:2001 L:2002 192.168.0.0/24 LSR 1 a eth1 10.0.0.2/30 b eth1:1 10.0.0.5/30 c eth1:2 10.0.0.14/30 d eth1:3 10.0.0.17/30 LSR 2 10.0.0.6/30 10.0.0.9/30 LSR 3 10.0.0.18/30 10.0.0.21/30 LER 1 a eth1 66.0.0.1/24 b eth1:1 10.0.0.1/30 LER 2 77.0.0.1/24 10.0.0.13/30 LER 3 10.0.0.10/30 10.0.0.22/30 c eth1:2 88.0.0.1/24
Exercício 3 Implemente o cenário 3 de forma que os pacotes enviados: Pela FEC A: sigam o caminho vermelho Pela FEC B: sigam o caminho azul Os caminhos de volta a partir da FEC C devem ser simétricos e utilizar os mesmos Labels.