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

数据包处理的方法及设备与流程

2021-10-27 14:34:00 来源:中国专利 TAG:数据包 实施 通信 方法 设备


1.本发明实施例涉及通信技术领域,具体涉及一种数据包处理的方法及设备。


背景技术:

2.运营商网络中对分段路由(segment routing,sr)标签层数要求较高。以第五移动通信技术(5th generation,5g)承载网为例,随着5g核心网集中化部署,基站的流量需要穿过城域网以及ip骨干网。典型场景下,在城域网中,接入环有8-10个节点,汇聚环有4-8个节点,核心环也有4-8个节点;在ip骨干网,流量还需穿过多个路由器节点。同时,由于网络切片、高可靠服务等级协议(service-level agreement,sla)、可管可控的要求,运营商网络需要能够指定显式路径,端到端sr隧道会有10跳甚至以上。因此,目前国内外多数部署多协议标签交换(multi-protocol label switching,mpls)-sr的运营商都要求支持8层以上段标识(segment id,sid)标签。
3.当前,srv6是基于互联网协议第6版(internet protocol version 6,ipv6)扩展的sr解决方案,srv6方案基于段路由头(segment routing header,srh),其sid长度为128bit segment id。按照8层sid,为数据包带来128byte的开销,对于平均长度256byte的应用净荷,srv6带来的开销超过1/3,带宽利用率则下降为67%以下。而相同场景下,sr-mpls的开销只有32byte,带宽利用率仍有89%。srv6和sr-mpls在sid个数从1-10时承载效率的对比分析如图1所示(仅简单对比srh和sr-mpls sid的开销)。
4.开销的增大一方面造成了网络利用率的降低,另一方面为支持深层数据包深层负载均衡、带内遥测(in-band telemetry)、网络服务包头(network service header,nsh)带来更大挑战。
5.另外,srv6部署必然会和sr-mpls网络共存,由于网络利用率的不同可能会导致网络边界接口不平衡的问题,从而导致投资浪费。在sr-mpls网络与srv6网络域对接时,考虑100g链路,256byte数据包,8层sid的情况,由于链路利用率差异较大,sr-mpls域中的1个100ge链路在srv6域中可能需要2条100ge链路才能匹配。
6.在运营商应用中,srv6需要在网络芯片在数据包中插入超过128byte长度的字段,相当于32层mpls-sr标签深度,超出了已部署网络芯片的能力,如果在芯片内部采用环回的解决方案,将大幅降低网络性能并引入更高的时延和抖动。在重新设计的网络芯片中,支持srv6需要进一步扩大内部处理总线带宽,其是芯片成本和功耗的关键因素。
7.srv6在中间节点要求网络芯片读取完整srh,然后根据指针指示的位置提取需要处理的segment并进行转发。对比mpls-sr仅需读取最外层标签,引入的复杂性进一步增加网络芯片的处理时延。
8.低功耗和低时延是运营商5g解决方案的关键因素,srv6复杂性对网络芯片带来的功耗、成本、时延的增加为其落地应用带来挑战。
9.根据以上分析,现有srv6数据包开销较大,增加网络芯片的复杂性和难以平滑升级,导致srv6难以快速部署到运营商网络中,需要在srv6技术基础上进一步进行演进。


技术实现要素:

10.本发明实施例的一个目的在于提供一种数据包处理的方法及设备,解决现有srv6数据包开销较大的问题。
11.第一方面,本发明实施例提供一种数据包处理的方法,包括:
12.获取第一段标识sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;
13.根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;
14.将所述第一sid复制到数据包的目的地址中,发送所述数据包。
15.可选地,所述获取第一sid的第一信息和第二信息,包括:
16.获取第二sid的第三信息和第四信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置;
17.根据所述第二sid的第三信息和第四信息,得到所述第一sid的第一信息和第二信息。
18.可选地,获取第二sid的第三信息和第四信息,包括:
19.从所述数据包的段路由头srh中获取所述第二sid的第三信息;
20.从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息。
21.可选地,所述根据所述第二sid的第三信息和第四信息,得到所述第一sid的第一信息和第二信息,包括:
22.根据所述第二sid的第四信息或根据所述第二sid的属性信息,确定所述第一sid与所述第二sid是否在同一个容器中;
23.如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
24.或者,
25.如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
26.可选地,所述第一sid的sid类型是由所述第二sid的属性信息指示的。
27.可选地,所述方法还包括:
28.将所述第一sid的第一信息更新到所述数据包的srh中;
29.将所述第一sid的第二信息作为所述第一sid的索引更新到所述数据包的目的地址中。
30.可选地,所述将所述第一sid复制到数据包的目的地址中,发送所述数据包,包括:
31.将所述第一sid复制到数据包的目的地址中,所述第一sid与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
32.或者,
33.将所述第一sid和第二信息复制到数据包的目的地址中,所述第一sid和第二信息与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
34.或者,
35.将所述第一sid和第二信息复制到数据包的目的地址中,将所述数据包转发给下一个节点。
36.可选地,所述获取第一sid的第一信息和第二信息,包括:
37.获取第二sid的第三信息、第四信息和第五信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置,所述第五信息指示所述第二sid的sid类型和/或指示所述第二sid是否压缩;
38.根据所述第二sid的第三信息、第四信息和第五信息,得到所述第一sid的第一信息和第二信息;
39.其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid。
40.可选地,所述获取第二sid的第三信息、第四信息和第五信息,包括:
41.从所述数据包的srh中获取所述第二sid的第三信息;
42.从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息和第五信息。
43.可选地,所述根据所述第二sid的第三信息、第四信息和第五信息,得到所述第一sid的第一信息和第二信息,包括:
44.根据所述第二sid的sid类型和所述第一sid的sid类型,确定所述第一sid与所述第二sid是否在同一个容器中;
45.如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
46.或者,
47.如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
48.可选地,所述容器用于容纳一个标准sid或者多个压缩sid,所述压缩sid包括:节点标识和所述节点的function的取值。
49.第二方面,本发明实施例提供一种节点,包括:
50.获取模块,用于获取第一sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;
51.处理模块,用于根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;
52.发送模块,用于将所述第一sid复制到数据包的目的地址中,发送所述数据包。
53.第三方面,本发明实施例提供一种节点,包括:收发机和处理器;
54.所述收发机在所述第一处理器的控制下发送和接收数据;
55.所述处理器读取存储器中的程序执行以下操作:获取第一sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;将所述第一sid复制到数据包的目的地址中,发送所述数据包。
56.第四方面,本发明实施例提供一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现包括如权利要求第一方面所述的数据包处理的方法的步骤。
57.在本发明实施例中,sid列表中至少包括压缩sid,在更新数据包的目的地址时,通过将压缩sid和当前目的地址中的公共前缀拼接形成新的sid,继续查表转发,从而实现数据包的压缩,有效的减少数据包的报头开销。此外,还可以通过将标准sid和压缩sid混合编排在sid列表中,从而支持压缩节点与普通节点混合编程,实现存量演进,平滑升级。
附图说明
58.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
59.图1为净荷长度256b时不同sid个数sr承载效率对比分析图;
60.图2为标准的srv6扩展头的封装格式示意图;
61.图3为本发明实施例的中的数据包处理的方法流程图;
62.图4为支持网络可编程标准srv6 sid格式示意图;
63.图5为支持网络可编程典型srv6 locator示意图;
64.图6为本发明实施例中的支持压缩的srv6 sid格式示意图;
65.图7为本发明实施例中32-bits压缩sid container格式示意图;
66.图8为本发明实施例中128bit srv6 sid和32bit x-sid混合编程在x-srh中的格式示意图;
67.图9为本发明实施例中128bit srv6 sid和32bit x-sid混编在x-srh中的编码示意图;
68.图10为本发明实施例中xi的示意图;
69.图11为本发明实施例中x-sid的更新示意图;
70.图12为本发明实施例中混编场景中数据包的转发示意图;
71.图13为本发明实施例中纯压缩场景中数据包的转发示意图;
72.图14为本发明实施例的节点的示意图之一;
73.图15为本发明实施例的节点的示意图之二。
具体实施方式
74.段路由(segment routing,sr)是一种源路由技术,基于软件定义网络(software defined network,sdn)理念,构成面向路径连接的网络架构,支撑未来网络多层次的可编程需求,可以满足第五代移动通信技术(5th generation,5g)超大连接和切片的应用场景下的连接需求。sr-多协议标签交换(multi-protocol label switching,mpls)是基于当前
division multiple access,tdma)、频分多址(frequency division multiple access,fdma)、正交频分多址(orthogonal frequency division multiple access,ofdma)、单载波频分多址(single-carrier frequency-division multiple access,sc-fdma)和其他系统。
85.术语“系统”和“网络”常被可互换地使用。cdma系统可实现诸如cdma2000、通用地面无线电接入(universal terrestrial radio access,utra)等无线电技术。utra包括宽带cdma(wideband code division multiple access,wcdma)和其他cdma变体。tdma系统可实现诸如全球移动通信系统(global system for mobile communication,gsm)之类的无线电技术。ofdma系统可实现诸如超移动宽带(ultra mobile broadband,umb)、演进型utra((evolution-utra,e-utra))、ieee 802.11((wi-fi))、ieee 802.16((wimax))、ieee 802.20、flash-ofdm等无线电技术。utra和e-utra是通用移动电信系统(universal mobile telecommunications system,umts)的部分。lte和更高级的lte(如lte-a)是使用e-utra的新umts版本。utra、e-utra、umts、lte、lte-a以及gsm在来自名为“第三代伙伴项目”(3rd generation partnership project,3gpp)的组织的文献中描述。cdma2000和umb在来自名为“第三代伙伴项目2”(3gpp2)的组织的文献中描述。本文所描述的技术既可用于以上提及的系统和无线电技术,也可用于其他系统和无线电技术。
86.参见图3,本发明实施例提供一种数据包处理的方法,该方法的执行主体可以为节点,例如srv6节点,该方法包括:步骤301、步骤302和步骤303。
87.步骤301:获取第一sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;
88.可以理解的是,第一信息也可以称为段剩余(segment left,sl),标识剩余segment的数量;第二信息也可以称为索引(index)或者称为sid index,在本发明实施例中对其不做限定。
89.容器(或者称为sid container)中可以包括一个或多个第一sid,比如容器为128bit,该容器可以包括:一个标准sid(128bit的sid),或者多个压缩sid,也就是说,上述第一sid可以是标准sid,或者也可以是压缩sid,该压缩sid可以是32bits的压缩sid或者16bits的压缩sid,当然并不限于此。
90.以32bit的压缩sid为例,在一个128bit的容器中可以包括:三个32bits的压缩sid和一个用于补齐128bit的填充(padding),或者包括:两个32bits的压缩sid和两个用于补齐128bit的padding,或者包括:一个32bits的压缩sid和三个用于补齐128bit的padding,或者包括:四个32bits的压缩sid。可以理解的是,上述第一sid不包括用于补齐128bit的填充。
91.以一个128bit的容器中包括:三个32bits的压缩sid和一个用于补齐128bit的padding为例,从左到右为:padding、32bits的压缩sid、32bits的压缩sid、32bits的压缩sid和32bits的压缩sid,各自的第二信息可以分别为:0、1、2、3。
92.以一个128bit的容器中包括:128bit的标准sid为例,该容器中只有一个标准sid,该标准sid的第二信息可以为空或者为预设值。
93.以sid列表(sid list)包括五个容器,该容器在sid列表中的位置由下至上可以表
示为:sl=0,sl=1,sl=2,sl=3和sl=4,可以理解的是在本发明实施例中对“容器在sid列表中的位置”的具体表达形式不做具体限定。
94.步骤302:根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;
95.可以理解的是,如果第一sid为压缩sid,则可以根据该压缩sid的sl与index在sid列表中定位得到对应的一个压缩sid,则如果该第一sid为128bit的sid,该第二信息可以为空,则可以根据该第一sid的sl在sid列表中定位得到对应的一个128bit的sid。
96.步骤303:将所述第一sid复制(或更新)到数据包的目的地址中,发送所述数据包。
97.方式1:将第一sid复制到数据包的目的地址中,所述第一sid与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
98.比如,第一sid可以为压缩sid,基于该压缩sid的sl与index,可以在sid列表中定位得到对应的一个压缩sid,将该压缩sid复制到数据包的目的地址中,与公共前缀或地址块组成得到一个新的目的地址,根据新的目的地址将该数据包转发给下一个节点。
99.方式2:将所述第一sid和第二信息复制到数据包的目的地址中,所述第一sid和第二信息与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
100.比如,第一sid可以为压缩sid,基于该压缩sid的sl与index,可以在sid列表中定位得到对应的一个压缩sid,将该压缩sid和index复制到数据包的目的地址中,与公共前缀或地址块组成得到一个新的目的地址,根据新的目的地址将该数据包转发给下一个节点。
101.方式3:将所述第一sid和第二信息复制到数据包的目的地址中,将所述数据包转发给下一个节点。比如,该第一sid为128bitsid,基于该128bitsid的sl与index,可以在sid列表中定位得到对应的一个128bitsid,将该128bitsid复制到数据包的目的地址中,并将该数据包转发给下一个节点。
102.在本发明实施例中,步骤301可以包括:
103.步骤3011:获取第二sid的第三信息和第四信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置;
104.可以理解的是,第三信息也可以称为段剩余(segment left,sl),标识剩余segment的数量;第四信息也可以称为索引(index),在本发明实施例中对其不做限定。
105.步骤3012:根据所述第二sid的第三信息和第四信息,得到所述第一sid的第一信息和第二信息。
106.可以理解的是,在所述sid列表中所述第二sid为所述第一sid的上一个sid,或者在该sid列表中第二sid排序在第一sid之前,第二sid和第一sid之间可以包括一个或多个padding(比如用“0”表示),比如,sid列表中先后顺序为:第二sid、padding、第一sid。
107.上述“所述第二sid为所述第一sid的上一个sid”可以理解为,第一sid为第二sid的下一个sid,也就说,与第一sid匹配的节点是与第二sid匹配的节点的下一个节点,比如与第一sid匹配的节点为n3,与第二sid匹配的节点为n2。
108.可以理解的是,在步骤3011之前,可以判断第二sid的下一个sid是否为padding,如果不是,则执行步骤3011,如果是,则默认第一sid是一个128bit的sid,此时该第一sid的
第一信息可以基于第二sid的第三信息计算得到,并将该第一sid的第二信息设置为空。
109.比如,可以基于第二sid的属性信息识别第二sid的下一个sid是否为padding。也就是说,在local sid表中命中到节点本地发布的end.x sid(第二sid),没有配置coc flavor(该coc flavor用于指示下一个sid的sid类型),则第二sid的下一个sid是否为padding。
110.在本发明实施例中,步骤3011可以包括:
111.步骤30111:从所述数据包的srh中获取所述第二sid的第三信息;
112.步骤30112:从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息。也就是说,第二sid的索引中可以包括一个指示比特或多个指示比特。在本发明实施例中对第二sid的索引的格式不做具体限定。
113.在本发明实施例中,步骤3012可以包括:
114.步骤30121:根据所述第二sid的第四信息或根据所述第二sid的属性信息,确定所述第一sid与所述第二sid是否在同一个容器中;
115.比如,如果第二sid的第四信息大于零,则表示第一sid与所述第二sid在同一个容器中;如果第二sid的第四信息等于零,则表示第一sid与所述第二sid不在同一个容器中。
116.又比如,第二sid的属性信息没有指示下一个sid的sid类型,则表示第一sid与所述第二sid不在同一个容器中。也就是说,在local sid表中命中到节点本地发布的end.x sid(第二sid),没有配置coc flavor(该coc flavor用于指示下一个sid的sid类型),则默认指示下一个sid(第一sid)是128bit的sid,也就是,第二sid和第一sid之间可以包括:一个padding。
117.步骤30122:如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同(即sl相同),以及根据所述第二sid的第四信息,得到所述第一sid的第二信息,比如第二sid的第四信息(index)减一,得到第一sid的第二信息(index);
118.或者,
119.如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,比如第二sid的第三信息减一(sl-1),得到第一sid的第一信息(sl),以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
120.比如,第一sid的sid类型为32bit,则第一sid的第二信息为“3”。
121.在本发明实施例中,所述第一sid的sid类型是由所述第二sid的属性信息(coc flavor)指示的,可以理解的是,第二sid的属性信息可以在当前节点的本地sid表中查表得到。
122.表1:
[0123][0124][0125]
在本发明实施例中,所述方法还包括:
[0126]
将所述第一sid的第一信息更新到所述数据包的srh中;
[0127]
将所述第一sid的第二信息作为所述第一sid的索引更新到所述数据包的目的地址中。
[0128]
在本发明实施例中,步骤301可以包括:
[0129]
步骤3013:获取第二sid的第三信息、第四信息和第五信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置,所述第五信息指示所述第二sid的sid类型和/或指示所述第二sid是否压缩;
[0130]
比如,sid类型可以包括8bit、16bit、32bit、64bit或者128bit等。
[0131]
可以理解的是,第五信息可以包括一个指示比特或多个指示比特。
[0132]
步骤3014:根据所述第二sid的第三信息、第四信息和第五信息,得到所述第一sid的第一信息和第二信息;
[0133]
其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid,或者在该sid列表中第二sid排序在第一sid之前,第二sid和第一sid之间可以包括一个或多个padding(比如用“0”表示)。
[0134]
在本发明实施例中,步骤3013可以包括:
[0135]
步骤30131:从所述数据包的srh中获取所述第二sid的第三信息;
[0136]
步骤30132:从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息和第五信息。
[0137]
也就是说,第二sid的索引中可以包括一个指示比特或多个指示比特。
[0138]
在本发明实施例中,步骤3014可以包括:
[0139]
步骤30141:根据所述第二sid的sid类型和所述第一sid的sid类型,确定所述第一sid与所述第二sid是否在同一个容器中;
[0140]
如果第二sid的sid类型为32bit,第一sid的sid类型为32bit,则确定所述第一sid与所述第二sid在同一个容器中;如果第二sid的sid类型为32bit,第一sid的sid类型为128bit,则确定所述第一sid与所述第二sid不同一个容器中。
[0141]
步骤30142:如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同(即sl相同),以及根据所述第二sid的第四信息,得到所述第一sid的第二信息,比如第二sid的第四信息减一(index-1),得到第一sid的第二信息;
[0142]
或者,
[0143]
如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,比如第二sid的第三信息减一,得到第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
[0144]
比如,第一sid的sid类型为32bit,则第一sid的第二信息为“3”,即第一sid的index为3。
[0145]
在本发明实施例中,所述容器用于容纳一个标准sid或者多个压缩sid,所述压缩sid包括:节点标识和所述节点的function的取值。
[0146]
在本发明实施例中sid列表中至少包括压缩sid。在更新数据包中的目的地址时,通过将压缩sid和当前目的地址中的公共前缀拼接形成新的sid,继续查表转发,从而实现
数据包的压缩,有效的减少数据包的报头开销。
[0147]
此外,在本发明实施例中,还可以通过将标准sid和压缩sid混合编排在sid列表中,从而在srv6路径中支持压缩节点与普通节点混合编程,实现存量演进,平滑升级。同时在多域的场景中,因为地址规划受限,无法保证多个域的sid有公共前缀,通过混编则可以方便地实现建立跨多域的srv6路径。
[0148]
下面以ipv6的场景为例进行介绍,当然可以理解的是,本发明实施例也可以适用于其他版本的ip技术(比如,ipv5、ipv7、ipv9、ipv10等),而不仅限于ipv6技术,适用于其他版本的ip技术的方式与此类似,在此不再敷述。
[0149]
当srv6部署中,需要通过地址规划划分一个地址块,用于sid的分配,该地址块可以称为sid空间(space)。因此,在一个srv6域中,从sid space分配的sid可以具有公共的前缀(common prefix)。通常情况下,srh中的sid均具有相同的前缀,而这部分内容是冗余的,去除这部分冗余的信息,可以有效的减少srv6报头开销。
[0150]
因此,在本发明实施例中将sid列表(sid list)中sid的common prefix移除,仅携带变化的压缩sid(或者称为短sid,或者称为x-sid)。在替换目的地址时,通过将压缩sid和当前ipv6目的地址中的公共前缀拼接(stitching)形成新的sid,继续查表转发,从而实现srv6的压缩。
[0151]
此外,在本发明实施例中,还通过将传统srv6 sid和压缩sid混合编排在srv6(比如,该srv6称为x-srv6)中,从而在srv6路径中支持压缩节点与普通srv6节点混合编程,实现存量演进,平滑升级。同时在多域的场景中,因为地址规划受限,无法保证多个域的sid有公共前缀,通过混编则可以方便地实现建立跨多域的srv6路径。
[0152]
(一)关于标准128bit srv6 sid格式的介绍:
[0153]
srv6 segment identifier:用于标识srv6 segment的id,标准srv6 sid是一个128bit的ipv6地址,如果考虑支持srv6网络可编程,它通常由三部分组成,如图4所示。
[0154]
(1)locator是网络拓扑中分配给一个网络节点的标识,用于路由和转发数据包到该节点,locator标识位置信息。locator对应的路由会被节点通过内部网关协议(interior gateway protocol,igp)发布到网络中,用于帮助其他设备将数据包转发到发布该locator的节点。在srv6 sid中,locator长度可变,用于适配不同规模的网络。
[0155]
(2)function用来表达该指令要执行的转发动作,相当于计算机指令的操作码。在srv6网络编程中,不同的转发行为由不同的function来表达,如转发数据包到指定链路,或在指定表中查表转发等。
[0156]
(3)arguments(以下简称args)是一个可选字段。它是指令在执行时对应的参数,这些参数可能包含流,服务或任何其他相关的信息。
[0157]
进一步的,参见图5,locator又可以细分为b:n,其中“b”标识srv6 sid block,一般由运营商分配给某个子网,通常用prefix来表示;“n”表示该子网内区分节点的标识。因此在一个srv6网络中sid都具有共同的共同前缀b,所以在一个sid list中sid的b部分都是重复冗余的。
[0158]
(二)关于压缩srv6 sid格式的介绍:
[0159]
根据标准srv6 sid的格式,可以看出在一个典型的支持srv6网络可编程的应用中,其sid格式是有规律的,充分利用sid格式的规律可以实现标准srv6 sid格式优化。
flavor相关行为(behavior)的值详见表2,coc16相关暂不定义。
[0180]
表2:
[0181]
sid flavor类型功能描述none不增加flavor,sid的默认flavor指示下一个是128bits srv6 sid。coc32标识下一个是32bit的压缩sid。coc16标识下一个是16bit的压缩sid。
[0182]
因此当目的地址(destination address,da)中sid携带coc32 flavor时,表示需要将下一个32bit的压缩sid更新到目的地址。当da中sid为不携带coc flavor sid时,表示将“sl
--”
(sl减一),将下一个128bit的sid更新到目的地址(sl>0时)。其中,sl可以定位到128比特container的位置。
[0183]
因此压缩srv6在sid list中的编码规则为:
[0184]
(1)一段压缩srv6路径的开始由一个128bits的coc32 flavor sid指示,其包含coc32 flavor sid。此sid携带了完整的sid信息,包含common prefix等信息,可用于与后续的压缩sid恢复完整的下一个sid。
[0185]
(2)压缩路径中间的压缩sid均为携带coc32的压缩sid,指示下一个是32bit的压缩sid。
[0186]
(3)压缩路径的最后一个压缩sid需为无coc flavor的32bits的压缩sid,用于指示压缩路径结束。其在da中组合成的srv6 sid按照128bits的sid的处理规则处理。
[0187]
需要说明的是,最后一个sid为无coc flavor sid的原因在于:其被更新到目的地址之后,da中的sid由于无coc flavor,所以其将被节点按照128bits的sid来处理,与当前srv6处理一致。因此它可以起到标识这段压缩路径结束,从32bits的压缩sid切换到128bits的sid处理的作用。
[0188]
可以理解的是,这种设计可以很好的支持以下两个场景:
[0189]
(1)混编场景中压缩路径结束,从32bit切换到128bit的场景
[0190]
(2)纯压缩场景中,最后一个sid为无coc flavor,因此最后一跳的处理与当前srv6一致,更兼容。
[0191]
此外,在压缩路径中,为了定位下一个压缩sid,可以新增压缩sid的索引(x-sid index,以下简称xi)来定位其在sid container中的位置。进一步地,该索引还可以指示sid是否压缩或者指示sid的sid类型。
[0192]
定位的基本思路:
[0193]
1.下一个压缩sid由sl xi定位,sl定位到128比特container的位置,xi定位到128位container中具体的x-sid的位置。
[0194]
2.在混编场景下,如何定位sid长度变化的边界:
[0195]
(1)通过sid的“下一个sid的sid类型”与当前sid的sid类型对比来确认sid的类型是否发生改变;比如:sid的“下一个sid的sid类型”若为32bit,而当前的sid的类型为128bit,则到达了边界。
[0196]
(2)对目的地址中的xi进行相应的改变,以定位下一个sid/x-sid。
[0197]
(3)若下一个sid的sid类型是32bit,则将下一个32bit的x-sid更新到ipv6目的地址对应的x-sid位置,x-sid可以由srh[sl][xi]来定位。
[0198]
比如,索引可以放置在目的地址中的压缩的sid之后,示例性地,索引放在128bit的最低2bit位置,参见图10。在发布压缩sid时,需预留空间给索引,其值为0。在转发的过程中,xi的数值是压缩的sid的位置属性,指示其在x-sid container中的位置。
[0199]
比如:通过coc32 flavor sid指示更新下一个32bits的压缩sid到目的地址,压缩sid位置可以由sl与xi定位。
[0200]
以32bits的压缩sid为例,节点(endpoint)收到数据包的处理伪代码如下:
[0201][0202]
处理流程由coc flavor sid的触发,操作数据也局限在coc flavor sid之内,不影响已有srv6主流程,对已有sid以及srh的处理毫无影响。格式上兼容srh,处理上兼容已有srv6。其中xi在da的压缩的sid之后。以纯压缩路径 128bit vpn sid为例,编码与x-sid更新示例如图11所示。
[0203]
(五)关于混编场景中数据包转发流程。
[0204]
在部署srv6压缩方案时,需要进行地址规划,然后升级控制面和数据面支持srv6压缩。
[0205]
首先,节点通过置位igp等协议的srv6 capabilities tlv的扩展c-flag来标识本节点支持压缩能力。
[0206]
节点实例化可以支持压缩的srv6 sid,并将通过igp/bgp/bgp-ls等协议发布到网络中或上送给控制器。节点在实例化sid之后,将会生成对应的sid转发表项。
[0207]
参见图12,节点k可以发布两套sid,两套sid都携带c-flag,均支持压缩,一套携带coc32 flavor,另一套不携带flavor。比如a:k:1::为绑定到某接口的携带coc32的end.x sid,a:k:2::为绑定到同样接口的不携带coc32 flavor的end.x sid。根据这个规划,a:1:1::为coc32 flavor end.x sid.a:4:2::为无coc flavor的sid。
[0208]
在发布sid时,需要置位sid a:1:1::.a:2:1::,a:3:1::,a:4:1::,a:4:2::,a:6:1::,a:7:1::,a:8:1::,a:9:1::,a:9:2::以及a:10:10::(格式支持压缩的vpn sid,方便纯压缩案例演示)对应的tlv(如srv6 end sid sub-tlv,srv6end.x sid sub-tlv,srv6 lan end.x sid sub-tlv)中的c-flag来标识本sid的格式支持压缩。
[0209]
在发布的sid中,包含有携带coc32 flavor的可压缩sid,用于标识sid后面的sid
是32的x-sid。比如下例的多个sid a:k:1::。
[0210]
a:k:1::在发布时还需要携带sid structure sub-sub-tlv。假设common prefix(a)的长度是64,x-sid的长度是32(node id长度是16,function id长度是16),argument的长度是32,那么发布的sid的sid structure sub-sub-tlv中locator block的长度是64,node id的长度是16,function的长度是16,argument长度为32。
[0211]
图中a1::前缀是不支持压缩sid的前缀,所以a1::5:1为不可压缩的sid。它在发布时也会携带sid structure sub-sub-tlv,其中locator block的长度是64,node id的长度是16,function的长度是48。
[0212]
设备通过bgp-ls将节点支持压缩的能力,支持压缩的sid和新增的携带coc32 flavor的sid上送给控制器,用于控制器计算路径使用。
[0213]
控制器算路完成之后,可以通过bgp sr policy下发包含压缩sid的sid list,此时需要在sid list的segment sub-tlv之间插入描述sid格式的sub-tlv。比如以下示例中的10个sid,需要在a:2:1::,a:7:1::之前插入sid encoding sub-tlv,start为common prefix的长度(图中为63),end为common prefix 32(图中为95)。还需要在a1::5:1,a:10:10::之前插入sid encoding sub-tlv,其start=0。end=127。
[0214]
表3:关于sid及其格式:
[0215]
sidblocknodefunctionargpadding备注a:k:1::641616320可压缩,coc32 flavora:k:2::641616320可压缩,none coc flavora1:5::164164800不可压缩,a1前缀a:10:10::641616320可压缩vpn sid
[0216]
示例中,sid list总共包含了10sids:
[0217]
a:1:1::end.x(coc32)
[0218]
a:2:1::end.x(coc32)
[0219]
a:3:1::end.x(coc32)
[0220]
a:4:2::end.x
[0221]
a1::5:1end.x不支持压缩的sid
[0222]
a:6:1::end.x(coc32)
[0223]
a:7:1::end.x(coc32)
[0224]
a:8:1::end.x(coc32)
[0225]
a:9:2::end.x
[0226]
a:10:10::end.dt4 vpn sid(不参与压缩)
[0227]
经过reduced模式以及压缩编码之后,sid list如图12示例。其中end.x sid a:1:1::未被编码在sid list中。
[0228]
(1)当节点1收到数据包时,目的地址“a:1:1::”在local sid表中命中到节点本地发布的coc flavor end.x sid,此时srh中sl=5,da.xi=0,因此sl
--
,da.xi=3,指向2:1,将x-sid 2:1更新到da中,转发到下一个节点2。此时目的地址为a:2:1::3。
[0229]
(2)当节点2收到数据包时,目的地址“a:2:1:3::”在local sid表中命中匹配到节点本地发布的coc flavor end.x sid,此时sl=4,由于da.xi为3,大于0,所以节点将
da.xi
--
,将srh[sl][da.xi]指向的下一个x-sid 3:1更新(或称为复制)到da中,转发到下一个节点。此时目的地址为“a:3:1::2”。
[0230]
(3)当节点3收到数据包时,目的地址“a:3:1:2::”在local sid表中命中到节点本地发布的coc flavor end.x sid,此时srh中sl=4,da.xi=2,大于0,所以da.xi
--
,指向4:2,将x-sid 4:2更新到da中,转发到下一个节点。此时目的地址为“a:4:2::1”。
[0231]
(4)当节点4收到数据包时,目的地址“a:4:2:1::”在local sid表中命中到节点本地发布的end.x sid,因为无coc flavor,所以默认指示下一个sid是128bit的sid,因此,sl=sl-1=3,将“a1::5:1”复制到da中进行转发。
[0232]
(5)节点5是一个普通srv6节点,所以执行普通srv6转发,将“a:6:1::”复制到da中,转发到下一个节点。
[0233]
(6)节点6收到数据包时,目的地址“a:6:1::”在local sid表中命中到节点本地发布的coc flavor end.x sid,此时srh中sl=2,da.xi=0,所以sl
--
,da.xi=3,指向7:1,将x-sid 7:1更新到da中,转发到下一个节点。此时目的地址为“a:7:1::3”。
[0234]
可以理解的是“7:1”相当于第一sid,“a:6:1::”相当于第二sid。
[0235]
(7)同理,节点7,节点8收到数据包时,处理coc flavor sid,更新目的地址,转发数据包。
[0236]
(8)节点9收到数据包之后,步骤同节点4,由于da中sid在local sid表中命中无coc flavor的sid,所以sl
--
=0,将vpn sid复制到da中转发到节点10。
[0237]
(9)节点10按照正常vpn sid处理。
[0238]
(六)关于纯压缩场景中的数据包转发流程:
[0239]
参见图13,控制面流程原理,拓扑信息和sid信息同混编案例。在下发sr policy时,bgp sr policy的sid list里面需要插入对应的sid encoding sub-tlv描述格式。以下例为例:
[0240]
需要在a:2:1::之前插入sid encoding sub-tlv,start为common prefix的长度(图中为63),end为common prefix 32(图中为95)。
[0241]
示例中,sid list总共包含了10sids:
[0242]
a:1:1::end.x(coc32)
[0243]
a:2:1::end.x(coc32)
[0244]
a:3:1::end.x(coc32)
[0245]
a:4:1::end.x(coc32)
[0246]
a:5:1::end.x(coc32)
[0247]
a:6:1::end.x(coc32)
[0248]
a:7:1::end.x(coc32)
[0249]
a:8:1::end.x(coc32)
[0250]
a:9:1::end.x(coc32)
[0251]
a:10:10::end.dt4 vpn sid(参与压缩)。
[0252]
经过reduced模式以及压缩编码之后,sid list如图13所示。其中end.x sid a:1:1::未被编码在sid list中。
[0253]
(1)节点0封装好数据包之后,将数据包发送给下一跳节点1,此时srh中sl=3,
da.xi=0。sid的flavor为coc,标识下一个sid封装格式为32bits的x-sid。
[0254]
(2)当节点1收到数据包时,目的地址“a:1:1::”是本地发布的一个格式支持压缩的coc flavor end.x,指示下一个sid是32bits的x-sid,而此时的sl=3,da.xi=0,所以sl
--
,da.xi=3,指向2:1,将2:1复制到da更新x-sid,然后基于新的da进行查表转发。
[0255]
可以理解的是,“2:1”相当于第一sid,“1:1”相当于第二sid。
[0256]
(3)后续节点2,3,4,5,6,7,8,9同理,节点基于sl和da.xi的值将对应x-sid被更新到da,查表转发。
[0257]
(4)节点10收到数据包时,da为“a:10:10::”,其是一个不带coc flavor的sid(vpn sid本身也无此类flavor),执行vpn sid处理。
[0258]
参见图14,本发明实施例还提供一种节点,该节点1400包括:
[0259]
获取模块1401,用于获取第一sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;
[0260]
处理模块1402,用于根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;
[0261]
发送模块1403,用于将所述第一sid复制到数据包的目的地址中,发送所述数据包。
[0262]
在一些实施方式中,获取模块1401进一步用于:
[0263]
获取第二sid的第三信息和第四信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置;
[0264]
根据所述第二sid的第三信息和第四信息,得到所述第一sid的第一信息和第二信息;
[0265]
其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid。
[0266]
在一些实施方式中,获取模块1401进一步用于:
[0267]
从所述数据包的段路由头srh中获取所述第二sid的第三信息;
[0268]
从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息。
[0269]
在一些实施方式中,获取模块1401进一步用于:
[0270]
根据所述第二sid的第四信息或根据所述第二sid的属性信息,确定所述第一sid与所述第二sid是否在同一个容器中;
[0271]
如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
[0272]
或者,
[0273]
如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
[0274]
在一些实施方式中,所述第一sid的sid类型是由所述第二sid的属性信息指示的。
[0275]
在一些实施方式中,该节点1400还包括:更新模块,用于将所述第一sid的第一信
息更新到所述数据包的srh中;将所述第一sid的第二信息作为所述第一sid的索引更新到所述数据包的目的地址中。
[0276]
在一些实施方式中,获取模块1401进一步用于:
[0277]
获取第二sid的第三信息、第四信息和第五信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置,所述第五信息指示所述第二sid的sid类型和/或指示所述第二sid是否压缩;
[0278]
根据所述第二sid的第三信息、第四信息和第五信息,得到所述第一sid的第一信息和第二信息;
[0279]
其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid。
[0280]
在一些实施方式中,获取模块1401进一步用于:
[0281]
从所述数据包的srh中获取所述第二sid的第三信息;
[0282]
从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息和第五信息。
[0283]
在一些实施方式中,获取模块1401进一步用于:
[0284]
根据所述第二sid的sid类型和所述第一sid的sid类型,确定所述第一sid与所述第二sid是否在同一个容器中;
[0285]
如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
[0286]
或者,
[0287]
如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
[0288]
在一些实施方式中,所述容器用于容纳多个压缩sid,所述压缩sid包括:节点标识和所述节点的function的取值。
[0289]
在一些实施方式中,发送模块1403进一步用于:
[0290]
将所述第一sid复制到数据包的目的地址中,所述第一sid与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
[0291]
或者,
[0292]
将所述第一sid和第二信息复制到数据包的目的地址中,所述第一sid和第二信息与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
[0293]
或者,
[0294]
将所述第一sid和第二信息复制到数据包的目的地址中,将所述数据包转发给下一个节点。
[0295]
本发明实施例提供的节点,可以执行上述图3所示方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
[0296]
参见图15,本发明实施例还提供一种节点,该节点1500包括:收发机1501和处理器
1502;
[0297]
所述收发机1501在所述处理器1502的控制下发送和接收数据;
[0298]
所述处理器1502读取存储器中的程序执行以下操作:获取第一sid的第一信息和第二信息,所述第一信息指示所述第一sid所在的容器在数据包的sid列表中的位置,所述第二信息指示所述第一sid在所述容器中的位置;根据所述第一信息和第二信息,得到所述第一sid在sid列表中的位置;将所述第一sid复制到数据包的目的地址中,发送所述数据包。
[0299]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:
[0300]
获取第二sid的第三信息和第四信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置;
[0301]
根据所述第二sid的第三信息和第四信息,得到所述第一sid的第一信息和第二信息;
[0302]
其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid。
[0303]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:从所述数据包的段路由头srh中获取所述第二sid的第三信息;
[0304]
从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息。
[0305]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:根据所述第二sid的第四信息或根据所述第二sid的属性信息,确定所述第一sid与所述第二sid是否在同一个容器中;
[0306]
如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
[0307]
或者,
[0308]
如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
[0309]
在一些实施方式中,所述第一sid的sid类型是由所述第二sid的属性信息指示的。
[0310]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:将所述第一sid的第一信息更新到所述数据包的srh中;将所述第一sid的第二信息作为所述第一sid的索引更新到所述数据包的目的地址中。
[0311]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:获取第二sid的第三信息、第四信息和第五信息,所述第三信息指示所述第二sid所在的容器在所述数据包的sid列表中的位置,所述第四信息指示所述第二sid在所述容器中的位置,所述第五信息指示所述第二sid的sid类型和/或指示所述第二sid是否压缩;
[0312]
根据所述第二sid的第三信息、第四信息和第五信息,得到所述第一sid的第一信息和第二信息;
[0313]
其中,在所述sid列表中所述第二sid为所述第一sid的上一个sid。
[0314]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:从所述
数据包的srh中获取所述第二sid的第三信息;
[0315]
从所述数据包的目的地址中获取所述第二sid的索引,所述第二sid的索引包括:第四信息和第五信息。
[0316]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:根据所述第二sid的sid类型和所述第一sid的sid类型,确定所述第一sid与所述第二sid是否在同一个容器中;
[0317]
如果所述第一sid与所述第二sid在同一个容器中,则所述第一sid的第一信息与所述第二sid的第三信息相同,以及根据所述第二sid的第四信息,得到所述第一sid的第二信息;
[0318]
或者,
[0319]
如果所述第一sid与所述第二sid不在同一个容器中,则根据所述第二sid的第三信息,得到所述第一sid的第一信息,以及根据所述第一sid的sid类型,确定所述第一sid的第二信息。
[0320]
在一些实施方式中,所述容器用于容纳多个压缩sid,所述压缩sid包括:节点标识和所述节点的function的取值。
[0321]
在一些实施方式中,所述处理器1502读取存储器中的程序执行以下操作:将所述第一sid复制到数据包的目的地址中,所述第一sid与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
[0322]
或者,
[0323]
将所述第一sid和第二信息复制到数据包的目的地址中,所述第一sid和第二信息与所述目的地址中的公共前缀或地址块组成得到一个新的目的地址,并根据所述新的目的地址将所述数据包转发给下一个节点;
[0324]
或者,
[0325]
将所述第一sid和第二信息复制到数据包的目的地址中,将所述数据包转发给下一个节点。
[0326]
本发明实施例提供的节点,可以执行上述图3所示方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
[0327]
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以由在处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、eprom、eeprom、寄存器、硬盘、移动硬盘、只读光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以携带在asic中。另外,该asic可以携带在核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
[0328]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介
质。
[0329]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
[0330]
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的程序产品的形式。
[0331]
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和程序产品的流程图和/或方框图来描述的。应理解可由程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0332]
这些程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0333]
这些程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0334]
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