ネットワーク スタック

Network Stack は更新可能な Mainline モジュールです。Android が進化するネットワーク標準に適応できるようにして、新しい実装との相互運用を可能にします。たとえば、Android はキャプティブ ポータル検出とログインコードの更新を通じて、キャプティブ ポータルモデルの変化に対応できます。また、新しいタイプのパケットが一般的になったときに、APF の更新を通じて Wi-Fi の電力を節約できます。

含まれるコンポーネント

Network Stack モジュールには、次のコンポーネントが含まれています。このモジュールを使用するデバイスでは、これらのサービスは別のプロセスに移行され、安定版の AIDL インターフェースを介してアクセスされます。

  • IP サービス。IpClient(旧 IpManager)は、IP レイヤのプロビジョニングとメンテナンスを担うコンポーネントです。Android 9 では、Bluetooth などのコンポーネントによってクロスプロセスで、Wi-Fi などのコンポーネントによってインプロセスで使用されていました。DhcpClient は、DHCP サーバーから IP アドレスを取得してインターフェースに割り当てます。

  • NetworkMonitor。NetworkMonitor コンポーネントは、ネットワークの新規接続時や障害発生時、キャプティブ ポータルの検出時、ネットワークの検証時に、インターネットへの到達性をテストします。

  • キャプティブ ポータル ログインアプリ。キャプティブ ポータルのログイン操作を管理するプリインストール アプリ。Android 5.0 以降は独立したアプリですが、NetworkMonitor とやり取りしていくつかのユーザーの選択をシステムに転送します。

影響を受けるパス

リファクタリングによって Network Stack モジュールに移動されるパスは次のとおりです。

  • IP サービス。frameworks/base/services/net/java/android/net/ 内:

    • apf
    • dhcp
    • ip
    • netlink
    • util(一部)
  • キャプティブ ポータルの検出とログイン。frameworks/base/ 内:

    • core/java/android/net/captiveportal/
    • services/core/java/com/android/server/connectivity/NetworkMonitor.java
    • packages/CaptivePortalLogin/*

移動されたコードは、packages/modules/NetworkStackpackages/modules/CaptivePortalLogin のほかいくつかの共有場所にあります。上記のパスは、Mainline で移動される前のファイルの場所を表します。packages/modules/NetworkStackpackages/modules/CaptivePortalLogin 内のファイルは Mainline モジュールの一部であり、変更できません。

パッケージの形式

Network Stack モジュールには、APK 形式の次のコンポーネントが含まれています。

  • IP サービス
  • Captive Portal Login(com.google.android.captiveportallogin

このモジュールには、Network Stack Permission Config モジュールが付属しています。これは、Network Stack コンポーネントに必要な権限を定義するプリインストール APK ファイルです。

依存関係

Network Stack モジュールは以下に依存します。

  • システム サーバー内の特権 @hide メソッド(IConnectivityManager.aidl 内など)。これらの API は @SystemApi になり、適切に保護されるため、Mainline モジュールからはアクセスできますが、他の特権アプリからはアクセスできません(新しい署名権限を使用するなど)。

  • INetd.aidl で定義される netd を指す Binder IPC。このインターフェースは安定版の AIDL に変換されており、適合性テストの対象となります。