summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7510.txt
blob: 417e783c0c6e7abf8aeb5a8fcded05f57e0384e1 (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
Internet Engineering Task Force (IETF)                             X. Xu
Request for Comments: 7510                           Huawei Technologies
Category: Standards Track                                       N. Sheth
ISSN: 2070-1721                                         Juniper Networks
                                                                 L. Yong
                                                              Huawei USA
                                                               R. Callon
                                                        Juniper Networks
                                                                D. Black
                                                         EMC Corporation
                                                              April 2015


                       Encapsulating MPLS in UDP

Abstract

   This document specifies an IP-based encapsulation for MPLS, called
   MPLS-in-UDP for situations where UDP (User Datagram Protocol)
   encapsulation is preferred to direct use of MPLS, e.g., to enable
   UDP-based ECMP (Equal-Cost Multipath) or link aggregation.  The MPLS-
   in-UDP encapsulation technology must only be deployed within a single
   network (with a single network operator) or networks of an adjacent
   set of cooperating network operators where traffic is managed to
   avoid congestion, rather than over the Internet where congestion
   control is required.  Usage restrictions apply to MPLS-in-UDP usage
   for traffic that is not congestion controlled and to UDP zero
   checksum usage with IPv6.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7510.









Xu, et al.                   Standards Track                    [Page 1]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


Copyright Notice

   Copyright (c) 2015 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Existing Encapsulations . . . . . . . . . . . . . . . . .   3
     1.2.  Motivations for MPLS-in-UDP Encapsulation . . . . . . . .   4
     1.3.  Applicability Statements  . . . . . . . . . . . . . . . .   4
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Encapsulation in UDP  . . . . . . . . . . . . . . . . . . . .   5
     3.1.  UDP Checksum Usage with IPv6  . . . . . . . . . . . . . .   6
     3.2.  Middlebox Considerations for IPv6 UDP Zero Checksums  . .  10
   4.  Processing Procedures . . . . . . . . . . . . . . . . . . . .  10
   5.  Congestion Considerations . . . . . . . . . . . . . . . . . .  11
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  13
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  15
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  15
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .  15
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  16
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  17
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  18
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  19
















Xu, et al.                   Standards Track                    [Page 2]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


1.  Introduction

   This document specifies an IP-based encapsulation for MPLS, i.e.,
   MPLS-in-UDP, which is applicable in some circumstances where IP-based
   encapsulation for MPLS is required and further fine-grained load
   balancing of MPLS packets over IP networks over Equal-Cost Multipath
   (ECMP) and/or Link Aggregation Groups (LAGs) is required as well.
   There are already IP-based encapsulations for MPLS that allow for
   fine-grained load balancing by using some special field in the
   encapsulation header as an entropy field.  However, MPLS-in-UDP can
   be advantageous since networks have used the UDP port number fields
   as a basis for load-balancing solutions for some time.

   Like other IP-based encapsulation methods for MPLS, this
   encapsulation allows for two Label Switching Routers (LSR) to be
   adjacent on a Label Switched Path (LSP), while separated by an IP
   network.  In order to support this encapsulation, each LSR needs to
   know the capability to decapsulate MPLS-in-UDP by the remote LSRs.
   This specification defines only the data-plane encapsulation and does
   not concern itself with how the knowledge to use this encapsulation
   is conveyed.  Specifically, this capability can be either manually
   configured on each LSR or dynamically advertised in manners that are
   outside the scope of this document.

   Similarly, the MPLS-in-UDP encapsulation format defined in this
   document by itself cannot ensure the integrity and privacy of data
   packets being transported through the MPLS-in-UDP tunnels and cannot
   enable the tunnel decapsulators to authenticate the tunnel
   encapsulator.  Therefore, in the case where any of the above security
   issues is concerned, the MPLS-in-UDP SHOULD be secured with IPsec
   [RFC4301] or Datagram Transport Layer Security (DTLS) [RFC6347].  For
   more details, please see Section 6 (Security Considerations).

1.1.  Existing Encapsulations

   Currently, there are several IP-based encapsulations for MPLS such as
   MPLS-in-IP, MPLS-in-GRE (Generic Routing Encapsulation) [RFC4023],
   and MPLS-in-L2TPv3 (Layer 2 Tunneling Protocol Version 3) [RFC4817].
   In all these methods, the IP addresses can be varied to achieve load
   balancing.

   All these IP-based encapsulations for MPLS are specified for both
   IPv4 and IPv6.  In the case of IPv6-based encapsulations, the IPv6
   Flow Label can be used for ECMP and LAGs [RFC6438].  However, there
   is no such entropy field in the IPv4 header.






Xu, et al.                   Standards Track                    [Page 3]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   For MPLS-in-GRE as well as MPLS-in-L2TPv3, protocol fields (the GRE
   Key and the L2TPv3 Session ID, respectively) can be used as the load-
   balancing key as described in [RFC5640].  For this, intermediate
   routers need to understand these fields in the context of being used
   as load-balancing keys.

1.2.  Motivations for MPLS-in-UDP Encapsulation

   Most existing routers in IP networks are already capable of
   distributing IP traffic "microflows" [RFC2474] over ECMPs and/or LAG
   based on the hash of the five-tuple of UDP [RFC768] and TCP packets
   (i.e., source IP address, destination IP address, source port,
   destination port, and protocol).  By encapsulating the MPLS packets
   into a UDP tunnel and using the source port of the UDP header as an
   entropy field, the existing load-balancing capability as mentioned
   above can be leveraged to provide fine-grained load balancing of MPLS
   traffic over IP networks.

1.3.  Applicability Statements

   The MPLS-in-UDP encapsulation technology MUST only be deployed within
   a single network (with a single network operator) or networks of an
   adjacent set of cooperating network operators where traffic is
   managed to avoid congestion, rather than over the Internet where
   congestion control is required.  Furthermore, packet filters SHOULD
   be added to prevent MPLS-in-UDP packets from escaping from the
   network due to misconfiguration or packet errors.

2.  Terminology

   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].


















