Subject: [BEHAVE] Errata 4756 on RFC6146

From: Magnus Westerlund <[email-masked]>
Date: Wed, 16 Sep 2020 14:13:17 +0000

Hi,

I am tring to conclude on any remainig errata on BEHAVE WG RFCs.

One of the reported one is on RFC 6146:

https://www.rfc-editor.org/errata/eid4756

I would appreciate input on how to resolve this one. I got the impression that
the report are right on the key-aspect that there can't be multiple STE entries.
However, I think there would be more work here on clarifying what is actually
wrong and what is maybe unclear. 

To me this looks like a Hold for Document update. Else the errata needs
clarification and reformulation.

Errata ID: 4756
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Alberto Leiva Popper
Date Reported: 2016-08-02

Section 3.5.3 says:

If the NAT64 filters on its IPv4 interface, then the NAT64 checks
to see if the incoming packet is allowed according to the Address-
Dependent Filtering rule.  To do this, it searches for a Session
Table Entry with an STE source IPv4 address equal to X, an STE
ICMPv4 Identifier equal to i2, and a STE destination IPv4 address
equal to Y.  If such an entry is found (there may be more than
one), packet processing continues.  Otherwise, the packet is
discarded.  If the packet is discarded, then an ICMP error message
MAY be sent to the original sender of the packet.  The ICMP error
message, if sent, has Type 3 (Destination Unreachable) and Code 13
(Communication Administratively Prohibited).

In case the packet is not discarded in the previous processing
steps (either because the NAT64 is not filtering or because the
packet is compliant with the Address-Dependent Filtering rule),
then the NAT64 searches for a Session Table Entry (...)

It should say:

The NAT64 then searches for a Session Table Entry (...)

Notes:

The statement "there may be more than one" is incorrect; the triplet (X,i2,Y)
constitutes the whole ICMP session's v4 identifier. Considering that, the whole
paragraph tends to fall apart.

The point of Address-Dependent Filtering (ADF) is to provide a means to allow or
disallow IPv4-started "sibling" connections. If there is an ongoing connection
whose binding state is

BIB entry: (*,*) <--> (T,t)
Session: (*,*),(*,*) <--> (T,t),(Z,z)

(Left side is v6, right side is v4. This is the same notation as the RFC; see
for example https://tools.ietf.org/html/rfc6146#section-3.5.1; '*' is
anything/irrelevant)

Then ADF dictates whether the v4 endpoint is allowed to create the following new
session (using the same BIB entry):

Session: (*,*),(*,*) <--> (T,t),(Z,m)

(where 'z' is not equal to 'm')

ADF works in UDP/TCP because t and z/m are separate variables. This is not the
case in ICMP:

BIB entry: (*,*) <--> (T,t)
Session: (*,*,*) <--> (T,t,Z)

If only one ICMP triplet can match, there is no room for "sibling" ICMP
"connections" that share a "source" IPv4 identifier but not a "destination" IPv4
identifier like TCP and UDP do. The two pings will share both BIB entry and v4
endpoint address and therefore also share the session. The NAT64 is incapable of
telling the two pings apart, and therefore cannot filter one of them.

There is no such thing as "Address-Dependent Filtering" on ICMP. 

--- End of Errata ---

-- 
Cheers

Magnus Westerlund 

----------------------------------------------------------------------
Networks, Ericsson Research
----------------------------------------------------------------------
Ericsson AB                 | Mobile +46 73 0949079
Torshamnsgatan 23           |
SE-164 80 Stockholm, Sweden | mailto: [email-masked]
----------------------------------------------------------------------