Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'Invalid extension header length or else' when running end to end test with QER #27

Closed
aviweit opened this issue May 13, 2021 · 8 comments

Comments

@aviweit
Copy link

aviweit commented May 13, 2021

Hi,

I have properly installed gtp5g and libgtp5gnl on my Ubuntu 20.04 server and successfully invoked the test script script/ns_ran_upf.sh.

I then went ahead and added QER usage to the script, invoked ./cleanup.sh and run the script again. Ping failed.
I then noticed

gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else

being reported in /var/log/syslog. I would like to ask whether I did something wrong or perhaps QER support is not fully implemented yet?

Please find below more details:

under "RAN part":

sudo ./gtp5g-tunnel add qer gtp5gtest 1 --qfi 9
sudo ./gtp5g-tunnel add qer gtp5gtest 2 --qfi 9
...
sudo ./gtp5g-tunnel add pdr gtp5gtest 1 --pcd 1 --hdr-rm 0 --ue-ipv4 ${UE_IP} --f-teid 87 ${RAN_IP} --far-id 1 --qer-id 1
sudo ./gtp5g-tunnel add pdr gtp5gtest 2 --pcd 2 --ue-ipv4 ${UE_IP} --far-id 2 --qer-id 2

under "UPF part":

${EXEC_NS2} ./gtp5g-tunnel add qer gtp5gtest 1 --qfi 9
${EXEC_NS2} ./gtp5g-tunnel add qer gtp5gtest 2 --qfi 9
...
${EXEC_NS2} ./gtp5g-tunnel add pdr gtp5gtest 1 --pcd 1 --hdr-rm 0 --ue-ipv4 ${UE_IP} --f-teid 78 ${UPF_IP} --far-id 1 --qer-id 1
${EXEC_NS2} ./gtp5g-tunnel add pdr gtp5gtest 2 --pcd 2 --ue-ipv4 ${UE_IP} --far-id 2 --qer-id 2

I am using master version for both.

Thanks.

@muthuramanecs03g
Copy link
Collaborator

Hi @aviweit,

For your information, in gtp5g, we handled the GTP-U extension header and verified with QER but there is no implementation about QoS.

Could you please provide the dmesg log and packet capture?

@aviweit
Copy link
Author

aviweit commented May 13, 2021

Hi @muthuramanecs03g ,

Please find attached dmesg. I would just like to comment that I have added a printing of:

printk_ratelimited("PDU_SESSION_INFO_TYPE0"); in which it got printed in syslog.

I added that print right before return -1; at line https://github.com/PrinzOwO/gtp5g/blob/master/gtp5g.c#L2046
and rebuilt, reloaded the module.

[16049.428457] IPv6: ADDRCONF(NETDEV_CHANGE): veth1: link becomes ready
[16049.428485] IPv6: ADDRCONF(NETDEV_CHANGE): veth0: link becomes ready
[16049.466155] gtp5g: enable gtp5g on 3, 5
[16049.470680] gtp5gtest:[gtp5g] gtp5g_newlink: registered new 5G GTP interface
[16049.567788] gtp5gtest:[gtp5g] gtp5g_gnl_add_qer: QER-Add: QER_ID(1) success
[16049.586265] gtp5gtest:[gtp5g] gtp5g_gnl_add_qer: QER-Add: QER_ID(2) success
[16049.604491] gtp5gtest:[gtp5g] gtp5g_gnl_add_far: FAR-Add: id[1] success
[16049.622599] gtp5gtest:[gtp5g] gtp5g_gnl_add_far: FAR-Add: id[2] success
[16049.642004] gtp5gtest:[gtp5g] gtp5g_gnl_add_pdr: PDR-Add: id[1] success
[16049.660085] gtp5gtest:[gtp5g] gtp5g_gnl_add_pdr: PDR-Add: id[2] success
[16049.687305] gtp5g: enable gtp5g on 3, 5
[16049.692959] gtp5gtest:[gtp5g] gtp5g_newlink: registered new 5G GTP interface
[16049.789026] gtp5gtest:[gtp5g] gtp5g_gnl_add_qer: QER-Add: QER_ID(1) success
[16049.809679] gtp5gtest:[gtp5g] gtp5g_gnl_add_qer: QER-Add: QER_ID(2) success
[16049.830879] gtp5gtest:[gtp5g] gtp5g_gnl_add_far: FAR-Add: id[1] success
[16049.850497] gtp5gtest:[gtp5g] gtp5g_gnl_add_far: FAR-Add: id[2] success
[16049.870825] gtp5gtest:[gtp5g] gtp5g_gnl_add_pdr: PDR-Add: id[1] success
[16049.890531] gtp5gtest:[gtp5g] gtp5g_gnl_add_pdr: PDR-Add: id[2] success
[16049.901035] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16049.901036] PDU_SESSION_INFO_TYPE0
[16049.901037] gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else
[16049.901038] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped
[16050.904743] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16050.904746] PDU_SESSION_INFO_TYPE0
[16050.904748] gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else
[16050.904749] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped
[16051.928751] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16051.928753] PDU_SESSION_INFO_TYPE0
[16051.928754] gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else
[16051.928755] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped
[16052.952757] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16052.952759] PDU_SESSION_INFO_TYPE0
[16052.952761] gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else
[16052.952761] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped
[16053.976826] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16053.976828] PDU_SESSION_INFO_TYPE0
[16053.976830] gtp5gtest:[gtp5g] gtp1u_udp_encap_recv: Invalid extension header length or else
[16053.976830] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped
[16066.020835] gtp5gtest:[gtp5g] gtp5g_dellink: deregistered 5G GTP interface

