一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于应用和用户态协议栈的网络管理方法及网络架构与流程

2021-12-01 01:00:00 来源:中国专利 TAG:


1.本发明涉及互联网技术领域,具体涉及一种sdn场景下基于应用和用户态协议栈的网络管理方法及网络架构。


背景技术:

2.随着网络设备、接入用户、用户app的大规模使用,当前互联网发展使得传统面向用户的网络接口面临越来越多的挑战。
3.首先,传统的操作系统socket接口,以ip地址 端口为定位符进行通信,随着地址或者端口的变化,带来了网络的震荡。就app来说,不应该感知ip地址或者端口的变化。而且,目前采用ip地址作为socket的基本接口不可能做到身份隐藏。对于网络窃听者来说,在报文整个传输中,总是可以根据ip地址身份追溯到源,从而发起相应的攻击。
4.第二,目前内核网络连接机制采用基于ip地址 端口的方式,无法区分不同的应用,也就无法进行应用的策略管理,导致网络数据冗余传输,极大浪费了网络资源。
5.第三,目前高优先级的应用需求没有一种方式合理的传递到网络层,因此基于应用的需求无法在网络上表达。导致不同的应用对于网络需要不一样,有的需要较高优先级调度、有的需要保证较好的传输质量,目前网络协议栈如freebsd等都是基于socket的公平调度,缺乏一种差异化基于应用的对应开放的网络接口。
6.目前针对应用的设计及区分,业界做了一定的研究工作,如主机标识协议(hip,host identifier protocol),hip对应用的编程api接口进行了一级抽象,由ip 端口改为hostid 端口的方式进行,使得应用编程可以基于恒定的host id port进行。但是hit采用改造内核协议栈的方式,基于内核的改造涉及内核版本的巨大差异化问题难以推广,同时由于内核协议栈的天然低效率、时延高、无应用app的sla适配api等特征使得该技术实际意义不大。而且不同的应用需要的网络资源是不同的,hip注重主机身份与定位的分离,但是分离后,需要针对多身份不同的应用做策略控制。


技术实现要素:

7.技术目的:针对现有技术中的不足,本发明公开了一种基于应用和用户态协议栈的网络管理方法及网络架构,其提出了一种用户态协议栈的api接口的设计方法,针对多app接入场景下,通过控制器分配的serviceip进行应用app通信;该api接口涉及网络感知应用的sla需求、cs模式的服务发布、策略控制、报文收发等功能api接口。
8.技术方案:为实现上述技术目的,本发明采用了如下技术方案:
9.一种基于应用和用户态协议栈的网络管理方法,其特征在于:所述方法应用于网络架构,网络架构包括应用层、tcp层、网络层和控制器,tcp层和应用层之间设有serviceip层,应用层包括多个app,在所述serviceip层部署至少一个用户态协议栈,用户态协议栈为一个以上的app所使用;
10.所述方法包括步骤:
11.s1.控制器接收来自任一app发出的app请求,app请求通过对应的用户态协议栈发送给控制器;
12.s2.控制器对app请求进行处理,并将处理结果反馈给对应的用户态协议栈,由对应的用户态协议栈将控制器的处理结果发送给对应的app。
13.优选地,在所述app请求为业务注册请求时,所述步骤s2具体为:
14.控制器通过用户态协议栈接收app发送的包含servicename、domain、subserviceid字段的serviceip注册请求,根据请求信息组装serviceip,经用户态协议栈下发到app上;
15.控制器将得到的serviceip发送给其他用户态协议栈或转发面。
16.优选地,在所述app请求为服务发布请求时,所述步骤s2具体为:
17.发出服务发布请求的app作为服务端,通过对应的用户态协议栈向控制器发送服务发布请求,服务发布请求包括本地策略路由和协议栈serviceip表,本地策略路由包括指定发布策略,在指定发布策略中指定访问的黑白名单、访问策略;
18.控制器整合接收到的全局内所有服务发布请求,生成相应的全局策略路由,然后向对应的用户态协议栈返回发布成功消息,通告全局策略路由;
19.控制器将serviceip和策略路由通知其他协议栈或转发面。
20.优选地,所述服务发布请求为url资源发布请求,app通过对应的用户态协议栈向控制器发出服务发布请求中还包括url,控制器生成的全局策略路由中包括url与协议栈serviceip表的映射关系,url变化由控制器通知到其他用户态协议栈或转发面。
21.优选地,在所述app请求为连接或收发请求时,所述步骤s2具体为:
22.发出连接或收发请求的app作为客户端;连接或收发请求中指定应用对网络的sla需求,sla需求用于标识app服务等级;作为客户端的app发起一个到目的url的知名地址的连接,并在连接属性中设置对网络的sla需求;
23.对应的用户态协议栈将app的连接需求发送至控制器进行算路;
24.控制器整合所有sla需求,从全局角度进行网络层资源计算和优化,计算网络隧道并下发至网络层转发面,并告知对应的用户态协议栈算路结果;
25.客户端由用户态协议栈发送url的报文请求,由用户态协议栈完成serviceip层封装之后,发送给转发面进行网络隧道封装;
26.经过封装的报文请求在到达服务端前,由转发面解封装网络隧道、由服务端的用户态协议栈解封装serviceip层,然后到达服务端的app。
27.优选地,在所述app请求为报文收发请求时,所述步骤s2具体为:
28.源app在对应的用户态协议栈上面完成策略查找,策略查找通过后,对报文收发请求进行serviceip层封装;
29.在转发面上基于serviceip查找对应的源网络隧道和目的网络隧道,完成网络隧道的封装;
30.经过封装的报文请求在到达目的app前,由转发面解封装网络隧道、由目的app的用户态协议栈解封装serviceip层,然后到达目的app。
31.优选地,所述serviceip采用ipv6地址的格式,选择性添加扩展头,扩展头中携带app的源端到目的端的私有化信息。
32.优选地,所述serivceip包括0xfd、servicetype、serviceid、subserviceid和instanceid五种字段,其中,
33.0xfd长度用于标识一个ula地址;
34.servicetype用于标识serviceapp的类型;
35.serviceid由控制器全局分配,用于标识相同servicetype下的service的id,一个service对应全局惟一的一个serviceid;
36.subserviceid用于标识相同serviceid下的不同子服务的id。
37.instanceid用于标识不同服务实例;控制器根据serviceip申请请求中是否携带domain字段来决策扁平化或者全局化分配instanceid。
38.一种网络架构,包括应用层、tcp层、网络层和控制器,应用层包括多个app,其特征在于:
39.所述应用层和tcp层之间设有serviceip层,用于为app进行serviceip编址;
40.所述serviceip层部署一个以上的用户态协议栈,用户态协议栈为一个以上的app所使用,用户态协议栈中存有本地serviceip表项和全局serviceip表项;
41.所述控制器用于接收任一app发出的app请求,app请求通过对应的用户态协议栈发送给控制器;
42.控制器对app请求进行处理,并将处理结果反馈给对应的用户态协议栈,由对应的用户态协议栈将控制器的处理结果发送给对应的app;
43.serviceip层用于接收app发出的业务注册或者去注册请求,向控制器申请为对应的app注册对应的serviceip或者注销serviceip。
44.优选地,所述app和用户态协议栈之间定义用于数据传递的对外api接口,对外api接口包括注册app的serviceip地址的api接口、注销app的serviceip地址的api接口、服务发布的api接口、取消服务发布的api接口、感知app请求的api接口、屏蔽app请求的api接口、发送报文的api接口、接收报文的api接口。
45.优选地,所述serivceip包括0xfd、servicetype、serviceid、subserviceid和instanceid五种字段,其中,
46.0xfd用于标识一个ula地址;
47.servicetype用于标识serviceapp的类型;
48.serviceid由控制器全局分配,用于标识相同servicetype下的service的id,一个service对应全局惟一的一个serviceid;
49.subserviceid用于标识相同serviceid下的不同子服务的id。
50.instanceid用于标识不同服务实例;控制器根据serviceip申请请求中是否携带domain字段来决策扁平化或者全局化分配instanceid。
51.有益效果:本发明基于sdn场景,引入基于应用的用户态协议栈和基于该协议栈的基于应用的api接口。主要解决了以下几个技术问题:
52.(1)解决应用的标识问题:本发明基于tcp层之上定义了一个新的层取名serviceip层,用来标识整个应用的编址;设计了一套基于应用的用户态协议栈,基于该协议栈和对外api接口可以对基于应用的标识进行注册、查询、安全、寻址等功能的实现,同时该协议栈作为应用与网络的通道,负责了应用sla需求的api接口的实现及应用sla需求与
网络交互,同时将结果反馈给应用。
53.(2)解决应用的接入问题:传统基于内核的协议栈接口基于ip 端口的模式进行开发,缺少基于应用的灵活性和的实用性,因此基于用户态协议栈设计一套基于应用的api接口,可以解决应用的接入需求,完成基于应用的overlay连接、基于应用的需求表达等特性。
54.(3)解决应用的移动性问题:serviceip与服务报文类型无关,全局唯一;一个serviceip可以发布单播、组播、任播的服务,也可以不发布服务,插入的serviceip层改变上层应用的编码规则;不再以ip地址 端口为socket关键字bind,以serviceip进行connect,保证ip地址无关性,维护一张serviceip与domain的映射表、serviceip与ip映射表,当serviceip位置发生变化时,重新注册上线后,刷新该表即可,从而解决了移动性问题。
55.(4)用户态协议栈部署灵活,平台移植性强:因为是用户态协议栈,所以整个协议栈可以非常灵活的部署使用,应用可以使用原有的操作系统socket接口,也可以选择使用协议栈的新的接入接口。可以实现逐步切换,不影响整个平台的稳定性。
附图说明
56.图1为本发明中serviceip编址格式的示意图;
57.图2为本发明方法中的网络架构的全局结构示意图;
58.图3为本发明方法中serviceip的申请的流程示意图;
59.图4为本发明方法中service服务发布功能的流程示意图;
60.图5为本发明方法中service的连接功能及收发功能的流程示意图;
61.图6为本发明方法中报文收发功能的流程示意图。
具体实施方式
62.下面结合附图对本发明作详细的说明。
63.本发明基于sdn场景,基于tcp层之上定义了一个新的层取名serviceip层,用来标识整个应用层中app的编址;设计了一套基于应用的用户态协议栈,和基于该协议栈的基于应用的api接口,基于该协议栈和对外api接口可以对基于应用的标识进行注册、查询、安全、寻址等功能的实现,同时该协议栈作为应用与网络的通道,负责了应用sla需求的api接口的实现及应用sla需求与网络交互等,同时将结果反馈给应用。如图2所示,本发明中基于应用的用户态协议栈位于serviceip层,网络中每个设备设有一个用户态协议栈,设备中具有一个以上的应用app,serviceip层为用户服务,紧邻应用层,tcp层和网络层为传统网络。现有技术中用户app直接用tcp层的api,即操作系统接口,本发明中api接口设置在tcp层之上,使用serviceip层的对外api接口,用于精细化区分业务与应用。
64.一、应用的编址
65.本发明应用针对app进行编址,得到的serviceip的格式,如图1所示。
66.前八位为0xfd,标识一个ula地址;
67.servicetype:标识serviceapp的类型,如聊天、视频、语音、在线游戏等大的类型,共可以标识256个不同service类型;
68.serviceid:标识在某个类型下service的id,32位,可以标识2^32个service,为控
制器全局分配,全局唯一;例如,聊天type下的微信即为一个serviceid。
69.subserviceid:标识相同service下不同子服务;相同service下可以有2^16个不同子服务;serviceid下属的子服务类型,如微信下属服务有聊天、支付、相册等不同子服务。
70.instance:该字段为可变字段。共64位,例如针对单播,有扁平化和层次化方案,如果是扁平化方案,instanceid为一个user下使用的实例id,为控制器统一全局下发;如果是层次化方案,里面可以嵌入域domain概念,暂定20位,标识不同域,instance暂定44位,标识域下不同服务实例。
71.二、协议栈api设计
72.2.1serviceip申请功能
73.申请serviceip流程如图3所示,该功能主要实现应用的serviceip的申请及下发。根据业务携带应用商店全局部署的servicename和可选domain、subserviceid字段进行serviceip的申请,控制器收到相应的申请后,根据是否携带domain字段来决策扁平化或者全局化分配instanceid,并且组装serviceip后下发到app上,同时通知其他协议栈/转发面该serviceip值。vpp为转发面。网络中每个设备设有一个用户态协议栈,对接其他设备的用户态协议栈。
74.如图3所示,serviceip申请流程包括:app1发出业务注册请求,请求中可包括servicename、domain、subserviceid等信息;对应的用户态协议栈上线,发起serviceip注册;控制器生成serviceip并下发给用户态协议栈(也向该用户态协议栈下发全局其他协议栈serviceip和策略路由表),并向其他协议栈和转发面同步serviceip相关表项;app1对应的用户态协议栈存储本地表项、生成全局表项,并进行表项对账,然后向对应的app1返回请求结果,包括通知业务callback servip、策略控制等数据。
75.去申请流程与申请流程类似。该功能提供两个对外api接口:
76.函数名功能备注app_register()注册app的serviceip地址 app_unregister()去注册app的serviceip地址 77.2.2service服务发布功能
78.在app中存在服务端和客户端模式,针对服务端设计需要有资源的发布需求,该设计中以图4中url资源发布为例说明,发布时可以指定本地的一些策略,如只针对某个目的serviceip的资源发布,其他serviceip无法访问,或者针对某个域的资源发布等;发布完成后控制器会生成源serviceip与url的映射关系,同时生成相应的策略路由进行全局通告。
79.如图4所示,serviceip服务发布流程具体包括:app发布url,可以指定发布策略,如指定目的serviceip/serviceid或指定domain发布,也可以无指定发布;对应的用户态协议栈查找源serviceip表和目的serviceip表,向控制器发出serviceip服务发布请求,请求中包括本地策略路由、url、协议栈serviceip等信息;由控制器生成url与协议栈serviceip的映射关系,进一步生成策略路由,向对应的用户态协议栈返回发布成功消息和通告全局策略;控制器将serviceip变化、url表变化通告其他协议栈或者转发面;app对应的用户态协议栈进行本地策略路由与全局策略路由对账,然后向对应的app返回请求结果,包括服务发布成功callback信息。
80.示例说明如下:
81.协议栈1:本地一个app的编址为serviceip1。发送本地serviceip1本地定制的策略路由,比如为一个黑白名单,指定可以访问serviceip1的黑名单为serviceip2、serviceip3;该信息通告给控制器;
82.协议栈2:本地一个app的编址为serviceip2;发送本地serviceip2本地定制的策略路由,比如为一个黑白名单,指定可以访问serviceip2的黑名单为serviceip1;该信息通告给控制器;
83.控制器整合后,得到表项如下:serviceip1
‑‑‑
serviceip2双向禁止访问;
84.serviceip1
‑‑‑
serviceip3单向禁止访问,不允许serviceip3访问serviceip1,但是serviceip1可以访问serviceip3,因为serviceip3没有定制策略;除了黑白名单外,还可以制定路由策略、nat策略等。
85.该功能提供两个对外api接口:app_publish();app_unpulish()
[0086][0087]
2.3service的连接功能及收发功能
[0088]
应用的单向连接流程如图5所示,在服务端发布服务后,挂接一个回调在应用协议栈中,即进入等待连接的到来;应用客户端调用app_opt_connect函数,发起一个到目的url的知名地址的连接,并在连接属性中设置应用对网络的sla需求属性,协议栈收到该sla需求后,将应用的连接需求发送至控制器进行算路,因为控制器掌握了所有的网络层资源,所以根据应用的sla需求进行网络层资源计算和预留,计算完成后将网络层隧道下发至网络层转发面vpp,同时告知协议栈算路结果;另外其中的sla需求属性可以是单向的,这样的话回程的网络算路就由服务端协议栈决定,也可以是双向的,协议栈告知控制器,控制器将整体双向网络层隧道下发至转发面。图5所示为单向连接隧道,完成了应用对网络的sla需求表达、网络算路、协议栈的serviceip层封装发送、转发面的ip层网络隧道封装等过程。
[0089]
如图5所示,service的连接功能及收发流程具体包括:服务端app

