[mpls] 答复: AD review of draft-ietf-mpls-in-udp

Xuxiaohu <xuxiaohu@huawei.com> Thu, 17 October 2013 03:27 UTC

Return-Path: <xuxiaohu@huawei.com>
X-Original-To: mpls@ietfa.amsl.com
Delivered-To: mpls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1AC9B11E8227 for <mpls@ietfa.amsl.com>; Wed, 16 Oct 2013 20:27:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.147
X-Spam-Level: *
X-Spam-Status: No, score=1.147 tagged_above=-999 required=5 tests=[AWL=-1.641, BAYES_00=-2.599, CHARSET_FARAWAY_HEADER=3.2, CN_BODY_35=0.339, MIME_8BIT_HEADER=0.3, MIME_BASE64_TEXT=1.753, MIME_CHARSET_FARAWAY=2.45, RCVD_IN_DNSWL_MED=-4, SARE_SUB_ENC_GB2312=1.345]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GAdfznN4m93J for <mpls@ietfa.amsl.com>; Wed, 16 Oct 2013 20:27:19 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) by ietfa.amsl.com (Postfix) with ESMTP id F0B7411E8126 for <mpls@ietf.org>; Wed, 16 Oct 2013 20:27:17 -0700 (PDT)
Received: from 172.18.7.190 (EHLO lhreml203-edg.china.huawei.com) ([172.18.7.190]) by lhrrg02-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id AWW40824; Thu, 17 Oct 2013 03:27:17 +0000 (GMT)
Received: from LHREML404-HUB.china.huawei.com (10.201.5.218) by lhreml203-edg.huawei.com (172.18.7.221) with Microsoft SMTP Server (TLS) id 14.3.146.0; Thu, 17 Oct 2013 04:26:21 +0100
Received: from NKGEML403-HUB.china.huawei.com (10.98.56.34) by lhreml404-hub.china.huawei.com (10.201.5.218) with Microsoft SMTP Server (TLS) id 14.3.146.0; Thu, 17 Oct 2013 04:27:16 +0100
Received: from NKGEML512-MBS.china.huawei.com ([169.254.8.24]) by nkgeml403-hub.china.huawei.com ([10.98.56.34]) with mapi id 14.03.0146.000; Thu, 17 Oct 2013 11:27:07 +0800
From: Xuxiaohu <xuxiaohu@huawei.com>
To: "adrian@olddog.co.uk" <adrian@olddog.co.uk>, "draft-ietf-mpls-in-udp@tools.ietf.org" <draft-ietf-mpls-in-udp@tools.ietf.org>
Thread-Topic: AD review of draft-ietf-mpls-in-udp
Thread-Index: Ac7HiaXROcI88rhSTwi1i42VDdiSNwB4ZqMAADceq4AAI/jJMA==
Date: Thu, 17 Oct 2013 03:27:07 +0000
Message-ID: <1FEE3F8F5CCDE64C9A8E8F4AD27C19EE08216C7D@NKGEML512-MBS.china.huawei.com>
References: <005a01cec789$a7669d10$f633d730$@olddog.co.uk> <1FEE3F8F5CCDE64C9A8E8F4AD27C19EE0821620A@NKGEML512-MBS.china.huawei.com> <00be01ceca8a$ca1e6410$5e5b2c30$@olddog.co.uk>
In-Reply-To: <00be01ceca8a$ca1e6410$5e5b2c30$@olddog.co.uk>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-cr-hashedpuzzle: IMRP JpPf LE++ LLZ/ MdIZ MngL R+kk SRgp TXup UYPV X7SB fulZ g19L nO3x od8l pDZy; 4; YQBkAHIAaQBhAG4AQABvAGwAZABkAG8AZwAuAGMAbwAuAHUAawA7AGQAcgBhAGYAdAAtAGkAZQB0AGYALQBtAHAAbABzAC0AaQBuAC0AdQBkAHAAQAB0AG8AbwBsAHMALgBpAGUAdABmAC4AbwByAGcAOwBtAHAAbABzAC0AYwBoAGEAaQByAHMAQAB0AG8AbwBsAHMALgBpAGUAdABmAC4AbwByAGcAOwBtAHAAbABzAEAAaQBlAHQAZgAuAG8AcgBnAA==; Sosha1_v1; 7; {29E8D871-B200-4163-9A22-B2AA54A01D89}; eAB1AHgAaQBhAG8AaAB1AEAAaAB1AGEAdwBlAGkALgBjAG8AbQA=; Thu, 17 Oct 2013 03:26:59 GMT; VHsNWToAIABBAEQAIAByAGUAdgBpAGUAdwAgAG8AZgAgAGQAcgBhAGYAdAAtAGkAZQB0AGYALQBtAHAAbABzAC0AaQBuAC0AdQBkAHAA
x-cr-puzzleid: {29E8D871-B200-4163-9A22-B2AA54A01D89}
x-originating-ip: [10.111.98.134]
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Cc: "mpls@ietf.org" <mpls@ietf.org>, "mpls-chairs@tools.ietf.org" <mpls-chairs@tools.ietf.org>
Subject: [mpls] 答复: AD review of draft-ietf-mpls-in-udp
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multi-Protocol Label Switching WG <mpls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mpls>, <mailto:mpls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mpls>
List-Post: <mailto:mpls@ietf.org>
List-Help: <mailto:mpls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mpls>, <mailto:mpls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Oct 2013 03:27:23 -0000

