返回

OpenAirInterface oaitun_ue1接口未激活问题排查及解决

Linux

OpenAirInterface 中 oaitun_ue1 接口问题排查

在使用 OpenAirInterface 构建 5G 网络时,可能会遇到用户设备(UE)成功连接认证后,oaitun_ue1 接口未激活的问题。这篇文章分析此问题的常见原因并给出解决方案。

问题表现

UE 与接入管理功能(AMF)成功认证后,在 UE 的 Docker 容器内部,ifconfig -a 命令显示 oaitun_ue1 接口存在,但状态为未激活状态,无IP地址分配。此现象表明 UE 注册过程虽正常,但数据传输通道未建立。

oaitun_ue1: flags=4240<POINTOPOINT,NOARP,MULTICAST>  mtu 1500
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可能的原因

此问题主要源于以下配置不匹配或配置缺失:

  1. 网络切片选择协助信息(NSSAI)配置错误 :核心网侧配置的 NSSAI 信息需要与 UE 配置中的 NSSAI 完全一致。NSSAI 配置的任何偏差都会导致会话管理功能 (SMF) 无法建立正确的承载,使得接口无法激活。
  2. UPF配置 : 数据用户面(UPF)的配置需与会话管理功能(SMF)一致,包括隧道等配置。如果UPF未被正确注册发现或者UPF配置与SMF配置不一致,将无法正常连接建立通道。
  3. 核心网配置缺失或错误 :例如 AMF、SMF 以及 UPF 之间的关联配置错误或者参数缺失可能阻碍了数据传输路径的正常建立。

解决方案

方案一: 检查 NSSAI 配置

NSSAI 用于标识特定的网络切片,若配置不当,会导致 SMF 选择失败,UE 无法获取 IP 地址。

  • 步骤

    1. 检查 docker-compose.yaml 中 AMF、SMF 以及 UE 对应的配置文件,确定所有涉及的 NSSAI(例如:SSTSD)值。
    2. 确保这些值在核心网各组件(AMF,SMF),以及 UE 配置中保持一致。特别需要关注的是UE的配置项中的SST与SD必须与AMF,SMF中配置的切片信息完全一致。
    3. 在使用oaisoftwarealliance官方提供的最小化示例中,通常核心网配置文件与 docker-compose 文件配合使用,以减少不必要的配置复杂性。你需要确认你加载了合适的配置,而非只是在 docker-compose.yaml 中随意添加。
    4. 重启核心网和UE相关服务以使配置生效。
  • 代码示例 (仅为配置片段示例,具体参数值取决于实际网络配置):

    • AMF (在 docker-compose.yaml 配置文件中或使用类似格式的 config.yaml):

      SERVED_GUAMI_MCC_0: 208
      SERVED_GUAMI_MNC_0: 99
      SERVED_GUAMI_REGION_ID_0: 128
      SERVED_GUAMI_AMF_SET_ID_0: 1
      PLMN_SUPPORT_MCC: 208
      PLMN_SUPPORT_MNC: 99
      PLMN_SUPPORT_TAC: 0x0001
      SST_0: 1  # NSSAI - Slice/Service Type 必须与UE配置的SST一致
      
    • SMF (在 docker-compose.yaml 配置文件中或使用类似格式的 config.yaml):

        NSSAI_SST0: 1   # NSSAI - Slice/Service Type 必须与UE配置的SST一致
        SESSION_AMBR_UL0: 200Mbps
        SESSION_AMBR_DL0: 400Mbps
      
    • UE (在ue.sa.conf或其他配置文件中):

        service_type.0 = 1  #  NSSAI - Slice/Service Type,需与SMF, AMF中SST保持一致
        slice_id.0     = 0xFFFFFF    # NSSAI SD(Slice Differentiator),若使用了slice_id则应与AMF,SMF配置SD一致,或者不配置(都默认FFFFFFF)
      

      在官方示例中通常使用0xffffff.
      *注意:
      a. 配置中的“_0” 是索引标识,表明这是第一个网络切片配置。可配置多个切片(例如, _1, _2 等)但需要确保所有核心网组件及UE的配置中该配置数量一致。
      b. 对于AMF,SMF,UPF的参数设置如果过多,可能配置复杂或者不方便排错,可以考虑采用config.yaml 文件,以方便统一配置,并通过volumes方式挂载进容器中。

  • 安全建议 : 应避免在生产环境中采用简化的配置。网络切片是一种强大的机制,通过精心规划和细致的配置来保证隔离和资源分配,可依据不同的需求规划和配置不同的NSSAI 。

方案二: 检查UPF配置

UE的数据需要经过用户面UPF的路由,所以UPF是数据链路的核心部分,任何UPF与SMF的配置错误,都会导致数据链路异常。

  • 步骤 :

    1. 检查 docker-compose.yaml 或者 config.yaml 中 SMF 中 UPF 相关配置,包括 UPF FQDN, IP 等信息。
    2. 检查UPF相关的配置,确认与SMF中保持一致。包括NSSAI,DNN等,例如DNN需要与SMF中配置一致,IP池等需要SMF UPF之间相互匹配。
    3. 查看UPF运行日志是否报错,是否存在注册或者隧道错误。
    4. 重启核心网组件并重新attach UE。
  • 代码示例 (仅为配置片段示例,具体参数值取决于实际网络配置):

  • SMF

       UPF_FQDN_0=oai-upf #UPF的服务FQDN
       UPF_IPV4_ADDRESS_0=192.168.71.134
    
       - DNN_NI0=oai  #需要与UPF的配置一致
       - TYPE0=IPv4
       - DNN_RANGE0=12.1.1.2 - 12.1.1.127  #UPF对应的IP地址范围,注意UE使用的IP需在这个范围内
       - NSSAI_SST0=1
    
  • UPF

       - NSSAI_SST_0=1  # 保证SMF UPF 使用一致的SST,
       - DNN_0=oai
       - NETWORK_UE_IP=12.1.1.0/24  #注意,SMF的DNN_RANGE,应该包含在这个IP范围内。
    
  • 安全建议 :配置UPF时应采取必要隔离措施,包括网络安全组设置以及数据流量的监控,保证数据传输的安全。

方案三: 排查网络配置问题

一些网络问题可能会导致 oaitun_ue1 接口不被激活,可以从以下角度排查:

  • 步骤

    1. 确认网络命名空间 (network namespace) 和 虚拟网络接口的配置。使用 ip netns命令查看网络命名空间,并利用ip link检查接口状态。
    2. 确认 Docker 容器的网络配置。检查 Docker 网络配置和相关的 IP 地址分配。
    3. 使用pingtcpdump 命令来测试网络连接,以排查网络层面潜在问题。
  • 命令行示例

    1. 使用命令 ip netns 可以查看网络命名空间是否存在问题。
    2. 进入UE容器内部,执行ifconfig命令,或者 ip link查看oaitun_ue1 接口状态。
    3. 利用 tcpdump工具在UPF,UE,ext-dn等容器内部监听流量,以检测数据传输是否存在异常。

小结

在解决 OpenAirInterface 中的 oaitun_ue1 接口问题时, 需要深入理解各个组件之间的配置依赖关系, 并重点关注 NSSAI 和UPF等核心参数的设置,并进行细致的检查。通过遵循这些排查步骤和最佳实践,能够有效地解决该类问题,并确保网络稳定运行。

资源链接:

(因内容限制,这里省略具体资源链接,如有需要可补充相关文档地址。)