OCX52拠点爆速展開の軌跡とこれから

この記事は、BBSakura Networks アドベントカレンダー 2025の25日目のトリ記事です。

代表挨拶(就任のご挨拶/振り返り)

このたびBBSakura Networksは新体制となり、OCXを次の成長フェーズへ推し進めます。 これまでOCXを支えてくださったパートナー各社、そして日々ご利用いただいているお客さまに心より御礼申し上げます。

OCXは「必要なときに / 必要な場所へ / 必要な接続をオンデマンドに」という思想のもと、拠点の拡大と機能の拡張を両輪として歩みを続けてきました。

これからは、拠点数の拡大だけでなく、パートナー各社間でのビジネスを発展させる取り組みや、OCX本体の運用のしやすさ・接続の確実性・セキュリティ・可視化といった使い勝手も含めて「つながることが当たり前」になる体験をより高い水準で提供していきます。

OCXのこれまでとこれから — 52拠点までの軌跡

BBSakura Networks代表の川畑です。2025年、BBSakuraは代表を佐々木から川畑へ交代し、新体制でスタートしました。 この節目にあわせて、改めてOCX(Open Connectivity eXchange)の歩みを振り返ろうと思います。

OCXは2022年の正式サービス開始からデータセンター接続拠点を着実に拡大し、機能も当初は「クラウド・データセンター間の閉域接続」だったものから 「仮想ルータ・インターネット接続・モバイル接続」へと広げてきました。そして2025年12月時点では海外も含めて52もの拠点数になりました。

年次サマリ:拠点拡大と機能拡張

※拠点増加数は、各年の「接続拠点を開設/追加」と明示された発表を中心に集計した目安です。

増加数 累計拠点数 その年のキーワード(増えたもの)
2022 +約4 約8 提供開始(東京4拠点)/ 首都圏拡張 / LOA自動発行 / 仮想ルータ
2023 +約15 約23 大阪ロケーション / アクセスメニュー拡張(OCX光・Internet Connection)/ クラウド接続先の拡充
2024 +約16 約39 全国展開が加速 / Internet Gateway / SaaS Connection / SmartVPN Connection / 運用機能(2FA・請求DL・DOM情報表示)
2025 (継続拡大) 52 OCX Mobile Access / 海外拠点(タイ・シンガポール)の追加

2022:サービス開始 — 「東京4拠点」からの第一歩

拠点

  • OCXの正式提供を開始し、まず都内のBBIX4拠点でスタート
  • 以降、パートナー様の首都圏にある接続拠点を追加し、基盤を厚くするフェーズへ

機能

  • LOA自動発行:接続手続きの手間を低減し、導入をスムーズに
  • 仮想ルータ:オンプレ機器に依存せず、閉域内でのルーティングやBGP接続を実現

この年は「まずは確実に使える土台を作る」ことがテーマで、パートナー様にはOCXの魅力をお伝えして拠点加盟のご案内を進めつつ、機能的にはOCXの「通信」の基本機能を揃えることに注力していました。

2023:全国展開が加速 — “面で増える”フェーズへ

拠点

  • 地域ケーブルテレビ事業者や電力系通信事業者との協業が増え、各地で接続拠点の追加が進む
  • 大阪への拠点展開など、東京だけで完結しない利用形態が現実になり全国への広がりが見えるように

機能

スピード優先で立ち上げていたソフトウェア技術の負債が徐々に顔を覗かせてきた年でもありました。いやぁ大変でした... 新機能開発はほどほどに、継続的なソフトウェア開発が行えることを念頭に取り組んでいました。

  • アクセスライン:導入の入口が広がり、MDAダークファイバを活用してオフィスビルから直接OCXへ接続ができるようになるなど周辺の選択肢が増える
  • Internet Connection:インターネットへの接続に対応し、構成の自由度が向上

この年は「拠点を増やす=地域DXの入口を増やす」をテーマに、OCXがパートナーのみなさまの選択肢として根付き始めた年でした。

2024:機能拡張の年 — NAPT / SmartVPN / SaaS で“使い方”が広がる

拠点

  • 全国拡大を継続し東西の拠点バランスが良くなり、拠点数の伸びに加えてハブとしての厚みが増した一年

機能

  • Internet Gateway:待望のNAPTでインターネットに出られる機能を追加
  • SaaS Connection:インターネットを経由せずSaaSへアクセスできるようになり、用途が増える
  • SmartVPN Connection / DOM表示機能 / Traffic Report / 2要素認証 / 請求DL:運用面の機能が整い、継続利用しやすく

この年は「つなぐ」から「使いこなす」へ。 OCXがネットワークの部品ではなく、業務の基盤として育ってきた実感が強まった一年でした。

2025:アクセス多様化と海外展開 — 次の成長曲線へ

拠点

  • 国内の拡大を継続しながら、海外(シンガポール/タイ)へ
  • 2025年12月時点で52拠点に到達

機能

  • OCX Mobile Access:固定回線だけでなく、モバイルを入口に閉域へ
  • 海外拠点:クラウド接続拠点/OCX接続拠点として、国を越えたユースケースへ

2025年は「入口(アクセス)とフィールド(提供範囲)の両方が広がった」年で、OCXが国内の閉域接続から国を超えた接続サービスへ進化しました。

これから:次の焦点は「使い勝手のさらなる向上」

様々な機能追加をしてきたものの、まだまだパートナー様が要望されている機能を実装し切れていないのが懺悔のポイントです。 そのため、拠点数の拡大そのもの以上に、次のような領域を今後の重点として取り組んでいきたいと考えています。

  • L2接続において、OCX側で冗長構成を取れる機能の整備
  • IAMによる細かな権限管理を通じて、多数のリソースを扱う環境でも運用ミスを減らし、管理しやすくするための仕組み
  • 1Gや10Gを超える高速インタフェースの提供に向けた検討

通信事業者にとって使いやすく、OCXをより多くの現場で"迷わず選べる存在"にするため、新体制としてスピード感をもって取り組んでいきます。

参考(プレスページ)

BBSakura Networks お知らせ
https://bbsakura.net/ja/information

BBIX お知らせ
https://www.bbix.net/information/

OCXを基盤としたモバイル回線通信サービス "OCX Mobile Access" の構成例の紹介

BBSakura Networks Advent Calendar 2025 21日目の投稿です。

はじめに

こんにちは、BBSakura Networks株式会社でモバイルコアの開発・運用をしている桐山です。
今回は、Open Connectivity eXchange(以下、OCX)で提供しているOCX Mobile Accessについて紹介します。

