韓彥超,李 亮,王成群
(1.浙江理工大學信息科學與工程學院,浙江 杭州 310018;2.浙江海利普電子科技有限公司,浙江 海鹽 314300)
第五代移動通信[1](5G)作為新一代蜂窩移動通信技術,在4G技術的基礎上集合了毫米波[2],大規模多輸入多輸出[3],以及波束賦形[4]等多種通信領域的前沿技術,具有傳輸速率高、低延時、高速度、廣連接的特性[5]。2019 年,5G技術在全球范圍內正式投入商用部署,極大地促進了工業、醫療、娛樂、消費、交通等各行業數字化、網絡化、智能化的發展。但是,5G網絡在農場直播帶貨、礦山無線遠程遙控和深井作業等應用場景中會出現信號不穩定[6-8]的問題,導致數據傳輸速率嚴重下降和時延增大。這是因為5G商用化需要通過三大運營商建造的5G基站進行數據傳輸,由于運營商建設的基站分布不均勻,并且在農村及偏遠地區建設的5G基站較少,這使得5G的傳輸性能受到極大的影響。針對上述問題,本文使用MPTCP[9-11]技術設計了基于5G的多路徑數據傳輸系統,目的是使用不同運營商的SIM卡將多條5G鏈路帶寬聚合,提高5G在特殊應用場景中的傳輸帶寬、連接魯棒性及網絡服務質量,有效解決當前5G應用中所面臨的問題。
系統總體架構(圖1)包括主控模塊、5G模組、數據交互和人機交互四個部分,其中主控模塊使用ARM Cortex-A7內核[12]的I.MX6ULL芯片作為主控制器控制系統的運行,完成數據的接收和發送;5G模組是實現遠程數據傳輸的主要設備,本文系統中搭載了兩個5G模塊構成兩條5G通信鏈路;數據交互采用以太網和無線Wi-Fi的方式與外部設備構成局域網,實現數據的采集。人機交互使用通用接口或設備實現與系統的交流,并對系統進行操作。
圖1 系統總體架構圖Fig.1 Diagram of overall system architecture
系統硬件設計框圖如圖2所示,輸入DC12 V電壓,經過BUCK轉換電路后為系統平臺的設備模塊供電;核心控制系統由NXP公司的I.MX6ULL處理器芯片搭載FLASH和DDR3組成,為系統提供存儲和運行內存空間;外圍電路包括5G移動通信、有線以太網、無線網Wi-Fi、外部存儲、USB串口、啟動模式選擇等設備,與核心控制系統連接完成系統硬件電路的搭建。
圖2 系統硬件設計框圖Fig.2 Block diagram of system hardware design
I.MX6ULL核心控制電路由內存擴展DDR3和存儲空間擴展NAND FLASH接口電路組成。其中,將容量為512 MB的DDR3L芯片NT5CC256M16EP-EK用于系統內存空間擴展,為系統提供足夠的運行空間;使用Micron公司512 MB的NAND FLASH芯片MT29F4G08作為存儲擴展,用于存儲系統鏡像、設備樹和根文件系統及相應的數據。
本文使用Quectel公司的RM500Q-GL模組搭建5G移動通信電路。該模組支持5G NR-SA/NSA等多種網絡制式;支持PCIe、USB3.0和USB2.0數據交互接口,是一款工業級5G通信模組。
5G移動通信硬件框圖如圖3所示,I.MX6ULL芯片內部集成UTMI接口[13]連接控制器和USB PHY,其中TermSelect作為終端選擇信號,通過控制上拉或下拉電阻的變化產生HS/FS狀態下不同的線狀態;LineSate用于反映DP、DM線狀態,根據該信號判斷USB復位、掛起、恢復操作;TX/RX表示的信號為數據的收發信號;Data表示使用16 bit的數據接口。因此,模塊直接通過USB2.0接口與處理器連接完成與控制器的數據交互,其中USB_DP和USB_DM是傳輸的差分數據線;開關機和復位引腳連接處理器的GPIO輸出控制;模組提供SIM卡的接口。
圖3 5G移動通信硬件框圖Fig.3 Block diagram of 5G mobile communication hardware
有線和無線網通信的硬件基礎是網卡,網卡主要工作在數據鏈路層和物理層,其中數據鏈路層提供基于比特流的幀同步、數據流的流量控制、網絡的鏈路控制等功能;物理層提供通信雙方所需的物理信號。
以太網硬件框圖如圖4所示,以太網電路使用RMII接口連接處理器和PHY芯片LAN8720;處理器中數據發送和接收時鐘的頻率為50 MHz,它是通過專用Ethernet PLL倍頻系統時鐘生成的;TXP/TXN和RXP/RXN是兩組差分信號,用來傳輸物理層到數據鏈路層的電路信號;TXD和RXD是2 bit數據傳輸接口;MDIO總線用于訪問PHY芯片的任意寄存器。
圖4 以太網硬件框圖Fig.4 Block diagram of Ethernet hardware
無線網使用處理器I.MX6ULL內部IP核USDHC提供的SDIO接口連接RTL8189模塊,該模塊是集成MAC(Media Access Control)、PHY(Physical)和RF(Radio Frequency)于一體的802.11n無線局域網控制器,時鐘頻率為40 MHz時,傳輸速率最高可達150 Mbps。
在完成系統硬件設計的基礎上,設計系統軟件,實現系統設計的目標。系統軟件總體架構如圖5所示。在系統平臺上移植Uboot引導程序和MPTCP_Linux0.95[14]版本的內核,構建ubuntu-base根文件系統組成系統的運行環境。設備驅動文件的設計核心是根據板級硬件信息,使用Linux系統驅動框架實現硬件模塊在系統運行環境中的全功能,為應用層提供讀寫數據功能。應用軟件在用戶空間使用系統API函數讀寫控制硬件設備。
圖5 系統軟件總體架構圖Fig.5 Diagram of system software structure
嵌入式硬件平臺運行Linux系統需要完成Uboot、MPTCP_Linux0.95和ubuntu-base的移植,三者之間的關系體現在Linux系統啟動的過程:首先硬件上電芯片復位后,Uboot初始化部分硬件,完成DDR3、外部存儲及以太網口等設備的初始化,然后加載引導存儲器中的內核程序到DDR3中啟動運行,Linux內核加載過程中會從ubuntu-base根文件系統中加載初始化腳本和服務程序,最后將根文件系統掛載執行相應的應用程序和系統進程。
在系統運行時,由于多個網卡接口上定義了不同的IP地址,如果沒有指明路由所屬的表,所有的路由默認放在主路由表里,所有網卡都會使用主路由表對應的網關進行路由,這不符合MPTCP的實際應用。因此,編寫腳本文件使用ip rule和ip route命令配置路由,為每個網卡接口配置一個路由表,每個路由表有一個數字標識,系統會根據路由表編號由小到大進行檢查,根據IP匹配對應的路由表,使所有網卡符合MPTCP的實際應用。
5G模組RM500Q-GL首先是一個USB設備,其次是網絡設備。USB驅動是一種分層的總線結構,如圖6所示,包括USB設備驅動和USB子系統驅動,其中USB設備驅動利用USB Core提供的API完成驅動的工作,通過管道(pipe)控制USB設備與主機控制器之間的通信;USB Core和USB主控制器驅動(HCD)構成USB子系統,隱藏了USB協議和硬件的復雜性;USB總線將設備和驅動關聯起來。
圖6 USB驅動結構示意圖Fig.6 Diagram of USB drive structure
USB驅動的實現需要對Linux中USB子系統進行修改,實現與RM500Q-GL的匹配。首先添加設備供應商提供的VID=0X2C7C和PID=0X0800用于識別設備,加載相應的驅動程序;然后在struct usb_device_id option_ids數組中添加USB設備RM500Q-GL;最后增加零包處理機制,當端點傳輸的數據包大小是wMaxPacketSize的整數倍時,需要發送一個長度為0的數據包結束這次傳輸。
USB設備驅動首先需要注冊usb_driver,然后實現usb_device_id、probe、disconnect和name等成員變量,其中usb_device_id通過VID和PID匹配USB設備和驅動;probe函數完成設備的初始化,調用usbnet_probe函數將RM500Q-GL設置為USB網絡設備。該驅動通過usb_control_msg函數發送USB的控制信息。
5G模組的網絡驅動在usbnet_probe函數中綁定并初始化usb設備的網卡接口usbx(x=0,1),并向上層注冊網卡設備,完成usb網絡設備的配置,協議層就可以通過這個設備的tx、rx接口發送和接收數據。此外,實現5G模組撥號上網的功能,需要移植編譯Quectel官方提供的GobiNet驅動實現模組的網絡連接,在Linux系統下5G模組的USB接口被映射成ttyUSB 0-3這四個接口,接口的功能如表1所示。
表1 RM500Q-GL在系統中的接口Tab.1 Interface of RM500Q-GL in the system
DIAG端口用于對網絡參數的修改和平臺日志信息的輸出;GNSS是全球導航定位系統;ttyUSB2用于AT命令的交互;Modem端口用于撥號上網。因此,為防止5G模組RM500Q-GL的接口4被用作USB串口設備,需要在USB驅動文件中將接口4設置為USB網絡接口。
網絡設備是用戶數據包在網絡媒介上發送和接收的設備。網絡驅動架構中net_device結構體包含網絡設備的屬性描述和操作接口,以太網驅動的核心就是填充net_device中的具體成員并注冊到Linux內核中。網絡設備在初始化時首先使用alloc_netdev函數分配一個net_device結構體,然后配置相關的寄存器,設置net_device的結構成員,最后使用register_netdev函數將net_device注冊到內核中。
以太網驅動程序中發送流程圖如圖7(a)所示,上層應用向驅動傳入sk_buff結構體指針,接收來自上層傳遞的數據,使用環形緩沖區隊列保存數據,如果數據發送隊列剩余的描述符不足,需要暫停應用層向網絡發送數據,并通過硬件中斷將數據發送,直到隊列中網絡發送描述符與中斷處理描述符指向地址相同,則結束發送并釋放sk_buff空間給系統;接收流程圖如圖7(b)所示,該設計中使用中斷和輪詢的方式(NAPI)接收數據,首先創建sk_buff緩存接收數據,讀取中斷寄存器的狀態判斷接收中斷的觸發,通過napi_schedule_prep的返回值判斷NAPI是否可以進行調度,然后啟動NAPI調度函數,在輪詢調度函數中遍歷接收描述符,并將數據遞交到協議棧進行處理,直到緩沖區狀態為空時停止接收數據。
圖7 以太網收發流程圖Fig.7 Ethernet transceiver flow chart
USB串口是常用的人機交互接口,串口驅動的設計使用platfrom總線結構,主要實現uart_port和uart_ops兩個結構體中的函數。uart_port用于描述一個UART的I/O端口或I/O內存地址、FIFO大小、端口類型等信息;uart_ops結構體是串口的操作函數集,包括串口的起始、發送、接收等函數,其中發送程序流程如圖8(a)所示,用戶進程執行寫操作時會觸發UART的發送中斷,在中斷處理函數中循環將上層驅動保存在xmit中的數據寫入硬件FIFO,直到xmit中數據為空,關閉TX-FIFO中斷;接收程序流程如圖8(b)所示,在驅動匹配成功后獲取設備樹的中斷信息,通過寄存器判斷中斷的觸發信息,接著循環讀取寄存器中的值,將接收的字符進行奇偶校驗后存入tty數據塊中,等待RX-FIFO中數據讀完后將數據發送給tty核心層進行數據緩存。
圖8 UART收發流程圖Fig.8 UART transceiver flow chart
完成系統的軟硬件設計后,測試系統的可運行性,系統實物連接圖如圖9所示,使用網線將系統平臺連接路由器與PC機組成局域網;選擇中國移動和中國電信的SIM卡插入卡槽,5G模組射頻前端連接4 根天線;系統啟動模式設置為SD卡啟動,方便調試;連接USB串口到PC端實現對系統的控制。
圖9 系統實物連接圖Fig.9 Physical connection diagram of the system
通過“sysctl-w”命令對系統中MPTCP協議進行配置。如圖10(a)所示,配置項包括:使用MPTCP協議,打開MPTCP的調試功能;配置MPTCP協議的路徑管理算法為全路徑(fullmash)[15],調度算法為輪詢調度(roundrobin)[16],擁塞控制算法為Cubic[17];支持重傳次數為3 次。運行mptcp_route.sh腳本文件完成對系統路由表的配置,如圖10(b)所示。
圖10 系統多路徑功能配置Fig.10 System multipath function configuration
為驗證本文設計的5G多路徑數據傳輸系統的性能,在PC端使用FTP協議將數據傳輸到系統,系統接收到數據后分別使用一條和兩條5G鏈路將數據上傳到云端。測試結果如圖11所示,在某一運營商信號不穩定時,使用單條路徑傳輸數據的速率僅為1.1 MB/s;而使用兩條運營商通信鏈路傳輸的速率為2.3 MB/s。由此可見,使用兩個不同運營商的5G鏈路進行數據傳輸的速率明顯高于單條路徑數據傳輸的速率。
圖11 系統單路徑和多路徑數據傳輸Fig.11 System single path and multipath data transmission
為了進一步驗證5G多路徑數據傳輸系統可以有效實現帶寬聚合,使用單路徑和多路徑分別上傳10—150 MB的文件到云端,測試后的數據如圖12所示,在傳輸不同大小的文件時,使用雙路徑傳輸的速率穩定在2.3 MB/s左右,單路徑傳輸速率的速率穩定在1.2 MB/s左右,相較于使用單條5G鏈路,5G多路徑數據傳輸系統實現了穩定的帶寬聚合,驗證了本文提出的MPTCP與5G技術相結合的多路徑傳輸方案能夠提高5G在特殊應用場景中的傳輸帶寬、連接魯棒性及網絡服務質量。
圖12 單路徑與多路徑數據傳輸對比圖Fig.12 Comparison between single path and multipath data transmission
本文提出使用MPTCP協議與5G技術相結合的方案,并完成了5G多路徑數據傳輸系統的設計。該系統實現將接收到的數據使用不同運營商SIM卡的5G鏈路發送到云端,實現多條5G通信鏈路帶寬聚合。經過測試驗證,本文設計的5G多路徑數據傳輸系統在某一運營商5G信號不穩定情況下可以顯著提高5G在特殊應用場景中的傳輸帶寬、連接魯棒性及網絡服務質量。