Hi Adrian,

> -----邮件原件-----
> 发件人: Adrian Farrel [mailto:adrian@olddog.co.uk]
> 发送时间: 2013年10月17日 0:14
> 收件人: Xuxiaohu; draft-ietf-mpls-in-udp@tools.ietf.org
> 抄送: mpls-chairs@tools.ietf.org; mpls@ietf.org
> 主题: RE: AD review of draft-ietf-mpls-in-udp
> 
> Hello,
> 
> Just cutting down to the conversation...
> 
> > > Abstract
> [snip]
> > > "...applicable in some circumstances" says nothing, of course. Either
> > > don't say this, or explicitly state the circumstance. Since (see below)
> > > the applicability is very specific and there is a clear use case that is
> > > the target of your work, I strongly suggest that you call out this case
> > > in the Abstract.
> >
> > Is it ok for you if the above sentence is changed to"... applicable in some
> > circumstances where IP-based encapsulation for MPLS is required and fine-
> > grained load-balancing of IP tunneled MPLS packets is required as well..."?
> Or can
> > you suggest any text on this point?
> 
> That helps a lot.
> Thanks.
> 
> > > Introduction
> [snip]
> > >    This encapsulation allows for two Label Switching Routers (LSR) to
> > >    be adjacent on a Label Switched Path (LSP), while separated by an
> > >    IP network.
> > >
> > > This makes it sound like a new feature, but (of course) MPLS-in-IP and
> > > MPLS-in-GRE allows this as well.
> >
> > How about adding "Like other IP-based encapsulation methods (e.g., MPLS-in-
> > GRE)..." ahead of this sentence?
> 
> Perfect.
> 
> > > Section 3 Source Port of UDP
> [snip]
> > > Furthermore, the text is not clear about the objective of "providing
> > > entropy". What type of algorithm should the source use and what must it
> > > not do?
> > >
> > >                 For example, the
> > >                 entropy value can be generated by performing hash
> > >                 calculation on certain fields in the customer packets
> > >                 (e.g., the five tuple of UDP/TCP packets).
> > >
> > > I find this to be a poor example because the source has in hand an MPLS
> > > packet with an arbitrary label stack and an unknown payload. Indeed,
> > > your Section 5 notes that the MPLS payload might not be TCP or UDP.
> >
> > Our intention is whatever algorithm is actually used by the source to generate
> an
> > entropy should be irrelevant to the data encapsulation and therefore it should
> be
> > outside the scope of this doc. The entropy could be obtained from a hash of
> > certain fields, or directly obtained from the IPv6 flow label in the case of
> IPv6
> > packet, or obtained from an entropy label in the case of a MPLS packet. The
> > above just gives a simple example. How about adding explicitly " whatever
> > algorithm is actually used by the source to generate an entropy is outside the
> > scope of this doc " to the above sentence?
> 
> I think that your proposed text is good.
> I wonder whether it might be good (as well as adding your text) to remove the
> example.