OCX Mobile Accessとは

OCX Mobile Accessは、モバイルネットワークからOCXのネットワークへの接続を提供する、OCXのアクセスラインサービスです。OCXの既存リソースと組み合わせることで拠点やクラウド、インターネットなどご利用の環境にモバイル回線で接続可能です。

2025年3月31日にサービス提供が開始され、小規模プランや通信量計測といったSIMオプション機能を含め、順次機能を拡充しています。

www.bbsakura.net

www.bbsakura.net

Interop Tokyo 2025ではモバイルコンピューティング(5G/6G)部門にてグランプリを受賞しております。

www.bbsakura.net

本記事では、OCX Mobile Accessを活用した閉域接続とインターネット接続の構成例について紹介します。

構成例

基本要素

OCX Mobile Access のリソースとしては以下の4つがあります。各リソースの詳細はドキュメントサイトを御覧ください。

  • Virtual Mobile Gateway(以下、VMG) : モバイル回線とOCXのネットワークの接続を提供するゲートウェイ
  • SIM:OCX Mobile Accessで利用するSIMカード
  • SIM Pack:OCXポータル上でSIMを購入する際の1単位
  • Data Pack:OCXポータル上でデータ通信容量を購入するときの1単位

OCX上でOCX Mobile Accessを含むネットワークを構築する場合、VMGおよびSIMに割り当てるネットワークのアドレス設計が必要です。

インターネット接続

OCX Mobile Accessを利用してインターネット接続を行う構成例です。

インターネット接続の構成例

インターネット接続の際にはInternet Gatewayを利用します。
アドレス設計として考慮が必要な項目は以下の通りです。

  • SIMのIPアドレスの範囲
  • VMGインスタンス#1とPrimaryルータのpeerアドレス
  • VMGインスタンス#2とSecondaryルータのpeerアドレス
  • OCX-Router(v1)のPrimary/Secondary間のpeerアドレス
  • OCX-Router(v1)とInternet Gatewayのpeerアドレス

クラウド接続

OCX Mobile Accessを利用してクラウド接続(AWS)を行う構成例です。

クラウド接続(AWS)の例

クラウド接続の際にはCloud Connectionを利用します。 アドレス設計として考慮が必要な項目は以下の通りです。

  • SIMのIPアドレスの範囲
  • VMGインスタンス#1とPrimaryルータのpeerアドレス
  • VMGインスタンス#2とSecondaryルータのpeerアドレス
  • OCX-Router(v1)のPrimary/Secondary間のpeerアドレス
  • PrimaryルータとCloud Connectionのpeerアドレス
  • SecondaryルータとCloud Connectionのpeerアドレス

ハイブリッド接続

OCX Mobile Accessを利用してインターネットとクラウド(AWS)へのハイブリッド接続を行う構成例です。

ハイブリッド接続

インターネット接続の際にはInternet Gatewayを、クラウド接続の際にはCloud Connectionを利用します。 OCX-Router(v1)を使用することでハイブリッド環境への接続が可能となります。

アドレス設計として考慮が必要な項目は以下の通りです。

  • SIMのIPアドレスの範囲
  • VMGインスタンス#1とPrimaryルータのpeerアドレス
  • VMGインスタンス#2とSecondaryルータのpeerアドレス
  • OCX-Router(v1)のPrimary/Secondary間のpeerアドレス
  • OCX-Router(v1)とInternet Gatewayのpeerアドレス
  • PrimaryルータとCloud Connectionのpeerアドレス
  • SecondaryルータとCloud Connectionのpeerアドレス

おわりに

今回は、OCX Mobile Accessを活用したインターネットとクラウドへの接続の構成例を紹介しました。 OCX Mobile Accessでは、OCXを活用いただくお客様に利便性の高いモバイル回線を提供できるように機能追加・サービス改善を続けていきます。

本記事を通じて OCX のご利用に興味をお持ちいただけましたら、弊社までお問い合わせください。また、ご不明な点等がありましたら、お気軽にご連絡ください。

docs.ocx-cloud.net

BGP Role を RFC とパケットキャプチャで勉強してみた

はじめに

この記事は BBSakura Networks Advent Calendar 2025 の 20 日目の記事です。

こんにちは! BBSakura で基盤となるネットワークを開発している酒井です。

一昨年昨年の BBSakura Advent Caleder でも BGP 関連技術について書いていました。今年はアドベントカレンダーとしては大遅刻してしまいましたが、懲りずに BGP ネタで書いていこうと思います。

今年の BGP ネタとしては、 BGP Role を選びました。 BGP Role は RFC 9234 で定義されており、私はこの APNIC のブログ記事 を読んで知りました。

本記事は、私が当該 RFC を読み、実際にパケットキャプチャをして中身を眺めて学習した内容をまとめたものになります。

BGP について

まず、 BGP の概要と BGP Role が必要な理由について簡単に説明します。

BGP は異なるネットワーク間を接続するために使用されるプロトコルであり、インターネットを構成する各組織間の接続にも用いられています。

インターネットがどのように BGP を用いて構成されているのかは、JPNIC のインターネット 10 分講座過去の JANOG のチュートリアル などが参考になります。

インターネットでは BGP によって各組織間の接続性を確保しているわけですが、過去には度々 BGP の設定ミスによるインターネットの通信障害が発生しています。

具体的な通信障害としては、2017年8月のインターネット接続障害2024年7月の1.1.1.1への到達性障害 などがあります。

これらの通信障害はいずれも BGP Route Leak と呼ばれる意図しない BGP 経路広報が原因です。BGP Route Leak 自体も RFC 7908 で定義されています。インターネットは各組織間の相互努力によって維持されており、どうしても BGP の設定ミスをゼロにはできず、ミスによる影響が発生してしまいます。

これらの設定ミスやそれによる影響を最小限にするため、インターネットを構成する各組織はルーティングセキュリティを実行することが推奨されています。具体例として MANRS と呼ばれる BGP におけるルーティングセキュリティを確保するための活動などがあります。 MANRS については JPNIC の解説 でも説明されています。

BGP Role はこのルーティングセキュリティに関する技術と言えます。一文で表すと、 BGP Role は組織間 (AS 間)の隣接関係を構成する BGP スピーカーに役割を与えることで、役割通りの経路交換を強制し、意図しない経路交換 (BGP Route Leak) を防ぐ技術 と言えるかと思います。

では、この BGP Role の具体的な内容を RFC から学習していきましょう。

