L2VPN Pseudowire Switching

L2VPN Pseudowire Switching

L2VPN Pseudowire Switching allows the user to extend L2VPN Pseudowires across an inter-AS boundary. This feature connects multiple contiguous pseudowires to form an end-to-end multihop pseudowire.

Network topology:

One Pseudowire VC ID 1000 is established within MPLS-A network between PE1 and PE-AGG1 routers. A second Pseudowire VC ID 10 is established between PE-AGG1 and PE-AGG2 routers. And a third Pseudowire VC ID 2000 is established within MPLS-B network between PE-AGG2 and PE2 routers.

An eBGP session is established between PE-AGG1 and PE-AGG2 routers which is used to send labeled IP packets between two ASes.

Pseudowire Configuration:

First a Pseudowire VC ID 1000 is established between PE1 and PE-AGG1 routers.

Pseudowire between PE1 and PE-AGG1

PE1 router:
interface Loopback 0
 ip address 1.1.1.1 255.255.255.255
 ip ospf 1 area 0
!
interface Fastethernet 1/0
 description Connected to CE1
 no ip address
 xconnect 2.2.2.2 1000 encapsulation mpls
!
PE-AGG1 router:
interface Loopback 0
 ip address 2.2.2.2 255.255.255.255
 ip ospf 1 area 0
!
l2 vfi L2VPN point-to-point
 neighbor 1.1.1.1 1000 encapsulation mpls
!

Another Pseudowire VC ID 2000 is established within MPLS-B network between PE-AGG2 and PE2 routers.

Pseudowire between PE-AGG2 and PE2

PE-AGG2 router:
interface Loopback 0
 ip address 3.3.3.3 255.255.255.255
 ip ospf 1 area 0
!
l2 vfi L2VPN point-to-point
 neighbor 4.4.4.4 2000 encapsulation mpls
!
PE2 router:
interface Loopback 0
 ip address 4.4.4.4 255.255.255.255
 ip ospf 1 area 0
!
interface Fastethernet 1/1
 description Connected to CE2
 no ip address
 xconnect 3.3.3.3 2000 encapsulation mpls
!

And a third Pseudowire VC ID 10 is established between PE-AGG1 and PE-AGG2 routers.

Pseudowire between PE-AGG1 and PE-AGG2

PE-AGG1 router:
l2 vfi L2VPN point-to-point
 neighbor 3.3.3.3 10 encapsulation mpls
!
PE-AGG2 router:
l2 vfi L2VPN point-to-point
 neighbor 2.2.2.2 10 encapsulation mpls
!

eBGP Connection between PE-AGG1 and PE-AGG2:

An eBGP session is established between aggregating routers. This connection is used to send labeled packets between two ASes.

eBGP Connection

PE-AGG1 router:
interface Fastethernet 1/1
 ip address 172.16.1.1 255.255.255.252
!
router bgp 100
 neighbor 172.16.1.2 remote-as 200
 neighbor 172.16.1.2 send-label
 network 2.2.2.2 mask 255.255.255.255
!
PE-AGG2 router:
interface Fastethernet 1/0
 ip address 172.16.1.2 255.255.255.252
!
router bgp 200
 neighbor 172.16.1.1 remote-as 100
 neighbor 172.16.1.1 send-label
 network 3.3.3.3 mask 255.255.255.255
!

When neighbor <ip-address> send-label command is configured under BGP, mpls bgp forwarding command is automatically configured under the interfaces connecting the two Aggregating routers.

Automatically generated commands

PE-AGG1 router:
22:07:37.703: %BGP_LMM-6-AUTOGEN1: The mpls bgp forwarding command has been configured on interface: FastEthernet1/1
PE-AGG2 router:
22:07:37.471: %BGP_LMM-6-AUTOGEN1: The mpls bgp forwarding command has been configured on interface: FastEthernet1/0

VC Status verification:

The show mpls l2transport vc [detail] command shows VC status and label stack that will be imposed.

VC Status on PE-AGG1

PE-AGG1# show vfi
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: L2VPN, type: point-to-point
  Neighbors connected via pseudowires:
  Peer Address     VC ID
  3.3.3.3          10
  1.1.1.1          1000
PE-AGG1# show mpls l2transport vc
Local intf     Local circuit              Dest address    VC ID      Status
-------------  -------------------------- --------------- ---------- ----------
MPLS PW        3.3.3.3:10                 1.1.1.1         1000       UP
MPLS PW        1.1.1.1:1000               3.3.3.3         10         UP
PE-AGG1# show mpls l2transport vc detail
Local interface: MPLS PW 3.3.3.3:10 up
  Destination address: 1.1.1.1, VC ID: 1000, VC status: up
    Output interface: Fa1/0, imposed label stack {16 18}
    Preferred path: not configured
    Default path: active
    Next hop: 10.1.1.5
  Create time: 02:24:47, last status change time: 00:44:08
  Signaling protocol: LDP, peer 1.1.1.1:0 up
    Targeted Hello: 2.2.2.2(LDP Id) -> 1.1.1.1, LDP is UP
    Status TLV support (local/remote)   : enabled/supported
      LDP route watch                   : enabled
      Label/status state machine        : established, LruRru
      Last local dataplane   status rcvd: No fault
      Last local SSS circuit status rcvd: No fault
      Last local SSS circuit status sent: No fault
      Last local  LDP TLV    status sent: No fault
      Last remote LDP TLV    status rcvd: No fault
      Last remote LDP ADJ    status rcvd: No fault
    MPLS VC labels: local 22, remote 18
    Group ID: local 0, remote 0
    MTU: local 1500, remote 1500
    Remote interface description:
  Sequencing: receive transparent, send transparent
  Sequencing resync disabled
  Control Word: On (configured: autosense)
  VC statistics:
    transit packet totals: receive 88, send 77
    transit byte totals:   receive 11342, send 10188
    transit packet drops:  receive 0, seq error 0, send 0
