การออฟโหลดการแชร์อินเทอร์เน็ตช่วยให้อุปกรณ์ประหยัดพลังงานและปรับปรุงประสิทธิภาพได้โดยการ ออฟโหลดการรับส่งข้อมูลการแชร์อินเทอร์เน็ต (ผ่าน USB, Wi-Fi) ไปยังฮาร์ดแวร์ ระบบจะออฟโหลดการรับส่งข้อมูลผ่านการแชร์อินเทอร์เน็ตโดยการระบุเส้นทางโดยตรงระหว่างโมเด็มและอุปกรณ์ต่อพ่วง โดยข้ามโปรเซสเซอร์ของแอป
ข้อกำหนด
ตั้งแต่ Android 8.1 เป็นต้นไป อุปกรณ์จะใช้การส่งต่อข้อมูลผ่านการเชื่อมต่ออินเทอร์เน็ตเพื่อ ส่งต่อ IPv4, IPv6 หรือ IPv4+IPv6 ไปยังฮาร์ดแวร์ได้
ฟีเจอร์การออฟโหลดไม่จำเป็นต้องออฟโหลดแพ็กเก็ตทั้งหมด เฟรมเวิร์กนี้ สามารถจัดการแพ็กเก็ตใดก็ได้ในซอฟต์แวร์ โดยปกติแล้วแพ็กเก็ตควบคุมจะ ได้รับการประมวลผลในซอฟต์แวร์ เนื่องจากพอร์ต IPv4 ใช้ร่วมกันระหว่างการรับส่งข้อมูลผ่านการเชื่อมต่ออินเทอร์เน็ต และการรับส่งข้อมูลของอุปกรณ์ แพ็กเก็ตการตั้งค่า/การเลิกเซสชัน IPv4 (เช่น SYN/SYN+ACK, FIN) จึงต้องได้รับการประมวลผลในซอฟต์แวร์เพื่อให้เคอร์เนลสร้างสถานะโฟลว์ได้ เฟรมเวิร์กมีระนาบควบคุมและเครื่องสถานะ นอกจากนี้ ยังให้ข้อมูลเกี่ยวกับอินเทอร์เฟซ/คำนำหน้าต้นทางและปลายทางแก่ฮาร์ดแวร์ด้วย
สำหรับ IPv4 ฮาร์ดแวร์จะอนุญาตให้แพ็กเก็ตการตั้งค่าเซสชันการแปลที่อยู่เครือข่าย (NAT) ของ IPv4
ไปถึง CPU เคอร์เนลจะสร้างรายการ NAT และการใช้งาน HAL
จะสังเกตรายการจากตัวอธิบายไฟล์ที่เฟรมเวิร์กจัดเตรียมให้
และจัดการโฟลว์เหล่านี้ในฮาร์ดแวร์ ซึ่งหมายความว่าการใช้งาน HAL ไม่
ต้องใช้ CAP_NET_* เนื่องจาก HAL จะเปิดซ็อกเก็ต NF_NETLINK_CONNTRACK จากเฟรมเวิร์ก
ฮาร์ดแวร์จะส่งการอัปเดตสถานะ NAT สำหรับ
โฟลว์ที่ใช้งานอยู่ในปัจจุบันไปยังเฟรมเวิร์กเป็นระยะๆ ซึ่งจะรีเฟรชรายการสถานะการติดตามการเชื่อมต่อเคอร์เนลที่เกี่ยวข้อง
สำหรับ IPv6 เฟรมเวิร์กจะตั้งโปรแกรมรายการคำนำหน้าปลายทาง IPv6 ที่ต้องไม่มีการส่งต่อทราฟิก และสามารถส่งต่อแพ็กเก็ตอื่นๆ ที่เชื่อมต่อได้
สำหรับการบัญชีการใช้ข้อมูล NetworkStatsService การสำรวจการใช้ข้อมูลจะทำให้
เฟรมเวิร์กขอสถิติการเข้าชมจากฮาร์ดแวร์ นอกจากนี้ เฟรมเวิร์กยัง
สื่อสารขีดจำกัดการใช้ข้อมูลกับฮาร์ดแวร์ผ่าน HAL
ข้อกำหนดเกี่ยวกับฮาร์ดแวร์
หากต้องการใช้การออฟโหลดการแชร์อินเทอร์เน็ต ฮาร์ดแวร์ต้องสามารถส่งต่อแพ็กเก็ต IP ระหว่างโมเด็มกับ Wi-Fi/USB โดยไม่ต้องส่งการรับส่งข้อมูลผ่าน โปรเซสเซอร์หลัก
การใช้งาน
หากต้องการเปิดใช้ฟีเจอร์การออฟโหลดการแชร์อินเทอร์เน็ต คุณต้องใช้ HAL การกำหนดค่า (IOffloadConfig) และ HAL การควบคุม (IOffloadControl) ทั้ง 2 รายการต่อไปนี้
HAL การกำหนดค่า: IOffloadConfig
HAL จะเริ่มการติดตั้งใช้งานการออฟโหลดการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือIOffloadConfig เฟรมเวิร์กจะให้การติดตั้งใช้งาน 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 การออฟโหลดการเชื่อมต่ออินเทอร์เน็ต