RFC 9234

RFC 9234 は 2022 年に発行された比較的新しい RFC です。

導入部分であるセクション 1 では、 BGP Route Leak の防止手段としては BGP 経路フィルタが一般的ではあるものの、経路フィルタの適用を AS 間の eBGP セッションで互いに強制と確認ができないため不十分であると書かれています。これらを補うために、 BGP Role は BGP OPEN メッセージで AS 間の役割を eBGP セッション確立時に明確にし、その役割に基づいて eBGP セッションにルーティングセキュリティを実装する技術になります。

以降ではこの RFC の中心である BGP Role Capability と OTC Attribute に分けて説明します。

BGP Role Capability

BGP Role Capability は eBGP セッションを確立する時にお互いの役割を決定・確認するために用いられます。

セクション 3 では AS 間の直接的な eBGP セッションであるピアリングに基づいて役割について定義しています。そして、セクション 4 ではそれらの役割に対応させる形で BGP Role の BGP Capability の値が次の表のように定義されています。

Value Role name
0 Provider
1 RS (Route Server)
2 RS-Client
3 Customer
4 Peer
5~255 未割り当て

eBGP セッション確立時に、 BGP スピーカーはその eBGP セッションにおける自身の役割を OPEN メッセージ内の BGP Role Capability で相手に知らせます。

続けて、 1 つの eBGP セッションにおける 2 つの BGP スピーカーの役割の組み合わせ、つまり、 BGP スピーカーの関係が次のいずれかと一致する必要があると決められています。

Local AS Role Remote AS Role
Provider Customer
Customer Provider
RS RS-Client
RS-Client RS
Peer Peer

つまり、片方の BGP スピーカーが Provider であれば、もう片方は Customer でなければ関係が成立しません。両方が Provider、両方が Customer であることはありえません。 RS・RS-Client も同様です。 Peer は対等な関係ですので、お互いに Peer の役割である必要があります。もし、 2 つの BGP スピーカーの役割の組み合わせが上記の表のいずれにも一致しなかった場合は、 Role Mismatch Notification として eBGP セッションの接続は拒否されセッションが確立しません。

BGP Role Capabilityの組み合わせ例を3つ図示したもので、上から順にProvider - Customerで成功、Provider -ProviderでMismatch、Peer-Peerで成功。
BGP Role Capability 組み合わせ

なお、BGP Role Capability を自身は送信したものの相手から受信できなかった場合、つまり、相手方の BGP スピーカー (Remote AS) が BGP Role に対応していない場合は、そのまま eBGP セッションの確立を進めることを推奨しています。逆に、 BGP Role Capability の受信をお互いに必須とする strict mode というものもあります。

BGP Only to Customer (OTC) Attribute

OTC Attribute は eBGP セッションで経路を広報・受信する時に交換される経路が Route Leak されたものであるかどうかを判断するために用いられます。

この OTC Attribute は実際の経路交換時に送られる UPDATE メッセージへ付与される Path Attribute です。この Attribute 長は 4 オクテット (バイト) になり、 AS 番号が値として入ります。この Attribute は Optional Transitive なので、 BGP スピーカーはこの Arttribute は無視できますが他の BGP スピーカーにも Attribute をつけた状態で広報する必要がああります。

OTC Attribute が付与された経路 (Prefix) は、 Customer に対してのみ広報でき、それ以外の役割の BGP スピーカーへは広報できません。これにより、 BGP Route Leak を防ぎます。

具体的には BGP による経路受信時・広報時にそれぞれ次の手順によって OTC Attribute の処理が行われます。

[経路受信時]

  1. OTC Attribute が付与された経路を Customer または RS-Client から受信した場合に、その経路は Route Leak されたものであり不適切な経路として扱わなければならない

  2. OTC Attribute が付与された経路を Peer から受信し、かつ、 Attribute の値が Remote AS の AS 番号と一致しない場合は、その経路は Route Leak されたものであり不適切な経路として扱わなければならない

  3. Provider ・ Peer ・ RS から受信した経路に OTC Attribute が付与されていない場合に、その経路に Remote AS の AS 番号を OTC Attribute として付与しなければならない

[経路広報時]

  1. Customer・Peer・RS-Client へ経路を広報しようとしており、かつ、 OTC Attribute がその経路に付与されていない場合は、その経路の広報時に自身の AS (local AS) の AS 番号を OTC Attribute へ付与しなければならない

  2. 経路にすでに OTC Attribute が付与されている場合に、その経路を Provider・Peer・RS に広報してはならない

これらの手順によって、 BGP Route Leak な経路交換を送信側・受信側のどちらでも防止できます。

経路受信時の 3 の手順のように、 Remote AS が BGP Role に非対応であったとしても自 AS (Local AS) で OTC Attribute を付与できるため、インターネットの各 AS が一斉に BGP Role を導入しなくても良く、段階的な導入が可能です。

わかりやすいように AS A と B の役割によって AS B から A への経路広報がそれぞれどのように変化するかを図示しました。 RS・RS-Client の Role については割愛しています。

AS BがBGP Roleが異なるAS C・D・Eからの経路広報をAS Aへトランジットしており、AS BがAS AのCustomerである場合の図
AS B が AS A の Customer の場合

AS BがBGP Roleが異なるAS C・D・Eからの経路広報をAS Aへトランジットしており、AS BがAS AとPeerの場合の図
AS B が AS A と Peer の場合

AS BがBGP Roleが異なるAS C・D・Eからの経路広報をAS Aへトランジットしており、AS BがAS AのProviderである場合の図
AS B が AS A の Provider の場合

なお、 OTC Attrbute は IPv4 Unicast (AFI1・SAFI1) と IPv6 Unicast (AFI2・SAFI1) でのみ適用され、それ以外のアドレスファミリでは適用してはならないとされています。

また、セクション 6 の Additional Consideration では、複雑なピアリング関係の eBGP セッションでは BGP Role は使用してはならないと書かれています。この複雑なピアリング関係というのは Partial Transit などが該当するのではないかと私は考えていますが、詳しい方がいたら教えてください。

パケットキャプチャ

ここまで RFC 9234 の内容について説明してきました。ここからは実際の BGP Role の動作をパケットキャプチャしながら見ていきます。

今回は BGP スピーカーとして FRRouting (FRR) を使用します。 FRR は バージョン 8.4 から RFC 9234 をサポートしています。

Implement Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages rfc9234

BGP Role Capability を見てみる

まずは、 BGP OPEN メッセージの BGP Role Capability を見たいので下の図のようにシンプルな 1 対 1 の構成を作成します。 FRRouting の BGP Role の設定は 公式ドキュメント に記載されています。

2つのルータfrr-01とfrr-02が並んでおりeBGPセッションを張れる構成
1 対 1 環境構成図

ここでは eBGP セッションが確立する必要最低限の FRR の設定を用意します。

[frr-01]

router bgp 65001
 neighbor 192.168.100.2 remote-as 65002
 neighbor 192.168.100.2 local-role provider
exit

[frr-2]

router bgp 65002
 neighbor 192.168.100.1 remote-as 65001
 neighbor 192.168.100.1 local-role customer
exit

これで 2 台の FRR 間で eBGP セッションが確立します。ちゃんと BGP Role 設定も反映されていそうです。

frr-01:/# vtysh -c 'show bgp neighbor' | grep 'Role'
  Local Role: provider
  Remote Role: customer
    Role: advertised and received

frr-02:/# vtysh -c 'show bgp neighbor' | grep 'Role'
  Local Role: customer
  Remote Role: provider
    Role: advertised and received

BGP OPEN メッセージをキャプチャしたところ、 BGP Role の Capability が見えました。この OPEN メッセージは frr-01 から frr-02 へ送られているものなので、 Provider (0) が埋め込まれています。

BGP Role Capabilityが設定されたBGP UPDATEメッセージをWiresharkで表示しているスクリーンショット
BGP Role Capability

続けて、 frr-01 の BGP Role を Provider から Customer へ変更してみます。これにより両方の BGP Role が Customer となります。

[frr-01]

router bgp 65001
 neighbor 192.168.100.2 remote-as 65002
 neighbor 192.168.100.2 local-role customer
exit

そうすると、 OPEN メッセージのやり取り後に "Role Mismatch Notification" が送信されており、 eBGP セッションは確立しませんでした。

Role Mismatch NotificationのパケットをWiresharkで表示しているスクリーンショット
Role Mismatch Notification

RFC 通りの動作です!

OTC Attribute を見てみる

さて、最後に BGP Role に合わせて経路が広報されたりされなかったりするのかを確認します。

OTC Attribute と経路広報確認のための構成図であり、左からAS65001、AS65002、上下に並んだAS65003とAS65004があり、AS65002がPeer関係であるAS65003とProvider-Customer関係であるAS65004の経路を受信している。
OTC Attribute と経路広報確認のための構成図

上の構成図にある通り、 frr-03 (AS65003) と frr-04 (AS65004) から frr-02 (AS65002) へ経路を広報し、それらの経路が frr-02 から frr-01 (AS65001) へ広報 (Transit) されるかどうかを見てみましょう。

各 FRR の設定は次の通りです。

[frr-01]

router bgp 65001
 no bgp ebgp-requires-policy
 neighbor 192.168.100.2 remote-as 65002
 neighbor 192.168.100.2 local-role peer
exit

[frr-02]

router bgp 65002
 no bgp ebgp-requires-policy
 neighbor 192.168.100.1 remote-as 65001
 neighbor 192.168.100.1 local-role peer
 neighbor 192.168.110.2 remote-as 65003
 neighbor 192.168.110.2 local-role peer
 neighbor 192.168.120.2 remote-as 65004
 neighbor 192.168.120.2 local-role provider
exit

[frr-03]

interface lo
 ip address 192.0.2.3/32
exit
!
router bgp 65003
 no bgp ebgp-requires-policy
 neighbor 192.168.110.1 remote-as 65002
 neighbor 192.168.110.1 local-role peer
 !
 address-family ipv4 unicast
  network 192.0.2.3/32
 exit-address-family
exit

[frr-04]

interface lo
 ip address 192.0.2.4/32
exit
!
router bgp 65004
 no bgp ebgp-requires-policy
 neighbor 192.168.120.1 remote-as 65002
 neighbor 192.168.120.1 local-role customer
 !
 address-family ipv4 unicast
  network 192.0.2.4/32
 exit-address-family
exit

BGP UPDATE メッセージのキャプチャを確認します。まず、 frr-03 から frr-02 への経路広報です。

AS65003からAS65002へのBGP UPDATEをWiresharkで表示しているスクリーンショットで、OTC Attributeに65003の値が設定されている
BGP Role Peer での広報]

BGP Role は Peer の経路広報なので OTC Attribute として 65003 の値が入っています。

次に frr-04 から frr-2 への経路広報です。

AS65004からAS65002へのBGP UPDATEをWiresharkで表示しているスクリーンショットで、OTC Attributeが設定されていない
BGP Role Customer での広報

BGP Role が Customer から Provider への経路広報なので OTC Attribute は設定されません。

最後に frr-02 から frr-01 への経路広報です。

AS65002からAS65001へのBGP UPDATEをWiresharkで表示しているスクリーンショットで、OTC Attributeに65002の値が設定されている
BGP Role Peer へのトランジット広報

BGP Role が Peer の経路広報になるため、 Customer から受信した経路に自身の AS 番号である 65002 を値とした OTC Attribute を設定しています。

この状態で frr-02 から frr-01 への経路広報状況を確認したところ、 Customer である frr-04 (AS65004) から受信した 192.0.2.4/32 のみを広報しており、 Peer である frr-03 から受信した 192.0.2.4/32 は広報していませんでした。

frr-02# show ip bgp neighbors 192.168.100.1 advertised-routes
BGP table version is 6, local router ID is 192.168.120.1, vrf id 0
Default local pref 100, local AS 65002
Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.0.2.4/32     0.0.0.0                                0 65004 i

Total number of prefixes 1

つまり、 192.0.2.4/32 は Route Leak 扱いになっており、 RFC 通りの動作と言えそうです。

おわりに

今回の記事では BGP Role について書きました。 シンプルな設定でルーティングセキュリティを実装できるのがとても良いと思いました!インターネットで BGP Role を実装している AS が増えてくるかもしれませんね。

BBSakura Networks Advent Calendar 2025 の他のブログ記事もぜひお読みください。

バックエンド開発チームを紹介

この記事は BBSakura Networksアドベントカレンダー2025 の22日目の記事です。

はじめに

最近、バックエンド開発チームのリーダーになった okuno です。

─── BBSakura のソフトウェアエンジニアは、謎に包まれている。

社内外からそんな声をもらうことがありました。

そこで、今回は会社や提供サービスの概要、
またバックエンド開発チームの役割や技術スタックや働き方などを紹介します!