@aviweit
Copy link
Author

aviweit commented May 13, 2021

Our intention was to create a tunnel with QoS enforcement and verify this with iperf.

For example, to create it with the following switches:

./gtp5g-tunnel add qer gtp5gtest 123 --qfi 9 --mbr-uhigh 200000 --mbr-ulow 200000 --mbr-dhigh 100000 --mbr-dlow 100000
and then to add this qer to the pdr.

Do you have plans to implement it?

Thanks again.

@muthuramanecs03g
Copy link
Collaborator

muthuramanecs03g commented May 13, 2021

Hi @aviweit,

Looks you added some more debug prints to trace this issue

[16051.928755] gtp5gtest:[gtp5g] gtp5g_encap_recv: GTP packet has been dropped

[16052.952757] get_gtpu_header_len: GTPV1_NEXT_EXT_HDR_TYPE_85
[16052.952759] PDU_SESSION_INFO_TYPE0

In get_gtpu_header_len(), we didn't expect the TYPE0 ("DL PDU Session Information) in uplink.

Please, check the more information on the below documents

  1. 3GPP TS 29.281 V15.3.0 (2018-06), Section 5.2.2.7 PDU Session Container
  2. 3GPP TS 38.415 V15.2.0 (2018-12), Section 5.5.2 Frame format for the PDU Session user plane protocol

Do you have plans to implement it?
Yes, we have a plan to implement rfc2698 (Two Rate Three Color like in P4) may be the end of June 2021.

@aviweit
Copy link
Author

aviweit commented May 19, 2021

Hi @muthuramanecs03g ,

Thanks for the input. I would like to ask whether there are differences between the GTP-U mainline kernel module and this gtp5g implementation? I am asking because I have noticed that free5gc UPF is based on this module and was wondering why it does not use the GTP-U mainline one.

Thanks.

@muthuramanecs03g
Copy link
Collaborator

muthuramanecs03g commented May 19, 2021

Hi @aviweit,

Linux mainline GTP kernel module didn't fulfill the requirements of 5G such as Downlink Data Buffering, QoS, and other requirements. In gtp5g, implemented Match+Action based on PDR, FAR, and QER.

That's why implemented it as a separate module, and also we have a plan to merge with the Linux kernel once gtp5g got tested with Landslide.

@muthuramanecs03g
Copy link
Collaborator

muthuramanecs03g commented May 20, 2021

Hi @aviweit,

One more thing, I would like to update you, this repo is part of the free5GC project. Now, this repo forked into free5GC and maintain it there only.

https://github.com/free5gc/gtp5g

@aviweit
Copy link
Author

aviweit commented May 24, 2021

@muthuramanecs03g ,
Thanks a lot for the updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants