移动网络接口的研究与设计

时间:2022-02-26 08:43:19

移动网络接口的研究与设计

摘要:移动设备面临着多样化和动态的网络选项,要想充分地使用这些选项要求知道应用程序的意图。移动网络接口是一个简单而强大的处理网络多样性的机制。应用程序为网络传输提供一个声明标签,并将系统匹配到最合适的网络。移动网络接口还可以推迟和重新排序传输的数据,提供应用程序互斥和排序约束机制。

关键词:移动网络;接口设计;数据传输

1引言

移动设备面临着一个多元、动态的网络选项。这些选项有各种各样的优点和缺点。因此,在所有情况下没有单一的“最佳选择”,基础设施的多样性既是挑战,也是机遇。面临的挑战是管理这些不断变化的选项以满足每个应用程序的需求,这本身随时间变化。通过这样做,应用程序带来了显著效益,同时利用多个网络和规划未来的传输智能。目前解决这个问题的方法是不充分的。一个极端,操作系统或中间件层代表应用程序的所有路由和接口决定。然而,因为这些决定不知道应用程序的使用网络意图,他们经常错过优化机会。另一个极端,系统直接暴露底层细节给应用程序,使应用程序知道网络变化,应用程序必须显式地选择可用的选项。这种方法表达,需要管理多个无线网络不必要复杂的应用程序任务。设计的网络介于两者之间,系统管理发现和描述可用网络选项的细节,应用程序用少量的声明标签来提供关于通信量的提示。然后,该系统将匹配的网络流量提供给可用的接口。设计的移动网络系统提供了一个可移植的、用户级别的实现方法。

2移动网络接口设计原理

设计遵循经典的分离原则机制。应用程序确定使用网络的实际意图,这一意图表示数据应如何传输的策略。另一方面,操作系统或中间件库是最佳的位置,以提供一个共有机制来实现指定的策略。每个应用程序必须提供使用网络意图的提示,因此共有机制使得部署新应用程序使用多个移动网络容易。处理多个异构和间歇性的移动网络的细节被封装在系统的底层。共有机制也可以从多个应用程序聚集异构数据传输。因此,网络设计通过数据传输标签和系统底层实现的分离,制定政策数据映射到网络最佳匹配时的数据传输的标签。设计希望接口尽可能简单,要求每一个应用程序公开定量规格的特性,它希望产生的流量,以及它所需要的服务质量。这一原则导致了几项决定,应用程序使用定性属性的数据表示他们的意图,而不是使用量化规范,即,不管是小的还是大的,不管是前台互动的还是后台的流量。不要求什么是“小”和“大”。允许该应用程序使用它认为合适标签。并发系统包括允许程序员排除不正确的排序机制,增加了同步抽象表达原子和之前发生的约束。除了表达这类排序约束,还需要处理部分失败的机制。有些时候一些信息量将由任何可用的传输转换提供错误的服务。因此,提供了一种回调机制来处理延迟传输或断开连接。

3移动网络接口设计方案

在本节中,描述网络应用程序接口。首先描述基本的抽象接口。应用程序使用标签来传达他们的意图。表达信息单位称为IROBs(IsolatedReliableOrderedBytestreams)。IROBs提供原子性(互斥);应用程序还可以指定IROBs之间顺序约束。当操作必须延迟,应用程序可以注册thunks恢复他们。

3.1标签

标签是应用程序的主要抽象信息,应用程序声明任何特定网络信息属性的机制。标签是系统定义的定性属性的消息。目前只支持4个标签,两个维度,交互性和规模,如表1所示。如果用户事件正在等待响应,消息的标签设置为Fore-ground,如果它的及时传递不是行为的关键,则消息的标签是Background。例如,许多提示不需要发送。Small标签描述单包的RPC等消息,Large标签描述其他消息,如包含多媒体数据。

3.2多模式数据来源处理

标签与标签感知套接口一起使用。我们称这种套接口为multi-sockets。直观地说,一个multi-socket将几个不同标签单一虚拟套接口复合在一起。在大多数情况下,multi-sockets行为是正常的。然而,multi-socket发送调用需要一个标签。请注意,发件人是负责分配标签的实体,作为结果,接收不需要标签。可以想象用一个标签来实现过滤的接收。multi-socket是一个逻辑连接,动态实例化,并使用实际TCP连接在一个或多个物理接口。multi-sockets提供封装:它们隐藏多个网络接口、路由和连接的应用程序。Multi-sockets也封装瞬时断开连接,如通过无线死区。应用程序指定标签,网络流量管理器利用标签选择正确的网络发送数据。应用程序被每一个标签通知网络不可用,通过使用thunk技术,当事件发生时执行递延执行环境。像TCP套接口,multi-sockets支持可靠传递抽象。然而,multi-sockets放松了TCP排序约束,允许字节被记录到指定的互斥和排序约束中的应用,在后面两节中描述。

