summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4761.txt
blob: 14a835acdd63e2725306ef9c15c2461d7555713f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
Network Working Group                                   K. Kompella, Ed.
Request for Comments: 4761                               Y. Rekhter, Ed.
Category: Standards Track                               Juniper Networks
                                                            January 2007


                  Virtual Private LAN Service (VPLS)
               Using BGP for Auto-Discovery and Signaling

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

IESG Note

   The L2VPN Working Group produced two separate documents, RFC 4762 and
   this document, that ultimately perform similar functions in different
   manners.  Be aware that each method is commonly referred to as "VPLS"
   even though they are distinct and incompatible with one another.

Abstract

   Virtual Private LAN Service (VPLS), also known as Transparent LAN
   Service and Virtual Private Switched Network service, is a useful
   Service Provider offering.  The service offers a Layer 2 Virtual
   Private Network (VPN); however, in the case of VPLS, the customers in
   the VPN are connected by a multipoint Ethernet LAN, in contrast to
   the usual Layer 2 VPNs, which are point-to-point in nature.

   This document describes the functions required to offer VPLS, a
   mechanism for signaling a VPLS, and rules for forwarding VPLS frames
   across a packet switched network.











Kompella & Rekhter          Standards Track                     [Page 1]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


Table of Contents

   1. Introduction ....................................................3
      1.1. Scope of This Document .....................................3
      1.2. Conventions Used in This Document ..........................4
   2. Functional Model ................................................4
      2.1. Terminology ................................................5
      2.2. Assumptions ................................................5
      2.3. Interactions ...............................................6
   3. Control Plane ...................................................6
      3.1. Auto-Discovery .............................................7
           3.1.1. Functions ...........................................7
           3.1.2. Protocol Specification ..............................7
      3.2. Signaling ..................................................8
           3.2.1. Label Blocks ........................................8
           3.2.2. VPLS BGP NLRI .......................................9
           3.2.3. PW Setup and Teardown ..............................10
           3.2.4. Signaling PE Capabilities ..........................10
      3.3. BGP VPLS Operation ........................................11
      3.4. Multi-AS VPLS .............................................13
           3.4.1. Method (a): VPLS-to-VPLS Connections at the ASBRs ..13
           3.4.2. Method (b): EBGP Redistribution of VPLS
                  Information between ASBRs ..........................14
           3.4.3. Method (c): Multi-Hop EBGP Redistribution
                  of VPLS Information ................................15
           3.4.4. Allocation of VE IDs across Multiple ASes ..........16
      3.5. Multi-homing and Path Selection ...........................16
      3.6. Hierarchical BGP VPLS .....................................17
   4. Data Plane .....................................................18
      4.1. Encapsulation .............................................18
      4.2. Forwarding ................................................18
           4.2.1. MAC Address Learning ...............................18
           4.2.2. Aging ..............................................19
           4.2.3. Flooding ...........................................19
           4.2.4. Broadcast and Multicast ............................20
           4.2.5. "Split Horizon" Forwarding .........................20
           4.2.6. Qualified and Unqualified Learning .................21
           4.2.7. Class of Service ...................................21
   5. Deployment Options .............................................21
   6. Security Considerations ........................................22
   7. IANA Considerations ............................................23
   8. References .....................................................24
      8.1. Normative References ......................................24
      8.2. Informative References ....................................24
   Appendix A.  Contributors .........................................26
   Appendix B.  Acknowledgements .....................................26





Kompella & Rekhter          Standards Track                     [Page 2]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


1.  Introduction

   Virtual Private LAN Service (VPLS), also known as Transparent LAN
   Service and Virtual Private Switched Network service, is a useful
   service offering.  A Virtual Private LAN appears in (almost) all
   respects as an Ethernet LAN to customers of a Service Provider.
   However, in a VPLS, the customers are not all connected to a single
   LAN; the customers may be spread across a metro or wide area.  In
   essence, a VPLS glues together several individual LANs across a
   packet switched network to appear and function as a single LAN [9].
   This is accomplished by incorporating MAC address learning, flooding,
   and forwarding functions in the context of pseudowires that connect
   these individual LANs across the packet switched network.

   This document details the functions needed to offer VPLS, and then
   goes on to describe a mechanism for the auto-discovery of the
   endpoints of a VPLS as well as for signaling a VPLS.  It also
   describes how VPLS frames are transported over tunnels across a
   packet switched network.  The auto-discovery and signaling mechanism
   uses BGP as the control plane protocol.  This document also briefly
   discusses deployment options, in particular, the notion of decoupling
   functions across devices.

   Alternative approaches include: [14], which allows one to build a
   Layer 2 VPN with Ethernet as the interconnect; and [13], which allows
   one to set up an Ethernet connection across a packet switched
   network.  Both of these, however, offer point-to-point Ethernet
   services.  What distinguishes VPLS from the above two is that a VPLS
   offers a multipoint service.  A mechanism for setting up pseudowires
   for VPLS using the Label Distribution Protocol (LDP) is defined in
   [10].

1.1.  Scope of This Document

   This document has four major parts: defining a VPLS functional model;
   defining a control plane for setting up VPLS; defining the data plane
   for VPLS (encapsulation and forwarding of data); and defining various
   deployment options.

   The functional model underlying VPLS is laid out in Section 2.  This
   describes the service being offered, the network components that
   interact to provide the service, and at a high level their
   interactions.

   The control plane described in this document uses Multiprotocol BGP
   [4] to establish VPLS service, i.e., for the auto-discovery of VPLS
   members and for the setup and teardown of the pseudowires that
   constitute a given VPLS instance.  Section 3 focuses on this, and



Kompella & Rekhter          Standards Track                     [Page 3]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   also describes how a VPLS that spans Autonomous System boundaries is
   set up, as well as how multi-homing is handled.  Using BGP as the
   control plane for VPNs is not new (see [14], [6], and [11]): what is
   described here is based on the mechanisms proposed in [6].

   The forwarding plane and the actions that a participating Provider
   Edge (PE) router offering the VPLS service must take is described in
   Section 4.

   In Section 5, the notion of 'decoupled' operation is defined, and the
   interaction of decoupled and non-decoupled PEs is described.
   Decoupling allows for more flexible deployment of VPLS.

1.2.  Conventions Used in This Document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [1].

2.  Functional Model

   This will be described with reference to the following figure.

                                                       -----
                                                      /  A1 \
        ----                                     ____CE1     |
       /    \          --------       --------  /    |       |
      |  A2 CE2-      /        \     /        PE1     \     /
       \    /   \    /          \___/          | \     -----
        ----     ---PE2                        |  \
                    |                          |   \   -----
                    | Service Provider Network |    \ /     \
                    |                          |     CE5  A5 |
                    |            ___           |   /  \     /
             |----|  \          /   \         PE4_/    -----
             |u-PE|--PE3       /     \       /
             |----|    --------       -------
      ----  /   |    ----
     /    \/    \   /    \               CE = Customer Edge Device
    |  A3 CE3    --CE4 A4 |              PE = Provider Edge Router
     \    /         \    /               u-PE = Layer 2 Aggregation
      ----           ----                A<n> = Customer site n

                        Figure 1: Example of a VPLS