Good suggestion and will fix it.

> > > Section 3 UDP Checksum
> > >
> > > I note that RFC 6935 says that using a zero UDP checksum for a UDP
> > > tunnel is appropriate when the payload protocol header includes its own
> > > protection. MPLS headers do not contain this form of protection. How do
> > > you justify the zero checksum in this case?
> >
> > It said in this doc, "The usage of this field is in accordance with the
> current UDP
> > specification. To simplify the operation on egress PE routers, this field is
> > RECOMMENDED to be set to zero in IPv4 UDP encapsulation case, and also in
> IPv6
> > UDP encapsulation case if appropriate [RFC6935] [RFC6936]". That's to say, in
> case
> > of IPv4 UDP tunnel, it's recommended to set to zero since the IPv4 header
> have
> > the similar checksum field. In case of IPv6 UDP tunnel, it's recommend to set
> to
> > zero "if appropriate". In other words, if inappropriate, this field is not set
> to zero
> > in accordance with the current UDP specification [RFC768]. Whether or not
> it's
> > appropriate is judged according to the specifications defined in [RFC6935]
> > [RFC6936] ,e.g.,
> >
> >   "3.   A transported protocol that encapsulates Internet Protocol (IPv4
> >         or IPv6) packets MAY rely on the inner packet integrity checks,
> >         provided that the tunnel protocol will not significantly
> >         increase the rate of corruption of the inner IP packet.  If a
> >         significantly increased corruption rate can occur, the tunnel
> >         protocol MUST provide an additional integrity verification
> >         mechanism.  Early detection is desirable to avoid wasting
> >         unnecessary computation, transmission capacity, or storage for
> >         packets that will subsequently be discarded". (quoted from
> > http://tools.ietf.org/html/rfc6936#page-21)
> > and
> >    "5.   A transported protocol with a non-tunnel payload or one that
> >         encapsulates non-IP packets MUST have a CRC or other mechanism
> >         for checking packet integrity, unless the non-IP packet is
> >         specifically designed for transmission over a lower layer that
> >         does not provide a packet integrity guarantee". (quoted from
> > http://tools.ietf.org/html/rfc6936#page-21)"
> >
> > > I also don't think that proper attention has been paid to Section 5 of
> > > RFC 6936. You need to examine the requirements and describe additional
> > > behavior within your document.
> >
> > Did you mean that we should add more detailed descriptions like:
> >
> >        "if the MPLS payload is Internet Protocol (IPv4
> >         or IPv6) packets. it MAY rely on the inner packet integrity checks...
> "
> >    and
> >         "If the MPLS payload is non-IP packets, the UDP checksum MUST
> NOT be
> set
> >         to zero
> >         for checking packet integrity, unless the non-IP packet is
> >         specifically designed for transmission over a lower layer that
> >         does not provide a packet integrity guarantee..."
> 
> OK, I get it.
> I suppose if was "if appropriate" that I stumbled on.
> 
> On the other hand, you seem to believe that it is possible to know the payload
> of the MPLS flow at the time of encapsulation into UDP. I am very worried by
> this claim because:
> - you don't want to sniff every packet, nor do you want to vary whether
>   zero checksum is used per packet
> - it is not possible to know for certain what the payload of every MPLS
>   packet on an LSP will be just by looking at a few packets
> - while LSP end points may know the payload, it is unlikely that LSP
>   mid-points will know
> - you may have multiple LSPs carried in one UDP-source-port tunnel
> 
> So it seems to me that with MPLS as the transported protocol (which is the only
> intention of this document) using a zero checksum in UDP for IPv6 would never
> be
> appropriate because MPLS does not include its own CRC or other mechanism,
> and
> because you cannot know whether the payload of MPLS is using a CRC.
> 
> If I am correct and it is never appropriate, it would be better to say that
> "using zero checksum is NOT RECOMMENDED because of..."   and then point
> to the
> text you quoted.

