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
Download

eth1