とんとんとんねる

概要

あなたは新規事業の担当として携帯キャリア事業を始めるという使命を与えられました。
それに合わせてあなたの部下に5G環境を構築させるという仕事を任せました。
ノウハウがまだないので私たちはコントロールプレーンがないユーザープレーン環境で実験を行うことにしました。
しかしながら新人の部下には荷が重く「なんか通信がサーバーまで通らないんですよ〜(涙)」という話をされてしまいました。ぜひ凄腕の君の力で原因を究明してつながるようにしてください。

前提条件

提供された環境を利用して解決せよ

初期状態

手元のgNodeBから $ ping 192.168.21.50 をしても応答がない。

終了状態

手元のgNodeBから $ ping 192.168.21.50 をすると応答が返ってくる。
通信はトンネルインターフェースで行うこと。

トポロジー

接続情報

VM名ホスト名ユーザパスワード
gNodeB192.168.21.2adamfail2tun
UPF192.168.21.3adamfail2tun
DN192.168.21.4adamfail2tun

解説

この問題はGTPv1-Uと呼ばれるモバイルにおけるトンネリングプロトコルのユーザプレーン通信を題材にしたもので、これはGTPv1-UにはTEIDと呼ばれるトンネリングのアンカーになるIDが存在しますがそれらが設定されてないことに起因する問題でした。
解き方の鍵としてはGTPv1-Uはどのようなフォーマットで行われるのかを理解し、tcpdumpを正しく使いこなせれば解ける問題でした。

今回の解法例を示します。
systemdで動かしてる /opt/netprob/init.sh で展開されてることが jounalctl をみるとわかるのでそこに実行コンフィグがあることがわかります。
gNBというホストにおいての init.sh にあるコンフィグを以下のようにします。

#!/bin/sh
sleep 0.1
ip addr add 10.0.0.1/24 dev lo
sh /home/adam/libgtp5gnl/tools/gtp5g-link add gtptun --ran &
sleep 0.1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 1 --action 2
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add far gtptun 2 --action 2 --hdr-creation 0 100 192.168.21.34 2152
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 1 --pcd 1 --hdr-rm 0 --ue-ipv4 10.0.0.1 --f-teid 200 192.168.21.33 --far-id 1
sh /home/adam/libgtp5gnl/tools/gtp5g-tunnel add pdr gtptun 2 --pcd 2 --ue-ipv4 10.0.0.1 --far-id 2
ip r add 192.168.21.48/28 dev gtptun

差分をみるとわかりますが 解法部分は--f-teid 200 とすることです。
UPFをみると --hdr-creation 0 200 192.168.21.33 2152 となっていることから期待されているTEIDは200 となっており、100は間違っていることがわかります。
おそらく担当者はコピペで作ってしまったのでしょう。悲しいですね。

以上のことから受け取り側のTEIDと送られる側のTEIDを期待通りにしておく必要があります。
狙いとしてはモバイルなどと呼ばれる世界は基本的なコンポーネント一つ一つを正しく理解をすればちょっとぐらい触れることを皆さんに知ってもらいたかったというのがあり簡単な問題を一つ出させていただきました。

有効な提出をしたチームにおいて完答したチームが半分、もう半分がGREで回答をしていました。
残念だったのはトンネルインターフェースという点だけではなく「提供された環境を利用して解決せよ」と書いていたのを留意して欲しいと思いました。
またip als などをしてそのインターフェースの名前が gtptunになっていたり、ローカルにあるフォルダがgtpという文字を含んでいることに気がつけばどのトンネルインターフェースがどのプロトコルの話をしているのかを容易に想像することができると思います。

楽しんでいただけたら幸いです。

採点基準

  • GTPv1のパケットをgNB, UPFでTEIDが正しいパケットが流れている(100%)