การโอนการรับส่งข้อมูลจากการเทอร์เทอร์ช่วยให้อุปกรณ์ประหยัดพลังงานและปรับปรุงประสิทธิภาพด้วยการโอนการรับส่งข้อมูลจากการเทอร์เทอร์ (ผ่าน USB, Wi-Fi) ไปยังฮาร์ดแวร์ ระบบจะลดปริมาณการรับส่งข้อมูลการเทอร์เทอร์โดยกำหนดเส้นทางโดยตรงระหว่างโมเด็มกับอุปกรณ์ต่อพ่วง ซึ่งจะข้ามไปยังตัวประมวลผลแอป
ข้อกำหนด
ตั้งแต่ Android 8.1 เป็นต้นไป อุปกรณ์จะใช้การโอนการต่อฮอตสปอตเพื่อโอนการส่งต่อ IPv4, IPv6 หรือ IPv4+IPv6 ไปยังฮาร์ดแวร์ได้
ฟีเจอร์การโอนไม่จำเป็นต้องโอนแพ็กเก็ตทั้งหมด เฟรมเวิร์กนี้สามารถจัดการแพ็กเก็ตใดก็ได้ในซอฟต์แวร์ โดยปกติแล้ว ระบบจะประมวลผลแพ็กเก็ตควบคุมในซอฟต์แวร์ เนื่องจากพอร์ต IPv4 มีการแชร์ระหว่างการรับส่งข้อมูลแบบใช้การเชื่อมต่อ Wi-Fi ฮอตสปอตของมือถือกับการรับส่งข้อมูลของอุปกรณ์ จึงต้องประมวลผลแพ็กเก็ตการตั้งค่า/การยกเลิกเซสชัน IPv4 (เช่น SYN/SYN+ACK, FIN) ในซอฟต์แวร์เพื่อให้เคอร์เนลสร้างสถานะโฟลว์ได้ เฟรมเวิร์กนี้มีระนาบควบคุมและเครื่องเสมือน นอกจากนี้ ยังให้ข้อมูลเกี่ยวกับอินเทอร์เฟซ/คำนำหน้าต้นทางและปลายทางแก่ฮาร์ดแวร์ด้วย
สำหรับ IPv4 ฮาร์ดแวร์จะอนุญาตให้แพ็กเก็ตการตั้งค่าเซสชันการเปลี่ยนค่าที่อยู่เครือข่าย (NAT) ของ IPv4 เข้าถึง CPU ได้ เคอร์เนลจะสร้างรายการ NAT และการใช้งาน HAL จะตรวจสอบรายการจากตัวระบุไฟล์ที่เฟรมเวิร์กให้มา รวมถึงจัดการโฟลว์เหล่านี้ในฮาร์ดแวร์ ซึ่งหมายความว่าการใช้งาน HAL ไม่จำเป็นต้องใช้ CAP_NET_*
เนื่องจาก HAL จะเปิดซ็อกเก็ต NF_NETLINK_CONNTRACK
จากเฟรมเวิร์ก ฮาร์ดแวร์จะส่งการอัปเดตสถานะ NAT สำหรับโฟลว์ที่ใช้งานอยู่ในปัจจุบันไปยังเฟรมเวิร์กเป็นระยะๆ ซึ่งจะรีเฟรชรายการสถานะการติดตามการเชื่อมต่อเคอร์เนลที่เกี่ยวข้อง
สำหรับ IPv6 เฟรมเวิร์กจะตั้งโปรแกรมรายการคำนำหน้าปลายทาง IPv6 ที่จะไม่ต้องมีการส่งออกการรับส่งข้อมูล คุณสามารถโอนแพ็กเก็ตอื่นๆ ทั้งหมดที่เชื่อมต่ออินเทอร์เน็ตผ่านมือถือได้
สําหรับการบัญชีการใช้ข้อมูล การสำรวจNetworkStatsService
การใช้ข้อมูลทําให้เฟรมเวิร์กขอสถิติการเข้าชมจากฮาร์ดแวร์ นอกจากนี้ เฟรมเวิร์กยังสื่อสารขีดจำกัดการใช้ข้อมูลไปยังฮาร์ดแวร์ผ่าน HAL ด้วย
ข้อกำหนดเกี่ยวกับฮาร์ดแวร์
หากต้องการใช้การโอนการรับส่งข้อมูลจากการเทอร์ tethering ฮาร์ดแวร์ของคุณต้องสามารถส่งต่อแพ็กเก็ต IP ระหว่างโมเด็มกับ Wi-Fi/USB โดยไม่ต้องส่งการรับส่งข้อมูลผ่านโปรเซสเซอร์หลัก
การใช้งาน
หากต้องการเปิดใช้ฟีเจอร์การโอนข้อมูลจากการเทอร์มินัล คุณต้องใช้ HAL การกำหนดค่า (IOffloadConfig
) และ HAL การควบคุม (IOffloadControl
) ต่อไปนี้
Config HAL: IOffloadConfig
IOffloadConfig
HAL เริ่มการติดตั้งใช้งานการโอนข้อมูลจากการเทอร์มินัล เฟรมเวิร์กจะจัดเตรียมการใช้งาน HAL ด้วยซ็อกเก็ต NF_NETLINK_CONNTRACK
ที่เชื่อมต่อไว้ล่วงหน้า ซึ่งการใช้งานสามารถใช้เพื่อสังเกตการณ์โฟลว์ IPv4 เฉพาะโฟลว์ที่ส่งต่อเท่านั้นที่ต้องเร่ง
HAL การควบคุม: IOffloadControl
ตัวแปร HAL ของ IOffloadControl
จะควบคุมการติดตั้งใช้งานการโอน ต้องใช้วิธีการต่อไปนี้
- เริ่ม/หยุดฮาร์ดแวร์การโอน: ใช้
initOffload/stopOffload
และยกเว้นที่อยู่ IP ในเครื่องหรือเครือข่ายอื่นๆ จากการโอนด้วยsetLocalPrefixes
- ตั้งค่าอินเทอร์เฟซขาเข้า ที่อยู่ IPv4 และเกตเวย์ IPv6: ใช้
setUpstreamParameters
และกำหนดค่าช่วงที่อยู่ IP ขาออกด้วยaddDownstream/removeDownstream
- การบัญชีปริมาณการใช้อินเทอร์เน็ต: ใช้
getForwardedStats/setDataLimit
HAL ของผู้ให้บริการต้องส่งการเรียกกลับผ่านITetheringOffloadCallback
อินเทอร์เฟซด้วย ซึ่งจะแจ้งให้เฟรมเวิร์กทราบถึงข้อมูลต่อไปนี้
- เหตุการณ์ที่เกิดขึ้นไม่พร้อมกัน เช่น การเริ่มและหยุดการโอนข้อมูล (OffloadCallbackEvent)
- การอัปเดตการหมดเวลา NAT ซึ่งต้องส่งเป็นระยะเพื่อระบุว่าโฟลว์ IPv4 ที่เฉพาะเจาะจงมีการเข้าชมและต้องไม่ปิดโดยเคอร์เนล
การตรวจสอบความถูกต้อง
หากต้องการตรวจสอบการติดตั้งใช้งานการโอนอินเทอร์เน็ตผ่านมือถือ ให้ใช้การทดสอบด้วยตนเองหรือแบบอัตโนมัติเพื่อยืนยันว่าการโอนอินเทอร์เน็ตผ่านมือถือและฮอตสปอต Wi-Fi ทํางานตามที่คาดไว้ ชุดทดสอบของผู้ให้บริการ (VTS) ประกอบด้วยการทดสอบ HAL สำหรับการโอนข้อมูลจากการเทอร์มินัล