Osmo-ggsn MTU issue with Kernel GTP

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/osmocom-net-gprs@lists.osmocom.org/.

Keith A. Milner maillist at superlative.org
Tue Apr 13 10:10:18 UTC 2021


I've had an interesting situation with osmo-ggsn and kernel GTP module that I 
wonder if someone could shed some light on.

I've set up osmo-ggsn (v1.7.1) on Debian 10. There are two ethernet interfaces 
on the system, ens224 (for the Gn Interface) and ens256 (for the Gi 
Interface).

Using the following ggsn configuration seems to work fine:

ggsn ggsn0
 description Keith's Test APN
 gtp state-dir /tmp
 gtp bind-ip <ens224 IP>
 gtp control-ip <ens224 IP>
 apn keithtest
  gtpu-mode tun
  tun-device apn0
  type-support v4
  ip prefix dynamic 192.168.42.0/24
  ip dns 0 <redacted>
  ip dns 1 <redacted>
  ip ifconfig 192.168.42.0/24
  no shutdown
 default-apn keithtest
 no shutdown ggsn

I get the following tun device:

5: apn0: <POINTOPOINT,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN 
group default qlen 500
    link/none 
    inet 192.168.42.0/24 scope global apn0
       valid_lft forever preferred_lft forever
    inet6 fe80::fada:2e69:ad71:a61b/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Traffic routes, all is good with the world.

However, if I change to using Kernel GTP, by changing the gtpu-mode to 
"kernel-gtp", traffic will not route (and, yes, I have done modprobe gtp). After 
some exploration, it appears the tun device is being created with an MTU of 
zero which then, cannot pass traffic:

10: apn0: <POINTOPOINT,UP,LOWER_UP> mtu 0 qdisc noqueue state UNKNOWN group 
default qlen 1000
    link/none 
    inet 192.168.42.0/24 scope global apn0
       valid_lft forever preferred_lft forever

Here are the logs:

Tue Apr 13 11:02:06 2021 DGGSN NOTICE <0002> ggsn.c:830 GGSN(ggsn0): 
Successfully started
Tue Apr 13 11:02:06 2021 DGGSN INFO <0002> ggsn.c:186 APN(keithtest): Starting
Tue Apr 13 11:02:06 2021 DGGSN INFO <0002> ggsn.c:204 APN(keithtest): Opening 
Kernel GTP device apn0
Tue Apr 13 11:02:06 2021 DGGSN NOTICE <0002> gtp-kernel.c:79 Initialized GTP 
kernel mode (genl ID is 24)
Tue Apr 13 11:02:06 2021 DTUN NOTICE <0001> tun.c:217 GTP kernel configured
Tue Apr 13 11:02:06 2021 DGGSN INFO <0002> ggsn.c:236 APN(keithtest): Setting 
tun IP address 192.168.42.0/24
Tue Apr 13 11:02:06 2021 DGGSN INFO <0002> ggsn.c:294 APN(keithtest): Creating 
IPv4 pool 192.168.42.0/24
Tue Apr 13 11:02:06 2021 DGGSN INFO <0002> ggsn.c:168 APN(keithtest): 
Blacklist tun IP 192.168.42.0/24
Tue Apr 13 11:02:06 2021 DGGSN NOTICE <0002> ggsn.c:325 APN(keithtest): 
Successfully started

Note that if I manually alter the MTU, everything starts working again:
ip link set dev apn0 mtu 1500

So I can put this into a script and run it via ipup-script, and this works 
fine. I just get the impression I shouldn't have to do this, and the system 
should be setting the MTU, just as it does when I use tun mode.

Any thoughts on what I'm doing wrong here?

Cheers,

Keith





More information about the osmocom-net-gprs mailing list