目次

1. 会社概要

1.1. 会社紹介

1.2. 提供サービス

  • OCX(Open Connectivity eXchange) という NaaS を提供しています。
    • OCX とは データセンター間接続 / ルーティング / クラウド事業者との接続 など、
      ネットワークの様々な機能をクラウド化し、それらを管理するコンソール画面を備えたプラットフォームサービスです。

1.3. ブログ記事(抜粋)

2. 開発チーム

OCX のソフトウェア開発には、
他にも フロントエンド開発チームモバイル開発チーム仮想基盤開発チーム など、
複数の専門チームが関わっています。

このページでは、その中でも バックエンド開発チーム にフォーカスして紹介します。

2.1. 開発方針

  • ユーザーに価値を届ける機能を作り、収益を伸ばす
  • 設計やコードの変更容易性を確保し、将来の保守・改修コストを抑える
  • 収益性と費用対効果の両面を意識し、持続的に利益を生み出せる開発を目指す

2.2. 役割と責任

  • OCX におけるバックエンドの設計・開発
    • API / ビジネスロジック / バックグラウンド処理 などが中心
    • 新サービスや新機能の開発、既存機能の保守・改善を中心に、技術的負債の解消など、ソフトウェア開発に関わる領域全般を担当
  • OCX の成長に伴い、技術的負債も少なくありません
    • 以下のような改善提案も大歓迎で、ステークホルダーと合意を取りながら進めています
      • 「この機能があったほうが便利」
      • 「この部分はリファクタしたい」
      • 「ここを改善すればパフォーマンスが上がりそう」
  • 運用は専任チームが担当していますが、運用に関わる開発タスクを担うこともあります
  • 担当領域はありますが、役割に強く縛られることはありません
    • 例:バックエンドエンジニアがフロントエンド開発に関わることも可能です(逆も歓迎)

2.3. 開発体制

  • 開発は、テーマや規模に応じてプロジェクト形式で進めることもあれば、機能追加や改善などをイシュー単位で進めることもあります
    • ビジネスサイドからの要望を起点にする場合もあれば、エンジニア自身の問題提起や改善提案から始まることもあります
  • 開発に関わる業務全般(要件定義・設計・実装・テスト・レビュー・リリースなど)をチームで分担しながら進めてます
    • 特定の担当者に責任が集中しすぎないよう、レビューや相談を前提とした進め方をしています
  • リリース予定日は、開発スコープや優先度、ステークホルダーとの相談を踏まえて現実的に決定しています
  • プロジェクトやイシューはすべて GitHub Projects で一元管理し、チーム内で常に状況を共有しています
    • エンジニア自身が興味のあるテーマに手を挙げて、主体的に開発を進めることもあります
  • 明確な正解がないテーマについても、試行錯誤しながら取り組んでます

2.4. 開発・レビューの進め方

  • GitHub のプルリクエストベースで開発を行っています
  • ブランチ戦略はシンプルな GitHub Flow です
  • 開発手法はアジャイルを基本としていますが、形式に拘りすぎず、チームや状況に応じて進め方を調整しています
    • 「どう進めるのが一番うまくいきそうか」をエンジニア同士で相談しながら決めています
  • レビューは品質の担保だけでなく、ナレッジ共有や設計のすり合わせも目的としています
  • レビューの優先度や意図を分かりやすくするため、プルリクエストのレビューコメントには以下の prefix を付けています
[must] - 必須修正。重大な問題がある場合
[imo]  - 任意提案。改善が望ましい場合
[nits] - 細かい指摘。コードスタイルなど
[ask]  - 質問。意図や実装内容の確認
[fyi]  - 参考情報。関連知識の共有
  • prefix の運用について
    • 人間のレビューだけでなく、AIによる自動レビューでも利用しています
    • prefix に応じて対応の進め方を分けています
      • [must] については、レビュワーと認識を揃えたうえで対応方針を決めています
      • [imo] 以下については、実装者の判断を尊重しつつ対応しています

3. 技術構成

3.1. 技術スタック

*最終更新:2025年12月

Category Technology Stack
AI ChatGPT / Gemini / Codex / Claude Code / GitHub Copilot
業務管理 GitHub Projects
ソース管理 GitHub Enterprise
言語・LIB・FW フロントエンド:TypeScript / React / Next.js
バックエンド:Go / GORM / gRPC
データベース PostgreSQL
インフラ さくらのクラウド / Google Cloud / Cloudflare / VMware / Docker
CI/CD GitHub Actions / Terraform / Ansible
コミュニケーション Slack (Business) / Google Meet / Google Workspace

3.2. アーキテクチャ

  • リポジトリ:モノレポ
  • アプリケーション:現在、明確なアーキテクチャパターンに統一されていません
    • OCX の成長に伴い、責務やレイヤが混在している部分もあり、改善の余地が多くあります
    • チームで議論しながら、より適したアーキテクチャを段階的に導入していく予定です

4. 働く環境

4.1. チームの特徴

  • 技術の流行に振り回されず、原理原則を重視します
    • 技術の流行に左右されない原理原則の思想がある
      • 課題の本質を定義する
      • 複雑な事象を抽象化/構造化し、シンプルなモデルに落とす
    • 技術好奇心が高いメンバーが多いです
    • HRT(謙虚/尊敬/信頼) を大切にしてます
  • 経営層を含め、エンジニアリングへの理解と関与が高い環境です
    • 雑談レベルで設計やコードの話が飛び交うこともあります
    • 代表もコードを書くことがあります

4.2. 働き方

  • リモート勤務
    • 基本はリモートワーク
    • 必要に応じて竹芝オフィスや WeWork に出社することもあります
  • フレックス勤務
    • スーパーフレックスタイム制を導入しています
  • コミュニケーション
    • 主に Slack でテキストコミュニケーション
    • 必要に応じて Slack ハドルや Google Meet を使用します
      • 会話が長くなりそうなときや、テキストでのやりとりに詰まったときは、気軽に声をかけて話すのを推奨してます
  • 業務効率化の工夫
    • 可能な限り本質的な業務に集中できるような環境を作っています
      • 例えば...
        • 勤怠連絡は Slack のみ
        • 生成AIをガンガン使う(セキュリティおよび社内規定を前提)
        • テーブル設計書の自動生成、Lint や AI による自動レビュー、デプロイの自動化
        • Slack ステータスで体調を共有(任意参加)
          slack-thread, width="350"