Kompella & Rekhter          Standards Track                     [Page 4]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


2.1.  Terminology

   Terminology similar to that in [6] is used: a Service Provider (SP)
   network with P (Provider-only) and PE (Provider Edge) routers, and
   customers with CE (Customer Edge) devices.  Here, however, there is
   an additional concept, that of a "u-PE", a Layer 2 PE device used for
   Layer 2 aggregation.  The notion of u-PE is described further in
   Section 5.  PE and u-PE devices are "VPLS-aware", which means that
   they know that a VPLS service is being offered.  The term "VE" refers
   to a VPLS edge device, which could be either a PE or a u-PE.

   In contrast, the CE device (which may be owned and operated by either
   the SP or the customer) is VPLS-unaware; as far as the CE is
   concerned, it is connected to the other CEs in the VPLS via a Layer 2
   switched network.  This means that there should be no changes to a CE
   device, either to the hardware or the software, in order to offer
   VPLS.

   A CE device may be connected to a PE or a u-PE via Layer 2 switches
   that are VPLS-unaware.  From a VPLS point of view, such Layer 2
   switches are invisible, and hence will not be discussed further.
   Furthermore, a u-PE may be connected to a PE via Layer 2 and Layer 3
   devices; this will be discussed further in a later section.

   The term "demultiplexor" refers to an identifier in a data packet
   that identifies the VPLS to which the packet belongs as well as the
   ingress PE.  In this document, the demultiplexor is an MPLS label.

   The term "VPLS" will refer to the service as well as a particular
   instantiation of the service (i.e., an emulated LAN); it should be
   clear from the context which usage is intended.

2.2.  Assumptions

   The Service Provider Network is a packet switched network.  The PEs
   are assumed to be (logically) fully meshed with tunnels over which
   packets that belong to a service (such as VPLS) are encapsulated and
   forwarded.  These tunnels can be IP tunnels, such as Generic Routing
   Encapsulation (GRE), or MPLS tunnels, established by Resource
   Reservation Protocol - Traffic Engineering (RSVP-TE) or LDP.  These
   tunnels are established independently of the services offered over
   them; the signaling and establishment of these tunnels are not
   discussed in this document.

   "Flooding" and MAC address "learning" (see Section 4) are an integral
   part of VPLS.  However, these activities are private to an SP device,
   i.e., in the VPLS described below, no SP device requests another SP
   device to flood packets or learn MAC addresses on its behalf.



Kompella & Rekhter          Standards Track                     [Page 5]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   All the PEs participating in a VPLS are assumed to be fully meshed in
   the data plane, i.e., there is a bidirectional pseudowire between
   every pair of PEs participating in that VPLS, and thus every
   (ingress) PE can send a VPLS packet to the egress PE(s) directly,
   without the need for an intermediate PE (see Section 4.2.5.)  This
   requires that VPLS PEs are logically fully meshed in the control
   plane so that a PE can send a message to another PE to set up the
   necessary pseudowires.  See Section 3.6 for a discussion on
   alternatives to achieve a logical full mesh in the control plane.

2.3.  Interactions

   VPLS is a "LAN Service" in that CE devices that belong to a given
   VPLS instance V can interact through the SP network as if they were
   connected by a LAN.  VPLS is "private" in that CE devices that belong
   to different VPLSs cannot interact.  VPLS is "virtual" in that
   multiple VPLSs can be offered over a common packet switched network.

   PE devices interact to "discover" all the other PEs participating in
   the same VPLS, and to exchange demultiplexors.  These interactions
   are control-driven, not data-driven.

   u-PEs interact with PEs to establish connections with remote PEs or
   u-PEs in the same VPLS.  This interaction is control-driven.

   PE devices can participate simultaneously in both VPLS and IP VPNs
   [6].  These are independent services, and the information exchanged
   for each type of service is kept separate as the Network Layer
   Reachability Information (NLRI) used for this exchange has different
   Address Family Identifiers (AFIs) and Subsequent Address Family
   Identifiers (SAFIs).  Consequently, an implementation MUST maintain a
   separate routing storage for each service.  However, multiple
   services can use the same underlying tunnels; the VPLS or VPN label
   is used to demultiplex the packets belonging to different services.

3.  Control Plane

   There are two primary functions of the VPLS control plane: auto-
   discovery, and setup and teardown of the pseudowires that constitute
   the VPLS, often called signaling.  Section 3.1 and Section 3.2
   describe these functions.  Both of these functions are accomplished
   with a single BGP Update advertisement; Section 3.3 describes how
   this is done by detailing BGP protocol operation for VPLS.
   Section 3.4 describes the setting up of pseudowires that span
   Autonomous Systems.  Section 3.5 describes how multi-homing is
   handled.





Kompella & Rekhter          Standards Track                     [Page 6]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


3.1.  Auto-Discovery

   Discovery refers to the process of finding all the PEs that
   participate in a given VPLS instance.  A PE either can be configured
   with the identities of all the other PEs in a given VPLS or can use
   some protocol to discover the other PEs.  The latter is called auto-
   discovery.

   The former approach is fairly configuration-intensive, especially
   since it is required that the PEs participating in a given VPLS are
   fully meshed (i.e., that every PE in a given VPLS establish
   pseudowires to every other PE in that VPLS).  Furthermore, when the
   topology of a VPLS changes (i.e., a PE is added to, or removed from,
   the VPLS), the VPLS configuration on all PEs in that VPLS must be
   changed.

   In the auto-discovery approach, each PE "discovers" which other PEs
   are part of a given VPLS by means of some protocol, in this case BGP.
   This allows each PE's configuration to consist only of the identity
   of the VPLS instance established on this PE, not the identity of
   every other PE in that VPLS instance -- that is auto-discovered.
   Moreover, when the topology of a VPLS changes, only the affected PE's
   configuration changes; other PEs automatically find out about the
   change and adapt.

3.1.1.  Functions

   A PE that participates in a given VPLS instance V must be able to
   tell all other PEs in VPLS V that it is also a member of V.  A PE
   must also have a means of declaring that it no longer participates in
   a VPLS.  To do both of these, the PE must have a means of identifying
   a VPLS and a means by which to communicate to all other PEs.

   U-PE devices also need to know what constitutes a given VPLS;
   however, they don't need the same level of detail.  The PE (or PEs)
   to which a u-PE is connected gives the u-PE an abstraction of the
   VPLS; this is described in Section 5.

