Provider-provisioned Layer-2 Virtual Private Network. Att sträcka L2 är aldrig häftigt men man får göra så gott man kan med STP alternativt ha routrar direkt på andra sidan. Se även Cisco MPLS.
Ethernet Virtual Circuit
Att binda en kund eller tjänst till en port eller VLAN var en begränsande faktor i access-lagret. Därför togs EVC framework fram för att komma förbi det. Det är en unified software infrastructure för att konfigurera Ethernet services. Tanken är att låta access circuits mappas till flera olika typer av Ethernet-tjänster så som L2 point-to-point local connects, L2 point-to-point xconnects, L2 multipoint-to-multipoint VPLS och andra tjänster. Man kan genom att välja encapsulation även vlan-tagga, dubbel-tagga eller skriva om vlan-tag.
interface GigabitEthernet2
no ip address
service instance 10 ethernet
encapsulation default
xconnect 19.19.19.19 219 encapsulation mpls
Verification
show ethernet service instance summary
show ethernet service instance id 10 interface gig2 detail
show l2vpn service all
BFD bfd-template multi-hop MH
interval min-tx 200 min-rx 200 multiplier 3
bfd map ipv4 1.1.1.0/24 1.1.1.1/32 MH
pseudowire-class MPLS-BFD
encapsulation mpls
monitor peer bfd local interface Loopback0
VPLS
Virtual Private LAN Service (VPLS) är ett sätt att tillhandahålla Ethernet-baserad multipoint-to-multipoint-kommunikation över IP eller MPLS. Multipla siter kopplas ihop med hjälp av full mesh pseudowires. VPLS använder Virtual Forwarding Instance (VFI) för att hosta alla pseudowires för en tjänst. Den vanligaste bäraren är MPLS och för control plane (Auto-Discovery/Signaling) kan LDP eller BGP användas. Det finns inbyggd loop prevention i form av att frames som kommer ifrån en VPLS aldrig får skickas vidare inom VPLS (split-horizon). En begränsande faktor för VPLS är minnesmängden på Edge devices eftersom de måste lära sig kundens MAC-adresser. All MAC Learning är data plane driven. Det fungerar som en vanlig bridge dvs det är dynamiskt och baserat på source MAC. By default så age:ar VFI:er ut inaktiva MAC-adresser efter 5 minuter.
Manual VPLS, legacy syntax. Bridge domain används för mac learning samt att binda ihop Ethernet UNI med LSP. Man kan ej blanda gammal och ny syntax pga att bridge-domain betyder olika beroende på config context.
l2 vfi VPLS manual
vpn id 100
bridge-domain 1
neighbor 10.0.0.2 encapsulation mpls
neighbor 10.0.0.3 encapsulation mpls
interface gi2
service instance 10 ethernet
encapsulation default
bridge-domain 1
Bridge Domain Centric (preferred syntax). Full mesh scaling är ett administrativt problem oavsett syntax.
l2vpn vfi context VPLS
vpn id 100
member 10.0.0.2 encapsulation mpls
member 10.0.0.3 encapsulation mpls
member 10.0.0.4 encapsulation mpls
interface gi2
service instance 10 ethernet
encapsulation default
bridge-domain 1
mac limit maximum addresses 50
member gi2 service-instance 10
member vfi VPLS
Verify
show l2vpn vfi
show bridge-domain
show l2vpn service all
show mpls l2transport vc
show mpls forwarding-table | i l2ckt
Man kan även koppla in L3-interface på sin bridge-domain.
interface BDI1
ip address 172.20.0.10 255.255.255.0
BGP Autodiscovery
LDP based VPLS med BGP Autodiscovery (RFC 4762). BGP används för att upptäcka VPLS-endpoints automatiskt för varje VPN och VC-grannar konfigureras ej maneullt. Varje VPLS får en egen rd och detta går att använda i kombination med route reflector.
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling ldp
auto-route-target #på default
router bgp 100
address-family l2vpn vpls
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-comunity extended
Verify
show bgp l2vpn vpls all summary
BGP based VPLS med BGP Autodiscovery (RFC 4761). BGP används för att upptäcka VPLS-endpoints men också för att signalera labels. Man måste suppress ldp signaling för att slå på bgp signaling.
l2vpn vfi context VPLS
vpn id 100
autodiscovery bgp signaling bgp
ve id 11 #unik per VPLS Edge device
router bgp 100
address-family l2vpn vpls
neighbor 1.1.1.1 suppress-signaling-protocol ldp
Verify
show bgp l2vpn vpls all
H-VPLS
VPLS skalar inte superbra eftersom det kräver full-mesh, detta går att bygga ut med Hierarchical VPLS. Det man gör då är att koppla ihop flera VPLS och stänga av split horizon vid intersektionerna. Notera att Split-Horizon endast har effekt på Core Facing pseudowires (mesh pseudowires) och inte Spoke pseudowires. Trafik ifrån Spoke kan forwarderas till Core PW och vice versa. Spoke kan även skicka till annan spoke, dock går den trafiken alltid via core. Trafik tar alltså sällan den optimala vägen och alla PEs måste lära sig alla MAC-adresser. För att få redundans ifrån u-PE (spoke) till n-PE (core) kan man använda Pseudowire Redundancy.
L2 Tunneling
För CDP, LACP, STP frames etc krävs l2 tunneling protocol. Detta finns det inte stöd för på alla plattformar, l2protocol action not supported.
interface gi2
service instance 100 ethernet
l2protocol tunnel
show ethernet service instance detail | i L2protocol
EoMPLS/AToM
Ethernet-over-MPLS eller Any Transport over MPLS (RFC 4448). Requires end-to-end MPLS LSP. Notera att MTU på Access Circuits måste matcha för att pseudowire ska gå upp. Det finns ingen MAC Learning med EoMPLS.
EoMPLS features
- Ethernet Port Mode
- VLAN Mode
- Inter-AS Mode
- QinQ Mode
- QinAny Mode
Port mode använder VC type 5 (Ethernet) och VLAN mode använder VC type 5 men med type 4 (Vlan) som fallback (show mpls l2transport binding).
PW logging
xconnect logging pseudowire status
PE1
interface gi2
xconnect 2.2.2.2 102 encapsulation mpls
PE2, VCID måste matcha på båda sidor
interface gi2
xconnect 1.1.1.1 102 encapsulation mpls
Verify
show xconnect all
show xconnect peer 2.2.2.2 vcid 102
show l2vpn service all
show mpls l2transport vc 102 detail
ping mpls pseudowire 10.0.0.10 102
Segment 1 är de interface som kunden sitter på, segment 2 är core.
Pseudowire Redundancy Pseudowire redundancy innebär att man sätter upp en backup PW.
l2vpn xconnect context Redundancy
member 1.1.1.1 10 encapsulation mpls group 1 priority 1
member 2.2.2.2 10 encapsulation mpls group 1 priority 2
EVPN-VPWS
l2vpn evpn
replication-type ingress
router-id Loopback0
mpls label mode per-ce
!
l2vpn evpn instance 10 vlan-based
route-distinguisher 1.1.1.1:10
route-target both 10:10
no auto-route-target
!
member evpn-instance 10
member GigabitEthernet0/0/1 service-instance 10
!
interface GigabitEthernet0/0/1
no ip address
service instance 10 ethernet
encapsulation dot1q 100
!
router bgp 1
address-family l2vpn evpn
neighbor IBGP activate
neighbor IBGP send-community both
Verify
show l2vpn evpn evi detail
show l2vpn evpn mac
show l2vpn l2route evpn mac
L2TPv3
Layer 2 Tunneling Protocol (RFC 3931, RFC 4719) kräver CEF och IP-konnektivitet end-to-end. Det är endast point-to-point. IP protocol: 115.
pseudowire-class L2TP-PWCLASS
encapsulation l2tpv3
ip local interface Loopback0
interface gi2
xconnect 2.2.2.2 102 pw-class L2TP-PWCLASS
Verify
show l2tp session all
show l2tun tunnel all
Default kopieras inte DF bit som finns i paketen som kommer in ifrån CE när L2TPv3 IP header adderas. Man kan ändra det i pw-klassen.
pseudowire-class L2TP-PWCLASS
ip pmtu
Inter-AS Option B
PE
mpls ldp discovery targeted-hello accept
l2vpn
pseudowire routing
terminating-pe tie-breaker
l2vpn vfi context vfiA
vpn id 111
autodiscovery bgp signaling ldp
vpls-id 111:111
rd 111:111
route-target 111:111
ASBR
mpls ldp discovery targeted-hello accept
l2vpn
pseudowire routing
router bgp 1
no bgp default route-target filter
address-family l2vpn vpls
neighbor
activate
neighbor
send-community extended
neighbor
next-hop-self
neighbor
activate
neighbor
send-community extended
interface GigabitEthernet1
description ASBR-to-ASBR
mpls ip
mpls ldp discovery transport-address interface
IOS-XR
IOS-XR implementerar ett strukturerat CLI för EFP och EVC konfiguration.
- l2transport: identifierar subinterface, fysisk port eller bundle som en EFP.
- encapsulation: används för att matcha på VLAN tag
- rewrite: används för att specificera rewrite av VLAN tag.
Exempel:
interface Bundle-Ether1.20 l2transport
encapsulation dot1q 20
rewrite ingress tag pop 1 symmetric
mtu 9022
Loggning
l2vpn
logging
bridge-domain
pseudowire
vfi
Static VPLS
l2vpn
bridge group PROD
bridge-domain 101
mtu 9000
interface Bundle-Ether1.101
!
vfi 101
neighbor 10.0.10.15 pw-id 101
neighbor 10.0.10.16 pw-id 101
Verify
show l2vpn bridge-domain brief
Static P2P EoMPLS tillhandahåller en tunnlingsmekanism för Ethernet-trafik över ett MPLS-enabled L3 core. Man enkapsulerar Ethernet PDUs i MPLS-paket. Notera att MTU på Access Circuits måste matcha för att pseudowire ska gå upp.
"VC Type 5" = Port Based
interface GigabitEthernet0/0/0/1
l2transport
no cdp
!
l2vpn
!
xconnect group GROUP1
p2p TO_XR2
interface GigabitEthernet0/0/0/1
neighbor ipv4 2.2.2.2 pw-id 100
"VC-Type 4" = VLAN based pseudowire
l2vpn
pw-class VLAN
encapsulation mpls
no transport-mode
transport-mode vlan
Verify
show l2vpn forwarding neighbor 2.2.2.2 pw-id 100 detail location 0/0/CPU0
Control Word
Normalt sett kollar PE i packet header för att avgöra om det är ett IPv4- eller IPv6-paket och kollar sedan source/destination tuples för att avgöra eventuell load sharing. Med L2VPN så kommer headern att vara en Ethernet-header istället för IP-header. Om MAC-adressen händelsevis börjar på 0x4 eller 0x6 så kommer routern tro att det är ett IP-paket och fatta beslut på fel grunder. Genom att lägga till ett kontrollord så kan routern titta på det för att avgöra om det är ett IP-paket eller ej och därmed finns det ingen risk att load sharing blir fel. Control-Word spelar en viktig roll för ECMP och det är rekommenderat att man slår på det.
l2vpn
pw-class CONTROL
encapsulation mpls
control-word