5. 採用情報

  • エンジニアを中心に中途採用を行っています
  • 興味を持っていただけた方は、以下リンク先よりご応募ください!

さいごに

バックエンド開発チームの雰囲気や考え方が少しでも伝わっていれば幸いです。

「良いサービスやチーム作りに挑戦したい」
「まだ整理されきっていない部分も含めて、一緒に作っていきたい」

そんな方がいれば、ぜひ私たちのチームに来てください!

・・・余談ですが、今後このように各チームの取り組みをまとめて、
Engineer Entrance Book として整理・公開していきたいと考えています。
また進展があれば改めて発信します。

チームで勉強会を始めてみたらプロジェクト改善につながりました

はじめに

この記事は BBSakura Networksアドベントカレンダー2025 の19日目の記事です。

BBSakura Networks の鐘ヶ江です。 普段は親会社のBBIX側に関わるお客様向けシステムの開発を担当しています。

我々のチーム内では今年の秋ごろから勉強会をはじめ、その結果プロジェクト改善につながるようになりました。

今回は何をきっかけに勉強会を始め、どうプロジェクト改善に繋がったのか。
勉強会を今後も継続していくために意識したいポイントについて書いてみたいと思います。

勉強会を始めたきっかけ

今年度から基幹システム開発のプロジェクトにジョインしました。まずは現状を知るためにと資料を漁ったものの、ふんわり作りたいもののイメージはあるものの、特に現状を知れるものについて形あるものが何もない状態でした。

そこで、元々参加したいた若手メンバーに直接聞いてみると、今の業務や課題について自分の言葉で説明してくれるんですよね。

つまり現状や課題感を咀嚼し理解できる能力はあるものの、アウトプットの仕方やそもそも必要性を知らないのだと考えました。

恥ずかしながら自分もこのとき、具体的な説明がうまくできませんでした。😅
改めて今までやってきたことを言語化して伝えられるようになりたいと思い、勉強会という形で相互に成長できる機会を作れるとイイナと考えました。

勉強会を開催してみた

最初の勉強会は、いきなり「要件定義とはなんたるか」「どんなアウトプットがあると良いか」を資料にまとめて、私が一方的に喋る形で研修ライクにやってみました。

振り返ると勉強会の内容は反省点しかありません。かなり教科書的な内容だし、具体例もない話だったので聞き手はあまりピンときていなかった印象でした。

ただ、ここで「勉強会という文化」をスタートするきっかけは作れたし、また初回からパートナー会社の新卒の方にも参加してもらい、横のつながりも作るきっかけができたのは良かったです。

パートナー会社の新卒の方からはベテランから出るような質問が飛んできて来てアワアワしました。💦
日頃から業務やエンジニアの仕事について俯瞰されていて素晴らしいですね。

その後は、具体例が足りなかった部分を補うために、今のプロジェクトを振り返る場を作りました。資料の話もそうだけど、「今のプロジェクトってぶっちゃけどう?」をみんなで話し合う時間です。

振り返りの中では、若手メンバーから「どんな資料があると良かったか」を気にしてくれるようになりました。

最初の勉強会はピンときてないと思いつつも、結果的に資料づくりの必要性について少しでも考えてもらうフックにはなっていたんだなと感じました。

合わせて、フォルダ管理のルールや課題管理のルールなど、なんとなく進んでいたけど本当は全員が見直したかったところも合わせて見直すことができ、勉強会きっかけではじめたところからプロジェクト改善にまでつながったのは良かったです。

このように1つのきっかけから掘り下げ、どんどん枝を広げていけると地道ながら成長していける実感を得られました。

勉強会を継続するために意識したいこと

まだ始めたばかりですが、継続していくために過去の経験も踏まえ必要だと感じたことが3つあります。

1. テーマの選び方、きっかけを腐らせず、テーマの枝を増やしていく

テーマ選びの1つのやり方として、実務を振り返り「いま我々に何が足りないのか」をみんなで分析して、そこを学びのテーマにすること。さらに1つのきっかけからどんどん枝を増やしていくように、学びを広げていくことが重要と感じました。

今回の例でいうと、資料作りの重要性について説明し、次に実務ではどんな資料があると良かったかをみんなで振り返ってみる。

その後資料1つ1つにフォーカスしてどういった目的でどんな内容で作ると良いかを学ぶ、作ってみる。といった感じで掘り下げていいくイメージです。

2. アウトプット中心の勉強会をメインにする

例えば初回に実施した研修ライクなものや輪読会のように座学だけのインプットは体系的な知識習得には有効です。ただし、一方向的な座学では、特に若手にとって「学んだ知識をどこで活かすのか」という実務との結びつきがつかみにくい傾向があります。その点、アウトプットメインの方が楽しんで参加してもらえ、実務での活かし方のイメージをつけてもらいやすい感触がありました。

例えば我々の開催してきた勉強会では、AIの使い方に関するTipsをLT形式で共有してみたり、コードを書いてみたり、進め方を振り返って「こうすれば良かったよね」を話し合ったり。実体験に沿った「楽しい勉強会」の方がイメージも湧くし、勉強会を継続したいモチベーションに直結すると感じています。

生成AI活用Tips共有のLT会の様子は澁谷さんが記事にしてくれました。 blog.bbsakura.net

3. 定着するまでは旗振りが必要

過去に別の組織で勉強会を主催していた経験では、持ち回りでテーマを決めたこともありましたが、モチベーションに差があって定着しなかった経験があります。今回は自分が始めたことなので、自分が引っ張ってモチベーションをマネジメントする時期だと思っています。参加者が勉強会に前向きに参加してくれる。「こんなことやりたい」を自発的に提案してくれる状態をまずは目指していきたいです。

おわりに

現在はパートナー会社さんと合同の勉強会とチームとしてのPJ振り返りと勉強会を月1ずつゆるく実施しています。

正直勉強会の維持は難しいです。自分も経験ありますし、自然消滅してしまった組織も多いと聞きます。

目標は、参加者が自発的に勉強会に参加してくれるようになること。チームの文化にしていくこと。組織を横断したつながりを勉強会きっかけで増やしていくこと。です。

またどこかでその後を書けるといいなと思ってます。

SIMカードの中身を読んでみよう!

この記事は BBSakura Networksアドベントカレンダー2025 の18日目の記事です

はじめに

こんにちは、BBSakura Networksでモバイルコアの開発・運用をしている清水です。