3.3IROBs字节流

带有标签的IROB是网络传输信息的基本单位,multi-socket接口保证每个IROB自动接收;即,指令中产生的IROB字节流不影响其他网络传输字节流。然而,单个IROB可能被重新排序到另一个地方。换句话说,来自接收multi-socket接口的先前发送的IROB首先被正在读取数据的应用程序看到。然而,来自于两个IROB的字节永远不会混合。IROBs以同样的方式提供互斥操作,在多线程程序中,锁提供互斥的线程。

3.4排序约束

因为有些应用程序需要订购IROBs之间的约束,所以multi-socket接口支持这样的约束声明。每个multi-socket接口分配一个独一无二的,单调增加的标识符给每个IROB。当创建一个新的IROB时,应用程序可以指定任何IROB的标识符,但必须接收到之前被创造出来的标识符。排序约束可能只指定IROBs有较低的唯一标识符,这可以保证这样的约束是无死锁的。TCP套接字指定每个IROB必须收到最低的标识符,应用程序处理连续的字节流,API提供了简单的默认发送调用机制。然而,许多应用程序拥有更为宽松的约束条件;例如,BlueFS文件系统客户端允许异步写入。multi-sockets中的排序约束类似于多线程程序提供线程的条件变量。

3.5Thunks技术

带标签的IROB在发送时没有任何“合适的”网络可以利用,这种情况是可能的。例如,批量传输开始时只有一个低带宽链接是可用的;或者移动计算机可能是在一个无线死区,没有连接。这种传输最好在稍后遇到一个高带宽链接时处理。当然,不希望应用程序轮询链接,也不希望应用程序建立新连接后短时间内瞬时断开。创建IROBs操作设置一个可选的Thunk参数,这个函数/参数对将用于告知应用程序IROBs由于缺少合适的网络不能立即发送。当一个IROB延期时,带有Thunk参数的调用返回一个特殊的返回代码。指定标签数据被下一次传输时,库通过调用thunk指定参数的函数通知应用程序。处理程序必须为Thunk参数资源关系负责,Thunk可能会被取消,例如,前一个Thunk是无效的,后续的将取消。Thunk对于定期发送消息的应用程序是有用的,如检查新邮件。在断开连接期间缓冲冗余消息,以后将所有信息发送这是不可取的。相反,应用程序注册一个发送thunk,合适的网络可用时获得通知。Thunk处理程序只发送轮询请求,从而保护宝贵的网络带宽。

3.6API函数

表2列出了最重要的改进的移动网络API函数。ms_sock-et函数创建一个新的multi-socket,ms_connect函数连接到远程端点,ms_connect函数和标准的connect函数唯一不同是调用的第一个参数是multi-socket。一般使用ms_*修改应用程序替换socket,connect等函数。应用程序使用ms_begin_irob函数创建一个新的IROB,通过一个标签来描述原子信息以及排序约束。应用程序调用ms_irob_send函数指定IROB部分数据发送;交替调用send和ms_irob_send函数。应用程序使用ms_end_irob函数通知库没有IROB数据发送。ms_send函数调用提供便利,它根据所有以前的IROBs创建一个新的IROB,并结束IROB。如果应用程序使用ms_send调用,它将提供带标签的TCP连接,尽管没有重新排序。ms_recv函数调用返回一个标签。服务器应用程序希望使用客户端原始请求提供的标签回复客户请求。例如,IMAP服务器可能希望用Background标签回复客户后台请求,使用Foreground标签回复客户前台请求。表2显示了创建和使用multi-sockets移动网络的API。除了显示的功能外,multi-sockets还支持传统的套接口函数;例如,accept,select等。

3.7讨论

设计移动网络接口时要考虑应用程序需要提供自己的事件,才能实现应用程序感知功能。首先,应用程序需要发现新的网络选项,为每个网络选项打开套接口,并监控各网络的连接质量,以便决定用于传输的网络。按通信量需求排序,应用程序可能会创建每个网络的多个套接字,然后使用特定于平台的方法优先考虑通信量从一个套接口到另一个。应用程序也需要传输介质跨越连接来提高吞吐量,然后管理必然函数名称参数和返回的值ms_socket(INfamily,INtype,INprotocol,OUTmulti-socket);ms_begin_irob(INmulti-socket,INlabel,INdependencies,INthunk,INthunk_data,OUTirob_id);ms_irob_send(INirob_id,INbuf,INlength,INflags,OUTbytes_sent);ms_end_irob(INirob_id)ms_send(INmulti-socket,INbuffer,INlength,INflags,INlabel,INthunk,INthunk_data,OUTbytes_sent);ms_recv(INmulti-socket,INbuffer,INlength,INflags,OUTlabel,OUTbytes_rcvd);产生的数据分段排序。最后,应用程序可能会轮询来实现Thunk的功能,Thunk允许链接被修改,如果当前没有合适的网络也可以删除。