3.1.2.  Protocol Specification

   The specific mechanism for auto-discovery described here is based on
   [14] and [6]; it uses BGP extended communities [5] to identify
   members of a VPLS, in particular, the Route Target community, whose
   format is described in [5].  The semantics of the use of Route
   Targets is described in [6]; their use in VPLS is identical.






Kompella & Rekhter          Standards Track                     [Page 7]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   As it has been assumed that VPLSs are fully meshed, a single Route
   Target RT suffices for a given VPLS V, and in effect that RT is the
   identifier for VPLS V.

   A PE announces (typically via I-BGP) that it belongs to VPLS V by
   annotating its NLRIs for V (see next subsection) with Route Target
   RT, and acts on this by accepting NLRIs from other PEs that have
   Route Target RT.  A PE announces that it no longer participates in V
   by withdrawing all NLRIs that it had advertised with Route Target RT.

3.2.  Signaling

   Once discovery is done, each pair of PEs in a VPLS must be able to
   establish (and tear down) pseudowires to each other, i.e., exchange
   (and withdraw) demultiplexors.  This process is known as signaling.
   Signaling is also used to transmit certain characteristics of the
   pseudowires that a PE sets up for a given VPLS.

   Recall that a demultiplexor is used to distinguish among several
   different streams of traffic carried over a tunnel, each stream
   possibly representing a different service.  In the case of VPLS, the
   demultiplexor not only says to which specific VPLS a packet belongs,
   but also identifies the ingress PE.  The former information is used
   for forwarding the packet; the latter information is used for
   learning MAC addresses.  The demultiplexor described here is an MPLS
   label.  However, note that the PE-to-PE tunnels need not be MPLS
   tunnels.

   Using a distinct BGP Update message to send a demultiplexor to each
   remote PE would require the originating PE to send N such messages
   for N remote PEs.  The solution described in this document allows a
   PE to send a single (common) Update message that contains
   demultiplexors for all the remote PEs, instead of N individual
   messages.  Doing this reduces the control plane load both on the
   originating PE as well as on the BGP Route Reflectors that may be
   involved in distributing this Update to other PEs.

3.2.1.  Label Blocks

   To accomplish this, we introduce the notion of "label blocks".  A
   label block, defined by a label base LB and a VE block size VBS, is a
   contiguous set of labels {LB, LB+1, ..., LB+VBS-1}.  Here's how label
   blocks work.  All PEs within a given VPLS are assigned unique VE IDs
   as part of their configuration.  A PE X wishing to send a VPLS update
   sends the same label block information to all other PEs.  Each
   receiving PE infers the label intended for PE X by adding its
   (unique) VE ID to the label base.  In this manner, each receiving PE
   gets a unique demultiplexor for PE X for that VPLS.



Kompella & Rekhter          Standards Track                     [Page 8]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   This simple notion is enhanced with the concept of a VE block offset
   VBO.  A label block defined by <LB, VBO, VBS> is the set {LB+VBO,
   LB+VBO+1, ..., LB+VBO+VBS-1}.  Thus, instead of a single large label
   block to cover all VE IDs in a VPLS, one can have several label
   blocks, each with a different label base.  This makes label block
   management easier, and also allows PE X to cater gracefully to a PE
   joining a VPLS with a VE ID that is not covered by the set of label
   blocks that PE X has already advertised.

   When a PE starts up, or is configured with a new VPLS instance, the
   BGP process may wish to wait to receive several advertisements for
   that VPLS instance from other PEs to improve the efficiency of label
   block allocation.

3.2.2.  VPLS BGP NLRI

   The VPLS BGP NLRI described below, with a new AFI and SAFI (see [4])
   is used to exchange VPLS membership and demultiplexors.

   A VPLS BGP NLRI has the following information elements: a VE ID, a VE
   Block Offset, a VE Block Size, and a label base.  The format of the
   VPLS NLRI is given below.  The AFI is the L2VPN AFI (25), and the
   SAFI is the VPLS SAFI (65).  The Length field is in octets.

      +------------------------------------+
      |  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)             |
      +------------------------------------+

                  Figure 2: BGP NLRI for VPLS Information

   A PE participating in a VPLS must have at least one VE ID.  If the PE
   is the VE, it typically has one VE ID.  If the PE is connected to
   several u-PEs, it has a distinct VE ID for each u-PE.  It may
   additionally have a VE ID for itself, if it itself acts as a VE for
   that VPLS.  In what follows, we will call the PE announcing the VPLS
   NLRI PE-a, and we will assume that PE-a owns VE ID V (either
   belonging to PE-a itself or to a u-PE connected to PE-a).




Kompella & Rekhter          Standards Track                     [Page 9]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   VE IDs are typically assigned by the network administrator.  Their
   scope is local to a VPLS.  A given VE ID should belong to only one
   PE, unless a CE is multi-homed (see Section 3.5).

   A label block is a set of demultiplexor labels used to reach a given
   VE ID.  A VPLS BGP NLRI with VE ID V, VE Block Offset VBO, VE Block
   Size VBS, and label base LB communicates to its peers the following:

       label block for V:  labels from LB to (LB + VBS - 1), and

       remote VE set for V:  from VBO to (VBO + VBS - 1).

   There is a one-to-one correspondence between the remote VE set and
   the label block: VE ID (VBO + n) corresponds to label (LB + n).

3.2.3.  PW Setup and Teardown

   Suppose PE-a is part of VPLS foo and makes an announcement with VE ID
   V, VE Block Offset VBO, VE Block Size VBS, and label base LB.  If
   PE-b is also part of VPLS foo and has VE ID W, PE-b does the
   following:

   1.  checks if W is part of PE-a's 'remote VE set': if VBO <= W < VBO
       + VBS, then W is part of PE-a's remote VE set.  If not, PE-b
       ignores this message, and skips the rest of this procedure.

   2.  sets up a PW to PE-a: the demultiplexor label to send traffic
       from PE-b to PE-a is computed as (LB + W - VBO).

   3.  checks if V is part of any 'remote VE set' that PE-b announced,
       i.e., PE-b checks if V belongs to some remote VE set that PE-b
       announced, say with VE Block Offset VBO', VE Block Size VBS', and
       label base LB'.  If not, PE-b MUST make a new announcement as
       described in Section 3.3.

   4.  sets up a PW from PE-a: the demultiplexor label over which PE-b
       should expect traffic from PE-a is computed as: (LB' + V - VBO').

   If Y withdraws an NLRI for V that X was using, then X MUST tear down
   its ends of the pseudowire between X and Y.

