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 <ebike...@gmail.com>

_______________________________________________
dmm mailing list
dmm@ietf.org
https://www.ietf.org/mailman/listinfo/dmm

Reply via email to