Xu, et al.                   Standards Track                    [Page 4]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


3.  Encapsulation in UDP

   MPLS-in-UDP encapsulation format is shown as follows:

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Source Port = Entropy      |       Dest Port = MPLS        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           UDP Length          |        UDP Checksum           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                       MPLS Label Stack                        ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                                                               |
     ~                         Message Body                          ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Source Port of UDP

         This field contains a 16-bit entropy value that is generated by
         the encapsulator to uniquely identify a flow.  What constitutes
         a flow is locally determined by the encapsulator and therefore
         is outside the scope of this document.  What algorithm is
         actually used by the encapsulator to generate an entropy value
         is outside the scope of this document.

         In case the tunnel does not need entropy, this field of all
         packets belonging to a given flow SHOULD be set to a randomly
         selected constant value so as to avoid packet reordering.

         To ensure that the source port number is always in the range
         49152 to 65535 (note that those ports less than 49152 are
         reserved by IANA to identify specific applications/protocols),
         which may be required in some cases, instead of calculating a
         16-bit hash, the encapsulator SHOULD calculate a 14-bit hash
         and use those 14 bits as the least significant bits of the
         source port field.  Also, the most significant two bits SHOULD
         be set to binary 11.  That still conveys 14 bits of entropy
         information, which would be enough in practice.

      Destination Port of UDP

         This field is set to a value (6635) allocated by IANA to
         indicate that the UDP tunnel payload is an MPLS packet.



Xu, et al.                   Standards Track                    [Page 5]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


      UDP Length

         The usage of this field is in accordance with the current UDP
         specification [RFC768].

      UDP Checksum

         For IPv4 UDP encapsulation, this field is RECOMMENDED to be set
         to zero for performance or implementation reasons because the
         IPv4 header includes a checksum and use of the UDP checksum is
         optional with IPv4, unless checksum protection of VPN labels is
         important (see Section 6).  For IPv6 UDP encapsulation, the
         IPv6 header does not include a checksum, so this field MUST
         contain a UDP checksum that MUST be used as specified in
         [RFC768] and [RFC2460] unless one of the exceptions that allows
         use of UDP zero-checksum mode (as specified in [RFC6935])
         applies.  See Section 3.1 for specification of these exceptions
         and additional requirements that apply when UDP zero-checksum
         mode is used for MPLS-in-UDP traffic over IPv6.

      MPLS Label Stack

         This field contains an MPLS Label Stack as defined in
         [RFC3032].

      Message Body

         This field contains one MPLS message body.