4移动网络接口的通信过程

对于每个multi-socket,库动态创建单独的TCP套接字决定每个接口发送数据。multi-socket连接持续下去,直到没有TCP连接可以使用任何网络接口(例如,如果移动计算机移出WiFi接入点的范围内,没有其他网络选项可用),或multi-socket关闭。为简单起见,选择使用TCP。TCP可靠性机制限制必须在IROB内实现命令交付的字节或由于网络拥塞丢失字节重新传输的工作量。当第一个TCP套接字建立初始连接时,移动客户端为每一个连接发送其对等数据,包括可用的IP地址、估计的带宽和延迟。它搭载更新网络标题信息,同伴可以建立一个新的TCP连接,新的连接将是最适合于一个特定的标签数据。库使用主动和被动估计网络带宽和延迟的方式将标签映射到TCP连接。当一个新的网络选项被发现时,连接侦查器提供连接质量的初步测量。库通过连接发送数据,测量单个传输的响应时间产生被动测量。连接侦察器提供周期性的主动测量,用于评估在没有数据传输和被动测量不可用时网络质量。主动和被动测量结合使用触发滤波器获得运行当前连接质量的估计。库使用以下策略映射标签TCP连接。前台数据具有最高优先级,带有{Foreground,Small}标签的IROBs通过低延迟的TCP连接发送。带有{Foreground,Large}标签的IROBs通过高宽带连接发送。这些可能是相同的连接(例如,当前只有一个接口提供连接)。用于特定标签的实际物理接口可能随时间变化链接特征有所不同。后台数据比前台数据优先级低。当前不发送前台数据的网络发送后台IROBs,大的后台IROBs被拆分成小块,每一个都可能被送到另一个网络。Foreground标签要求低响应时间;不幸的是,分段可以增加最后一个数据包的延迟到达,除非网络层能为每个链接正确预测瞬时延迟。相比之下,Background标签指定的数据对延迟不敏感;因此,分段策略最大化利用每个链接是理想的。一个链表以先进先出顺序索引所有IROBs标签。每个TCP连接都有当前合适发送标签的列表。当网络能够发送数据时,库从具有最高优先级的标签相关联的列表中取出第一个IROB数据。库用32字节特定的网络标头封装IROB数据,包括IROB标识符和它的标签以及IROB的顺序约束。在一次连接时,库并不限制发送所有IROB的字节,它可能决定一个IROB分解成小块,每一个都要发送一个单独的头。IROB块通过多个TCP连接发送,每个IROB的字节能有序地自动传送,接收库对其确认和重组。当多个网络应用程序同时执行时,所有进程的活动都通过共享内存变量和同步进行协调。我们假设链接接近移动计算机的瓶颈,大多数感兴趣的是所有路径共享。因此,库实例更新共享变量,包含每个网络上未发送数据的缓冲数量。这样的数据在所有进程的总量不得超过限制先行调度算法,以保证良好的前台性能。网络应用程序将调整其在执行过程中被动观测网络质量的估计,因此,将考虑在其决定的竞争流量。库通过建立可能的接口对处理两个移动设备与多个接口之间的连接。

5结语

移动节点面临着不断变化的各种网络选项,每一种都有不同的优点和缺点。因此,对应用程序而言,选择一个最佳的网络选项,这种情况是很少见的。通过合理使用可用的选项,应用程序的服务得到了显著改善。不幸的是,这样会暴露可用网络的低层细节给应用程序,不太可能引起很大的关注。设计的移动网络解决了这一僵局。它为应用程序提供一个简单的声明接口来表达每一个网络消息背后的意图。系统匹配当前网络通信量到最佳可用的接口。如果没有合适的可用网络,该通信量被推迟,直到网络可用。延缓某些类型的通信量会导致重新排序。设计的移动网络接口提供了表达互斥和排序约束机制,使他们的通信量匹配到应用程序的限制。

作者:杨彬 李逦 单位:辽宁行政学院信息技术系

参考文献

[1]朱孙鹏,叶宇煌.基于北斗RDSS的GNSS位置信息转发接口软件设计[J].莆田学院学报,2015,22(5):60-63.

[2]尹星,张三峰.一种多路由器多接口的移动网络多宿方案[J].计算机科学,2015,42(5):142-147.