There are some cases where the MPLS-in-UDP encapsulating nodes know what the MPLS payload is, e.g., MPLS L3VPN/L2VPN ingress PE routers.   

BTW, I noticed the following text in RFC4023:

   "[RFC2784] specifies an optional GRE checksum, and [RFC2890] specifies
   optional GRE key and sequence number fields.  These optional fields
   are not very useful for the MPLS-in-GRE encapsulation.  The sequence
   number and checksum fields are not needed, as there are no
   corresponding fields in the native MPLS packets being tunneled."

It seems that the GRE checksum plays the same role as the UDP checksum. As such, since GRE doesn't need that checksum field, why couldn't the UDP checksum be set to zero by default? Besides, it seems good enough to me as long as the IP-based tunnels for MPLS achieve the same effect of packet integrity guarantee as original MPLS LSP tunnels.

> if I am incorrect then please discuss with me further.
> 
> > > Section 4
> > >
> > >    As for other common processing procedures associated with tunneling
> > >    encapsulation technologies including but not limited to Maximum
> > >    Transmission Unit (MTU) and 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.
> > >
> > > I think it is probably important to consider PMTU in the presence of
> > > ECMP (probably not necessary in the case of LAG). How does the source
> > > know the PMTU for each different value of the source port that it might
> > > apply?
> >
> > IMHO, it is a common issue for any load-balancing mechanism. Would it be
> better
> > to write a separate doc to address this common issue?
> 
> That is a really good question.
> I think discovering PMTU is technology dependent, but the general issue of
> discovery in ECMP doesn't appear to be well discussed.
> 
> > > As far as I can see Section 5 is not ECN-friendly and says that when the
> > > payload protocol of the MPLS packet is not "TCP-friendly" the
> > > application generating the packets must use magic to avoid swamping the
> > > network.
> > >
> > > We will see what the TSV area congestion experts have to say, but I
> > > think we will find that the approach here is simplistic unless the
> > > network across which the UDP tunnel runs is used for no other traffic
> > > except UDP tunnels carrying MPLS packets.
> >
> > We originally just intented to mention this issue to the same extent as MPLS
> over
> > L2TPv3 [rfc4817]. BTW, it seems that MPLS in IP or GRE [RFC4023] doesn't
> > mention this point at all. We would like to see what the TSV area congestion
> > experts have to say as well on this point.
> 
> Yeah, this is fine. I am not an expert in this stuff and we will need their
> opinions. Perhaps they won't say anything :-)
> 
> > > Section 6 seems to indicate a major draw-back of this scheme. You have
> > > to note that MPLS networks are able to get away with having very little
> > > security because it is very hard to inject MPLS packets into a network.
> > > But MPLS-in-(foo-in-)IP encapsulation provides a way to inject packets
> > > just like any packet can be injected into an IP network.
> >
> > Sure. It's the same issue with any other IP-based encapsulations for MPLS.
> 
> Indeed, hence my point about security, below...
> 
> > > Security (such as IPsec) provides a way to ensure that rogue packets do
> > > not have their headers stripped and their payload MPLS packets added to
> > > an LSP.
> >
> > > You are making a clear statement that using IPsec means that there is no
> > > point in doing MPLS-in-UDP encapsulation. You need to follow up on this!
> > >
> > > The first thing to do is to enhance the applicability text in Section 1
> > > to say where you would deploy this such that security is not an issue.
> >
> > > The second thing is to talk about the security mechanisms that can be
> > > applied at the edges of the network to reduce the likelihood of such
> > > attacks being possible.
> > >
> > > Lastly (or probably firstly!) you need to describe the attack vector and
> > > the implications of such an attack so that the implementer/deployer is
> > > clear what the risks are.
> >
> > Will fix it.
> 
> OK. I also wonder whether you looked at DTLS.

Thanks a lot for pointing out this. We will consider adding some text about DTLS in this doc. 

Best regards,
Xiaohu

> Thanks for all the work.
> 
> Adrian