Subject: [DMM] pseudo code in "6.5. End.M.GTP4.E" (draft-ietf-dmm-srv6-mobile-uplane-03

From: "Kentaro Ebisawa" <[email-masked]>
Date: Mon, 05 Nov 2018 11:58:57 +0000

Hi,

I have a question regarding to pseudo code in "6.5. End.M.GTP4.E".
https://tools.ietf.org/html/draft-ietf-dmm-srv6-mobile-uplane-03

As mentioned in below packet flow, End.M.GTP4.E removes IPv6 header as 
well as SRH included in the header.

 > 5.3.2. Interworking with IPv4 GTP
 > 5.3.2.2. Packet flow - Downlink
 > ...
 > S1_out : (U2::1, SRGW::SA:DA:TEID)(Z,A)
 > SRGW_out: (SA, DA)(GTP: TEID=T)(Z,A) -> End.M.GTP4.E
 > gNB_out : (Z,A)

However, pseudo code in "6.5. End.M.GTP4.E" only asks to pop SRH (and 
not IPv6 header).

 > 6.5. End.M.GTP4.E
 > ...
 > 1. IF NH=SRH & SL > 0 THEN
 > 2.    decrement SL
 > 3.    update the IPv6 DA with SRH[SL]
 > 4.    pop the SRH
 > 5.    push UDP/GTP headers with tunnel ID from S
 > 6.    push outer IPv4 header with SA, DA from S
 > 7. ELSE
 > 8.    Drop the packet

This will result as packet having IPv6 in middle of GTP/IPv4 and user 
payload, which seems like possible bug in the pseudo code.

Q1) Should it also pop IPv6 header like mentioned in "6.4. 
End.M.GTP6.E".
Q2) If "Q1" is ture, then we might not need to do "1.~3." since there 
will be no IPv6 in resulting packet, and we might want to check if SL=1. 
(Ultimate segment)

For example, I think below code would work as described in the use case 
"5.3.2.2. Packet flow - Downlink".

1. IF NH=SRH & SL = 1 THEN
2.    store DA in variable S
3.    pop IP header and all its extension headers
5.    push UDP/GTP headers with tunnel ID from S
6.    push outer IPv4 header with SA, DA from S
7. ELSE
8.    Drop the packet

Thanks,
--
Kentaro Ebisawa <[email-masked]>