3.2.4.  Signaling PE Capabilities

   The following extended attribute, the "Layer2 Info Extended
   Community", is used to signal control information about the
   pseudowires to be setup for a given VPLS.  The extended community
   value is to be allocated by IANA (currently used value is 0x800A).
   This information includes the Encaps Type (type of encapsulation on



Kompella & Rekhter          Standards Track                    [Page 10]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   the pseudowires), Control Flags (control information regarding the
   pseudowires), and the Maximum Transmission Unit (MTU) to be used on
   the pseudowires.

   The Encaps Type for VPLS is 19.

      +------------------------------------+
      | Extended community type (2 octets) |
      +------------------------------------+
      |  Encaps Type (1 octet)             |
      +------------------------------------+
      |  Control Flags (1 octet)           |
      +------------------------------------+
      |  Layer-2 MTU (2 octet)             |
      +------------------------------------+
      |  Reserved (2 octets)               |
      +------------------------------------+

                 Figure 3: Layer2 Info Extended Community


       0 1 2 3 4 5 6 7
      +-+-+-+-+-+-+-+-+
      |   MBZ     |C|S|      (MBZ = MUST Be Zero)
      +-+-+-+-+-+-+-+-+

                    Figure 4: Control Flags Bit Vector

   With reference to Figure 4, the following bits in the Control Flags
   are defined; the remaining bits, designated MBZ, MUST be set to zero
   when sending and MUST be ignored when receiving this community.

        Name   Meaning

           C   A Control word [7] MUST or MUST NOT be present when
               sending VPLS packets to this PE, depending on whether C
               is 1 or 0, respectively

           S   Sequenced delivery of frames MUST or MUST NOT be used
               when sending VPLS packets to this PE, depending on
               whether S is 1 or 0, respectively

3.3.  BGP VPLS Operation

   To create a new VPLS, say VPLS foo, a network administrator must pick
   an RT for VPLS foo, say RT-foo.  This will be used by all PEs that
   serve VPLS foo.  To configure a given PE, say PE-a, to be part of
   VPLS foo, the network administrator only has to choose a VE ID V for



Kompella & Rekhter          Standards Track                    [Page 11]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   PE-a.  (If PE-a is connected to u-PEs, PE-a may be configured with
   more than one VE ID; in that case, the following is done for each VE
   ID).  The PE may also be configured with a Route Distinguisher (RD);
   if not, it generates a unique RD for VPLS foo.  Say the RD is
   RD-foo-a.  PE-a then generates an initial label block and a remote VE
   set for V, defined by VE Block Offset VBO, VE Block Size VBS, and
   label base LB.  These may be empty.

   PE-a then creates a VPLS BGP NLRI with RD RD-foo-a, VE ID V, VE Block
   Offset VBO, VE Block Size VBS and label base LB.  To this, it
   attaches a Layer2 Info Extended Community and an RT, RT-foo.  It sets
   the BGP Next Hop for this NLRI as itself, and announces this NLRI to
   its peers.  The Network Layer protocol associated with the Network
   Address of the Next Hop for the combination <AFI=L2VPN AFI, SAFI=VPLS
   SAFI> is IP; this association is required by [4], Section 5.  If the
   value of the Length of the Next Hop field is 4, then the Next Hop
   contains an IPv4 address.  If this value is 16, then the Next Hop
   contains an IPv6 address.

   If PE-a hears from another PE, say PE-b, a VPLS BGP announcement with
   RT-foo and VE ID W, then PE-a knows that PE-b is a member of the same
   VPLS (auto-discovery).  PE-a then has to set up its part of a VPLS
   pseudowire between PE-a and PE-b, using the mechanisms in
   Section 3.2.  Similarly, PE-b will have discovered that PE-a is in
   the same VPLS, and PE-b must set up its part of the VPLS pseudowire.
   Thus, signaling and pseudowire setup is also achieved with the same
   Update message.

   If W is not in any remote VE set that PE-a announced for VE ID V in
   VPLS foo, PE-b will not be able to set up its part of the pseudowire
   to PE-a.  To address this, PE-a can choose to withdraw the old
   announcement(s) it made for VPLS foo, and announce a new Update with
   a larger remote VE set and corresponding label block that covers all
   VE IDs that are in VPLS foo.  This, however, may cause some service
   disruption.  An alternative for PE-a is to create a new remote VE set
   and corresponding label block, and announce them in a new Update,
   without withdrawing previous announcements.

   If PE-a's configuration is changed to remove VE ID V from VPLS foo,
   then PE-a MUST withdraw all its announcements for VPLS foo that
   contain VE ID V.  If all of PE-a's links to its CEs in VPLS foo go
   down, then PE-a SHOULD either withdraw all its NLRIs for VPLS foo or
   let other PEs in the VPLS foo know in some way that PE-a is no longer
   connected to its CEs.







Kompella & Rekhter          Standards Track                    [Page 12]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


3.4.  Multi-AS VPLS

   As in [14] and [6], the above auto-discovery and signaling functions
   are typically announced via I-BGP.  This assumes that all the sites
   in a VPLS are connected to PEs in a single Autonomous System (AS).

   However, sites in a VPLS may connect to PEs in different ASes.  This
   leads to two issues: 1) there would not be an I-BGP connection
   between those PEs, so some means of signaling across ASes is needed;
   and 2) there may not be PE-to-PE tunnels between the ASes.

   A similar problem is solved in [6], Section 10.  Three methods are
   suggested to address issue (1); all these methods have analogs in
   multi-AS VPLS.

   Here is a diagram for reference:

     __________       ____________       ____________       __________
    /          \     /            \     /            \     /          \
                \___/        AS 1  \   /  AS 2        \___/
                                    \ /
      +-----+           +-------+    |    +-------+           +-----+
      | PE1 | ---...--- | ASBR1 | ======= | ASBR2 | ---...--- | PE2 |
      +-----+           +-------+    |    +-------+           +-----+
                 ___                / \                ___
                /   \              /   \              /   \
    \__________/     \____________/     \____________/     \__________/

                          Figure 5: Inter-AS VPLS

   As in the above reference, three methods for signaling inter-provider
   VPLS are given; these are presented in order of increasing
   scalability.  Method (a) is the easiest to understand conceptually,
   and the easiest to deploy; however, it requires an Ethernet
   interconnect between the ASes, and both VPLS control and data plane
   state on the AS border routers (ASBRs).  Method (b) requires VPLS
   control plane state on the ASBRs and MPLS on the AS-AS interconnect
   (which need not be Ethernet).  Method (c) requires MPLS on the AS-AS
   interconnect, but no VPLS state of any kind on the ASBRs.

3.4.1.  Method (a): VPLS-to-VPLS Connections at the ASBRs

   In this method, an AS Border Router (ASBR1) acts as a PE for all
   VPLSs that span AS1 and an AS to which ASBR1 is connected, such as
   AS2 here.  The ASBR on the neighboring AS (ASBR2) is viewed by ASBR1
   as a CE for the VPLSs that span AS1 and AS2; similarly, ASBR2 acts as
   a PE for this VPLS from AS2's point of view, and views ASBR1 as a CE.




