이 문서에서는 BGP 신호 처리 VPLS(Virtual Private LAN Service)에 대한 BGP(Border Gateway Protocol) 기반 자동 검색에 대해 설명합니다.자동 검색은 PE(Provider Edge)에서 어떤 원격 PE가 지정된 VPLS 도메인의 구성인지 확인하는 방법입니다.신호 처리는 PE가 지정된 VPLS 도메인에 대해 지정된 원격 PE에서 요구하는 의사 레이블을 학습하기 위한 방법입니다.
다음 Internet Engineering Task Force 문서를 참조하십시오.
이 문서에서는 RFC 4761에 초점을 맞춥니다.RFC 4761을 통해 BGP 업데이트의 BGP NLRI(Network Layer Reachability Information)는 자동 검색 및 신호 처리 모두에 대한 정보를 보관합니다.원격 PE 라우터가 이 BGP 업데이트를 수신하면 VPLS에 대한 의사 와이어의 전체 메쉬를 설정하는 데 필요한 모든 정보가 제공됩니다.BGP 자동 검색 및 BGP 시그널링은 동일한 BGP 주소군을 사용합니다.
CLI(Command-Line Interface) 및 출력은 Cisco IOS® Software에서 가져옵니다.구성 및 기능은 Cisco IOS-XR 소프트웨어 및 Cisco NX-OS 소프트웨어에서 매우 유사합니다.
VPLS는 포인트-투-다중 지점 방식으로 PW(Pseudowire)로 구성됩니다.지금까지 LDP는 PE 라우터 간의 의사 전달에 사용되었습니다.따라서 대상 LDP 세션에서는 PE 라우터 한 쌍 간에 의사 유선으로 사용할 레이블을 표시했습니다.하나의 VPLS 도메인에 참여하는 PE 라우터 집합을 수동으로 구성하거나 BGP를 사용하여 컨피그레이션을 자동으로 검색할 수 있습니다.이 자동 검색을 수행하기 위해 VPLS 도메인의 멤버인 PE를 BGP에 알렸습니다.그러나 BGP 자동 검색에서도 LDP는 MPLS(Multiprotocol Label Switching) VC(Virtual Circuit) 레이블과 pseudowire ID에 신호를 보내는 데 사용되었습니다.
이제 PE 라우터 간의 의사 와이어에 신호를 보내기 위해 BGP를 사용할 수 있습니다.
한 쌍의 라우터 간에 하나의 pseudwire를 설정할 경우 다른 라우터에는 이 pseudwire와 관련된 정보가 필요하지 않습니다.예를 들어, 이러한 정보는 사용할 VC 레이블입니다.
LDP가 의사 와이어를 설정하기 위한 신호 프로토콜로 사용되는 경우 LDP는 포인트 투 포인트 방식으로 신호를 보내기 때문에 이 정보는 라우터 쌍에서만 수신됩니다.
BGP를 의사 유선을 설정하기 위한 신호 프로토콜로 사용하면 iBGP(internal BGP)가 포인트 투 멀티포인트 방식으로 신호를 수행하므로 다른 모든 라우터에서 정보를 수신합니다.iBGP에는 풀 메시 요건이 있으므로 하나의 라우터가 다른 모든 iBGP 라우터에 iBGP 업데이트를 전송합니다.경로 리플렉터를 사용하여 이 작업을 수행할 수도 있습니다.
iBGP를 시그널링 프로토콜로 사용하면 업데이트를 전송하는 두 가지 방법이 있습니다.
이 문서에서는 유사 와이어에 신호를 보내기 위해 BGP를 사용하는 방법에 대해 설명합니다.BGP는 자동 검색에도 동시에 사용됩니다.
이는 VPLS이므로, PE에서 PE 라우터로 레이블이 지정된 패킷을 전달하기 위해 코어에 hop-by-hop 시그널링 프로토콜이 여전히 필요합니다.코어의 이 전송 기능은 LDP 또는 MPLS 트래픽 엔지니어링에서 계속 수행되어야 합니다.
BGP는 VPLS에 필요한 포인트-투-멀티포인트 방식으로 의사 와이어를 설정하려면 필요한 정보를 보내야 합니다.이 신호 정보는 다음과 같습니다.
PE 라우터 엔드포인트 식별은 업데이트의 BGP 발신자인 PE 라우터에서 결정됩니다.
L2VPN(Layer 2 Virtual Private Networks) VPLS에 대한 BGP 업데이트는 AFI/SAFI 25/65로 식별됩니다. 이 주소 패밀리는 BGP가 OPEN 메시지를 전송할 때 협상됩니다.
접두사라고도 하는 NLRI는 VPLS ID 및 MPLS 레이블 블록에 대한 정보를 보유합니다.인코딩의 총 길이는 19바이트입니다.
+------------------------------------+
| Length (2 octets) |
+------------------------------------+
| Route Distinguisher (8 octets) |
+------------------------------------+
| VE ID (2 octets) |
+------------------------------------+
| VE Block Offset (2 octets) |
+------------------------------------+
| VE Block Size (2 octets) |
+------------------------------------+
| Label Base (3 octets) |
+------------------------------------+
RD(Route Distinguisher)는 VPLS의 ID와 관련이 있습니다.
가상 확장(VE) ID, VE 블록 오프셋, VE 블록 크기 및 LB(Label Base)는 다음 섹션에 설명된 대로 알려진 레이블 블록과 관련됩니다.
캡슐화 정보는 접두사에 연결되며 BGP 업데이트에 확장 커뮤니티 'Layer2 Info Extended Community'로 인코딩됩니다.값은 0x800A이며 다음과 같이 인코딩됩니다.
+------------------------------------+
| Extended community type (2 octets) |
+------------------------------------+
| Encaps Type (1 octet) |
+------------------------------------+
| Control Flags (1 octet) |
+------------------------------------+
| Layer-2 MTU (2 octet) |
+------------------------------------+
| Reserved (2 octets) |
+------------------------------------+
VPLS의 Encaps 유형은 19입니다.
컨트롤 플래그(비트 벡터)는 다음과 같이 인코딩됩니다.
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| MBZ |C|S| (MBZ = MUST Be Zero)
+-+-+-+-+-+-+-+-+
이름 | 가치 | 의미 |
C | 1 | VPLS 패킷이 이 PE로 전송될 때 제어 단어가 있어야 합니다. |
0 | VPLS 패킷이 이 PE로 전송되는 경우 제어 단어가 없어야 합니다. | |
S | 1 | VPLS 패킷이 이 PE로 전송될 때 프레임의 순차 전달을 사용해야 합니다. |
0 | VPLS 패킷이 이 PE로 전송될 때 프레임의 순차적 전달을 사용하지 않아야 합니다. |
BGP 업데이트에 연결된 RT(Route Target)도 있습니다.RT는 MPLS L3VPN과 동일한 방식으로 L2VPN에서 가져오기 및 내보내기를 제어합니다.
VPLS BGP 자동 검색 접두사는 /96 접두사이지만 VPLS BGP 신호 접두사는 /136 접두사입니다.다음은 각 항목의 예입니다.
PE2#show bgp l2vpn vpls all
BGP table version is 264, local router ID is 10.100.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*>i 1:100:VEID-1001:Blk-150/136
10.100.1.1 0 100 0 ?
*> 1:100:10.100.1.2/96
0.0.0.0 32768 ?
PE2#show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 150
BGP routing table entry for 1:100:VEID-1001:Blk-150/136, version 262
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 1
Local
10.100.1.1 (metric 21) from 10.100.1.4 (10.100.1.4)
Origin incomplete, metric 0, localpref 100, valid, internal, best
AGI version(0), VE Block Size(50) Label Base(10105)
Extended Community: RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
Originator: 10.100.1.1, Cluster list: 10.100.1.4
rx pathid: 0, tx pathid: 0x0
PE2#show bgp l2vpn vpls rd 1:100 10.100.1.2
BGP routing table entry for 1:100:10.100.1.2/96, version 43
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (10.100.1.2)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local,
best, AGI version(0)
Extended Community: RT:1:100 L2VPN AGI:1:100
rx pathid: 0, tx pathid: 0x0
다음은 Cisco IOS 소프트웨어 구성의 예입니다.
!
l2vpn vfi context one
vpn id 100
autodiscovery bgp signaling bgp <<< "signaling ldp" would be RFC 4762
ve id 1001
ve range 50
route-target export 32:64
route-target import 32:64
mpls label range 10000 20000
!
bridge-domain 1
member Ethernet0/0 service-instance 100
member vfi one
!
l2 router-id 10.100.1.1
!
interface Ethernet0/0
no ip address
service instance 100 ethernet
!
!
router bgp 1
bgp log-neighbor-changes
neighbor 10.100.1.4 remote-as 1
neighbor 10.100.1.4 update-source Loopback0
!
address-family l2vpn vpls
neighbor 10.100.1.4 activate
neighbor 10.100.1.4 send-community extended
neighbor 10.100.1.4 suppress-signaling-protocol ldp
exit-address-family
하나의 PE 라우터가 하나 이상의 레이블 블록을 광고해야 합니다.레이블 블록은 연속적인 MPLS 레이블 집합이며 원격 PE 라우터에서 하나의 원격 VC 레이블을 선택하기 위해 사용합니다.원격 레이블은 로컬 및 원격 PE 라우터 간 PW에 사용됩니다.(PE 라우터는 이후 섹션에서 설명한 대로 여러 레이블 블록을 광고할 수 있습니다.)
각 PE에 VE-ID를 구성해야 합니다.VPLS 도메인 내에서 PE 라우터를 식별합니다.
VBS(VE Block Size)는 레이블 블록의 크기이며 기본값은 10입니다. 've range'가 구성된 경우 해당 값입니다.'ve range'는 [11 -100]로 구성할 수 있습니다.
Label Base(LB)는 이 VPLS 도메인에 사용할 PE 라우터에서 예약할 수 있는 사용 가능한 레이블 집합의 첫 번째 레이블 값입니다.
VBO(VE Block Offset)는 PE 라우터에서 여러 레이블 블록을 생성해야 하는 경우 사용할 오프셋 값입니다.VBO는 다음 등식으로 계산됩니다.VBO = RND(VE-ID/VBS) * VBS
다음은 계산 예입니다.
원격 PE 라우터에 광고되는 레이블 블록은 {LB, LB + 1, ?, LB + VBS - 1}.레이블 블록은 LB와 VBS로 정의됩니다.블록은 LB에서 시작하여 (LB + VBS - 1)로 끝납니다.
필요한 경우 각 PE 라우터에서 여러 레이블 블록을 생성할 수 있습니다.라우터는 연속 사용 가능한 레이블 집합인지 확인해야 합니다.
router bgp 1
l2vpn vfi context one
vpn id 100
autodiscovery bgp signaling bgp
ve id 1001
ve range 50
route-target export 32:64
route-target import 32:64
mpls label range 10000 20000
구성 값에 대한 설명입니다.
show mpls label range 명령을 사용하여 레이블 범위를 확인할 수 있습니다.
PE1#show mpls label range
Downstream Generic label region: Min/Max label: 10000/20000
플랫폼별 기본 레이블 범위가 있으며, mpls label range 명령으로 변경할 수 있습니다.
show mpls forwarding-table 명령을 사용하여 LFIB(label forwarding information base)에서 한 레이블 블록에 대해 실제 사용된 레이블을 확인할 수 있습니다.
PE1#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop Label
Label or Tunnel Id Switched interface
10000 No Label lbl-blk-id(1:0) 0 drop
10001 No Label lbl-blk-id(1:1) 0 drop
10002 No Label lbl-blk-id(1:2) 0 drop
?
10048 No Label lbl-blk-id(1:48) 0 drop
10049 No Label lbl-blk-id(1:49) 0 drop
10050 Pop Label 10.100.1.4/32 0 Et1/0 10.1.1.4
이 예에서 로컬 라우터인 PE1은 레이블 블록에 대해 50개의 로컬 레이블을 예약했습니다.'lbl-blk-id(1:0)'는 블록의 첫 번째 레이블을 식별하는 블록 ID의 1과 블록 인스턴스 0을 의미합니다.이 블록의 마지막 레이블은 레이블 10049입니다.
해당 로컬 레이블에 대해 설정된 PW가 없으면 LFIB의 'Outgoing' 인터페이스는 'drop'입니다.PW가 설정된 경우 'Outgoing' 인터페이스는 'none point2point'입니다.
'service internal'이 구성된 경우 show mpls infrastructure lfd block-database summary 명령을 사용하여 할당된 레이블 블록을 확인할 수도 있습니다.
PE1#show mpls infrastructure lfd block-database summary
Block-DB entry for block-id : 0x1
Block-size : 50, App-Key type : AToM PWID, Labels : 10000 - 10049
LB는 10000입니다. 이 예에서 레이블 블록은 LB에서 (LB + VBS - 1) 또는 10000에서 (1000 + 50 - 1) = 10049까지입니다.
show bgp l2vpn vpls rd 1:100 명령을 사용하여 알려진 접두사를 확인할 수 있습니다.
PE1#show bgp l2vpn vpls rd 1:100
BGP table version is 3, local router ID is 10.100.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*> 1:100:VEID-1001:Blk-1000/136
0.0.0.0 32768 ?
이 접두사를 자세히 보려면 show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 1000 명령을 사용합니다.NLRI(Blk-1000)에서 찾을 수 있는 VE-ID 및 레이블 블록을 지정합니다.
PE1#show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 1000
BGP routing table entry for 1:100:VEID-1001:Blk-1000/136, version 3
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Advertised to update-groups:
1
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (10.100.1.1)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
AGI version(0), VE Block Size(50) Label Base(10000)
Extended Community: RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
rx pathid: 0, tx pathid: 0x0
NLRI는 1:100, VE-ID 1001, VBO 1000, VBS 50, LB 1000을 보여줍니다.
Layer2 Info Extended 커뮤니티는 다음 정보를 보유합니다.
RT 확장 커뮤니티에는 다음 정보가 있습니다.
로컬 PE 라우터가 L2VPN VPLS 접두사/레이블 블록을 광고할 때 각 원격 PE 라우터는 원격 VC 레이블로 사용하기 위해 해당 범위에서 하나의 레이블을 선택하려고 시도해야 합니다.
PE1이 이전 컨피그레이션의 로컬 PE이고 PE2가 이 컨피그레이션의 원격 PE라고 가정합니다.
l2vpn vfi context one
vpn id 100
autodiscovery bgp signaling bgp
ve id 1002
ve range 50
!
mpls label range 3000 60000
PE2는 PE1에서 이 BGP 업데이트를 수신합니다.
PE2#show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 1000
BGP routing table entry for 1:100:VEID-1001:Blk-1000/136, version 5
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 2
Local
10.100.1.1 (metric 21) from 10.100.1.4 (10.100.1.4)
Origin incomplete, metric 0, localpref 100, valid, internal, best
AGI version(0), VE Block Size(50) Label Base(10000)
Extended Community: RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
Originator: 10.100.1.1, Cluster list: 10.100.1.4
rx pathid: 0, tx pathid: 0x0
PE2는 PW에서 PE1에 대해 원격 VC 레이블로 사용할 수 있는 레이블을 찾아야 합니다.
PE2는 먼저 VBO가 컨피그레이션 범위 내에 있는지 확인해야 합니다.PE2는 계산 VBO <= VE-ID < VBO + VBS를 사용하여 PE1에서 광고하는 범위에 대해 VE-ID를 확인합니다.이 경우 1000 <= 1002 < 1000 + 50이므로 PE2가 성공합니다.
그런 다음 PE2에서 원격 VC 레이블을 선택해야 합니다.원격 PE에서 사용할 VC(demultiplexer) 레이블은 (LB + VE-ID - VBO)로 계산됩니다.
이전 접두사에서 LB는 10000이고 VBO는 1000입니다.VE-ID는 PE2의 ID이며 1002입니다.따라서 PE2는 레이블(LB + VE-ID - VBO) = (10000 + 1002 - 1000) = 10002를 선택합니다.
이를 확인하려면 show l2vpn vfi name one 명령을 사용합니다.
PE2#show l2vpn vfi name one
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: one, state: up, type: multipoint, signaling: BGP
VPN ID: 100, VE-ID: 1002, VE-SIZE: 50
RD: 1:100, RT: 1:100
Bridge-Domain 100 attachment circuits:
Pseudo-port interface: pseudowire100001
Interface Peer Address VE-ID Local Label Remote Label S
pseudowire100002 10.100.1.1 1001 3101 10002 Y
그런 다음 PE2에서 접두사를 PE1에 전송합니다.
PE1#show bgp l2vpn vpls rd 1:100 ve-id 1002 block-offset 1000
BGP routing table entry for 1:100:VEID-1002:Blk-1000/136, version 4
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 1
Local
10.100.1.2 (metric 21) from 10.100.1.4 (10.100.1.4)
Origin incomplete, metric 0, localpref 100, valid, internal, best
AGI version(0), VE Block Size(50) Label Base(3100)
Extended Community: RT:1:100 L2VPN L2:0x0:MTU-1500
Originator: 10.100.1.2, Cluster list: 10.100.1.4
rx pathid: 0, tx pathid: 0x0
PE1은 이제 원격 PE이며 PE2에 대한 PW의 원격 VC 레이블로 사용할 수 있는 레이블을 찾아야 합니다.
PE1은 먼저 VBO가 컨피그레이션 범위 내에 있는지 확인해야 합니다.PE1은 계산 VBO <= VE-ID < VBO + VBS를 사용하여 PE2가 광고한 범위에 대해 VE-ID를 확인합니다.이 경우 1000 <= 1001 < 1000 + 50이므로 PE1이 성공합니다.
그런 다음 PE1에서 원격 VC 레이블을 선택해야 합니다.원격 PE에서 사용할 VC(demultiplexer) 레이블은 (LB + VE-ID - VBO)로 계산됩니다.
이전 접두사에서 LB는 3100이고 VBO는 1000입니다.VE-ID는 PE1의 ID이며 1001입니다.따라서 PE1은 레이블(LB + VE-ID - VBO) = (3100 + 1001 - 1000) = 3101을 선택합니다.
이를 확인하려면 show l2vpn vfi name one 명령을 사용합니다.
PE1#show l2vpn vfi name one
Legend: RT=Route-target, S=Split-horizon, Y=Yes, N=No
VFI name: one, state: up, type: multipoint, signaling: BGP
VPN ID: 100, VE-ID: 1001, VE-SIZE: 50
RD: 1:100, RT: 1:100, 32:64
Bridge-Domain 1 attachment circuits:
Pseudo-port interface: pseudowire100001
Interface Peer Address VE-ID Local Label Remote Label S
pseudowire100002 10.100.1.2 1002 10002 3101 Y
PE1#show mpls l2transport vc detail
Local interface: VFI one vfi up
Interworking type is Ethernet
Destination address: 10.100.1.2, VC ID: 100, VC status: up
Output interface: Et1/0, imposed label stack {17 3101}
Preferred path: not configured
Default path: active
Next hop: 10.1.1.4
Create time: 02:06:08, last status change time: 02:06:08
Last label FSM state change time: 02:06:08
Signaling protocol: BGP
Status TLV support (local/remote) : Not Applicable
LDP route watch : Not Applicable
Label/status state machine : established, LruRru
Last local dataplane status rcvd: No fault
Last BFD dataplane status rcvd: Not Applicable
Last BFD peer monitor status rcvd: Not Applicable
Last local AC circuit status rcvd: No fault
Last local AC circuit status sent: No fault
Last local PW i/f circ status rcvd: No fault
Last local LDP TLV status sent: Not Applicable
Last remote LDP TLV status rcvd: Not Applicable
Last remote LDP ADJ status rcvd: Not Applicable
MPLS VC labels: local 10002, remote 3101
Group ID: local 0, remote 0
MTU: local 1500, remote 1500
Control Word: Off
Dataplane:
SSM segment/switch IDs: 8195/4097 (used), PWID: 3
VC statistics:
transit packet totals: receive 0, send 0
transit byte totals: receive 0, send 0
transit packet drops: receive 0, seq error 0, send 0
PE1#show mpls infrastructure lfd block-database id 1
Block-DB entry for block-id : 0x1
Block-size : 50, App-Key type : AToM PWID
App-Key entries:
l2ckt(1) 10000
l2ckt(2) 10001
l2ckt(3) 10002
l2ckt(4) 10003
l2ckt(5) 10004
l2ckt(6) 10005
l2ckt(7) 10006
l2ckt(8) 10007
l2ckt(9) 10008
l2ckt(10) 10009
l2ckt(11) 10010
l2ckt(12) 10011
l2ckt(13) 10012
l2ckt(14) 10013
l2ckt(15) 10014
l2ckt(16) 10015
l2ckt(17) 10016
l2ckt(18) 10017
l2ckt(19) 10018
l2ckt(20) 10019
l2ckt(21) 10020
l2ckt(22) 10021
l2ckt(23) 10022
l2ckt(24) 10023
l2ckt(25) 10024
l2ckt(26) 10025
l2ckt(27) 10026
l2ckt(28) 10027
l2ckt(29) 10028
l2ckt(30) 10029
l2ckt(31) 10030
l2ckt(32) 10031
l2ckt(33) 10032
l2ckt(34) 10033
l2ckt(35) 10034
l2ckt(36) 10035
l2ckt(37) 10036
l2ckt(38) 10037
l2ckt(39) 10038
l2ckt(40) 10039
l2ckt(41) 10040
l2ckt(42) 10041
l2ckt(43) 10042
l2ckt(44) 10043
l2ckt(45) 10044
l2ckt(46) 10045
l2ckt(47) 10046
l2ckt(48) 10047
l2ckt(49) 10048
l2ckt(50) 10049
PE1#show l2vpn atom vc destination 10.100.1.2
Service
Interface Dest Address VC ID Type Name Status
--------- --------------- ---------- ------ ------------------------ ----------
pw100002 10.100.1.2 100 vfi one UP
PE1#show l2vpn atom vc destination 10.100.1.2 detail
pseudowire100002 is up, VC status is up PW type: Ethernet
Create time: 02:11:13, last status change time: 02:11:13
Last label FSM state change time: 02:11:13
Destination address: 10.100.1.2 VC ID: 100
Output interface: Et1/0, imposed label stack {17 3101}
Preferred path: not configured
Default path: active
Next hop: 10.1.1.4
Member of vfi service one
Bridge-Domain id: 1
Service id: 0xe7000001
Signaling protocol: BGP
Local VE ID: 1001, Remote VE ID: 1002
Status TLV support (local/remote) : Not Applicable
LDP route watch : Not Applicable
Label/status state machine : established, LruRru
Local dataplane status received : No fault
BFD dataplane status received : Not Applicable
BFD peer monitor status received : Not Applicable
Status received from access circuit : No fault
Status sent to access circuit : No fault
Status received from pseudowire i/f : No fault
Status sent to network peer : Not Applicable
Status received from network peer : Not Applicable
Adjacency status of remote peer : Not Applicable
Bindings
Parameter Local Remote
------------ ------------------------------ ------------------------------
Label 10002 3101
Group ID 0 0
Interface
MTU 1500 1500
Control word off off
PW type Ethernet Ethernet
VCCV CV type 0x32 0x32
LSPV [2], BFD/Raw [5] LSPV [2], BFD/Raw [5]
BFD/Raw + sig [6] BFD/Raw + sig [6]
VCCV CC type 0x07 0x07
CW [1], RA [2], TTL [3] CW [1], RA [2], TTL [3]
Status TLV disabled N/A
Dataplane:
SSM segment/switch IDs: 8195/4097 (used), PWID: 3
Rx Counters
0 input transit packets, 0 bytes
0 drops, 0 seq err
Tx Counters
0 output transit packets, 0 bytes
0 drops
PE1#show l2vpn signaling rib rd 1:100
+- Origin of entry (i=iBGP/e=eBGP)
| +- Provisioned (Yes/No)?
| | +- Stale entry (Yes/No)?
| | |
v v v
O P S RD VE-ID VBO VBS LB Next-Hop
-+-+-+-----------------+-------+-------+-------+---------+-----------------+
i Y N 1:100 1002 1000 50 3100 10.100.1.2
PE1#show l2vpn signaling rib rd 1:100 detail
Route 1:100:1002 (epoch:0) from iBGP peer 10.100.1.2
Provisioned (Y) Stale (N)
Route-Target: 1:100
NLRI [FF000001]
VE-ID:1002 VBO:1000 VBS:50 LB:3100
MTU: 1500 Control Word: off
RIB Filter [27000002]
RD: 1:100
VE-ID: 1001, VBO: 1000, VBS: 50 LB: 10000
Forwarder [58000001] VFI one
PE1#show l2vpn atom pwid
AToM Pseudowire IDs: In use: 50, In holddown: 0
Label Peer-Address VCID PWID In-Use FirstUse ResuedAt FreedAt
------ --------------- ---------- ---------- ------ -------- -------- --------
10000 0.0.0.0 0 1 Yes 00:00:15 Never Never
10001 0.0.0.0 0 2 Yes 00:00:15 Never Never
10002 10.100.1.2 100 3 Yes 00:00:15 Never Never
10003 0.0.0.0 0 4 Yes 00:00:15 Never Never
10004 0.0.0.0 0 5 Yes 00:00:15 Never Never
PE1#show l2vpn atom summary
Destination address: 10.100.1.2, total number of vc: 1
0 unknown, 1 up, 0 down, 0 admin down, 0 recovering, 0 standby, 0 hotstandby
1 active vc on MPLS interface Et1/0
하나의 PE에서 하나의 VFI(virtual forwarding instance)에 대해 여러 레이블 블록을 광고해야 할 수 있습니다.
원격 PE의 VE-ID가 로컬 PE에서 광고하는 범위에 속하지 않으면 원격 PE에서 PW에 대한 원격 레이블을 선택할 수 없습니다.앞에서 설명한 이 계산은 VBO <= VE-ID < VBO + VBS입니다.
이 검사가 실패하면 원격 PE의 VE-ID가 범위를 벗어났습니다.원격 PE는 로컬 PE에서 수신한 접두사를 무시합니다.로컬 PE는 원격 PE가 광고하고 있는 접두사를 수신하면 원격 PE가 범위를 벗어났다는 것을 알게 됩니다.로컬 PE는 해당 원격 PE 라우터에 사용할 원격 레이블을 결정해야 합니다.또한 로컬 PE는 원격 PE에서 원격 레이블을 선택하기 위해 사용할 수 있어야 하는 새 로컬 레이블 블록에 대한 두 번째 접두사를 원격 PE로 전송합니다.
앞의 예는 여기서 계속됩니다.PE1에는 여전히 다음과 같은 기능이 있습니다.
l2vpn vfi context one
vpn id 100
autodiscovery bgp signaling bgp
ve id 1001
ve range 50
route-target export 32:64
route-target import 32:64
!
mpls label range 10000 20000
이제 PE2에 VE-ID가 1002이고 이 컨피그레이션이 있습니다.
l2vpn vfi context one
vpn id 100
autodiscovery bgp signaling bgp
ve id 10002
ve range 50
!
mpls label range 3000 60000
PE1과 PE2 모두 이러한 초기 레이블 블록으로 시작합니다.
PE1#show bgp l2vpn vpls rd 1:100
BGP table version is 2, local router ID is 10.100.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*> 1:100:VEID-1001:Blk-1000/136
0.0.0.0 32768 ?
PE2#show bgp l2vpn vpls rd 1:100
BGP table version is 3, local router ID is 10.100.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*> 1:100:VEID-10002:Blk-10000/136
0.0.0.0 32768 ?
debug bgp l2vpn vpls updates 명령을 사용하여 PE1 및 PE2 교환을 검토한 다음 show bgp l2vpn vpls rd 1:100 명령을 사용하여 세부 정보를 검토합니다.
PE1#
%BGP-5-ADJCHANGE: neighbor 10.100.1.4 Up
BGP(9): update formatted for 1:100:VEID-1001:Blk-1000:VBS-50:LB-10000/136 VE ID
1001 VE Block Offset 1000 VE Block Size 50 Label Base 10000 /136
BGP(9): (base) 10.100.1.4 send UPDATE (format) 1:100:VEID-1001:Blk-1000:VBS-50:
LB-10000/136, next 10.100.1.1, metric 0, path Local, extended community RT:1:100
RT:32:64 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd UPDATE w/ attr: nexthop 10.100.1.2, origin ?,
localpref 100, metric 0, originator 10.100.1.2, clusterlist 10.100.1.4, extended
community RT:1:100 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136
BGP(9): bump net 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136, non bpath added
BGP(9): nettable_walker called for 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136
BGP(9): best path[0] 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136 source
10.100.1.1 nh 10.100.1.2 vpls-id: L2VPN L2:0x0:MTU-1500
BGP(9): add XC RIB route 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136 masklen 136
L2VPN L2:0x0:MTU-1500 pathcount: 1 [0] LDP source:10.100.1.1 nexthop:10.100.1.2
RT:1:100
BGP(9): bump net 1:100:VEID-1001:Blk-10000:VBS-50:LB-10053/136, non bpath added
BGP(9): nlri update add VBS 50 LB 10053
BGP(9): nlri update add export extcomm count 4
BGPSSA ssacount is 0
BGP(9): update formatted for 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136 VE ID
10002 VE Block Offset 10000 VE Block Size 50 Label Base 3000 /136
BGP(9): nettable_walker called for 1:100:VEID-1001:Blk-10000:VBS-50:LB-10053/136
BGP(9): nettable_walker 1:100:VEID-1001:Blk-10000:VBS-50:LB-10053/136 route sourced
locally
BGP(9): update formatted for 1:100:VEID-1001:Blk-10000:VBS-50:LB-10053/136 VE ID
1001 VE Block Offset 10000 VE Block Size 50 Label Base 10053 /136
BGP(9): (base) 10.100.1.4 send UPDATE (format) 1:100:VEID-1001:Blk-10000:VBS-50:
LB-10053/136, next 10.100.1.1, metric 0, path Local, extended community RT:1:100
RT:32:64 L2VPN L2:0x0:MTU-1500 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd UPDATE w/ attr: nexthop 10.100.1.2, origin ?, localpref 100,
metric 0, originator 10.100.1.2, clusterlist 10.100.1.4, extended community
RT:1:100 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136
BGP(9): bump net 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136, non bpath added
BGP(9): nettable_walker called for 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136
BGP(9): best path[0] 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136 source 10.100.1.1
nh 10.100.1.2 vpls-id: L2VPN L2:0x0:MTU-1500
BGP(9): add XC RIB route 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136 masklen 136
L2VPN L2:0x0:MTU-1500 pathcount: 1 [0] LDP source:10.100.1.1 nexthop:10.100.1.2
RT:1:100
BGP(9): update formatted for 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136 VE ID
10002 VE Block Offset 1000 VE Block Size 50 Label Base 3053 /136
BGPSSA ssacount is 0
PE1#show bgp l2vpn vpls rd 1:100
BGP table version is 5, local router ID is 10.100.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*> 1:100:VEID-1001:Blk-1000/136
0.0.0.0 32768 ?
*> 1:100:VEID-1001:Blk-10000/136
0.0.0.0 32768 ?
*>i 1:100:VEID-10002:Blk-1000/136
10.100.1.2 0 100 0 ?
*>i 1:100:VEID-10002:Blk-10000/136
10.100.1.2 0 100 0 ?
PE2#show bgp l2vpn vpls rd 1:100
BGP table version is 6, local router ID is 10.100.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:100
*>i 1:100:VEID-1001:Blk-1000/136
10.100.1.1 0 100 0 ?
*>i 1:100:VEID-1001:Blk-10000/136
10.100.1.1 0 100 0 ?
*> 1:100:VEID-10002:Blk-1000/136
0.0.0.0 32768 ?
*> 1:100:VEID-10002:Blk-10000/136
0.0.0.0 32768 ?
이제 PE1과 PE2는 두 개의 레이블 블록을 서로 광고했습니다.
PE1은 먼저 PE2에 초기 BGP 업데이트를 알립니다.
BGP(9): update formatted for 1:100:VEID-1001:Blk-1000:VBS-50:LB-10000/136 VE ID
1001 VE Block Offset 1000 VE Block Size 50 Label Base 10000 /136
BGP(9): (base) 10.100.1.4 send UPDATE (format) 1:100:VEID-1001:Blk-1000:VBS-50:
LB-10000/136, next 10.100.1.1, metric 0, path Local, extended community
RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
이 업데이트에는 PE1의 컨피그레이션에 따라 NLRI가 설정됩니다.
그런 다음 PE1은 PE2에서 초기 BGP 업데이트를 수신합니다.
BGP(9): 10.100.1.4 rcvd UPDATE w/ attr: nexthop 10.100.1.2, origin ?, localpref
100, metric 0, originator 10.100.1.2, clusterlist 10.100.1.4, extended
community RT:1:100 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd 1:100:VEID-10002:Blk-10000:VBS-50:LB-3000/136
PE2는 VE-ID 10002, VBO = 10000, VBS = 50, LB = 3000 값으로 초기 접두사를 광고합니다.
PE1은 PE1이 레이블 블록 LB에서 (LB + VBS - 1) 또는 10000에서 (10000 + 50 - 1) = 10049로 시작되었으므로 PE2가 범위를 벗어났다는 것을 알려줍니다.
PE1은 VBO가 컨피그레이션 범위 내에 있는지 확인해야 합니다.따라서 PE1에서 광고하는 범위에 대해 PE2의 VE-ID를 확인해야 합니다. 계산은 VBO <= VE-ID < VBO + VBS입니다.이 경우 1000 <= 10002 < 1000 + 50. 이는 사실이 아닙니다.따라서 PE1은 PE2의 범위를 벗어난 VE-ID를 수용하기 위해 새 레이블 블록을 전송해야 합니다. PE2의 초기 업데이트에 대한 응답으로 PE1은 새로운 추가 BGP 업데이트를 PE2로 포맷하고 전송합니다. 이제 PE1은 10000의 새 VBO를 사용합니다.
BGP(9): update formatted for 1:100:VEID-1001:Blk-10000:VBS-50:LB-10053/136
VE ID 1001 VE Block Offset 10000 VE Block Size 50 Label Base 10053 /136
BGP(9): (base) 10.100.1.4 send UPDATE (format) 1:100:VEID-1001:Blk-10000:
VBS-50:LB-10053/136, next 10.100.1.1, metric 0, path Local, extended
community RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500 L2VPN L2:0x0:MTU-1500
PE1의 경우 VBO는 1000이고 VBS는 50이고 LB는 10053입니다. PE2의 확인은 VBO <= VE-ID < VBO + VBS입니다.이 경우, 10000 <= 10002 < 10000 + 50, 참PE2는 PE1에서 이 새 레이블 블록 [10053 - 10102]에서 원격 레이블을 선택할 수 있습니다. 즉, PE1은 PE2를 수용하기 위해 새 레이블 블록을 추가하고 두 개의 BGP 업데이트 메시지를 보냈습니다.
반대 방향에서도 마찬가지입니다.PE2는 PE1에서 초기 BGP 업데이트를 수신합니다. 이 업데이트에는 VE-ID 1001, VBO = 1000, VBS = 50, LB = 1000 값이 있습니다.
PE2는 PE1의 VE-ID가 PE2의 초기 업데이트와 함께 범위를 벗어났음을 확인합니다.PE1?s 확인은 VBO <= VE-ID < VBO + VBS 또는 1000 <= 1001 < 1000 + 50입니다. 이에 대한 응답으로 PE2는 VE-ID 1001의 PE1을 수용하는 새로운 레이블 블록 [3053 - 3102]과 함께 이 두 번째 BGP 업데이트를 보냅니다. PE1s 검사는 VBO <= VE-ID < VBO + VBS 또는 1000 <= 1001 < 1000 + 50이므로
BGP(9): 10.100.1.4 rcvd UPDATE w/ attr: nexthop 10.100.1.2, origin ?,
localpref 100, metric 0, originator 10.100.1.2, clusterlist 10.100.1.4,
extended community RT:1:100 L2VPN L2:0x0:MTU-1500
BGP(9): 10.100.1.4 rcvd 1:100:VEID-10002:Blk-1000:VBS-50:LB-3053/136
다음은 PE1에서 시작된 두 접두사의 세부 정보입니다.
PE1#show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 1000
BGP routing table entry for 1:100:VEID-1001:Blk-1000/136, version 2
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (10.100.1.1)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
AGI version(0), VE Block Size(50) Label Base(10000)
Extended Community: RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
rx pathid: 0, tx pathid: 0x0
PE1#show bgp l2vpn vpls rd 1:100 ve-id 1001 block-offset 10000
BGP routing table entry for 1:100:VEID-1001:Blk-10000/136, version 4
Paths: (1 available, best #1, table L2VPN-VPLS-BGP-Table)
Not advertised to any peer
Refresh Epoch 1
Local
0.0.0.0 from 0.0.0.0 (10.100.1.1)
Origin incomplete, localpref 100, weight 32768, valid, sourced, local, best
AGI version(0), VE Block Size(50) Label Base(10053)
Extended Community: RT:1:100 RT:32:64 L2VPN L2:0x0:MTU-1500
L2VPN L2:0x0:MTU-1500
rx pathid: 0, tx pathid: 0x0
여기에서 두 PE 라우터에는 연속되지 않은 번호 체계가 있으며, 이로 인해 각 PE는 두 개의 BGP 업데이트를 전송합니다.연속되지 않은 번호 체계를 가진 PE 라우터가 많은 경우 BGP 업데이트 수가 빠르게 증가합니다.
www.cisco.com에 따르면"예를 들어, 1, 2, 3 또는 501, 502, 503과 같은 VE-ID 번호 지정 시퀀스는 VE-ID가 연속적이기 때문에 적합합니다.100, 200, 300과 같은 번호 지정 체계는 인접하지 않으므로 잘못되었습니다."
1, 2, 3 또는 501, 502, 503의 첫 번째 예제는 연속된 숫자이므로 각 PE 라우터는 하나의 L2VPN VPLS 접두사만 전송해야 합니다.세 번째 예(100, 200, 300)를 통해 각 PE는 여러 L2VPN VPLS 접두사를 전송해야 합니다.인접하지 않은 번호의 경우 VE 범위가 충분히 커지면 광고할 접두사의 수가 줄어듭니다.그러나 예약된(불필요하게 사용된) 레이블의 양이 여전히 큽니다.
BGP RR(Route Reflector)이 RFC 4761을 인식하지 않지만 RFC 4762를 지원하는 소프트웨어를 실행하는 경우 RR에 특별 BGP neighbor x.x.x prefix-length-size 2 컨피그레이션 명령이 필요하므로 RFC 4761에 사용되는 BGP 업데이트가 반영됩니다.
접두사는 일반적으로 길이가 1바이트로 전송됩니다.Cisco IOS Software는 초안 'draft-ietf-l2vpn-signaling-08'을 구현했으며, 이후 RFC 6074가 되었습니다.1바이트의 길이 필드가 비트 단위로 선택되었습니다.
RFC 6074 Provisioning, Auto-Discovery 및 Signaling in Layer 2 Virtual Private Networks(L2VPN)은 BGP 자동 검색을 위한 NLRI 인코딩이 2바이트여야 함을 지정합니다.2바이트는 가변 길이 접두사에서 뒤에 오는 접두사 수를 나타냅니다.
RFC 6074의 섹션 7, "BGP-AD 및 VPLS-BGP 상호 운용성"은 다음을 나타냅니다.
"BGP-AD와 VPLS-BGP [RFC4761]에서 모두 동일한 AFI/SAFI를 사용합니다.BGP-AD와 VPLS-BGP가 모두 공존하려면 NLRI 길이를 demultiplexer로 사용해야 합니다.
BGP-AD NLRI는 8바이트 RD와 4바이트 VSI-ID만 포함하는 NLRI 길이가 12바이트입니다.VPLS-BGP [RFC4761]은 17바이트 NLRI 길이를 사용합니다.따라서 BGP-AD의 구현은 12바이트보다 큰 NLRI를 무시해야 합니다."
RR에 neighbor x.x.x prefix-length-size 2 명령이 없으면 BGP 인접 디바이스가 나타나지 않으며 RR은 길이 필드를 1바이트로만 해석합니다.이 알림은 RR에 나타납니다.
%BGP-3-NOTIFICATION: sent to neighbor 10.100.1.2 3/10 (illegal network) 1 bytes FF
%BGP-4-MSGDUMP: unsupported or mal-formatted message received from 10.100.1.2:
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 005E 0200 0000 4780 0E1C 0019 4104 0A64
0102 0000 1100 0000 0100 0000 6427 1227 1000 3200 BB80 4001 0102 4002 0080 0404
*Feb 15 12:14:11.561: %BGP_SESSION-5-ADJCHANGE: neighbor 10.100.1.2 L2VPN Vpls
topology base removed from session BGP Notification sent
*Feb 15 12:14:11.561: %BGP_SESSION-5-ADJCHANGE: neighbor 10.100.1.2 IPv4 Unicast
topology base removed from session BGP Notification sent
이 알림은 PE 라우터에 나타납니다.
%BGP-3-NOTIFICATION: received from neighbor 10.100.1.4 3/10 (illegal network)
1 bytes FD
이는 Cisco IOS 소프트웨어에서 BGP 자동 검색을 처음 구현한 경우 길이 필드가 1바이트이므로 발생합니다.
RR에 neighbor x.x.x prefix-length-size 2 명령을 입력하면 알림이 표시되지 않습니다.
router bgp 1
neighbor 10.100.1.2 remote-as 1
neighbor 10.100.1.2 update-source Loopback0
!
address-family l2vpn vpls
neighbor 10.100.1.2 activate
neighbor 10.100.1.2 send-community extended
neighbor 10.100.1.2 prefix-length-size 2
neighbor 10.100.1.2 route-reflector-client