Hi,

I reviewed draft-ietf-ipsecme-ikev2-diet-esp.

Summary: I don't think that the document is ready.
There are many issues (or various severity) that need to be fixed.

Issues.

1. Section 4.3.

   The compression of the Inner IP Packet is based on the attributes
   that are derived from the negotiated Traffic Selectors TSi/TSr, as
   described in [RFC7296], Section 3.13.  The Traffic Selectors may
   result in a quite complex expression, and this specification
   restricts that complexity.  In particular, Diet-ESP restricts the
   Traffic Selector to a single type of IP address (i.e., IPv4 or IPv6),
   a single protocol (such as UDP, TCP, or not relevant), a single port
   range, and multiple DSCP numbers. Such simplification corresponds to
   the expression of an individual Traffic Selector Payload [RFC7296],
   Section 3.13.1.

This text is problematic. Section 3.13.1 describes Traffic Selector 
(substructure)
and not a Traffic Selector payload (which is defined in Section 3.13).
In addition, traffic selectors, as defined in RFC 7296, cannot express DSCP,
thus I don't know how to interpret the above requirement.

I believe the text tries to say that there MUST be only
one Traffic Selector (Section 3.13.1) in both TSi and TSr payloads
(described in Section 3.13). The TS Type MUST be
either TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE.

(I don't know what to do with DSCP. The protocol and the TS type
are always single-valued in a Traffic Selector substructure).

Perhaps my interpretation is not correct, but the current text needs to be 
revised anyway.

2. Section 4.3, Table 1.

For ts_ip_version parameter possible values listed as "IPv4-only IPv6-only".
Should they be "IPv4-only" "IPv6-only" instead?

Also s/IP4/IPv4     (two cases)

Why "64 bit" parameter denotes its own empty row? Should it be along with 
possible alignment values? The same question for  ANY, ... and
"generated", "zero"  empty rows. Perhaps they should be merged with the above 
cells.

3. Section 4.3

   This specification limits the expression of the Traffic Selector to
   be of the form (IP source range, IP destination range, Port source
   range, Port destination range, Protocol ID list, DSCP list).  This
   limits the original flexibility of the expression of TS, but provides
   sufficient flexibility.

This is not consistent with the text above, since the text above
requires that there be only one protocol and not the list.
And again, DSCP values cannot be expressed in IKEv2 Traffic Selectors.

4. Section 4.3.

It is not very clear for me what iipc_profile is for. In other words,
if the value is "diet-esp", then what it means? Does it mean
that only those parameters, defined in Table 1 for IIPC must be used?
Should the application verify this? Should all these parameters be supported
or it is allowed to support only some of them? I'd like to see more 
discussion of this in the draft. Perhaps external reference to 
some SCHC document is needed.

5. Section 4.3.

Please, expand the text for possible values for dscp_cda and ecn_cda
instead of sending readers to flow_label_cda by "(See flow_label_cda)".
The list of values is different, so it is better to repeat their meaning
for each parameter.

6. Section 4.3.

The explanations for dscp_cda and ecn_cda both start with the text
"indicates how the DSCP values of the inner IP packet are generated.".
Unless I'm badly missing something, this should be s/generated/compressed / 
decompressed

7. Section 4.3

ts_ip_dst_start, ts_ip_dst_end, ts_port_dst_start, ts_port_dst_end  are not 
explained in the text.

8. Section 4.3

Please, expand LSB and MSB on first use (I presume Least /Most Significant 
Bits).

9. Section 4.3.

In the text related to ts_proto - why RFC 5996 is referenced? It is obsoleted 
by RFC 7296.

10. Section 4.3.

The text related to dscp_list parameter informally references the expired draft 
draft-mglt-ipsecme-dscp-np.
In my reading of this text, it is impossible to implement this draft without 
reading
draft-mglt-ipsecme-dscp-np (at least this is my impression). Thus, reference
to draft-mglt-ipsecme-dscp-np should be normative, whichm in my understanding, 
makes impossible
publication of this document unless draft-mglt-ipsecme-dscp-np becomes RFC.
Alternatively, please rewrite the text so, that draft-mglt-ipsecme-dscp-np is 
not needed
for implementing this document.

11. Section 4.3.

