发明内容
本发明要解决的技术问题是,针对现有技术存在的上述不足,提供一种基于AOC光纤的ARM云终端系统,利用已有的USB AOC光纤线传输VDI协议数据,以提高数据传输速度与稳定性,同时又不增加服务器的负担。
本发明为解决上述技术问题所采用的技术方案是:
基于AOC光纤的ARM云终端系统,包括服务器、传输层和ARM终端,ARM终端通过传输层与服务器通讯连接;所述ARM终端包括USB设备控制器层、RNDIS设备层(含设备管理)、网络管理层和VDI客户端,RNDIS设备层设置于USB设备控制器层之上,实现远程网络驱动程序接口规范;网络管理层用于将光纤网络直接模拟为以太网,支持TCP/IP协议,并实现USB设备控制器层、RNDIS设备层与VDI客户端之间的IP网络地址设置;VDI客户端是一个运行于云终端的虚拟机客户端;所述服务器采用网桥或网络地址转换方式管理传输层和ARM终端的网络数据,至少包括VDI服务器端和RNDIS设备管理层。
按上述方案,所述传输层使用USB AOC光纤线,USB AOC光纤线作为ARM终端与服务器的硬件数据通道,包括标准的VDI传输协议,VDI传输协议的数据内容按如下格式进行传输:
按上述方案,所述服务器还包括网络重定向模块,网络重定向模块用于通过TCP/IP重定向机制使ARM终端访问internet。
按上述方案,所述ARM终端的USB设备控制器层由ARM芯片开发厂商提供,分为USB2.0和USB3.0两种不同的实现:i)USB3.0设备控制器(在使用了USB3.0的ARM芯片上,直接将USB AOC光纤线接入到USB3.0设备控制器);ii)USB2.0设备控制器,在ARM芯片板上外接一个USB3TT芯片,该USB3TT芯片用于将从USB 2.0 Device Controller出来的USB信号转换为USB3.0信号。
按上述方案,所述ARM终端的RNDIS设备层包括如下USB控制传输命令:
按上述方案,所述ARM终端的网络管理层分为3个组成部分:
i)TCP/IP网络协议层,用于设置IP、子网掩码、DNS服务器,完成网络设置;
ii)网络抽象层,用于将网络行为定义为如下抽象行为:
a.网络连接事件,NET_LINKUP,当该事件发生时表示物理网络已经处于连接状态;
b.网络断开事件,NET_LINKDONW,当该事件发生时表示物理网络已经处于连接断开状态;
c.网络数据发送,SendData,将网络发送到当前网络接口;
d.网络数据接收,RecevieData,从当前网络接口读取数据;
f.网络配置事件(IP,子网掩码,网络接口禁用于启用),NetConfig;
g.网络当前工作接口选择,SeleteNetInterface;
iii)USB热插拔处理层,用于当USB AOC光纤线插入时,USB热插拔处理层向网络抽象层发送网络连接事件,当USB AOC光纤线拔出时向网络管理层发送网络断开事件。
按上述方案,所述服务器的RNDIS设备管理层的驱动模块由标准Linux kernel提供,增加控制命令UsbReqGetIp和UsbReqSetIP的发送端。
按上述方案,所述服务器的RNDIS设备管理层实现RNDIS设备的热插拔管理与IP地址管理具体如下:
1)热插拔管理:采用udev脚本实现,在/etc/udev/rule.d中增加一条规则,当发现光纤插入云终端时,自动调用shell脚本完成RNDIS接口与网桥的绑定;
2)IP地址管理:基于网桥的实现方案,在服务器端维护一个“(终端序列号,IP地址)”的表格(以下简称为TableIp)。
与现有技术相比,本发明具有以下有益效果:
1、采用USB AOC光纤线连接ARM云终端与服务器,以提高VDI协议的传输效率与稳定性,USB AOC光纤线能达到的速度为5Gb/S=640MB/S,该速度能满足4K高清视频的传输需求;
2、在物理连接上云终端采用USB设备控制器(包含加入USB3.0光电转换芯片)来连接USB AOC光纤线与(中间可增加USB3.0Hub)服务器,通用性强;
3、在协议层,服务器与云终端采用RNDIS设备支持USB AOC光纤线实现TCP/IP网络连接,RNDIS设备层实现了Mac地址,简化了上层模块设计;
4、服务器采用网桥或网络地址转换方式管理USB AOC Rndis设备网络数据,VDI客户端与服务器端的传输采用点对点的方式,大幅提高了传输的稳定性;
5、该系统不仅适用于ARM云终端,对X86、MIPS等类别的其它终端系统同样适用。
具体实施方式
以下结合附图对本发明的原理和特征进一步的描述,所举实例只用于解释说明本发明,并非限定本发明的应用范围。
如图3所示,本发明实施例所述的基于AOC光纤的ARM云终端系统,包括服务器、传输层和ARM终端,ARM终端通过传输层与服务器通讯连接;ARM终端包括USB设备控制器层、RNDIS设备层(含设备管理)、网络管理层和VDI客户端;RNDIS设备层设置于USB设备控制器层之上,实现远程网络驱动程序接口规范;网络管理层用于将光纤网络直接模拟为以太网,支持TCP/IP协议,并实现USB设备控制器层、RNDIS设备层与VDI客户端之间的IP网络地址设置;VDI客户端是一个运行于云终端的虚拟机的客户端;服务器采用网桥或网络地址转换方式管理传输层和ARM终端的网络数据,至少包括VDI服务器端和RNDIS设备管理层,RNDIS设备管理层用于接收USB数据,并转换成TCP/IP数据,实现RNDIS设备的热插拔管理与IP地址管理。
传输层使用USB AOC光纤线,包括标准的VDI传输协议,VDI传输协议的数据内容按如下格式进行传输:
服务器还包括网络重定向模块,网络重定向模块用于通过TCP/IP重定向机制使ARM终端访问internet。
如图4所示,ARM终端包括USB设备控制器层、RNDIS设备层、网络管理层和VDI客户端:
(1)USB设备控制器层由ARM芯片开发厂商提供,由于USB分为USB3.0和USB2.0,目前USB AOC需要工作在USB3.0模式下,因此USB设备控制器层分为USB2.0和USB3.0两种不同的实现:i)USB3.0 Device Controller,在使用了USB3.0的ARM芯片上,可以直接将USB AOC光纤线接入到USB3.0 Device Controller;ii)USB2.0 Device Controller,由于USB AOC仅支持USB3.0,但目前大量的ARM芯片仅能支持USB2.0;为了解决这一矛盾,可以在Arm芯片板上外接一个USB3TT芯片,该USB3TT芯片能将从USB 2.0 Device Controller出来的USB信号转换为USB3.0信号;
(2)RNDIS设备层设置于USB设备控制器层之上,用于支持TCP/IP协议,实现远程网络驱动程序接口规范(Remote Network Driver Interface Specification,即RNDIS),基于USB设备控制器层实现RNDIS实际上就是TCP/IP over USB,就是在USB设备控制器层上支持TCP/IP协议,因此采用远程网络驱动程序接口规范(RNDIS)后,ARM终端的应用软件觉察不到采用的是光纤网络还是传统网络;同时在RNDIS的驱动中实现了网卡的MAC地址。
为了能让服务器方便设置RNDIS设备层的IP,RNDIS设备层需要修改驱动代码,增加如下USB控制传输命令:
(3)由于RNDIS设备层实现了网卡的Mac地址,所以为了尽可能的简化上层的软件设计,增加一个网络管理层,网络管理层用于将光纤网络直接模拟为以太网,这样对于网络管理层以上的软件系统而言,就不需要判断是光纤还是以太网了;网络管理层分为3个组成部分:
i)TCP/IP网络协议层,用于设置IP、子网掩码、DNS服务器,完成网络设置;对于使用Linux操作系统的云终端,采用ifconfig完成这一功能,无论是rndis还是以太网都可以采用该命令完成网络设置;
ii)网络抽象层,用于将网络行为定义为如下抽象行为:
a.网络连接事件,NET_LINKUP,当该事件发生时表示物理网络已经处于连接状态;
b.网络断开事件,NET_LINKDONW,当该事件发生时表示物理网络已经处于连接断开状态;
c.网络数据发送,SendData,将网络发送到当前网络接口;
d.网络数据接收,RecevieData,从当前网络接口读取数据;
f.网络配置事件(IP,子网掩码,网络接口禁用于启用),NetConfig;
g.网络当前工作接口选择,SeleteNetInterface;
由于网络抽象层的引入,整个网络架构看起来如图5所示;
iii)USB热插拔处理层,用于当USB AOC光纤线插入时,USB热插拔处理层向网络管理层发送网络连接事件,当USB AOC光纤线拔出时向网络管理层发送网络断开事件;
(4)VDI客户端由于ARM终端兼容TCP/IP协议,所以VDI客户端(无论是采用RDP协议还是Spice协议)不需要任何修改;这一点正好能体现该方案的优势。
如图6所示,服务器的VDI服务器端由于兼容TCP/IP协议,所以不需要任何修改;
网络重定向模块用于通过TCP/IP重定向机制使ARM终端访问internet,解决Rndis设备访问公网(internet或企业局域网),其主要实现机制分为两种:
1)基于iptables与NAT(网络地址转换)的重定向机制:当检测到从RNDIS设备出来
的数据时,将数据转发到服务器的工作网卡,从而将数据发送到外网,当检测到发向工作网
卡的某个特定端口的数据时,将数据包重定向到RNDIS接口;
2)基于网桥的管理机制:在服务器上建立一个网桥,并将该网桥与服务器上的物理外网网口绑定;将RNDIS接口加入到该网桥,并将RNDIS设备层的IP与网桥设为统一网段;当数据传输时,网桥自动完成数据的转发;
RNDIS设备管理层的驱动模块由标准Linux kernel提供,但需要增加控制命令UsbReqGetIp和UsbReqSetIP的发送端。
RNDIS设备管理层,由于服务器会连接多个RNDIS设备,因而RNDIS设备管理层用于实现RNDIS设备的热插拔管理与IP地址管理:
1)热插拔管理:一种实现RNDIS设备的热插拔管理的方法是采用udev脚本实现,在/etc/udev/rule.d中增加一条规则,当发现光纤插入云终端时,自动调用shell脚本完成RNDIS接口与网桥的绑定;
2)IP地址管理:在基于网桥的实现方案中,由于网桥的网段需要和RNDIS设备在同一个网段中,因而在服务器需要为记录ARM终端的IP地址,每个ARM终端都有其唯一的序列号,因此在服务器端需要维护一个(终端序列号,IP地址)的表格(以下简称为TableIp);当一个新的RNDIS设备加入到网络中时工作流程如下:
a.udev发现rndis,RNDIS设备加入到网络,调用脚本激活该RNDIS接口,并加入到网桥;同时读取RNDIS设备序列号,这里记为sid;
b.向ARM终端发送usb control命令,UsbReqGetIp,由于ARM终端为初始化IP,所以该命令返回为空;
c.服务器查看sid在TableIP中的IP,如果为空则分配一个未使用的IP地址,并加入到TableIP中;
d.服务器发送UsbReqSetIp(IpAddr,NetMask,DNS)控制传输命令,设置IP。
服务器采用网桥或网络地址转换方式管理USB AOC光纤线和Rndis设备层的网络数据,本发明实际案例中采用了基于网桥的管理方法。
服务器启动流程
a.服务器(采用中标麒麟操作系统)开机启动后配置网桥,网桥接口名为br100,同时与物理网卡eno0进行绑定。
b.对网桥br100设置IP地址、子网掩码和DNS等,例如将IP设为192.168.1.10,子网掩码设为255.255.255.0;
c.服务器加载udev规则用于动态监测USB Rndis设备插入;当Rndis设备插入时首先用ifconfig激活其网络接口与设定接口IP信息;其次将该Rndis设备接口加入到br100(使用brctl工具)。
终端的实现前提:ARM云终端通过实现一个composite USB device,分为一个Rndis接口和一个acm(串口)接口;Rndis接口用于网络通讯,acm接口用于接受服务器的配置命令;
服务器设置VDI客户端的IP流程如下图7所示。
普通教学场景仅要求1080P视频支持,所以可以采用较低成本的方案,使用rockhcip3229芯片。该芯片仅提供USB2.0 device controller;而USB AOC需要工作在USB3.0模式;所以需要在ARM芯片上在增加一颗USB光电转换芯片(简称为U3TT),同时可采用一根光纤带4个终端(中间采用基于VIA芯片的USB3.0Hub),以分摊光纤成本。其架构如图8所示,该方案了每个终端的理论网络传输速度为800Mb/s=100MB/S。
服务器在中端4K视频支持方案下的架构如图9所示,ARM芯片采用Rockchip 3368,该芯片支持USB3.0 device controller,可以实现光纤与ARM终端的直连。该方案的最大理论传输速度为5Gb/s/4=1.25Gb/s=160MB/S.其性能大于千兆有线网络。
如果需要更高的图形传输要求,同时减轻服务器由于视频压缩带来的负担,可采用如图10所示的服务器在高端图形工作站支持方案下的架构图,该方案的最大理论传输速度为5Gb/s=640MB/S。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之类,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。