Tethering モジュールは、接続されている他のクライアント デバイス(Wi-Fi、USB、Bluetooth、イーサネット経由でテザリング デバイスに接続可能)と、Android デバイスのインターネット接続を共有します。このモジュールには、テザリング コンポーネント(USB、Wi-Fi アクセス ポイント、Bluetooth など)とその依存関係(テザリング利用資格、IpServer
、offloadController
の操作)が含まれます。このモジュールは更新可能です。つまり、通常の Android リリース サイクル外で機能のアップデートを受信できます。
Tethering モジュールにより、OEM は Android エコシステム全体で、単一の標準リファレンス実装を使用できます。これには次のような利点があります。
エンドユーザーが、Android デバイス全体で一貫したエクスペリエンスを得られ、モジュール アップデートを通じて相互運用性の問題を修正できる。
OEM が、携帯通信会社の要件を完全に満たしつつ、個別のカスタマイズのコストを削減できる(同じ要件を異なる方法で実装する必要がないため)。
IPv4 と IPv6 のサポート
Tethering モジュールは、IPv4 と IPv6 のデュアル スタックをサポートしています。
IPv4 ネットワークの場合、モジュールはネットワーク アドレス変換(NAT)を設定し、IP アドレス割り当てに動的ホスト構成プロトコル(DHCP)を採用します。
IPv6 ネットワークの場合、モジュールは IP アドレス割り当てに IPv6 のステートレス アドレス自動設定(SLAAC)を採用します。
モジュールの境界
Android 11 では、Tethering モジュールによって次の Android 10 ファイルが packages/modules/Tethering
に移動されます。
frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
frameworks/base/services/core/java/com/android/server/connectivity/tethering/
frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
frameworks/base/core/java/android/os/INetworkManagementService.aidl
frameworks/base/core/java/android/bluetooth/BluetoothPan.java
frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java
モジュールの形式
Tethering モジュール(com.google.android.tethering
)は APK 形式であり、Android 11 以降を搭載したデバイスで使用できます。
モジュールの依存関係
Tethering モジュールには次の依存関係があります。
- システム サーバーの公開 API メソッドとシステム API メソッド
- システム サーバーとの安定版 AIDL IPC インターフェース
tetheroffload
HIDL(hardware/interfaces/tetheroffload/
で定義)- DHCP サーバー(Network Stack モジュールの一部)
カスタマイズ
Tethering モジュールはカスタマイズをサポートしていません。
テスト
Android 互換性テストスイート(CTS)は、Tethering モジュールの機能を検証します。