The text related to alignment parameter is very problematic. I cannot figure 
out what it is all about.
For example, "indicates the byte alignement supported by the OS for the ESP 
extension." What is "supported by OS"? 
What is "ESP extension"? What should be aligned?
Why 32-bit alignment is for IPv6? As far as I remember, the IPv6 header should 
be 64-bit aligned,
32-bit alignment is used for IPv4. Am I missing something? 
Since AES-CCM is mentioned, I presume that alignment in fact means not a 
requirement
for the start of payload alignment, but instead the requirement for the total 
size of the payload
to be encrypted to be multiple of the encryption transform block size. If this 
is the case,
then this should be spelled out more accurately. In addition, the block size 
can be different
from 128 bits (for example, for GOST "Magma" it is 64 bits, there may also be 
defined
encryption transforms with 256-bit block size in future), so this should be 
expressed more accurately,
referencing the requirements imposed by encryption transform.
By the way, possible values for alignment do not include "128 bits", so the 
text 
related to AES-CCM "a 128 bit alignment is overwritten by the block size" 
cannot be parsed by me.

BTW, a typo: s/alignement/alignment

12. Section 4.3.

Text related to tunnel_ip states that it "can be an IPv4 or IPv6 address". 
However,
in the Table 1 only IPv6 address is allowed.

13. Section 4.3.

Text related to esp_encr - I fail to understand why knowing the encryption 
algorithm is needed
for compression. Perhaps this should be clarified. 

BTW, a typo: s/compresse/compress

14. Section 4.3.

s/Security Policy Index/Security Parameter Index

15. Section 4.3.

Text for esp_sn_lsb: "and is defined by this specification". Is this 
clarification needed for this parameter?
I believe many parameters listed above are also defined by this specification, 
but it is only mentioned for esp_sn_lsb.

In addition - why possible values for this parameter are 0-64?
SN in the ESP header is always 32 bits in length, for 64-bit ESN the upper 32 
bits are never transmitted.

16. Section 5.1.1

If you add some table similar to Table 1, with FL, MO, CDA values for each 
parameter,
it will make reading easier. Alternatively, place description of compressing 
each field to its own paragraph.
The current text is difficult to read.

17. Section 5.1.3.

In the text "If the IP Header is an IPv6 Header" perhaps "tunnel" is missing 
before "IP"?

18. Section 5.1.3.

Please expand "IHL" (Internet Header Length).

19. Section 5.3.

   SCHC Compression efficiently compresses the Next Header field,
   reducing overhead and aligning the packet to byte boundaries using
   SCHC Padding.  After this, the SCHC Pad Length field is added. 

It is not clear for me what is the sequence of applying various actions.
>From my understanding the SCHC Padding is applied before CTEC compression,
but reading this text it seems that it is applied after it too. Is it applied 
twice?

20. Section 5.3.

   The ESP Padding and Pad Length fields are reduced by the SCHC
   compression rule.

I fail to understand how this can be done. The padding is included
into the ICV computation, I don't know how you are going to elide these bytes.

21. Section 5.3.

Isn't IPv6 require 64-bit alignment and not 32? 

22. Section 5.4.

I fail to understand why there is a need to send SN uncompressed 
in case of implicit IV. In any case, you *must* be able to decompress
SN to an original value *before* decrypting the packet. If there is a chance
SN is decompressed incorrectly, then the packet will be dropped anyway
(due to ICV verification failure). As a consequence - the esp_encr
parameter is not needed.

23. Section 5.4.

   The IPv6 Next Header field or the IPv4 Protocol field that contains
   the "ESP" value is changed to "SCHC".

What is the value for "SCHC"? I failed to find it in IANA registry
https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

24. Section 7.

Where the mentioned IANA registries are situated? 
I failed to find any "IIPC Profile" registry on IANA website.

 
Regards,
Valery.
 


> This will start two week WGLC for the draft-ietf-ipsecme-diet-esp [1].
> This last call will end at 2025-01-23. If you have any comments about the 
> draft
> send them to the WG list.
> 
> [1] https://datatracker.ietf.org/doc/draft-ietf-ipsecme-diet-esp/
> --
> kivi...@iki.fi
> 
> _______________________________________________
> IPsec mailing list -- ipsec@ietf.org
> To unsubscribe send an email to ipsec-le...@ietf.org

_______________________________________________
IPsec mailing list -- ipsec@ietf.org
To unsubscribe send an email to ipsec-le...@ietf.org

Reply via email to