MPLS Prática com Linux Edgard Jamhour 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 FTN = FEC X NHLFE FEC (destino) subrede1 subrede2 eth0 label1 ip1 eth1 label2 ip2 LSR Chave Ação NHLFE 0x2 push label1 e envia por eth0 para ip1 0x3 push label2 e envia por eth1 para ip2 subrede1 LER LSR subrede2 2015, Edgard Jamhour Configuração LER de Egresso mpls labelspace set dev ETHI labelspace 0 mpls ilm add label gen LABEL labelspace 0 labelspace Interface Label 0 eth0 label1 1 eth1 label2 LSR label1 eth0 LER LSR label2 ILM subrede1 eth1 2015, Edgard Jamhour 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 ILM labelspace If Label 0 eth0 label10 1 eth1 label20 label10 XC Chave ação 0x2 push label11 e enviar por eth2 para ip1 0x3 push label21 e enviar por eth3 para ip2 eth2 eth0 label11 NHLFE ip1 LSR LER LSR label20 LER eth1 eth3 label21 ip2 LSR 2015, Edgard Jamhour Exercício 1 LABEL 1000 Host A a a LER 1 a b LER 2 b a Host B LABEL 2000 HOST A a eth1 192.168.0.2 LER 1 a eth1:1 192.168.0.1 b eth1 10.0.0.1/30 a eth1 10.0.0.2/30 b eth1:1 192.168.1.1 a eth1 192.168.1.2 LER 2 HOST B 2015, Edgard Jamhour Configuração HOST A LER 1 ip route add 192.168.1.0/24 via 192.168.0.1 src 192.168.0.2 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 2015, Edgard Jamhour Observações 1. É necessário incluir a pasta /sbin antes dos comandos ifconfig e mpls. 2. Para corrigir este problema edite o arquivo conforme indicado abaixo, e depois reinicie a máquina virtual; 1. cd /home/labredes 2. gedit .bash_profile 3. Altere PATH=$PATH:HOME/bin 4. Para PATH=$PATH:/sbin 5. <Ctrl+S><Ctrl+Q> Repita o procedimento para o usuário root: 3. 1. su root (senha labredes) 2. cd /root 3. gedit .bash_profile 4. Altere PATH=$PATH:HOME/bin 5. Para PATH=$PATH:/sbin 6. <Ctrl+S><Ctrl+Q> 2015, Edgard Jamhour Preparação do Script Por exemplo, para o Exercício1: Para criar o script exe1_ler1.sh 1. 2. 3. 4. 5. 6. LER1: script exe1_ler1.sh LER2: script exe1_ler2.sh entre em modo root: su root (senha labredes) gedit exe1_ler1.sh ... digite o script conforme o próximo slide, não esqueça de alterar as variáveis que representam o endereço IP e a interface <Ctrl+S><Ctrl+Q> chmod +x exercicio1.sh Para executar o script: bash -x exe1_ler1.sh 2015, Edgard Jamhour Script MPLS para LER 1 #!/bin/bash eq=1 #altere o número da equipe if_b=eth1 #altere a interface If_a=eth1:1 #altere a interface ip_b=10.$eq.0.1 ip_a=192.$eq.0.1 ip_ler2a=10.$eq.0.2 feca=192.$eq.1.0/24 #atribuir endereços IP ifconfig $if_a $ip_a Ifconfig $if_b $ip_b modprobe mpls4 key_value=`mpls nhlfe add key 0 instructions push gen 1000 nexthop $if_b 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 2015, Edgard Jamhour Script MPLS para LER 2 #!/bin/bash eq=1 #altere o número da equipe if_b=eth1 #altere a interface If_a=eth1:1 #altere a interface ip_a=10.$eq.0.2 ip_b=192.$eq.1.1 #atribuir endereços IP ifconfig $if_a $ip_a Ifconfig $if_b $ip_b modprobe mpls4 mpls labelspace set dev $if_a labelspace 0 mpls ilm add label gen 1000 labelspace 0 2015, Edgard Jamhour Comandos para Evitar Redirecionamento #altere a interface conforme seu computador 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 2015, Edgard Jamhour Cenário 2 192.168.1.0/25 192.168.0.0/24 b a Host A b L:1000 LER 1 d a Host B LER 2 c a L:2000 b LSR a L:2001 c a Host C 192.168.1.128/25 LER 1 LER 2 a eth1 192.168.0.1 b eth1:1 10.0.0.1/30 c eth1:2 10.1.0.1/30 a eth1 10.2.0.2/30 b eth1:1 10.0.0.2/30 c eth1:2 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 a eth1 192.168.0.2 HOST B a eth1 192.168.1.2 HOST C a eth1 192.168.1.130 2015, Edgard Jamhour Configuração LER 1 LER1 (Rota Vermelha) 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 LER 1 eth1:1 L:1000 10.0.0.2 LER 2 eth1:2 LSR L:2000 10.1.0.2 2015, Edgard Jamhour 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 LER 1 10.2.0.2 L:2000 L:2001 LSR eth1 LER 2 eth1:1 2015, Edgard Jamhour Configuração LER 2 LER2 (Rota Vermelha) 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 L:1000 eth1 LER 1 LER 2 eth1.1 LSR L:2001 2015, Edgard Jamhour Configuração Hosts HOST A HOST B ip route add 192.168.1.0/24 via 192.168.0.2 src 192.168.0.1 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 2015, Edgard Jamhour Exemplo: Script para o LSR #!/bin/bash -x eq=1 #altere o número da equipe if_b=eth1:1 #altere a interface If_a=eth1 #altere a interface ip_b=10.1.$eq.2 ip_a=10.2.$eq.1 ip_ler2a=10.2.$eq.2 feca=192.$eq.1.128/25 #atribuir endereços IP ifconfig $if_a $ip_a Ifconfig $if_b $ip_b mpls labelspace set dev $if_a labelspace 0 mpls ilm add label gen 2000 labelspace 0 key_value=`mpls nhlfe add key 0 instructions push 2001 nexthop $if_b ipv4 $ip_ler2a `; key=`echo $key_value|awk '{print $4}'`; mpls xc add ilm_label gen 2000 ilm_labelspace 0 nhlfe_key $key sysctl -w net.ipv4.ip_forward=1 2015, Edgard Jamhour 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. 2015, Edgard Jamhour Cenário 3 a FEC A b L:1001 L:1000 b a LER1 L:1002 LSR2 a b a LER3 LSR1 a FEC B LER2 b c L:2000 d FEC C c a b b LSR3 L:2002 L:2001 192.168.0.0/24 LSR 1 LER 1 LER 2 LER 3 a eth1 66.0.0.1/24 b eth1:1 10.0.0.1/30 a eth1 77.0.0.1/24 b eth1:1 10.0.0.13/30 a eth1 10.0.0.10/30 b eth1:1 10.0.0.22/30 c eth1:2 88.0.0.1/24 LSR 2 LSR 3 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 a eth1 10.0.0.6/30 b eth1:1 10.0.0.9/30 a eth1 10.0.0.18/30 b eth1:1 10.0.0.21/30 2015, Edgard Jamhour 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. 2015, Edgard Jamhour