Local interface: MPLS PW 1.1.1.1:1000 up
  Destination address: 3.3.3.3, VC ID: 10, VC status: up
    Output interface: Fa1/1, imposed label stack {22}
    Preferred path: not configured
    Default path: active
    Next hop: 172.16.1.2
  Create time: 02:24:47, last status change time: 00:44:08
  Signaling protocol: LDP, peer 3.3.3.3:0 up
    Targeted Hello: 2.2.2.2(LDP Id) -> 3.3.3.3, LDP is UP
    Status TLV support (local/remote)   : enabled/supported
      LDP route watch                   : enabled
      Label/status state machine        : established, LruRru
      Last local dataplane   status rcvd: No fault
      Last local SSS circuit status rcvd: No fault
      Last local SSS circuit status sent: No fault
      Last local  LDP TLV    status sent: No fault
      Last remote LDP TLV    status rcvd: No fault
      Last remote LDP ADJ    status rcvd: No fault
    MPLS VC labels: local 19, remote 22
    Group ID: local 0, remote 0
    MTU: local 1500, remote 1500
    Remote interface description:
  Sequencing: receive transparent, send transparent
  Sequencing resync disabled
  Control Word: On (configured: autosense)
  VC statistics:
    transit packet totals: receive 77, send 88
    transit byte totals:   receive 10188, send 11342
    transit packet drops:  receive 0, seq error 0, send 0

VC Status on PE-AGG2

PE-AGG2# show vfi
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: L2VPN, type: point-to-point
  Neighbors connected via pseudowires:
  Peer Address     VC ID
  4.4.4.4          2000
  2.2.2.2          10
PE-AGG2# show mpls l2transport vc
Local intf     Local circuit              Dest address    VC ID      Status
-------------  -------------------------- --------------- ---------- ----------
MPLS PW        4.4.4.4:2000               2.2.2.2         10         UP
MPLS PW        2.2.2.2:10                 4.4.4.4         2000       UP
PE-AGG2# show mpls l2transport vc detail
Local interface: MPLS PW 4.4.4.4:2000 up
  Destination address: 2.2.2.2, VC ID: 10, VC status: up
    Output interface: Fa1/0, imposed label stack {19}
    Preferred path: not configured
    Default path: active
    Next hop: 172.16.1.1
  Create time: 02:13:27, last status change time: 00:42:55
  Signaling protocol: LDP, peer 2.2.2.2:0 up
    Targeted Hello: 3.3.3.3(LDP Id) -> 2.2.2.2, LDP is UP
    Status TLV support (local/remote)   : enabled/supported
      LDP route watch                   : enabled
      Label/status state machine        : established, LruRru
      Last local dataplane   status rcvd: No fault
      Last local SSS circuit status rcvd: No fault
      Last local SSS circuit status sent: No fault
      Last local  LDP TLV    status sent: No fault
      Last remote LDP TLV    status rcvd: No fault
      Last remote LDP ADJ    status rcvd: No fault
    MPLS VC labels: local 22, remote 19
    Group ID: local 0, remote 0
    MTU: local 1500, remote 1500
    Remote interface description:
  Sequencing: receive transparent, send transparent
  Sequencing resync disabled
  Control Word: On (configured: autosense)
  VC statistics:
    transit packet totals: receive 79, send 69
    transit byte totals:   receive 10640, send 8944
    transit packet drops:  receive 0, seq error 0, send 0
Local interface: MPLS PW 2.2.2.2:10 up
  Destination address: 4.4.4.4, VC ID: 2000, VC status: up
    Output interface: Fa1/1, imposed label stack {17 17}
    Preferred path: not configured
    Default path: active
    Next hop: 10.2.2.2
  Create time: 02:13:28, last status change time: 00:42:56
  Signaling protocol: LDP, peer 4.4.4.4:0 up
    Targeted Hello: 3.3.3.3(LDP Id) -> 4.4.4.4, LDP is UP
    Status TLV support (local/remote)   : enabled/supported
      LDP route watch                   : enabled
      Label/status state machine        : established, LruRru
      Last local dataplane   status rcvd: No fault
      Last local SSS circuit status rcvd: No fault
      Last local SSS circuit status sent: No fault
      Last local  LDP TLV    status sent: No fault
      Last remote LDP TLV    status rcvd: No fault
      Last remote LDP ADJ    status rcvd: No fault
    MPLS VC labels: local 21, remote 17
    Group ID: local 0, remote 0
    MTU: local 1500, remote 1500
    Remote interface description:
  Sequencing: receive transparent, send transparent
  Sequencing resync disabled
  Control Word: On (configured: autosense)
  VC statistics:
    transit packet totals: receive 69, send 79
    transit byte totals:   receive 8944, send 10640
    transit packet drops:  receive 0, seq error 0, send 0

The following output proves end-to-end connectivity between two CE routers.

End-to-end connectivity

CE1# ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/85/160 ms