การถ่ายโอนข้อมูลฮาร์ดแวร์ออก

Tethering offload ช่วยให้อุปกรณ์ประหยัดพลังงานและปรับปรุงประสิทธิภาพโดยการลดภาระการรับส่งข้อมูล Tethering (ผ่าน USB, Wi-Fi) ไปยังฮาร์ดแวร์ การรับส่งข้อมูลการเชื่อมต่ออินเทอร์เน็ตจะถูกลดภาระลงโดยการจัดเตรียมเส้นทางโดยตรงระหว่างโมเด็มและอุปกรณ์ต่อพ่วง โดยข้ามตัวประมวลผลแอป

ข้อมูลจำเพาะ

เริ่มต้นใน Android 8.1 อุปกรณ์สามารถใช้การปล่อยสัญญาณอินเทอร์เน็ตเพื่อถ่ายข้อมูลการส่งต่อ IPv4, IPv6 หรือ IPv4+IPv6 ไปยังฮาร์ดแวร์

คุณลักษณะ offload ไม่จำเป็นต้องถ่ายแพ็กเก็ตทั้งหมด เฟรมเวิร์กสามารถจัดการแพ็กเก็ตใด ๆ ในซอฟต์แวร์ได้ โดยทั่วไปแพ็กเก็ตควบคุมจะถูกประมวลผลในซอฟต์แวร์ เนื่องจากพอร์ต IPv4 ถูกใช้ร่วมกันระหว่างการรับส่งข้อมูลแบบเชื่อมต่ออินเทอร์เน็ตและการรับส่งข้อมูลของอุปกรณ์ การตั้งค่าเซสชัน IPv4/การแยกส่วนแพ็กเก็ต (เช่น SYN/SYN+ACK, FIN) จะต้องได้รับการประมวลผลในซอฟต์แวร์ เพื่อให้เคอร์เนลสามารถสร้างสถานะโฟลว์ได้ กรอบงานจัดเตรียมระนาบควบคุมและเครื่องสถานะ นอกจากนี้ยังจัดเตรียมฮาร์ดแวร์ด้วยข้อมูลเกี่ยวกับอินเทอร์เฟซ/คำนำหน้าอัปสตรีมและดาวน์สตรีม

สำหรับ IPv4 ฮาร์ดแวร์อนุญาตให้แพ็กเก็ตการตั้งค่าเซสชันการแปลที่อยู่เครือข่าย IPv4 (NAT) เข้าถึง CPU เคอร์เนลสร้างรายการ NAT และการใช้งาน HAL จะสังเกตรายการจากตัวอธิบายไฟล์ที่เฟรมเวิร์กจัดเตรียมไว้ และจัดการโฟลว์เหล่านี้ในฮาร์ดแวร์ ซึ่งหมายความว่าการใช้งาน HAL ไม่จำเป็นต้องใช้ CAP_NET_* เนื่องจาก HAL ได้รับการเปิดซ็อกเก็ต NF_NETLINK_CONNTRACK จากกรอบงาน ฮาร์ดแวร์จะส่งการอัปเดตสถานะ NAT สำหรับโฟลว์ที่ใช้งานอยู่ในปัจจุบันไปยังเฟรมเวิร์กเป็นระยะๆ ซึ่งจะรีเฟรชรายการสถานะการติดตามการเชื่อมต่อเคอร์เนลที่เกี่ยวข้อง

สำหรับ IPv6 เฟรมเวิร์กจะโปรแกรมรายการคำนำหน้าปลายทาง IPv6 ซึ่งการรับส่งข้อมูลต้องไม่ถ่ายโอนข้อมูล แพ็กเก็ตที่เชื่อมต่ออื่น ๆ ทั้งหมดสามารถถ่ายโอนได้

สำหรับการบัญชีการใช้ข้อมูล การสำรวจการใช้ข้อมูล NetworkStatsService จะทำให้เฟรมเวิร์กร้องขอสถิติการรับส่งข้อมูลจากฮาร์ดแวร์ เฟรมเวิร์กยังสื่อสารขีดจำกัดการใช้ข้อมูลไปยังฮาร์ดแวร์ผ่าน HAL

ข้อกำหนดด้านฮาร์ดแวร์

หากต้องการใช้ออฟโหลดการเชื่อมต่ออินเทอร์เน็ต ฮาร์ดแวร์ของคุณจะต้องสามารถส่งต่อแพ็กเก็ต IP ระหว่างโมเด็มและ Wi-Fi/USB ได้โดยไม่ต้องส่งการรับส่งข้อมูลผ่านโปรเซสเซอร์หลัก

การนำไปปฏิบัติ

หากต้องการเปิดใช้งานคุณลักษณะการถ่ายโอนข้อมูลออก คุณจะต้องใช้ทั้งสองอย่างต่อไปนี้ทั้ง config HAL ( IOffloadConfig ) และ HAL ควบคุม ( IOffloadControl )

กำหนดค่า HAL: IOffloadConfig

IOffloadConfig HAL เริ่มการใช้งานการถ่ายโอนข้อมูลออฟโหลด กรอบงานจัดเตรียมการใช้งาน HAL ด้วยซ็อกเก็ต NF_NETLINK_CONNTRACK ที่เชื่อมต่อล่วงหน้าซึ่งการใช้งานสามารถใช้เพื่อสังเกตกระแส IPv4 ต้องเร่งการไหลที่ส่งต่อเท่านั้น

ควบคุม HAL: IOffloadControl

IOffloadControl HAL ควบคุมการใช้งานออฟโหลด จะต้องใช้วิธีการต่อไปนี้:

  • เริ่ม/หยุดออฟโหลดฮาร์ดแวร์: ใช้ initOffload/stopOffload และยกเว้นที่อยู่ IP ในเครื่องหรือเครือข่ายอื่นๆ จากออฟโหลดด้วย setLocalPrefixes
  • ตั้งค่าอินเทอร์เฟซอัปสตรีม ที่อยู่ IPv4 และเกตเวย์ IPv6: ใช้ setUpstreamParameters และกำหนดค่าช่วงที่อยู่ IP ดาวน์สตรีมด้วย addDownstream/removeDownstream
  • การบัญชีการใช้ข้อมูล: ใช้ getForwardedStats/setDataLimit

HAL ผู้จำหน่ายของคุณจะต้องส่งการโทรกลับผ่านอินเทอร์เฟซ ITetheringOffloadCallback ซึ่งแจ้งกรอบงานของ:

  • เหตุการณ์แบบอะซิงโครนัส เช่น ออฟโหลดกำลังเริ่มต้นและหยุด (OffloadCallbackEvent)
  • การอัปเดตการหมดเวลาของ NAT ซึ่งจะต้องส่งเป็นระยะเพื่อระบุว่าโฟลว์ IPv4 เฉพาะมีการรับส่งข้อมูลและเคอร์เนลต้องไม่ปิด

การตรวจสอบ

หากต้องการตรวจสอบการใช้งานการปล่อยสัญญาณ Tethering Offload ของคุณ ให้ใช้การทดสอบด้วยตนเองหรือแบบอัตโนมัติเพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือและฮอตสปอต Wi-Fi ตามที่คาดไว้ Vendor Test Suite (VTS) ประกอบด้วยการทดสอบสำหรับ HAL ออฟโหลดการเชื่อมต่ออินเทอร์เน็ต