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
Comandos
Cria uma entrada nhlfe que adiciona o label 1000 e encaminha os pacotes para 10.0.0.3 pela interface
eth2.
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
LABEL 1000
Host A
LER X
1
1
1
2
REDE 2
Host B
LER Y
2
HOST A
1
eth2:1
IPA
I20.E.0.2/24
LER A
1
eth2:1
IPX1
20.E.0.1/24
2
eth2:2
IPX2
10.E.0.1/30
1
eth2:1
IPY1
10.E.0.2/30
2
eth2:2
IPY2
20.E.1.1/24
1
eth2:1
IPB
20.E.1.2/24
REDE2
20.E.1.0/24
LER B
HOST B
FEC
1
2008, Edgard Jamhour
Configuração
•
# HOST A
– ip route add $REDE2 via $IPX1 src $IPA
• ip route add 20.1.1.0/24 via 20.1.0.1 src 20.1.0.2
•
# LER X
– modprobe mpls4
– mpls nhlfe add key 0 instructions push gen 1000 nexthop $if2 ipv4 $IPY1
• mpls nhlfe add key 0 instructions push gen 1000 nexthop eth2:2 ipv4 10.1.0.2
– ip route add $REDE2 via $IPY1 mpls 0x2
• ip route add 20.1.1.0/24 via 10.1.0.2 mpls 0x2
– echo 1 > /proc/sys/net/ipv4/ip_forward
•
# LER Y
– mpls labelspace set dev $if1 labelspace 0
• mpls labelspace set dev eth2:1 labelspace 0
– mpls ilm add label gen 1000 labelspace 0
• mpls ilm add label gen 1000 labelspace 0
2008, Edgard Jamhour
Script MPLS para LER X
#!/bin/bash -x
# Carrega o módulo de mpls
modprobe mpls4
#Variaveis
if2=eth2:1
IPY1=10.1.0.2
REDE2=20.1.1.0/24
key_value=`mpls nhlfe add key 0 instructions push gen 1000 nexthop $if2 ipv4
$IPY1 `;
key=`echo $key_value|awk '{print $4}'`;
ip route add $REDE2 via $IPY1 mpls $key
echo 1 > /proc/sys/net/ipv4/ip_forward
2008, Edgard Jamhour
Comandos para Evitar Redirecionamento
• sysctl net.ipv4.conf.eth2.send_redirects=0
• sysctl net.ipv4.conf.eth2.accept_redirects=0
• sysctl net.ipv4.conf.all.send_redirects=0
• sysctl net.ipv4.conf.all.accept_redirects=0
2008, Edgard Jamhour
1
Cenário 2
REDE 2
REDE 1
2
1
Host
A
2
L:1000
LER
x
4
1
Host B
LER
y
3
1
L:2000
2
1
LSR
z
3
1
Host C
L:2001
REDE 3
LER x
LSR z
LER y
1
eth2:1
IPX1
20.E.0.1/24
HOST A
1
eth2:1
20.E.0.2/24
2
eth2:2
IPX2
10.E.0.1/30
HOST B
1
eth2:1
20.E.1.2/24
3
eth2:3
IPX3
10.E.1.1/30
HOST C
1
eth2:1
20.E.2.2/24
1
eth2:1
IPZ1
10.E.1.2/30
FEC
REDE 1
20.E.0.0/24
2
eth2:2
IPZ2
10.E.2.1/30
FEC
REDE 2
20.E.1.0/24
1
eth2:1
IPY1
10.E.2.2/30
FEC
REDE 3
20.E.2.0/24
2
eth2:2
IPY2
10.E.0.2/30
3
eth2:3
IPY3
20.E.2.1/24
4
eth2:4
IPY4
20.E.1.1/24
2008, Edgard Jamhour
Exercício
• Implemente o cenário 2 de forma que os pacotes enviados pelo host
A para a subrede:
– REDE2 sigam o caminho vermelho
– REDE3 sigam o caminho vermelho
• Entrega do trabalho:
– script de configuração de um dos caminhos
– Quadros mpls capturados em LSR X ou LER Y, conforme o
caminho.
2008, Edgard Jamhour
Configuração LER X
• # LER X (Rota Vermelha)
– mpls nhlfe add key 0 instructions push gen 1000 nexthop eth2:2
ipv4 10.E.2.2
– ip route add 20.E.1.0/24 via 10.E.2.2 mpls 0x?
• # LER X (Rota Azul)
– mpls nhlfe add key 0 instructions push gen 2000 nexthop eth2:3
ipv4 10.E.1.2
– ip route add 20.E.2.0/24 via 10.E.1.2 mpls 0x?
• # Roteamento
– echo 1 > /proc/sys/net/ipv4/ip_forward
2008, Edgard Jamhour
Configuração LSR
• # LSR Z (Rota Azul)
– mpls labelspace set dev eth2:1 labelspace 0
– mpls ilm add label gen 2000 labelspace 0
– mpls nhlfe add key 0 instructions push gen 2001 nexthop eth2:2
ipv4 10.E.2.2
– mpls xc add ilm_label gen 2000 ilm_labelspace 0 nhlfe_key 0x?
– echo 1 > /proc/sys/net/ipv4/ip_forward
2008, Edgard Jamhour
Configuração LER Y
• # LER2 (Rota Vermelha)
– mpls labelspace set dev eth2:2 labelspace 0
– mpls ilm add label gen 1000 labelspace 0
• # LER2 (Rota Azul)
– mpls labelspace set dev eth2:1 labelspace 0
– mpls ilm add label gen 2001 labelspace 0
2008, Edgard Jamhour
Configuração Hosts
• # HOST A
– ip route add 20.E.0.0/16 via 20.E.0.1 src 20.E.0.2
• # HOST B
– ip route add 20.E.0.0/16 via 20.E.1.1 src 20.E.1.2
• # HOST C
– ip route add 20.E.0.0/16 via 20.E.2.1 src 20.E.2.2
2008, Edgard Jamhour
Exemplo: Script para o LSR x
#!/bin/bash -x
# Carrega o módulo de mpls
# Caminho azul, Equipe 1
modprobe mpls4
# Variaveis
IPY1=10.1.2.2/30
mpls labelspace set dev eth2 labelspace 0
mpls ilm add label gen 2000 labelspace 0
key_value=`mpls nhlfe add key 0 instructions push 2001 nexthop eth2:1
ipv4 $IPY2`;
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
Cenário 3
LSR w
L:3001
L:3002
1
REDE 1
L:3003
1
Host
A
LER
x
1
2
REDE 2
2
2
2
4
1
LER
y
LSR z
3
1
3
L:2003
1
2
1
Host C
L:2002
L:2001
LSR u
LER x
1
eth2:1
IPX1
20.E.0.1/24
2
eth2:2
IPX2
10.E.0.1/30
1
eth2:1
IPY1
10.E.5.2/30
2
eth2:2
IPY2
10.E.3.2/30
3
eth2:3
IPY3
4
eth2:4
HOST A
1
HOST B
HOST C
LER y
Host B
LSR z
REDE 3
1
eth2:1
IPZ1
10.E.0.2/30
20.E.2.1/24
2
eth2:2
IPZ2
10.E.1.1/30
IPY4
20.E.1.1/24
3
eth2:3
IPZ3
10.E.4.1/30
eth2:1
IPA
20.E.0.2/24
1
eth2:1
IPW1
10.E.1.2/30
1
eth2:1
IPB
20.E.1.2/24
2
eth2:2
IPW2
10.E.3.1/30
1
eth2:1
IPC
20.E.2.2/24
1
eth2:1
IPU1
10.E.4.2/30
FEC
REDE 1
20.E.0.0/24
2
eth2:2
IPU2
10.E.5.1/30
FEC
REDE 2
20.E.1.0/24
FEC
REDE 3
20.E.2.0/24
LSR w
LSR u
2008, Edgard Jamhour
Exercício
• Implemente o cenário 3 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
• Entrega do trabalho:
– script de configuração de um dos caminhos
– Quadros mpls capturados em LSR2 ou LSR3, conforme o
caminho.
2008, Edgard Jamhour
Download

MPLS com Linux