Kompella & Rekhter          Standards Track                    [Page 13]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   This method does not require MPLS on the ASBR1-ASBR2 link, but does
   require that this link carry Ethernet traffic and that there be a
   separate VLAN sub-interface for each VPLS traversing this link.  It
   further requires that ASBR1 does the PE operations (discovery,
   signaling, MAC address learning, flooding, encapsulation, etc.) for
   all VPLSs that traverse ASBR1.  This imposes a significant burden on
   ASBR1, both on the control plane and the data plane, which limits the
   number of multi-AS VPLSs.

   Note that in general, there will be multiple connections between a
   pair of ASes, for redundancy.  In this case, the Spanning Tree
   Protocol (STP) [15], or some other means of loop detection and
   prevention, must be run on each VPLS that spans these ASes, so that a
   loop-free topology can be constructed in each VPLS.  This imposes a
   further burden on the ASBRs and PEs participating in those VPLSs, as
   these devices would need to run a loop detection algorithm for each
   such VPLS.  How this may be achieved is outside the scope of this
   document.

3.4.2.  Method (b): EBGP Redistribution of VPLS Information between
        ASBRs

   This method requires I-BGP peerings between the PEs in AS1 and ASBR1
   in AS1 (perhaps via route reflectors), an E-BGP peering between ASBR1
   and ASBR2 in AS2, and I-BGP peerings between ASBR2 and the PEs in
   AS2.  In the above example, PE1 sends a VPLS NLRI to ASBR1 with a
   label block and itself as the BGP nexthop; ASBR1 sends the NLRI to
   ASBR2 with new labels and itself as the BGP nexthop; and ASBR2 sends
   the NLRI to PE2 with new labels and itself as the nexthop.
   Correspondingly, there are three tunnels: T1 from PE1 to ASBR1, T2
   from ASBR1 to ASBR2, and T3 from ASBR2 to PE2.  Within each tunnel,
   the VPLS label to be used is determined by the receiving device;
   e.g., the VPLS label within T1 is a label from the label block that
   ASBR1 sent to PE1.  The ASBRs are responsible for receiving VPLS
   packets encapsulated in a tunnel and performing the appropriate label
   swap operations described next so that the next receiving device can
   correctly identify and forward the packet.

   The VPLS NLRI that ASBR1 sends to ASBR2 (and the NLRI that ASBR2
   sends to PE2) is identical to the VPLS NLRI that PE1 sends to ASBR1,
   except for the label block.  To be precise, the Length, the Route
   Distinguisher, the VE ID, the VE Block Offset, and the VE Block Size
   MUST be the same; the Label Base may be different.  Furthermore,
   ASBR1 must also update its forwarding path as follows: if the Label
   Base sent by PE1 is L1, the Label-block Size is N, the Label Base
   sent by ASBR1 is L2, and the tunnel label from ASBR1 to PE1 is T,
   then ASBR1 must install the following in the forwarding path:




Kompella & Rekhter          Standards Track                    [Page 14]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


      swap L2 with L1 and push T,

      swap L2+1 with L1+1 and push T, ...

      swap L2+N-1 with L1+N-1 and push T.

   ASBR2 must act similarly, except that it may not need a tunnel label
   if it is directly connected with ASBR1.

   When PE2 wants to send a VPLS packet to PE1, PE2 uses its VE ID to
   get the right VPLS label from ASBR2's label block for PE1, and uses a
   tunnel label to reach ASBR2.  ASBR2 swaps the VPLS label with the
   label from ASBR1; ASBR1 then swaps the VPLS label with the label from
   PE1, and pushes a tunnel label to reach PE1.

   In this method, one needs MPLS on the ASBR1-ASBR2 interface, but
   there is no requirement that the link layer be Ethernet.
   Furthermore, the ASBRs take part in distributing VPLS information.
   However, the data plane requirements of the ASBRs are much simpler
   than in method (a), being limited to label operations.  Finally, the
   construction of loop-free VPLS topologies is done by routing
   decisions, viz. BGP path and nexthop selection, so there is no need
   to run the Spanning Tree Protocol on a per-VPLS basis.  Thus, this
   method is considerably more scalable than method (a).

3.4.3.  Method (c): Multi-Hop EBGP Redistribution of VPLS Information
        between ASes

   In this method, there is a multi-hop E-BGP peering between the PEs
   (or preferably, a Route Reflector) in AS1 and the PEs (or Route
   Reflector) in AS2.  PE1 sends a VPLS NLRI with labels and nexthop
   self to PE2; if this is via route reflectors, the BGP nexthop is not
   changed.  This requires that there be a tunnel LSP from PE1 to PE2.
   This tunnel LSP can be created exactly as in [6], Section 10 (c), for
   example using E-BGP to exchange labeled IPv4 routes for the PE
   loopbacks.

   When PE1 wants to send a VPLS packet to PE2, it pushes the VPLS label
   corresponding to its own VE ID onto the packet.  It then pushes the
   tunnel label(s) to reach PE2.

   This method requires no VPLS information (in either the control or
   the data plane) on the ASBRs.  The ASBRs only need to set up PE-to-PE
   tunnel LSPs in the control plane, and do label operations in the data
   plane.  Again, as in the case of method (b), the construction of
   loop-free VPLS topologies is done by routing decisions, i.e., BGP





Kompella & Rekhter          Standards Track                    [Page 15]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   path and nexthop selection, so there is no need to run the Spanning
   Tree Protocol on a per-VPLS basis.  This option is likely to be the
   most scalable of the three methods presented here.

3.4.4.  Allocation of VE IDs across Multiple ASes

   In order to ease the allocation of VE IDs for a VPLS that spans
   multiple ASes, one can allocate ranges for each AS.  For example, AS1
   uses VE IDs in the range 1 to 100, AS2 from 101 to 200, etc.  If
   there are 10 sites attached to AS1 and 20 to AS2, the allocated VE
   IDs could be 1-10 and 101 to 120.  This minimizes the number of VPLS
   NLRIs that are exchanged while ensuring that VE IDs are kept unique.

   In the above example, if AS1 needed more than 100 sites, then another
   range can be allocated to AS1.  The only caveat is that there be no
   overlap between VE ID ranges among ASes.  The exception to this rule
   is multi-homing, which is dealt with below.

