테더링

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Android 13의 업데이트

업데이트 추가 정보
크로스디바이스 도입 크로스 디바이스
분할 터널링 도입 분할 터널링

개요

테더링 모듈은 Wi-Fi, USB, 블루투스 또는 이더넷을 통해 테더링 장치에 연결할 수 있는 다른 연결된 클라이언트 장치와 Android 장치의 인터넷 연결을 공유합니다. 이 모듈에는 테더링 구성 요소(USB, Wi-Fi 액세스 포인트, Bluetooth 등)와 해당 종속성(테더링 자격, IpServeroffloadController 와의 상호 작용)이 포함됩니다. 이 모듈은 업데이트 가능합니다. 즉, 정상적인 Android 릴리스 주기 이외의 기능에 대한 업데이트를 받을 수 있습니다.

테더링 모듈을 사용하면 Android 생태계 전체의 OEM이 다음과 같은 이점을 제공하는 단일 표준 참조 구현을 사용할 수 있습니다.

  • 최종 사용자는 Android 기기 전반에 걸쳐 일관된 경험을 제공하고 모듈 업데이트를 통해 상호 운용성 문제를 수정합니다.

  • OEM은 캐리어 요구 사항을 충족하는 동시에 개별 사용자 지정에 대한 비용을 절감할 수 있습니다(동일한 요구 사항을 서로 다른 방식으로 구현할 필요가 없기 때문).

분할 터널링

분할 터널링 사용 사례를 지원하기 위해 Android 13에 새 API가 추가되어 제외 경로를 지정합니다.

분할 터널링은 특정 트래픽은 VPN을 통과하고 다른 트래픽은 통과하지 않는 구성을 나타냅니다. 일반적인 예는 조직에서 일반 웹 서핑, 대역폭이 많이 사용되는 애플리케이션(예: YouTube, Netflix) 또는 대기 시간에 민감한 애플리케이션(예: Office 365 )이 VPN을 우회하기를 원하는 경우입니다. 스플릿 터널링을 사용할 수 있기 전에 VpnService.Builder 는 VPN 클라이언트가 일부 서브넷만 라우팅해야 함을 나타낼 수 있도록 허용했습니다(경로 포함 ). 분할 터널링을 사용하면 역을 지정할 수 있습니다. 특정 서브넷(경로 제외 )을 제외한 모든 트래픽을 VPN으로 라우팅합니다.

새로운 분할 터널링 API의 서명은 다음과 같습니다.

public Builder excludeRoute(@NonNull IpPrefix prefix)

크로스 디바이스

Android 13에 도입된 CrossDevice는 표준 프로토콜을 사용하여 기기 간 통신 기술을 제공하는 것을 목표로 합니다. 장치 검색, 인증된 연결 및 기타 장치 간 경험을 위한 API 및 기능을 제공합니다.

CrossDevice 동기 부여

  • OEM 파트너와의 긴밀한 협업. OEM은 Google 솔루션을 사용할 필요 없이 자체 계정 키 시스템을 CrossDevice 구현과 통합할 수 있습니다.
  • 프로토콜의 더 가시적인 구현. CrossDevice 모듈은 오픈 소스로 구현 세부 사항에 대한 가시성을 높이고 CrossDevice 기술 구현에 대한 더 나은 개인 정보 보호 스토리를 제공합니다.

CrossDevice 모듈 경계

CrossDevice API packages/modules/CrossDevice/framework 에서
  • NearbyManager
  • AccountProviderBase
크로스디바이스 서비스 packages/modules/CrossDevice/service
  • NearbyService - 스캐닝 API

CrossDevice 패키지 형식

이 모듈의 주요 기능은 APEX 패키지에 포함되어 있습니다. 리소스는 APK에 패키징됩니다.

교차 기기 종속성

CrossDevice는 다음에 따라 다릅니다.

  • 와이파이
  • 블루투스
  • UWB
  • 모듈-유틸-사전 조건
  • 프로토 라이브러리

CrossDevice 사용자 정의 옵션

우리는 OEM이 RRO를 통해 하프 시트에 대한 UI를 사용자 정의할 수 있도록 할 계획입니다. 기능을 사용자 정의할 계획은 없습니다.

CrossDevice 테스트 전략

Android CTS(Compatibility Test Suite) 테스트를 추가하여 CrossDevice 기능을 확인하고 MTS에 교차 기기 테스트를 추가할 계획입니다.

eBPF 테더링 오프로드

하드웨어 오프로드에 응답하지 않고 고속 테더링을 제공하기 위해 Android 11은 IPv6 다운로드(테더링된 장치로의 트래픽 흐름)를 위한 eBPF 테더링 오프로드라는 테더링 소프트웨어 오프로드 솔루션을 제공합니다.

Android 12부터 이 기능(eBPF 프로그램 코드 포함)은 다음을 지원하는 Tethering 모듈에서 완전히 제공됩니다.

  • IPv6 다운로드(테더링된 장치로 흐르는 트래픽)
  • IPv6 업로드(테더링된 장치에서 흐르는 트래픽)
  • IPv4 TCP/UDP 업로드 및 다운스트림(테더링된 장치로/로부터의 트래픽 흐름)
  • eBPF 오프로드

이 기능은 기본적으로 활성화되어 있으며 사용자는 RRO에 의해 config_tether_enable_bpf_offload 구성을 false로 재정의할 수 있습니다. 자세한 내용은 사용자 지정 을 참조하십시오.

IPv4 및 IPv6 지원

테더링 모듈은 IPv4 및 IPv6 이중 스택을 지원합니다.

  • IPv4 네트워크의 경우 모듈은 NAT(네트워크 주소 변환)를 설정하고 IP 주소 할당을 위해 DHCP(동적 호스트 구성 프로토콜)를 채택합니다.

  • IPv6 네트워크의 경우 모듈은 IP 주소 할당을 위해 IPv6 상태 비저장 주소 자동 구성(SLAAC)을 채택합니다.

모듈 경계

Android 12 이상에서는 packages/modules/Connectivity 아래의 모든 파일/폴더가 테더링 모듈 범위에 있습니다.

Android 11 이하의 경우 Tethering 모듈에는 packages/modules/Tethering 에 다음 Android 10 파일이 있습니다.

  • 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

모듈 형식

테더링 모듈( com.android.tethering )은 APEX 형식이며 Android 11 이상을 실행하는 기기에서 사용할 수 있습니다.

연결 서비스 포함

Android 12부터 L3+ 연결의 핵심 구성 요소를 구현하는 ConnectivityService 코드가 테더링 APEX에 추가됩니다. 테더링의 범위는 연결 모듈로 확장됩니다.

모듈 종속성

테더링 모듈에는 다음과 같은 종속성이 있습니다.

  • 시스템 서버의 공개 및 시스템 API 메소드
  • 시스템 서버와 안정적인 AIDL IPC 인터페이스
  • tetheroffload HIDL( hardware/interfaces/tetheroffload/ 에 정의됨)
  • DHCP 서버(네트워크 스택 모듈의 일부)

커스터마이징

테더링 모듈은 사용자 정의를 지원하지 않습니다.

테스트

Android CTS(호환성 테스트 도구 모음)는 테더링 모듈의 기능을 확인합니다.