SIMカードは、モバイル通信においてユーザーの認証などを行う重要な役割を持ち、BBSakuraが提供しているモバイル回線サービス、OCX Mobile AccessにおいてももちろんSIMカードは利用されています。

ところで、皆さんはスマートフォンに入っているSIMカードの実物を見たことはあると思いますが、その中身が実際にどのような構造になっているかについては、あまり意識する機会がないのではないでしょうか。

私はサービス運用の中でSIMカードについて調べる機会があり、その過程でSIMカードの内部構造やデータの構成が思った以上に体系立っていることを知りました。 本記事では、その内容を整理しながら、SIMカードのデータ構造について解説していきます。

SIMカードの仕様

そもそも、SIMカードの仕様はどこで決められているのでしょうか。 これには2つの側面があります。 1つは、ICカードとしての仕様、もう1つはSIMカードとしての仕様です。

ICカードとしての仕様

SIMカードは、スマートフォンに入れる際には、nanoSIMという小さいサイズに切り出して使用しますが、実態はその他のICカードと同様のチップとなっており、物理的・論理的な構造はICカード共通の仕様としてISO/IEC 7816*1にて定義されています。

ここでは、

  • カードの形状
  • 金属端子の接点の配置・役割
  • 電気的特性(動作電圧、ノイズ耐性など)
  • データ構造
  • ICカードとリーダー間の通信プロトコル(APDU)

などが規定されています。

上記の仕様はICカード全体で同じ、つまりクレジットカードやマイナンバーカードとも共通の仕様になっています

SIMカードとしての仕様

実際にモバイル通信を実現するためには、ICカード共通の仕様に加えて、 SIMカードとしてどのようなファイルやデータが必要なのかを定める必要があります。 (例:電話番号は何桁で、どのファイルに格納されるのか、など)

このような SIM カード特有の仕様は、 3GPP*2によって規定されています。 SIMカードに関する仕様は、複数の仕様書に分かれて書かれており、主に以下の Technical Specification(TS)で定義されています。

  • TS 31.101:SIMカードの物理的・論理的仕様
  • TS 31.102:USIM と呼ばれるアプリケーションの仕様
  • TS 31.103:ISIM と呼ばれるアプリケーションの仕様
  • その他(3G以前のSIMカードの仕様など)

略語が多くて分かりにくいですが、ICカードに、USIM や ISIM といったアプリケーション(加入者の認証情報や識別情報を保持するもの)を搭載することで、一般に「SIMカード」と呼ばれる形になります。

SIMカードのデータ構造

先述の通り、データ構造についてはICカード共通の仕様としてISO/IEC 7816で規定されています。 ICカード内のファイルはMF, DF, EFという3種類のファイルが存在し、階層的な構造を持っています。

  • MF(Master File)は、ICカード内に1つだけ存在するファイルで、いわゆるルートディレクトリに相当します。
  • DF(Dedicated File)は、ディレクトリやフォルダに近い概念で、アプリケーションの起点となるDFはADF(Application DF)と呼ばれます。
  • EF(Elementary File)は、実際にデータを格納するファイルで、電話番号のような具体的な情報はこのEFにバイト列の形式で格納されています。

SIMカードにおけるファイル構造を図示すると、このようになります。

SIMカードのファイル構造例

ICCIDのように、カード自体の識別情報を表すファイルは、MFの直下に配置されており、MFの下にぶら下がる形でUSIM・ISIMのようなアプリケーションが配置されています(図中でADFと書かれているものに相当)。 図中のEFDIRは、カード内に入っているアプリケーションの一覧が入っている特殊なEFで、このEFDIRの情報を頼りに各アプリケーションへのアクセスを行っています。

EFファイルを見てみる

USIMの中には、100種類以上にわたる様々なEFが存在しています。 今回は、EFの中でも、機能・内容的に比較的シンプルなEFSPNというファイルについて、中身を見てみたいと思います。

EFSPN (Service Provider Name)は、名前の通りサービスプロバイダの名称が記録されているファイルで、スマートフォンなどでSIMの情報を開いた際の事業者名の表示などにも利用されています。

EFSPNの仕様については3GPPの TS 31.102 にて記載があり、下図のように仕様が決められています。

EFSPNの仕様(3GPP TS 31.102 4.2.12より)

この表の各項目の詳細については、またの機会に解説したいと思いますが、ファイルの中身を読むうえで重要なのは、

  • 各バイトがそれぞれどのような意味を持つのか
  • 各コンテンツがどのようにバイト列として設定されているのか

の2点です。

ここからは、EFSPNの中身の一例として、

024F4358FFFFFFFFFFFFFFFFFFFFFFFFFF

上記のようなバイト列と仕様書とを照らし合わせながら、中身を読んでいきたいと思います。

実際に仕様書を見たい方は、こちらから確認出来ます!

ETSI TS 131 102 V18.9.0

各バイトの意味を把握する

まずは、バイト列中の各バイトがそれぞれどんな意味を持つのか把握します。仕様書の表によると、

  • 1バイト目: Display Condition
  • 2 ~ 17バイト目: Service Provider Name

となっており、2種類のコンテンツが存在していることが分かります。

EFSPNのバイト列の構造

各コンテンツの意味を把握する

Display Condition

まずは、 1バイト目のDisplay Conditionについて見ていきます。 このコンテンツは、サービスプロバイダ名の表示に関する設定項目になっており、バイト列を更にビット列に分解したうえで、各bitの値によって、設定の有効 / 無効を決定しています。 また、設定項目があるのは下位2ビットのみで上位6ビットはRFU(Reserved for Future Use)と記載されており、現在は使用されていないことが分かります。

Display Conditionの実装ルール

実際に1バイト目の 0x02 をビット列に分解すると、下記のようになることが分かります。

ビット列への分解
つまり下から2ビット目の設定項目だけ有効にしている、ということが分かります。

(設定項目の具体的な内容の解説は省略します)

Service Provider Name

続いて、2バイト目以降のService Provider Nameについて見ていきます。

Service Provider Nameの実装ルール

こちらは、記載内容を見ると、GSM 7-bit 文字コード(ASCII に近い形式)または UCS2 で格納され、使われていないバイトは 0xFF で埋められる、ということが分かります。 このルールに従い、バイト列を文字列に変換すると…

文字列への変換

Service Provider Nameは、アルファベット3文字で OCX であることが分かりました。

終わりに

本記事では、SIMカードのデータ構造と、実際のファイルの読み方について解説しました。 SIMカードには、その他にも数多くのファイル(EF)が存在していますが、仕様書と照らし合わせながら解読していくことで、同じように各ファイルの中身を把握することが出来ます。