3.5.  Multi-homing and Path Selection

   It is often desired to multi-home a VPLS site, i.e., to connect it to
   multiple PEs, perhaps even in different ASes.  In such a case, the
   PEs connected to the same site can be configured either with the same
   VE ID or with different VE IDs.  In the latter case, it is mandatory
   to run STP on the CE device, and possibly on the PEs, to construct a
   loop-free VPLS topology.  How this can be accomplished is outside the
   scope of this document; however, the rest of this section will
   describe in some detail the former case.  Note that multi-homing by
   the SP and STP on the CEs can co-exist; thus, it is recommended that
   the VPLS customer run STP if the CEs are able to.

   In the case where the PEs connected to the same site are assigned the
   same VE ID, a loop-free topology is constructed by routing
   mechanisms, in particular, by BGP path selection.  When a BGP speaker
   receives two equivalent NLRIs (see below for the definition), it
   applies standard path selection criteria such as Local Preference and
   AS Path Length to determine which NLRI to choose; it MUST pick only
   one.  If the chosen NLRI is subsequently withdrawn, the BGP speaker
   applies path selection to the remaining equivalent VPLS NLRIs to pick
   another; if none remain, the forwarding information associated with
   that NLRI is removed.

   Two VPLS NLRIs are considered equivalent from a path selection point
   of view if the Route Distinguisher, the VE ID, and the VE Block
   Offset are the same.  If two PEs are assigned the same VE ID in a
   given VPLS, they MUST use the same Route Distinguisher, and they
   SHOULD announce the same VE Block Size for a given VE Offset.




Kompella & Rekhter          Standards Track                    [Page 16]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


3.6.  Hierarchical BGP VPLS

   This section discusses how one can scale the VPLS control plane when
   using BGP.  There are at least three aspects of scaling the control
   plane:

   1.  alleviating the full mesh connectivity requirement among VPLS BGP
       speakers;

   2.  limiting BGP VPLS message passing to just the interested speakers
       rather than all BGP speakers; and

   3.  simplifying the addition and deletion of BGP speakers, whether
       for VPLS or other applications.

   Fortunately, the use of BGP for Internet routing as well as for IP
   VPNs has yielded several good solutions for all these problems.  The
   basic technique is hierarchy, using BGP Route Reflectors (RRs) [8].
   The idea is to designate a small set of Route Reflectors that are
   themselves fully meshed, and then establish a BGP session between
   each BGP speaker and one or more RRs.  In this way, there is no need
   for direct full mesh connectivity among all the BGP speakers.  If the
   particular scaling needs of a provider require a large number of RRs,
   then this technique can be applied recursively: the full mesh
   connectivity among the RRs can be brokered by yet another level of
   RRs.  The use of RRs solves problems 1 and 3 above.

   It is important to note that RRs, as used for VPLS and VPNs, are
   purely a control plane technique.  The use of RRs introduces no data
   plane state and no data plane forwarding requirements on the RRs, and
   does not in any way change the forwarding path of VPLS traffic.  This
   is in contrast to the technique of Hierarchical VPLS defined in [10].

   Another consequence of this approach is that it is not required that
   one set of RRs handles all BGP messages, or that a particular RR
   handle all messages from a given PE.  One can define several sets of
   RRs, for example, a set to handle VPLS, another to handle IP VPNs,
   and another for Internet routing.  Another partitioning could be to
   have some subset of VPLSs and IP VPNs handled by one set of RRs, and
   another subset of VPLSs and IP VPNs handled by another set of RRs;
   the use of Route Target Filtering (RTF), described in [12], can make
   this simpler and more effective.

   Finally, problem 2 (that of limiting BGP VPLS message passing to just
   the interested BGP speakers) is addressed by the use of RTF.  This
   technique is orthogonal to the use of RRs, but works well in
   conjunction with RRs.  RTF is also very effective in inter-AS VPLS;
   more details on how RTF works and its benefits are provided in [12].



Kompella & Rekhter          Standards Track                    [Page 17]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   It is worth mentioning an aspect of the control plane that is often a
   source of confusion.  No MAC addresses are exchanged via BGP.  All
   MAC address learning and aging is done in the data plane individually
   by each PE.  The only task of BGP VPLS message exchange is auto-
   discovery and label exchange.

   Thus, BGP processing for VPLS occurs when

   1.  a PE joins or leaves a VPLS; or

   2.  a failure occurs in the network, bringing down a PE-PE tunnel or
       a PE-CE link.

   These events are relatively rare, and typically, each such event
   causes one BGP update to be generated.  Coupled with BGP's messaging
   efficiency when used for signaling VPLS, these observations lead to
   the conclusion that BGP as a control plane for VPLS will scale quite
   well in terms of both processing and memory requirements.

4.  Data Plane

   This section discusses two aspects of the data plane for PEs and
   u-PEs implementing VPLS: encapsulation and forwarding.

4.1.  Encapsulation

   Ethernet frames received from CE devices are encapsulated for
   transmission over the packet switched network connecting the PEs.
   The encapsulation is as in [7].

4.2.  Forwarding

   VPLS packets are classified as belonging to a given service instance
   and associated forwarding table based on the interface over which the
   packet is received.  Packets are forwarded in the context of the
   service instance based on the destination MAC address.  The former
   mapping is determined by configuration.  The latter is the focus of
   this section.

4.2.1.  MAC Address Learning

   As was mentioned earlier, the key distinguishing feature of VPLS is
   that it is a multipoint service.  This means that the entire Service
   Provider network should appear as a single logical learning bridge
   for each VPLS that the SP network supports.  The logical ports for
   the SP "bridge" are the customer ports as well as the pseudowires on
   a VE.  Just as a learning bridge learns MAC addresses on its ports,
   the SP bridge must learn MAC addresses at its VEs.



Kompella & Rekhter          Standards Track                    [Page 18]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   Learning consists of associating source MAC addresses of packets with
   the (logical) ports on which they arrive; this association is the
   Forwarding Information Base (FIB).  The FIB is used for forwarding
   packets.  For example, suppose the bridge receives a packet with
   source MAC address S on (logical) port P.  If subsequently, the
   bridge receives a packet with destination MAC address S, it knows
   that it should send the packet out on port P.

   If a VE learns a source MAC address S on logical port P, then later
   sees S on a different port P', then the VE MUST update its FIB to
   reflect the new port P'.  A VE MAY implement a mechanism to damp
   flapping of source ports for a given MAC address.

4.2.2.  Aging

   VPLS PEs SHOULD have an aging mechanism to remove a MAC address
   associated with a logical port, much the same as learning bridges do.
   This is required so that a MAC address can be relearned if it "moves"
   from a logical port to another logical port, either because the
   station to which that MAC address belongs really has moved or because
   of a topology change in the LAN that causes this MAC address to
   arrive on a new port.  In addition, aging reduces the size of a VPLS
   MAC table to just the active MAC addresses, rather than all MAC
   addresses in that VPLS.

   The "age" of a source MAC address S on a logical port P is the time
   since it was last seen as a source MAC on port P.  If the age exceeds
   the aging time T, S MUST be flushed from the FIB.  This of course
   means that every time S is seen as a source MAC address on port P,
   S's age is reset.

   An implementation SHOULD provide a configurable knob to set the aging
   time T on a per-VPLS basis.  In addition, an implementation MAY
   accelerate aging of all MAC addresses in a VPLS if it detects certain
   situations, such as a Spanning Tree topology change in that VPLS.

