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

[FEATURE] Only one tunnel per UE is supported for now #111

Closed
BENHSU0723 opened this issue Apr 11, 2024 · 3 comments
Closed

[FEATURE] Only one tunnel per UE is supported for now #111

BENHSU0723 opened this issue Apr 11, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@BENHSU0723
Copy link

Hello, I am trying to build second or more PDU sessions per UE under one Gnb. But I encountered the error message WARN[0002] [GNB][GTP] Only one tunnel per UE is supported for now, no tunnel will be created for second PDU Session of given UE, then i comment these check lines and tried again. Below is the error I got.

FATA[0012] [GNB][GTP] Unable to create Kernel GTP interface: listen udp 192.168.56.103:2152: bind: address already in use0000000003val0000000003

The IP addrress "192.168.56.103" is my Gnb IP. When I try to build second PDU session, this error will show up. I think these below function would build a new interface and bind with UDP port:2152 then managed by vrf device. Do you have any idea or know how to fix this problem? Please tell me, thank you!! I will apprecaite if you can answer me, maybe I can help to add this feature.

go func() {
			// This function should not return as long as the GTP-U UDP socket is open
			if err := gtpLink.CmdAdd(nameInf, 1, ueGnbIp.String(), stopSignal); err != nil {
				log.Fatal("[GNB][GTP] Unable to create Kernel GTP interface: ", err, msin, nameInf)
				return
			}
		}()

BRs, Ben

@BENHSU0723 BENHSU0723 added the enhancement New feature or request label Apr 11, 2024
@linouxis9
Copy link
Member

Hi @BENHSU0723!

Thanks a lot for your message. The error you are getting is the very reason why we are only able to have one UE per gNodeB. We can only have one GTP interface per N3 IP.

There are a few alternatives to this issue:

  • Use a single interface for all UEs / PDU Sessions per gNodeB, and then use ip policies to steer the traffic instead of VRF. This solution does work, but is not very performant as all UEs/PDU Sessions will share the max bandwidth.
  • Do not support multi UEs / PDU Sessions under a single gNodeB, and force the usage of multiple gNodeB (which is the solution we sadly opted for, for now, for performance reasons)
  • Switch to a GTP-U eBPF module which does not have these short comings: work has begun under this Pull Request but I had not the time to continue working on this feature: [WIP] Switch to eBPF for user-plane #47

If I can be of any help and can help clarify anything, please say so.

Thanks a lot!
Valentin

@BENHSU0723
Copy link
Author

Thanks your reply, @linouxis9 . It helps a lot. I may try to develop some features on branch [ebpf]. I just tried to run some tests, it's turely a feasible solution towards my problem.

BRs, Ben.

@linouxis9
Copy link
Member

Thanks a lot @BENHSU0723! If you manage to go far enough, please do open a PR, it would be truly appreciated!

Thanks and cheers,
Valentin

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

No branches or pull requests

2 participants