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
|
Network Working Group S. Bryant
Request for Comments: 4385 G. Swallow
Category: Standards Track L. Martini
Cisco Systems
D. McPherson
Arbor Networks
February 2006
Pseudowire Emulation Edge-to-Edge (PWE3)
Control Word for Use over an MPLS PSN
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 Internet Society (2006).
Abstract
This document describes the preferred design of a Pseudowire
Emulation Edge-to-Edge (PWE3) Control Word to be used over an MPLS
packet switched network, and the Pseudowire Associated Channel
Header. The design of these fields is chosen so that an MPLS Label
Switching Router performing MPLS payload inspection will not confuse
a PWE3 payload with an IP payload.
1. Introduction
The standard MPLS encapsulations have no explicit protocol
identifier. In order for a pseudowire (PW) [RFC3985] to operate
correctly over an MPLS packet switched network (PSN) that performs
MPLS payload inspection, a PW packet must not appear to a label
switching router (LSR) as if it were an IP packet [BCP]. An example
of an LSR that performs MPLS payload inspection is one that is
performing equal-cost multiple-path load-balancing (ECMP) [RFC2992].
If ECMP were performed on PW packets, the packets in the PW may not
all follow the same path through the PSN. This may result in
misordered packet delivery to the egress PE. The inability to ensure
that all packets belonging to a PW follow the same path may also
prevent the PW Operations and Management (OAM) [VCCV] mechanism from
correctly monitoring the PW.
Bryant, et al. Standards Track [Page 1]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
This document specifies how the PW control word is used to
distinguish a PW payload from an IP payload carried over an MPLS PSN.
It then describes the preferred design of a PW Control Word to be use
over an MPLS PSN, and the Pseudowire Associated Channel Header.
1.1. 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 [RFC2119].
2. Avoiding ECMP
A PW that is carried over an MPLS PSN that uses the contents of the
MPLS payload to select the ECMP path may be subjected to packet
misordering [BCP]. In cases where the application using the PW is
sensitive to packet misordering, or where packet misordering will
disrupt the operation of the PW, it is necessary to prevent the PW
being subjected to ECMP.
All IP packets [RFC791] [RFC2460] start with a version number that is
checked by LSRs performing MPLS payload inspection. To prevent the
incorrect processing of packets carried within a PW, PW packets
carried over an MPLS PSN MUST NOT start with the value 4 (IPv4) or
the value 6 (IPv6) in the first nibble [BCP], as those are assumed to
carry normal IP payloads.
This document defines a PW header and two general formats of that
header. These two formats are the PW MPLS Control Word (PWMCW),
which is used for data passing across the PW, and a PW Associated
Channel Header (PWACH), which can be used for functions such as OAM.
If the first nibble of a PW packet carried over an MPLS PSN has a
value of 0, this indicates that the packet starts with a PWMCW. If
the first nibble of a packet carried over an MPLS PSN has a value of
1, it starts with a PWACH. The use of any other first nibble value
for a PW packet carried over an MPLS PSN is deprecated.
If a PW is sensitive to packet misordering and is being carried over
an MPLS PSN that uses the contents of the MPLS payload to select the
ECMP path, it MUST employ a mechanism that prevents packet
misordering. A suitable mechanism is the PWMCW described in Section
3 for data, and the PWACH described in Section 5 for channel-
associated traffic.
The PWMCW or the PWACH MUST immediately follow the bottom of the MPLS
label stack.
Bryant, et al. Standards Track [Page 2]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
3. Generic PW MPLS Control Word
The Generic PW MPLS Control Word (PWMCW) is shown in Figure 1.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0| Specified by PW Encapsulation |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Generic PW MPLS Control Word
The PW set-up protocol or configuration mechanism determines whether
a PW uses a PWMCW. Bits 0..3 differ from the first four bits of an
IP packet [BCP] and hence provide the necessary MPLS payload
discrimination.
When a PWMCW is used, it MUST adhere to the Generic format
illustrated in Figure 1 above. To provide consistency between the
designs of different types of PW, it SHOULD also use the following
preferred format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0| Flags |FRG| Length | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Preferred PW MPLS Control Word
The meaning of the fields of the Preferred PW MPLS Control Word
(Figure 2) is as follows:
Flags (bits 4 to 7):
These bits MAY be used by for per-payload signaling. Their
semantics MUST be defined in the PW specification.
FRG (bits 8 and 9):
These bits are used when fragmenting a PW payload. Their use
is described in [FRAG], which is currently a work in progress.
When the PW is of a type that will never need payload
fragmentation, these bits may be used as general purpose
flags.
Bryant, et al. Standards Track [Page 3]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
Length (bits 10 to 15):
When the PSN path between the PEs includes an Ethernet
segment, the PW packet arriving at the CE-bound PE from the
PSN may include padding appended by the Ethernet Data Link
Layer. The CE-bound PE uses the length field to determine
the size of the padding added by the PSN, and hence extract
the PW payload from the PW packet.
If the MPLS payload is less than 64 bytes, the length field
MUST be set to the length of the PW payload plus the length
of the PWMCW. Otherwise it MUST be set to zero.
Sequence number (Bit 16 to 31):
The sequence number implements the sequencing function
[RFC3985]. The use of this field is described in Section 4.
4. Sequencing
The sequence number mechanism is PW specific. The PW encapsulation
specification MAY define a sequence number mechanism to be used, or
it may indicate that the mechanism described here is to be used. A
pseudo-code description of this mechanism is given in the non-
normative Appendix.
The sequence number mechanism described here uses a circular unsigned
16-bit number space that excludes the value zero.
4.1. Setting the Sequence Number
For a given PW, and a pair of routers PE1 and PE2, if PE1 supports
packet sequencing and packet sequencing is enabled for the PW, then
the following procedures MUST be used:
o The initial packet transmitted on the PW MUST be sent with
sequence number one.
o Subsequent packets MUST increment the sequence number by one for
each packet.
o The sequence number that follows 65535 (maximum unsigned 16-bit
number) is one.
If the transmitting router PE1 does not support sequence number
processing, or packet sequencing is disabled, then the sequence
number field in the control word MUST be set to zero for all packets
transmitted on the PW.
Bryant, et al. Standards Track [Page 4]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
4.2. Processing the Sequence Number
If a router PE2 supports receive sequence number processing, and
packet sequencing is enabled for this PW, then the following
procedure is used:
When a PW is initially set up, the "expected sequence number"
associated with it MUST be initialized to one.
When a packet is received on that PW, the sequence number SHOULD be
processed as follows:
o If the sequence number on the packet is zero, the sequence
integrity of the packets cannot be determined. In this case, the
received packet is considered to be in order.
o Otherwise if the packet sequence number equals the expected
sequence number, the packet is in order.
o Otherwise if the packet sequence number is greater than the
expected sequence number, and the packet sequence number minus
the expected sequence number is less than 32768, the packet is
within the allowed receive sequence number window. The
implementation MAY treat the packet as in order.
o Otherwise if the packet sequence number is less than the expected
sequence number and the expected sequence number minus the packet
sequence number is greater than or equal to 32768, the packet is
within the allowed receive sequence number window. The
implementation MAY treat the packet as in order.
o Otherwise the packet is out of order.
If the packet is found to be in order, it MAY be delivered
immediately.
If the packet sequence number was not zero, then the expected
sequence number is set to the packet sequence number plus one. The
expected sequence number that follows 65535 (maximum unsigned 16-bit
number) is one.
Packets that are received out of order MAY either be dropped or
reordered. The choice between dropping or reordering an out-of-
sequence packet is at the discretion of the receiver.
If a PE negotiated not to use receive sequence number processing, and
it received a non-zero sequence number, then it SHOULD send a PW
status message indicating a receive fault, and disable the PW.
Bryant, et al. Standards Track [Page 5]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
5. PW Associated Channel
For some PW features, an associated channel is required. An
associated channel is a channel that is multiplexed in the PW with
user traffic, and thus follows the same path through the PSN as user
traffic. Note that the use of the term "channel" is not a "PW
channel type" as used in subsection 5.1.2 of [RFC3985].
When MPLS is used as the PSN, the PW Associated Channel (PWAC) is
identified by the following header:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version| Reserved | Channel Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: PW Associated Channel Header
The meanings of the fields in the PW Associated Channel Header
(PWACH) (Figure 3) are:
Version:
This is the version number of the PWACH. This specification
defines version 0.
Reserved:
MUST be sent as 0, and ignored on reception.
Channel Type:
The PW Associated Channel Type is defined in the IANA PW
Associated Channel Type registry [IANA].
Bits 0..3 MUST be 0001. This allows the packet to be distinguished
from an IP packet [BCP] and from a PW data packet.
6. IANA Considerations
IANA has set up a registry of "Pseudowire Associated Channel Types".
These are 16-bit values. Registry entries are assigned by using the
"IETF Consensus" policy defined in [RFC2434]. The value 0x21
indicates that the Associated Channel carries an IPv4 packet. The
value 0x57 indicates that the Associated Channel carries an IPv6
packet.
Bryant, et al. Standards Track [Page 6]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
7. Security Considerations
An application using a PW Associated Channel must be aware that the
channel can potentially be misused. Any application using the
Associated Channel MUST therefore fully consider the resultant
security issues, and provide mechanisms to prevent an attacker from
using this as a mechanism to disrupt the operation of the PW or the
PE, and to stop this channel from being used as a conduit to deliver
packets elsewhere. The selection of a suitable security mechanism
for an application using a PW Associated Channel is outside the scope
of this document.
If a PW has been configured to operate without a CW, the PW
Associated Channel Type mechanism described in the document MUST NOT
be used. This is to prevent user payloads being fabricated in such a
way that they mimic the PW Associated Channel Header, and thereby
provide a method of attacking the application that is using the
Associated Channel.
8. Acknowledgements
The authors wish to thank David Allan, Thomas Nadeau, Yaakov Stein,
and Mark Townsley for their input to this work.
Bryant, et al. Standards Track [Page 7]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
9. Normative References
[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September
1981.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
10. Informative References
[BCP] Swallow, G., Bryant, S., and L. Andersson, "Avoiding Equal
Cost Multipath Treatment in MPLS Networks", Work in
Progress, September 2005.
[FRAG] Malis, A. and M. Townsley, "PWE3 Fragmentation and
Reassembly", Work in Progress, November 2005.
[IANA] Martini, L., "IANA Allocations for Pseudowire Edge to Edge
Emulation (PWE3)", Work in Progress, November 2005.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998.
[RFC2992] Hopps, C., "Analysis of an Equal-Cost Multi-Path
Algorithm", RFC 2992, November 2000.
[RFC3985] Bryant, S. and P. Pate, "Pseudo Wire Emulation Edge-to-
Edge (PWE3) Architecture", RFC 3985, March 2005.
[VCCV] Nadeau, T. and R. Aggarwal, "Pseudowire Virtual Circuit
Connectivity Verification (VCCV)", Work in Progress,
August 2005.
Bryant, et al. Standards Track [Page 8]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
Appendix. Sequence Number Processing
This appendix is non-normative.
This appendix provides a pseudo-code description of the sequence
number processing mechanism described in Section 4.2.
unsigned16 RECEIVED /* packet sequence number
unsigned16 EXPECTED = 1 /* expected sequence number
/* initialized to one
boolean sequencingDisabled
boolean dropOutOfOrder /* policy on in-window out of sequence
/* packets
updateExpected()
begin
EXPECTED := RECEIVED + 1;
/* Because EXPECTED is an unsigned16 it will wrap
/* from 65535 to 0
/* zero is skipped
if (EXPECTED = 0)
EXPECTED := 1;
return;
end;
On receipt of a PW packet from PSN:
begin
if (RECEIVED = 0) then begin
processPacket();
return;
end;
if (sequencingDisabled) then begin
/* A packet was received with non-zero sequence number, but
/* sequencing is disabled
indicateReceiveFault();
disablePW();
return;
end;
/* The received sequence is the expected sequence number
if ((RECEIVED = EXPECTED) then begin
/* packet is in order
processPacket();
updateExpected();
return;
end;
Bryant, et al. Standards Track [Page 9]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
/* Test for received sequence number is greater than
/* the expected sequence number and is within the
/* allowed receive sequence number window
if ((RECEIVED > EXPECTED) and
((RECEIVED - EXPECTED) < 32768) then begin
/* packet is in the window, but there are late/missing
/* packets
if (dropOutOfOrder) then begin
/* policy is to receive immediately, dropping
/* out of sequence packets
processPacket();
updateExpected();
return;
end else begin
/* policy is to wait for late packets
processMissingPackets();
return;
end;
end;
/* Test for the received sequence is less than the
/* expected sequence number and is within the allowed
/* receive sequence number window
if ((RECEIVED < EXPECTED) and
((EXPECTED - RECEIVED) >= 32768) then begin
/* packet is in the window, but there are late/missing
/* packets
if (dropOutOfOrder) then begin
/* policy is to receive immediately, dropping
/* out of sequence packets
processPacket();
updateExpected();
return;
end else begin
/* policy is to wait for late packets
processMissingPackets();
return;
end;
end;
/* Received packet was outside the allowed receive
/* sequence number window
processOutOfWindow();
end;
Bryant, et al. Standards Track [Page 10]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
Authors' Addresses
Stewart Bryant
Cisco Systems,
250, Longwater,
Green Park,
Reading, RG2 6GB,
United Kingdom.
EMail: stbryant@cisco.com
George Swallow
Cisco Systems, Inc.
1414 Massachusetts Ave
Boxborough, MA 01719
EMail: swallow@cisco.com
Luca Martini
Cisco Systems, Inc.
9155 East Nichols Avenue, Suite 400
Englewood, CO, 80112
EMail: lmartini@cisco.com
Danny McPherson
Arbor Networks, Inc.
EMail: danny@arbor.net
Bryant, et al. Standards Track [Page 11]
^L
RFC 4385 PW3 Control Word for Use over an MPLS PSN February 2006
Full Copyright Statement
Copyright (C) The Internet Society (2006).
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 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 provided by the IETF
Administrative Support Activity (IASA).
Bryant, et al. Standards Track [Page 12]
^L
|