4.2.3.  Flooding

   When a bridge receives a packet to a destination that is not in its
   FIB, it floods the packet on all the other ports.  Similarly, a VE
   will flood packets to an unknown destination to all other VEs in the
   VPLS.

   In Figure 1 above, if CE2 sent an Ethernet frame to PE2, and the
   destination MAC address on the frame was not in PE2's FIB (for that
   VPLS), then PE2 would be responsible for flooding that frame to every





Kompella & Rekhter          Standards Track                    [Page 19]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   other PE in the same VPLS.  On receiving that frame, PE1 would be
   responsible for further flooding the frame to CE1 and CE5 (unless PE1
   knew which CE "owned" that MAC address).

   On the other hand, if PE3 received the frame, it could delegate
   further flooding of the frame to its u-PE.  If PE3 was connected to
   two u-PEs, it would announce that it has two u-PEs.  PE3 could either
   announce that it is incapable of flooding, in which case it would
   receive two frames, one for each u-PE, or it could announce that it
   is capable of flooding, in which case it would receive one copy of
   the frame, which it would then send to both u-PEs.

4.2.4.  Broadcast and Multicast

   There is a well-known broadcast MAC address.  An Ethernet frame whose
   destination MAC address is the broadcast MAC address must be sent to
   all stations in that VPLS.  This can be accomplished by the same
   means that is used for flooding.

   There is also an easily recognized set of "multicast" MAC addresses.
   Ethernet frames with a destination multicast MAC address MAY be
   broadcast to all stations; a VE MAY also use certain techniques to
   restrict transmission of multicast frames to a smaller set of
   receivers, those that have indicated interest in the corresponding
   multicast group.  Discussion of this is outside the scope of this
   document.

4.2.5.  "Split Horizon" Forwarding

   When a PE capable of flooding (say PEx) receives a broadcast Ethernet
   frame, or one with an unknown destination MAC address, it must flood
   the frame.  If the frame arrived from an attached CE, PEx must send a
   copy of the frame to every other attached CE, as well as to all other
   PEs participating in the VPLS.  If, on the other hand, the frame
   arrived from another PE (say PEy), PEx must send a copy of the packet
   only to attached CEs.  PEx MUST NOT send the frame to other PEs,
   since PEy would have already done so.  This notion has been termed
   "split horizon" forwarding and is a consequence of the PEs being
   logically fully meshed for VPLS.

   Split horizon forwarding rules apply to broadcast and multicast
   packets, as well as packets to an unknown MAC address.









Kompella & Rekhter          Standards Track                    [Page 20]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


4.2.6.  Qualified and Unqualified Learning

   The key for normal Ethernet MAC learning is usually just the
   (6-octet) MAC address.  This is called "unqualified learning".
   However, it is also possible that the key for learning includes the
   VLAN tag when present; this is called "qualified learning".

   In the case of VPLS, learning is done in the context of a VPLS
   instance, which typically corresponds to a customer.  If the customer
   uses VLAN tags, one can make the same distinctions of qualified and
   unqualified learning.  If the key for learning within a VPLS is just
   the MAC address, then this VPLS is operating under unqualified
   learning.  If the key for learning is (customer VLAN tag + MAC
   address), then this VPLS is operating under qualified learning.

   Choosing between qualified and unqualified learning involves several
   factors, the most important of which is whether one wants a single
   global broadcast domain (unqualified) or a broadcast domain per VLAN
   (qualified).  The latter makes flooding and broadcasting more
   efficient, but requires larger MAC tables.  These considerations
   apply equally to normal Ethernet forwarding and to VPLS.

4.2.7.  Class of Service

   In order to offer different Classes of Service within a VPLS, an
   implementation MAY choose to map 802.1p bits in a customer Ethernet
   frame with a VLAN tag to an appropriate setting of EXP bits in the
   pseudowire and/or tunnel label, allowing for differential treatment
   of VPLS frames in the packet switched network.

   To be useful, an implementation SHOULD allow this mapping function to
   be different for each VPLS, as each VPLS customer may have its own
   view of the required behavior for a given setting of 802.1p bits.

5.  Deployment Options

   In deploying a network that supports VPLS, the SP must decide what
   functions the VPLS-aware device closest to the customer (the VE)
   supports.  The default case described in this document is that the VE
   is a PE.  However, there are a number of reasons that the VE might be
   a device that does all the Layer 2 functions (such as MAC address
   learning and flooding), and a limited set of Layer 3 functions (such
   as communicating to its PE), but, for example, doesn't do full-
   fledged discovery and PE-to-PE signaling.  Such a device is called a
   "u-PE".






Kompella & Rekhter          Standards Track                    [Page 21]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   As both of these cases have benefits, one would like to be able to
   "mix and match" these scenarios.  The signaling mechanism presented
   here allows this.  For example, in a given provider network, one PE
   may be directly connected to CE devices, another may be connected to
   u-PEs that are connected to CEs, and a third may be connected
   directly to a customer over some interfaces and to u-PEs over others.
   All these PEs perform discovery and signaling in the same manner.
   How they do learning and forwarding depends on whether or not there
   is a u-PE; however, this is a local matter, and is not signaled.
   However, the details of the operation of a u-PE and its interactions
   with PEs and other u-PEs are beyond the scope of this document.

6.  Security Considerations

   The focus in Virtual Private LAN Service is the privacy of data,
   i.e., that data in a VPLS is only distributed to other nodes in that
   VPLS and not to any external agent or other VPLS.  Note that VPLS
   does not offer confidentiality, integrity, or authentication: VPLS
   packets are sent in the clear in the packet switched network, and a
   man-in-the-middle can eavesdrop, and may be able to inject packets
   into the data stream.  If security is desired, the PE-to-PE tunnels
   can be IPsec tunnels.  For more security, the end systems in the VPLS
   sites can use appropriate means of encryption to secure their data
   even before it enters the Service Provider network.

   There are two aspects to achieving data privacy in a VPLS: securing
   the control plane and protecting the forwarding path.  Compromise of
   the control plane could result in a PE sending data belonging to some
   VPLS to another VPLS, or blackholing VPLS data, or even sending it to
   an eavesdropper; none of which are acceptable from a data privacy
   point of view.  Since all control plane exchanges are via BGP,
   techniques such as in [2] help authenticate BGP messages, making it
   harder to spoof updates (which can be used to divert VPLS traffic to
   the wrong VPLS) or withdraws (denial-of-service attacks).  In the
   multi-AS methods (b) and (c) described in Section 3, this also means
   protecting the inter-AS BGP sessions, between the ASBRs, the PEs, or
   the Route Reflectors.  One can also use the techniques described in
   Section 10 (b) and (c) of [6], both for the control plane and the
   data plane.  Note that [2] will not help in keeping VPLS labels
   private -- knowing the labels, one can eavesdrop on VPLS traffic.
   However, this requires access to the data path within a Service
   Provider network.

   There can also be misconfiguration leading to unintentional
   connection of CEs in different VPLSs.  This can be caused, for
   example, by associating the wrong Route Target with a VPLS instance.
   This problem, shared by [6], is for further study.