3.1.  UDP Checksum Usage with IPv6

   When UDP is used over IPv6, the UDP checksum is relied upon to
   protect both the IPv6 and UDP headers from corruption and MUST be
   used unless the requirements in [RFC6935] and [RFC6936] for use of
   UDP zero-checksum mode with a tunnel protocol are satisfied.  MPLS-
   in-UDP is a tunnel protocol, and there is significant successful
   deployment of MPLS-in-IPv6 without UDP (i.e., without a checksum that
   covers the IPv6 header or the MPLS label stack), as described in
   Section 3.1 of [RFC6936]:

      There is extensive experience with deployments using tunnel
      protocols in well-managed networks (e.g., corporate networks and
      service provider core networks).  This has shown the robustness of
      methods such as Pseudowire Emulation Edge-to-Edge (PWE3) and MPLS
      that do not employ a transport protocol checksum and that have not
      specified mechanisms to protect from corruption of the unprotected
      headers (such as the VPN Identifier in MPLS).




Xu, et al.                   Standards Track                    [Page 6]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   The UDP checksum MUST be implemented and MUST be used in accordance
   with [RFC768] and [RFC2460] for MPLS-in-UDP traffic over IPv6 unless
   one or more of the following exceptions applies and the additional
   requirements stated below are complied with.  There are three
   exceptions that allow use of UDP zero-checksum mode for IPv6 with
   MPLS-in-UDP, subject to the additional requirements stated below in
   this section.  The three exceptions are:

   a.  Use of MPLS-in-UDP in networks under single administrative
       control (such as within a single operator's network) where it is
       known (perhaps through knowledge of equipment types and lower-
       layer checks) that packet corruption is exceptionally unlikely
       and where the operator is willing to take the risk of undetected
       packet corruption.

   b.  Use of MPLS-in-UDP in networks under single administrative
       control (such as within a single operator's network) where it is
       judged through observational measurements (perhaps of historic or
       current traffic flows that use a non-zero checksum) that the
       level of packet corruption is tolerably low and where the
       operator is willing to take the risk of undetected packet
       corruption.

   c.  Use of MPLS-in-UDP for traffic delivery for applications that are
       tolerant of misdelivered or corrupted packets (perhaps through
       higher-layer checksum, validation, and retransmission or
       transmission redundancy) where the operator is willing to rely on
       the applications using the tunnel to survive any corrupt packets.

   These exceptions may also be extended to the use of MPLS-in-UDP
   within a set of closely cooperating network administrations (such as
   network operators who have agreed to work together in order to
   jointly provide specific services).  Even when one of the above
   exceptions applies, use of UDP checksums may be appropriate when VPN
   services are provided over MPLS-in-UDP; see Section 6.

   As such, for IPv6, the UDP checksum for MPLS-in-UDP MUST be used as
   specified in [RFC768] and [RFC2460] for tunnels that span multiple
   networks whose network administrations do not cooperate closely, even
   if each non-cooperating network administration independently
   satisfies one or more of the exceptions for UDP zero-checksum mode
   usage with MPLS-in-UDP over IPv6.

   The following additional requirements apply to implementation and use
   of UDP zero-checksum mode for MPLS-in-UDP over IPv6:

   a.  Use of the UDP checksum with IPv6 MUST be the default
       configuration of all MPLS-in-UDP implementations.



Xu, et al.                   Standards Track                    [Page 7]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   b.  The MPLS-in-UDP implementation MUST comply with all requirements
       specified in Section 4 of [RFC6936] and with requirement 1
       specified in Section 5 of [RFC6936].

   c.  The tunnel decapsulator SHOULD only allow the use of UDP zero-
       checksum mode for IPv6 on a single received UDP Destination Port
       regardless of the encapsulator.  The motivation for this
       requirement is possible corruption of the UDP Destination Port,
       which may cause packet delivery to the wrong UDP port.  If that
       other UDP port requires the UDP checksum, the misdelivered packet
       will be discarded

   d.  The tunnel decapsulator MUST check that the source and
       destination IPv6 addresses are valid for the MPLS-in-UDP tunnel
       on which the packet was received if that tunnel uses UDP zero-
       checksum mode and discard any packet for which this check fails.

   e.  The tunnel encapsulator SHOULD use different IPv6 addresses for
       each MPLS-in-UDP tunnel that uses UDP zero-checksum mode
       (regardless of decapsulator) in order to strengthen the
       decapsulator's check of the IPv6 source address (i.e., the same
       IPv6 source address SHOULD NOT be used with more than one IPv6
       destination address, independent of whether that destination
       address is a unicast or multicast address).  When this is not
       possible, it is RECOMMENDED to use each source IPv6 address for
       as few UDP zero-checksum mode MPLS-in-UDP tunnels (i.e., with as
       few destination IPv6 addresses) as is feasible.

   f.  Any middlebox support for MPLS-in-UDP with UDP zero-checksum mode
       for IPv6 MUST comply with requirements 1 and 8-10 in Section 5 of
       [RFC6936].

   g.  Measures SHOULD be taken to prevent IPv6 traffic with zero UDP
       checksums from "escaping" to the general Internet; see Section 5
       for examples of such measures.

   h.  IPv6 traffic with zero UDP checksums MUST be actively monitored
       for errors by the network operator.

   The above requirements do not change either the requirements
   specified in [RFC2460] as modified by [RFC6935] or the requirements
   specified in [RFC6936].

   The requirement to check the source IPv6 address in addition to the
   destination IPv6 address, plus the strong recommendation against
   reuse of source IPv6 addresses among MPLS-in-UDP tunnels collectively
   provide some mitigation for the absence of UDP checksum coverage of
   the IPv6 header.  In addition, the MPLS data plane only forwards



Xu, et al.                   Standards Track                    [Page 8]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   packets with valid labels (i.e., labels that have been distributed by
   the tunnel egress LSR), providing some additional opportunity to
   detect MPLS-in-UDP packet misdelivery when the misdelivered packet
   contains a label that is not valid for forwarding at the receiving
   LSR.  The expected result for IPv6 UDP zero-checksum mode for MPLS-
   in-UDP is that corruption of the destination IPv6 address will
   usually cause packet discard, as offsetting corruptions to the source
   IPv6 and/or MPLS top label are unlikely.  Additional assurance is
   provided by the restrictions in the above exceptions that limit usage
   of IPv6 UDP zero-checksum mode to well-managed networks for which
   MPLS packet corruption has not been a problem in practice.

   Hence, MPLS-in-UDP is suitable for transmission over lower layers in
   the well-managed networks that are allowed by the exceptions stated
   above, and the rate of corruption of the inner IP packet on such
   networks is not expected to increase by comparison to MPLS traffic
   that is not encapsulated in UDP.  For these reasons, MPLS-in-UDP does
   not provide an additional integrity check when UDP zero-checksum mode
   is used with IPv6, and this design is in accordance with requirements
   2, 3, and 5 specified in Section 5 of [RFC6936].

   MPLS does not accumulate incorrect state as a consequence of label
   stack corruption.  A corrupt MPLS label results in either packet
   discard or forwarding (and forgetting) of the packet without
   accumulation of MPLS protocol state.  Active monitoring of MPLS-in-
   UDP traffic for errors is REQUIRED as occurrence of errors will
   result in some accumulation of error information outside the MPLS
   protocol for operational and management purposes.  This design is in
   accordance with requirement 4 specified in Section 5 of [RFC6936].

   The remaining requirements specified in Section 5 of [RFC6936] are
   inapplicable to MPLS-in-UDP.  Requirements 6 and 7 do not apply
   because MPLS does not have an MPLS-generic control feedback
   mechanism.  Requirements 8-10 are middlebox requirements that do not
   apply to MPLS-in-UDP tunnel endpoints, but see Section 3.2 for
   further middlebox discussion.

   In summary, UDP zero-checksum mode for IPv6 is allowed to be used
   with MPLS-in-UDP when one of the three exceptions specified above
   applies, provided that the additional requirements specified in this
   section are complied with.  Otherwise, the UDP checksum MUST be used
   for IPv6 as specified in [RFC768] and [RFC2460].

   This entire section and its requirements apply only to use of UDP
   zero-checksum mode for IPv6; they can be avoided by using the UDP
   checksum as specified in [RFC768] and [RFC2460].





Xu, et al.                   Standards Track                    [Page 9]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


3.2.  Middlebox Considerations for IPv6 UDP Zero Checksums

   IPv6 datagrams with a zero UDP checksum will not be passed by any
   middlebox that validates the checksum based on [RFC2460] or that
   updates the UDP checksum field, such as NATs or firewalls.  Changing
   this behavior would require such middleboxes to be updated to
   correctly handle datagrams with zero UDP checksums.  The MPLS-in-UDP
   encapsulation does not provide a mechanism to safely fall back to
   using a checksum when a path change occurs redirecting a tunnel over
   a path that includes a middlebox that discards IPv6 datagrams with a
   zero UDP checksum.  In this case, the MPLS-in-UDP tunnel will be
   black-holed by that middlebox.  Recommended changes to allow
   firewalls, NATs, and other middleboxes to support use of an IPv6 zero
   UDP checksum are described in Section 5 of [RFC6936].

4.  Processing Procedures

   This MPLS-in-UDP encapsulation causes MPLS packets to be forwarded
   through "UDP tunnels".  When performing MPLS-in-UDP encapsulation by
   the encapsulator, the entropy value would be generated by the
   encapsulator and then be filled in the Source Port field of the UDP
   header.  The Destination Port field is set to a value (6635)
   allocated by IANA to indicate that the UDP tunnel payload is an MPLS
   packet.  As for whether the top label of the encapsulated MPLS packet
   is downstream-assigned or upstream-assigned, it is determined
   according to the following criteria, which are compatible with
   [RFC5332]:

   a.  If the tunnel destination IP address is a unicast address, the
       top label MUST be downstream-assigned;

   b.  If the tunnel destination IP address is an IP multicast address,
       either all encapsulated MPLS packets in the particular tunnel
       have a downstream-assigned label at the top of the stack, or all
       encapsulated MPLS packets in that tunnel have an upstream-
       assigned label at the top of the stack.  The means by which this
       is determined for a particular tunnel is outside the scope of
       this specification.  In the absence of any knowledge about a
       specific tunnel, the label SHOULD be presumed to be upstream-
       assigned.

   Intermediate routers, upon receiving these UDP encapsulated packets,
   could balance these packets based on the hash of the five-tuple of
   UDP packets.  Upon receiving these UDP-encapsulated packets, the
   decapsulator would decapsulate them by removing the UDP headers and
   then process them accordingly.  For other common processing
   procedures associated with tunneling encapsulation technologies
   including but not limited to Maximum Transmission Unit (MTU) and



Xu, et al.                   Standards Track                   [Page 10]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   preventing fragmentation and reassembly, Time to Live (TTL), and
   differentiated services, the corresponding "Common Procedures"
   defined in [RFC4023], which are applicable for MPLS-in-IP and
   MPLS-in-GRE encapsulation formats SHOULD be followed.

   Note: Each UDP tunnel is unidirectional, as MPLS-in-UDP traffic is
   sent to the IANA-allocated UDP Destination Port, and in particular,
   is never sent back to any port used as a UDP Source Port (which
   serves solely as a source of entropy).  This is at odds with a
   typical middlebox (e.g., firewall) assumption that bidirectional
   traffic uses a common pair of UDP ports.  As a result, arranging to
   pass bidirectional MPLS-in-UDP traffic through middleboxes may
   require separate configuration for each direction of traffic.

5.  Congestion Considerations

   Section 3.1.3 of [RFC5405] discussed the congestion implications of
   UDP tunnels.  As discussed in [RFC5405], because other flows can
   share the path with one or more UDP tunnels, congestion control
   [RFC2914] needs to be considered.

   A major motivation for encapsulating MPLS in UDP is to improve the
   use of multipath (such as ECMP) in cases where traffic is to traverse
   routers that are able to hash on UDP Port and IP address.  As such,
   in many cases this may reduce the occurrence of congestion and
   improve usage of available network capacity.  However, it is also
   necessary to ensure that the network, including applications that use
   the network, responds appropriately in more difficult cases, such as
   when link or equipment failures have reduced the available capacity.

   The impact of congestion must be considered both in terms of the
   effect on the rest of the network of a UDP tunnel that is consuming
   excessive capacity, and in terms of the effect on the flows using the
   UDP tunnels.  The potential impact of congestion from a UDP tunnel
   depends upon what sort of traffic is carried over the tunnel, as well
   as the path of the tunnel.

   MPLS is widely used to carry an extensive range of traffic.  In many
   cases, MPLS is used to carry IP traffic.  IP traffic is generally
   assumed to be congestion controlled, and thus a tunnel carrying
   general IP traffic (as might be expected to be carried across the
   Internet) generally does not need additional congestion control
   mechanisms.  As specified in [RFC5405]:








Xu, et al.                   Standards Track                   [Page 11]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


      IP-based traffic is generally assumed to be congestion-controlled,
      i.e., it is assumed that the transport protocols generating IP-
      based traffic at the sender already employ mechanisms that are
      sufficient to address congestion on the path.  Consequently, a
      tunnel carrying IP-based traffic should already interact
      appropriately with other traffic sharing the path, and specific
      congestion control mechanisms for the tunnel are not necessary.

   For this reason, where MPLS-in-UDP tunneling is used to carry IP
   traffic that is known to be congestion controlled, the UDP tunnels
   MAY be used within a single network or across multiple networks, with
   cooperating network operators.  Internet IP traffic is generally
   assumed to be congestion controlled.  Similarly, in general, Layer 3
   VPNs are carrying IP traffic that is similarly assumed to be
   congestion controlled.

   Whether or not Layer 2 VPN traffic is congestion controlled may
   depend upon the specific services being offered and what use is being
   made of the Layer 2 services.

   However, MPLS is also used in many cases to carry traffic that is not
   necessarily congestion controlled.  For example, MPLS may be used to
   carry pseudowire or VPN traffic where specific bandwidth guarantees
   are provided to each pseudowire or to each VPN.

   In such cases, network operators may avoid congestion by careful
   provisioning of their networks, by rate limiting of user data
   traffic, and/or by using MPLS Traffic Engineering (MPLS-TE) to assign
   specific bandwidth guarantees to each LSP.  Where MPLS is carried
   over UDP over IP, the identity of each individual MPLS flow is lost,
   in general, and MPLS-TE cannot be used to guarantee bandwidth to
   specific flows (since many LSPs may be multiplexed over a single UDP
   tunnel, and many UDP tunnels may be mixed in an IP network).

   For this reason, where the MPLS traffic is not congestion controlled,
   MPLS-in-UDP tunnels MUST only be used within a single operator's
   network that utilizes careful provisioning (e.g., rate limiting at
   the entries of the network while over-provisioning network capacity)
   to ensure against congestion, or within a limited number of networks
   whose operators closely cooperate in order to jointly provide this
   same careful provisioning.

   As such, MPLS-in-UDP MUST NOT be used over the general Internet, or
   over non-cooperating network operators, to carry traffic that is not
   congestion controlled.






Xu, et al.                   Standards Track                   [Page 12]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   Measures SHOULD be taken to prevent non-congestion-controlled MPLS-
   in-UDP traffic from "escaping" to the general Internet, e.g.:

   a.  Physical or logical isolation of the links carrying MPLS-over-UDP
       from the general Internet.

   b.  Deployment of packet filters that block the UDP Destination Ports
       used for MPLS-over-UDP.

   c.  Imposition of restrictions on MPLS-in-UDP traffic by software
       tools used to set up MPLS-in-UDP tunnels between specific end
       systems (as might be used within a single data center).

   d.  Use of a "Managed Circuit Breaker" for the MPLS traffic as
       described in [CIRCUIT-BREAKER].

6.  Security Considerations

   The security problems faced with the MPLS-in-UDP tunnel are exactly
   the same as those faced with MPLS-in-IP and MPLS-in-GRE tunnels
   [RFC4023].  In other words, the MPLS-in-UDP tunnel as defined in this
   document by itself cannot ensure the integrity and privacy of data
   packets being transported through the MPLS-in-UDP tunnel and cannot
   enable the tunnel decapsulator to authenticate the tunnel
   encapsulator.  In the case where any of the above security issues is
   concerned, the MPLS-in-UDP tunnel SHOULD be secured with IPsec or
   DTLS.  IPsec was designed as a network security mechanism, and
   therefore it resides at the network layer.  As such, if the tunnel is
   secured with IPsec, the UDP header would not be visible to
   intermediate routers anymore in either IPsec tunnel or transport
   mode.  As a result, the meaning of adopting the MPLS-in-UDP tunnel as
   an alternative to the MPLS-in-GRE or MPLS-in-IP tunnel is lost.  By
   comparison, DTLS is better suited for application security and can
   better preserve network- and transport-layer protocol information.
   Specifically, if DTLS is used, the destination port of the UDP header
   MUST be set to an IANA-assigned value (6636) indicating MPLS-in-UDP
   with DTLS, and that UDP port MUST NOT be used for other traffic.  The
   UDP source port field can still be used to add entropy, e.g., for
   load-sharing purposes.  DTLS usage is limited to a single DTLS
   session for any specific tunnel encapsulator/decapsulator pair
   (identified by source and destination IP addresses).  Both IP
   addresses MUST be unicast addresses -- multicast traffic is not
   supported when DTLS is used.  An MPLS-in-UDP tunnel decapsulator
   implementation that supports DTLS is expected to be able to establish
   DTLS sessions with multiple tunnel encapsulators.  Likewise, an MPLS-
   in-UDP tunnel encapsulator implementation is expected to be able to
   establish DTLS sessions with multiple decapsulators.  (However,




Xu, et al.                   Standards Track                   [Page 13]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   different source and/or destination IP addresses may be involved.
   See Section 3.1 for discussion of one situation where use of
   different source IP addresses is important.)

   If the tunnel is not secured with IPsec or DTLS, some other method
   should be used to ensure that packets are decapsulated and forwarded
   by the tunnel tail only if those packets were encapsulated by the
   tunnel head.  If the tunnel lies entirely within a single
   administrative domain, address filtering at the boundaries can be
   used to ensure that no packet with the IP source address of a tunnel
   endpoint or with the IP destination address of a tunnel endpoint can
   enter the domain from outside.  However, when the tunnel head and the
   tunnel tail are not in the same administrative domain, this may
   become difficult, and filtering based on the destination address can
   even become impossible if the packets must traverse the public
   Internet.  Sometimes only source address filtering (but not
   destination address filtering) is done at the boundaries of an
   administrative domain.  If this is the case, the filtering does not
   provide effective protection at all unless the decapsulator of an
   MPLS-in-UDP validates the IP source address of the packet.

   This document does not require that the decapsulator validate the IP
   source address of the tunneled packets (with the exception that the
   IPv6 source address MUST be validated when UDP zero-checksum mode is
   used with IPv6), but it should be understood that failure to do so
   presupposes that there is effective destination-based (or a
   combination of source-based and destination-based) filtering at the
   boundaries.  MPLS-based VPN services rely on a VPN label in the MPLS
   label stack to identify the VPN.  Corruption of that label could leak
   traffic across VPN boundaries.  Such leakage is highly undesirable
   when inter-VPN isolation is used for privacy or security reasons.
   When that is the case, UDP checksums SHOULD be used for MPLS-in-UDP
   with both IPv4 and IPv6, and in particular, UDP zero-checksum mode
   SHOULD NOT be used with IPv6.  Each UDP checksum covers the VPN
   label, thereby providing increased assurance of isolation among VPNs.
















Xu, et al.                   Standards Track                   [Page 14]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


7.  IANA Considerations

   One UDP destination port number indicating MPLS has been allocated by
   IANA:

      Service Name: MPLS-UDP

      Transport Protocol(s): UDP

      Assignee: IESG <iesg@ietf.org>

      Contact: IETF Chair <chair@ietf.org>.

      Description: Encapsulate MPLS packets in UDP tunnels.

      Reference: RFC 7510

      Port Number: 6635

   One UDP destination port number indicating MPLS with DTLS has been
   allocated by IANA:

      Service Name: MPLS-UDP-DTLS

      Transport Protocol(s): UDP

      Assignee: IESG <iesg@ietf.org>

      Contact: IETF Chair <chair@ietf.org>.

      Description: Encapsulate MPLS packets in UDP tunnels with DTLS.

      Reference: RFC 7510

      Port Number: 6636

8.  References

8.1.  Normative References

   [RFC768]   Postel, J., "User Datagram Protocol", STD 6, RFC 768,
              August 1980, <http://www.rfc-editor.org/info/rfc768>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.





Xu, et al.                   Standards Track                   [Page 15]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   [RFC2460]  Deering, S. and R. Hinden, "Internet Protocol, Version 6
              (IPv6) Specification", RFC 2460, December 1998,
              <http://www.rfc-editor.org/info/rfc2460>.

   [RFC3032]  Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
              Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
              Encoding", RFC 3032, January 2001,
              <http://www.rfc-editor.org/info/rfc3032>.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, December 2005,
              <http://www.rfc-editor.org/info/rfc4301>.

   [RFC5332]  Eckert, T., Rosen, E., Ed., Aggarwal, R., and Y. Rekhter,
              "MPLS Multicast Encapsulations", RFC 5332, August 2008,
              <http://www.rfc-editor.org/info/rfc5332>.

   [RFC5405]  Eggert, L. and G. Fairhurst, "Unicast UDP Usage Guidelines
              for Application Designers", BCP 145, RFC 5405, November
              2008, <http://www.rfc-editor.org/info/rfc5405>.

   [RFC6347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, January 2012,
              <http://www.rfc-editor.org/info/rfc6347>.

   [RFC6935]  Eubanks, M., Chimento, P., and M. Westerlund, "IPv6 and
              UDP Checksums for Tunneled Packets", RFC 6935, April 2013,
              <http://www.rfc-editor.org/info/rfc6935>.

   [RFC6936]  Fairhurst, G. and M. Westerlund, "Applicability Statement
              for the Use of IPv6 UDP Datagrams with Zero Checksums",
              RFC 6936, April 2013,
              <http://www.rfc-editor.org/info/rfc6936>.

8.2.  Informative References

   [CIRCUIT-BREAKER]
              Fairhurst, G., "Network Transport Circuit Breakers", Work
              in Progress, draft-ietf-tsvwg-circuit-breaker-01, April
              2015.

   [RFC2474]  Nichols, K., Blake, S., Baker, F., and D. Black,
              "Definition of the Differentiated Services Field (DS
              Field) in the IPv4 and IPv6 Headers", RFC 2474, December
              1998, <http://www.rfc-editor.org/info/rfc2474>.






Xu, et al.                   Standards Track                   [Page 16]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


   [RFC2914]  Floyd, S., "Congestion Control Principles", BCP 41, RFC
              2914, September 2000,
              <http://www.rfc-editor.org/info/rfc2914>.

   [RFC4023]  Worster, T., Rekhter, Y., and E. Rosen, Ed.,
              "Encapsulating MPLS in IP or Generic Routing Encapsulation
              (GRE)", RFC 4023, March 2005,
              <http://www.rfc-editor.org/info/rfc4023>.

   [RFC4817]  Townsley, M., Pignataro, C., Wainner, S., Seely, T., and
              J. Young, "Encapsulation of MPLS over Layer 2 Tunneling
              Protocol Version 3", RFC 4817, March 2007,
              <http://www.rfc-editor.org/info/rfc4817>.

   [RFC5640]  Filsfils, C., Mohapatra, P., and C. Pignataro, "Load-
              Balancing for Mesh Softwires", RFC 5640, August 2009,
              <http://www.rfc-editor.org/info/rfc5640>.

   [RFC6438]  Carpenter, B. and S. Amante, "Using the IPv6 Flow Label
              for Equal Cost Multipath Routing and Link Aggregation in
              Tunnels", RFC 6438, November 2011,
              <http://www.rfc-editor.org/info/rfc6438>.

Acknowledgements

   Thanks to Shane Amante, Dino Farinacci, Keshava A K, Ivan Pepelnjak,
   Eric Rosen, Andrew G. Malis, Kireeti Kompella, Marshall Eubanks,
   George Swallow, Loa Andersson, Vivek Kumar, Stewart Bryant, Wen
   Zhang, Joel M. Halpern, Noel Chiappa, Scott Brim, Alia Atlas,
   Alexander Vainshtein, Joel Jaeggli, Edward Crabbe, Mark Tinka, Lars
   Eggert, Joe Touch, Lloyd Wood, Gorry Fairhurst, Weiguo Hao, Mark
   Szczesniak, Stephen Farrell, Martin Stiemerling, Zhenxiao Liu, and
   Xing Tong for their valuable comments and suggestions on this
   document.

   Special thanks to Alia Atlas for her insightful suggestion of adding
   an applicability statement.

   Thanks to Daniel King, Gregory Mirsky, and Eric Osborne for their
   valuable MPLS-RT reviews on this document.  Thanks to Charlie Kaufman
   for his SecDir review of this document.  Thanks to Nevil Brownlee for
   the OPS-Dir review of this document.  Thanks to Roni Even for the
   Gen-ART review of this document.  Thanks to Pearl Liang for the IANA
   review of this document.







Xu, et al.                   Standards Track                   [Page 17]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


Contributors

   Note that contributors are listed in alphabetical order according to
   their last names.

      Yongbing Fan
      China Telecom
      EMail: fanyb@gsta.com

      Adrian Farrel
      Juniper Networks
      EMail: adrian@olddog.co.uk

      Zhenbin Li
      Huawei Technologies
      EMail: lizhenbin@huawei.com

      Carlos Pignataro
      Cisco Systems
      EMail: cpignata@cisco.com

      Curtis Villamizar
      Outer Cape Cod Network Consulting, LLC
      EMail: curtis@occnc.com



























Xu, et al.                   Standards Track                   [Page 18]
^L
RFC 7510                Encapsulating MPLS in UDP             April 2015


Authors' Addresses

   Xiaohu Xu
   Huawei Technologies
   No.156 Beiqing Rd
   Beijing  100095
   China

   Phone: +86-10-60610041
   EMail: xuxiaohu@huawei.com


   Nischal Sheth
   Juniper Networks
   1194 N. Mathilda Ave
   Sunnyvale, CA  94089
   United States

   EMail: nsheth@juniper.net


   Lucy Yong
   Huawei USA

   EMail: Lucy.yong@huawei.com


   Ross Callon
   Juniper Networks

   EMail: rcallon@juniper.net


   David Black
   EMC Corporation
   176 South Street
   Hopkinton, MA  01748
   United States

   EMail: david.black@emc.com











Xu, et al.                   Standards Track                   [Page 19]
^L