[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 2401bis protocol selector



At 14:47 -0500 11/24/03, Mark Duffy wrote:
Hi,

rfc2401bis-00 in sect. 4.4.2 has the following text:

  - Next Layer Protocol: Obtained from the IPv4 "Protocol" or the
    IPv6 "Next Header" fields.  This may be an individual protocol
    number.  These packet fields may not contain the Next Layer
    Protocol due to the presence of IP extension headers, e.g., a
    Routing Header, AH, ESP, Fragmentation Header, Destination
    Options, Hop-by-hop options, etc.  Note that the Next Layer
    Protocol may not be available in the case of receipt of a packet
    with an ESP header, thus a value of "OPAQUE" SHOULD be
    supported..br [REQUIRED for all implementations]


NOTE: To locate the Next Layer Protocol, a system has to chain through the packet headers checking the "Protocol" or "Next Header" field until it encounters either one it recognizes as a Next Layer Protocol, or until it reaches one that isn't on its list of extension headers, or until it encounters an ESP header that renders the Next Layer Protocol opaque. Note: The IPv6 mobility header is a possible next layer protocol.

The text above is almost identical to that in RFC 2401. My comment following is focused mainly on IPv4; v6 may be similar.

The above text has always struck me as an undesirable way of working. Why should certain protocols carried in IP be considered "next layer" protocols (for which the SPD should be evaluated) while other protocols (e.g. AH) are considered to be things one should look inside to find a deeper header to evaluate against the SPD?

the intent is to treat most protocols as next layer protocols. For IPv4 this is not an issue. Only in IPv6 do we encounter complexity due to the extension headers. we can reword the text to minimize confusion. there is no need to skip any protocol headers, under the new processing model, except the IPv6 extension headers. because the new model calls for external forwarding to route a packet through the IPsec processing, if more than one pass is needed, we should be able to simplify the description.


Shouldn't the IPsec policy just be evaluated against the outermost "plaintext" packet presented to IPsec, regardless of the protocol indicated? I believe this has caused quite a bit of confusion in the past e.g. for protocols such as AH, ESP, IP(4) and GRE.

yes, it has caused confusion in the past and we hope to avoid that in 2401bis.


Can we please change this in 2401bis to remove any special cases and just treat every IP packet the same? This could be accomplished (for IPv4 anyway) by removing all of the quoted text above except for the first two sentences. I believe we could also remove the confusing table about next header and derived port selectors and its descriptive text two paragraphs further down in the document.

we'll revise the text and, expect for IPv6 extension headers, I think it will be pretty simple.



If we don't make such a change, then the document should clearly enumerate which values of the IP header protocol field are "next layer protocols" and which are non-next-layer-protocols-that-you-look-inside-for-a-next-layer-protocol.

I think we can make the "next header" selection discussion simpler.


Steve