Kompella & Rekhter          Standards Track                    [Page 22]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   Protecting the data plane requires ensuring that PE-to-PE tunnels are
   well-behaved (this is outside the scope of this document), and that
   VPLS labels are accepted only from valid interfaces.  For a PE, valid
   interfaces comprise links from P routers.  For an ASBR, a valid
   interface is a link from an ASBR in an AS that is part of a given
   VPLS.  It is especially important in the case of multi-AS VPLSs that
   one accept VPLS packets only from valid interfaces.

   MPLS-in-IP and MPLS-in-GRE tunneling are specified in [3].  If it is
   desired to use such tunnels to carry VPLS packets, then the security
   considerations described in Section 8 of that document must be fully
   understood.  Any implementation of VPLS that allows VPLS packets to
   be tunneled as described in that document MUST contain an
   implementation of IPsec that can be used as therein described.  If
   the tunnel is not secured by IPsec, then the technique of IP address
   filtering at the border routers, described in Section 8.2 of that
   document, is the only means of ensuring that a packet that exits the
   tunnel at a particular egress PE was actually placed in the tunnel by
   the proper tunnel head node (i.e., that the packet does not have a
   spoofed source address).  Since border routers frequently filter only
   source addresses, packet filtering may not be effective unless the
   egress PE can check the IP source address of any tunneled packet it
   receives, and compare it to a list of IP addresses that are valid
   tunnel head addresses.  Any implementation that allows MPLS-in-IP
   and/or MPLS-in-GRE tunneling to be used without IPsec MUST allow the
   egress PE to validate in this manner the IP source address of any
   tunneled packet that it receives.

7.  IANA Considerations

   IANA allocated value (25) for AFI for L2VPN information.  This should
   be the same as the AFI requested by [11].

   IANA allocated an extended community value (0x800a) for the Layer2
   Info Extended Community.
















Kompella & Rekhter          Standards Track                    [Page 23]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


8.  References

8.1.  Normative References

   [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, March 1997.

   [2]  Heffernan, A., "Protection of BGP Sessions via the TCP MD5
        Signature Option", RFC 2385, August 1998.

   [3]  Worster, T., Rekhter, Y., and E. Rosen, "Encapsulating MPLS in
        IP or Generic Routing Encapsulation (GRE)", RFC 4023,
        March 2005.

   [4]  Bates, T., Katz, D., and Y. Rekhter, "Multiprotocol Extensions
        for BGP-4", RFC 4760, January 2007.

   [5]  Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended
        Communities Attribute", RFC 4360, February 2006.

   [6]  Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private Networks
        (VPNs)", RFC 4364, February 2006.

   [7]  Martini, L., Rosen, E., El-Aawar, N., and G. Heron,
        "Encapsulation Methods for Transport of Ethernet over MPLS
        Networks", RFC 4448, April 2006.

8.2.  Informative References

   [8]   Bates, T., Chen, E., and R. Chandra, "BGP Route Reflection: An
         Alternative to Full Mesh Internal BGP (IBGP)", RFC 4456,
         April 2006.

   [9]   Andersson, L. and E. Rosen, "Framework for Layer 2 Virtual
         Private Networks (L2VPNs)", RFC 4664, September 2006.

   [10]  Lasserre, M., Ed. and V. Kompella, Ed., "Virtual Private LAN
         Service (VPLS) Using Label Distribution Protocol (LDP)
         Signaling", RFC 4762, January 2007.

   [11]  Ould-Brahim, H., "Using BGP as an Auto-Discovery Mechanism for
         VR-based Layer-3 VPNs", Work in Progress, April 2006.

   [12]  Marques, P., "Constrained VPN Route Distribution", Work in
         Progress, June 2005.






Kompella & Rekhter          Standards Track                    [Page 24]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


   [13]  Martini, L., Rosen, E., El-Aawar, N., Smith, T., and G. Heron,
         "Pseudowire Setup and Maintenance Using the Label Distribution
         Protocol (LDP)", RFC 4447, April 2006.

   [14]  Kompella, K., "Layer 2 VPNs Over Tunnels", Work in Progress,
         January 2006.

   [15]  Institute of Electrical and Electronics Engineers, "Information
         technology - Telecommunications and information exchange
         between systems - Local and metropolitan area networks - Common
         specifications - Part 3: Media Access Control (MAC) Bridges:
         Revision. This is a revision of ISO/IEC 10038: 1993, 802.1j-
         1992 and 802.6k-1992.  It incorporates P802.11c, P802.1p and
         P802.12e.  ISO/IEC 15802-3: 1998.", IEEE Standard 802.1D,
         July 1998.




































Kompella & Rekhter          Standards Track                    [Page 25]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


Appendix A.  Contributors

   The following contributed to this document:

           Javier Achirica, Telefonica
           Loa Andersson, Acreo
           Giles Heron, Tellabs
           Sunil Khandekar, Alcatel-Lucent
           Chaitanya Kodeboyina, Nuova Systems
           Vach Kompella, Alcatel-Lucent
           Marc Lasserre, Alcatel-Lucent
           Pierre Lin
           Pascal Menezes
           Ashwin Moranganti, Appian
           Hamid Ould-Brahim, Nortel
           Seo Yeong-il, Korea Tel

Appendix B.  Acknowledgements

   Thanks to Joe Regan and Alfred Nothaft for their contributions.  Many
   thanks too to Eric Ji, Chaitanya Kodeboyina, Mike Loomis, and Elwyn
   Davies for their detailed reviews.





























Kompella & Rekhter          Standards Track                    [Page 26]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


Editors' Addresses

   Kireeti Kompella
   Juniper Networks
   1194 N. Mathilda Ave.
   Sunnyvale, CA  94089
   US

   EMail: kireeti@juniper.net


   Yakov Rekhter
   Juniper Networks
   1194 N. Mathilda Ave.
   Sunnyvale, CA  94089
   US

   EMail: yakov@juniper.net

































Kompella & Rekhter          Standards Track                    [Page 27]
^L
RFC 4761       BGP Auto-Discovery and Signaling for VPLS    January 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.







Kompella & Rekhter          Standards Track                    [Page 28]
^L