s发布服务后,挂接一个回调在应用协议栈中,即调用app_recv_callback()函数,等待连接的到来;作为客户端的app

c调用app_opt_connect函数,设置目的url的sla属性并发起连接;app

c对应的用户态协议栈发起应用算路请求给控制器;控制器根据应用的sla需求进行网络层资源计算,算好后将网络层隧道下发至网络层转发面,同时告知客户端的用户态协议栈算路结果,告知服务端app

s对应的用户态协议栈回程源serviceip、sla需求等信息,服务端的用户态协议栈发送建链通知给app

s;app

c调用app_sendbuf函数,发出url的报文请求,由对应的用户态协议栈完成serviceip层封装,然后由转发面vpp进一步完成网络层隧道封装;封装后的报文经ip隧道网络传输,在到达服务端之前,由转发面解封装网络隧道,然后再经过服务端对应的用户态协议栈解封装serviceip层后传送给app

s。
[0090]
该功能提供如下对外api接口:
[0091][0092]
三、报文的收发
[0093]
报文的收发框架如图6以app1对app3发起连接为例,转发面以vpp转发为例;整个报文封装流程如下:在协议栈上面完成策略查找,策略查找通过后,进行serviceip层封装,serviceip采用ipv6地址的格式,可以可选性添加扩展头即option头,里面可以携带端到端应用的私有化信息;在转发面vpp上完成网络隧道的封装,协议栈与vpp的交互通过共享内存接口memif进行通信,在交互消息头中,携带了应用的信息,为vpp基于serviceip进行查找网络隧道提供封装依据。
[0094]
四、移动性机制
[0095]
域内移动:对于终端如果域内移动,则serviceip不变。需要重新注册上线,接入的本地协议栈刷新本地serviceip表项;离开的协议栈保活删除本地serviceip表项。控制器对于重新注册上线的serviceip,发现是同一个serviceip表项,但是位置发现变更,需要将新表项向原注册协议栈设备发起刷新,对vpp需要发起serviceip与网络隧道的重新绑定。整个过程应用层用户app不感知。
[0096]
域间移动:对于终端如果域间移动,则serviceip可能发生变化。需要重新注册上线,注册后,控制器发现域发生了位置变化,对于层次化serviceip会重新生成serviceip,该serviceip只修改domain字段,对全局刷新相应的serviceip表项。域间移动后,本地serviceip表保活后删除。对于扁平化部署整个过程应用层用户app不感知,但是如果app用户选择了层次化部署,需要修改serviceip的domain字段,协议栈和app依然可以依据相应的编址格式发现是同一个app。
[0097]
五、基于应用的策略控制
[0098]
1、服务发布的本地策略:
[0099]
基于serviceip层次化分级,可以由服务源端发布服务时,指定相应的标识策略,在服务发布一章中,基于之前的标识编码规则,可以指定serviceid、domain、serviceip等不同策略,如果指定serviceid,则该发布的服务会对该serviceid下的所有serviceip提供或者禁止提供服务;指定serviceip,则该发布的服务精确对该serviceip提供禁止或者专项服务。
[0100]
2、控制器指定的全局策略
[0101]
1)黑白名单
[0102]
在协议栈指定服务资源访问的黑白名单,其表项如下所示;协议栈基于该黑白名单在应用层即可以禁止或者运行app网络资源的访问,从而净化网络资源,保证网络带宽的
合理使用。
[0103]
服务url源端serviceip目的serviceip目的serviceipactionwww.123.com0xfd11****无0xfd12****permitwww.123.com
ꢀꢀ
0xfd13****deny
[0104]
2)路由策略
[0105]
指定配置基于domain、serviceid、serviceip三个字段的策略方式;该策略中可以配置全局的路由命令,第一条命令标识协议栈对目的之地是domain1的访问是拒绝的;第二条命令标识协议栈对源serviceip2,目的serviceip1的访问是允许的。
[0106]
形如:
[0107]
routepolicy dest domain 1action deny
[0108]
routepolicy dest serviceip1 src serviceip2 action permit
[0109]
3)nat策略
[0110]
对于非全局serviceip管理,需要在协议栈上执行类型nat的操作,将serviceip替换成知名的serviceip然后转发。
[0111]
本发明提出的用户态协议栈的api接口的设计理念,针对多app接入场景下,通过控制器分配的serviceip层进行应用app通信;该api接口涉及网络感知应用的sla需求、cs模式的服务发布、策略控制、报文收发等功能api接口。此外,本发明提出的一种基于应用的用户态协议栈的设计接口,解决了应用移动性问题。使得应用基于serviceip的方式,不会随着网络地址的变化而变化,从而保证了应用的寻址和定位的分离。而且,本发明还提出了一种基于应用的编址思路和具体实现方式,在编址中,提出了编址的格式,提出了扁平化和层次化编址的思想。综上,本发明技术方案能够带来如下有益效果:
[0112]
(1)提供了一套基于用户app的api接口:该接口是目前基于应用的api接口的首次尝试,该接口中例如基于应用的连接请求中,应用可以指定对网络的sla需求,传递至协议栈后,协议栈基于该应用的sla请求,向控制器申请匹配sla的网络隧道,控制器可以汇总app的sla需求,从全局角度优化网络资源;基于应用的服务发布请求,可以指定网络隧道;基于应用的收发包请求完成网络数据包的封装及分发。
[0113]
(2)基于协议栈的设计,进行app的策略控制:传统设计中app接入、传输是无法控制的。本发明中因为用户态app协议栈的引入,使得app可以在协议栈中基于serviceip进行相应的策略控制。目前策略控制包括服务发布本地化策略控制,控制器网关下发的黑白名单控制,serviceip路由的层次化策略控制、nat策略控制等。通过策略控制,可以完成传统网络所不具备的完成应用的优化表项传输,应用端到端控制等功能。
[0114]
(3)解决网络移动性问题:传统网络中基于ip 端口的思路无法解决移动性问题,在app频繁移动中必然伴随着网络的震荡。本发明基于serviceip进行应用层编址和api控制,在应用移动后,控制器感知后,网络层刷新serviceip层和网络层的映射表即可。
[0115]
本发明中部分涉及到的字符表示的含义如下:
[0116]
ula:unique local addresses,唯一区域地址。
[0117]
api:application program interface,应用程序接口。
[0118]
app:application,应用程序。
[0119]
url:uniform resource locator,统一资源定位符。
[0120]
sla:service

level agreement,服务等级协议。
[0121]
sdn:software defined network,软件定义网络。
[0122]
hip:host identity protocol,hip协议。
[0123]
domain:域。
[0124]
nat:network address translation,网络地址转换。
[0125]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献