実際にSIMカードに入っている値について調べてみたい方は、sysmocom SIMのような読み書き可能なSIMカードを用意すると様々なファイルについて観察することが出来ます。 興味のある方は、sysmocomのSIMのファイルを書き換える方法について、昨日の記事で紹介されているので、ぜひ合わせてご覧ください!

blog.bbsakura.net

*1:ISO(International Organization for Standardization)および IEC(International Electrotechnical Commission)は、国際的な工業規格・電気電子分野の標準を策定する標準化団体で、ISO/IEC 7816 は両者が共同で策定した IC カードに関する国際規格を指す。

*2:3rd Generation Partnership Project:LTE や 5G などの移動体通信システムの国際標準仕様を策定する標準化団体

sysmoISIM-SJA5 を使って SIM の認証情報を書き換えてみた

はじめに

この記事は BBSakura Networksアドベントカレンダー2025 の17日目の記事です。

こんにちは、BBSakura Networks株式会社でエンジニアをしている平山です。

一般的な SIM カードには、加入者識別番号(IMSI)や、認証で利用される Ki や OPc などの情報が保存されています。これらの情報は MNO やフル MVNO といった SIM 発行者によって設定され、通信事業者は HSSを用いて SIM の認証を行い、ネットワークへのアクセス可否を判断します。

通常、市販されている SIM カードの IMSI・Ki・OPc は書き換えることができません。しかし、sysmocom 社が提供する sysmoISIM-SJA5 のような書き換え可能な SIM を利用すると、モバイルネットワークの開発や検証が非常に効率的になります。例えば、ネットワーク側に登録した加入者情報と一致する SIM を自分で作成できるため、テスト用の加入者を好きなだけ用意したり、正常系・異常系の認証動作を自由に検証したりできます。

本記事では、sysmocom 社が提供する SIM カード「sysmoISIM-SJA5」を macOS 上で書き換える方法について紹介します。

用語解説(IMSI / Ki / OPc)

IMSI

契約者を一意に識別する番号。端末がネットワークにアクセスする際に最初に送信され、どの加入者かを特定するために利用される。

Ki

  • 加入者ごとに固有の 128ビットの秘密鍵
  • SIM 内部と通信事業者側のみが保持
  • AKA 認証で実行される暗号計算の基盤となり、SIM の正当性を証明する
  • 「ネットワーク接続用の秘密のパスワード」のような役割

OP / OPc

  • OP:通信事業者が内部的に持つ“演算用の共通キー”
  • しかし OP をそのまま使うと 全 SIM が同じキーで認証されるため、セキュリティ上問題がある
  • そこで Ki と OP から生成される個別の値が OPc
  • OPc は AKA 認証で用いられる実際の演算鍵

sysmoISIM-SJA5 について

sysmoISIM-SJA5 は、IMSI や Ki、OPc などの認証情報を書き換えることが可能な検証用 SIM カードです。以下の特徴から、Private LTE/5G の開発・検証に広く利用されています。

  • ADM keys 付きモデルでは IMSI / Ki / OPc の書き換えが可能
  • 2G / 3G / 4G / 5G の AKA 認証に対応
  • Private LTE/5G 検証の デファクトスタンダード

sysmocom.de

macOS での環境構築手順

$ python3 -m venv .venv
$ source .venv/bin/activate
$ git clone https://github.com/osmocom/pysim.git
$ cd pysim
$ pip install -r requirements.txt
$ git clone https://github.com/sysmocom/sysmo-usim-tool.git

認証情報の確認

sysmoISIM-SJA5 を購入すると、メールで SIM カードのパラメータが送付されます。そこに記載されている ADM キーを用意しておきます。

  • /sysmo-usim-tool.sjs1.pyのオプションは以下
    • -i 現在のIMSIの出力
    • -k 現在のKi値の出力
    • -o 現在のOPC値の出力
$  ./sysmo-usim-tool/sysmo-isim-tool.sja5.py --adm1 ******** -k -o
...
* Detected Card IMSI: 00101**********
...
...
Reading Key value... 
* Initializing... 
* Reading... 
* Current Key setting: 
2g: Key: 4140******************************** 
3g: Key: 4140********************************  
4g5g: Key: 44140******************************** 
Reading OP/c value... 
* Initializing... 
* Reading... 
* Current OP/OPc setting: 
2g: OPc: 885c********************************
3g: OPc: 8885c******************************** 
4g5g: OPc: 885c********************************
  • 読み出された認証情報
    • IMSI:00101**********
    • Ki値:4140********************************
    • OPC値:885c********************************

認証情報(IMSI / Ki / OPc)の書き換え

今回は下記の情報に書き換えてみます。

  • IMSI:00202**********
  • Ki値:d773********************************
  • OPC値:af9a********************************
$ NEW_IMSI="00202**********"                 
$ NEW_KI="d773******************************** "               
$ NEW_OPC="af9a********************************"
$ ./pysim/pySim-prog.py -p0 -t sysmoISIM-SJA5 -a "********" \
  -i "$NEW_IMSI" \
  -s "8949***************" \ #ICCIDは変更しないが、設定しないとエラーになるので現在の値を設定
  -k "$NEW_KI" \
  -o "$NEW_OPC"

...
IMSI : 00202********** > 
Ki : d773**************************** > 
OPC : af9a**************************** > 
...
...

書き換え後の確認

$  ./sysmo-usim-tool/sysmo-isim-tool.sja5.py --adm1 ******** -k -o
...
* Detected Card IMSI: 00202**********
...
...
Reading Key value... 
* Initializing... 
* Reading... 
* Current Key setting: 
2g: Key: d773****************************
3g: Key: d773****************************  
4g5g: Key: d773****************************
Reading OP/c value... 
* Initializing... 
* Reading... 
* Current OP/OPc setting: 
2g: OPc: af9a****************************
3g: OPc: af9a****************************
4g5g: OPc: af9a****************************

正しく書き換えられた内容

  • IMSI:00202**********
  • Ki値:d773********************************
  • OPC値:af9a********************************

まとめ

本記事では sysmoISIM-SJA5 を用いた SIM 認証情報の書き換え方法について紹介しました。 Private LTE / 5G ネットワークの開発や検証を行う際に、sysmoISIM は非常に便利なツールです。

皆さんの SIM やモバイルネットワークの研究・検証に役立てば幸いです。

参考文献

sysmoISIM-SJA5 User Manual