CN115567459A - 一种基于缓冲区的流量控制系统与方法 - Google Patents
一种基于缓冲区的流量控制系统与方法 Download PDFInfo
- Publication number
- CN115567459A CN115567459A CN202211164472.1A CN202211164472A CN115567459A CN 115567459 A CN115567459 A CN 115567459A CN 202211164472 A CN202211164472 A CN 202211164472A CN 115567459 A CN115567459 A CN 115567459A
- Authority
- CN
- China
- Prior art keywords
- message
- window
- updating
- driving end
- sending
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 88
- 230000008569 process Effects 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 8
- 230000007246 mechanism Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于Qemu与Kvm的通信场景技术领域,具体提供一种基于缓冲区的流量控制系统与方法,所述系统包括分别设置在设备端和驱动端室的消息处理装置、窗口更新装置、消息接收装置、消息发送装置;消息处理装置,用于对接收到的消息进行业务处理触发同端的窗口更新装置,当需要拆分消息时进行消息的拆分;接收装置,接收到消息通知后,获取缓存装置中的消息,并将获取的消息传输给同端的消息处理装置;窗口更新装置,根据接收到的窗口同步消息进行剩余窗口的更新;或,计算剩余窗口的大小并计算结果更新到消息头部,经同端的发送装置发送窗口同步消息通知到对端。避免极端场景下峰值峰谷的频繁出现导致驱动端和设备端的通信阻塞的问题。
Description
技术领域
本发明涉及Qemu与Kvm的通信场景技术领域,具体提供一种基于缓冲区的流量控制系统与方法。
背景技术
对于大多数企业组织而言,无论其规模大小,现在都在处理包含虚拟和物理服务器的混合IT环境。混合环境几乎将服务器管理的各个方面都复杂化了。其降低了管理员的生产效率,增加了管理工具的成本,管理员之间关于管理工具知识的掌握过于分散,并可能导致应用程序的可用性和数据的完整性被大打折扣。部署虚拟化使物理服务器能够托管多款虚拟服务器。提供了在不同物理服务器之间轻松迁移虚拟服务器的能力,以平衡对资源的需求。运行虚拟化软件的物理服务器经常能够保持在其额定容量的80%以上运行。将业务应用程序整合到单台物理服务器上,每台物理服务器都有其自己独立的操作环境,可以显着的减少企业数据中心中的物理服务器的数量,进一步的减少资本支出。虚拟化的实现大多依赖于Qemu+Kvm架构,且实现设备与驱动的通信技术绝大多数基于vring的通信。
对于Qemu+Kvm之间的流控主要基于一个简单的判断(当前Kvm端消息处理完成的位置-Qemu端消息处理完成的位置<当前Kvm端本次处理消息的数量)。如果条件成立,说明Qemu设备端处理速度够快,Kvm端会继续发送;如果不成立,说明设备处理速度比较慢,则暂缓消息发送,直到此条件成立再发送。在这样的判断条件下,如果在某一时间段内消息量很大,或者某一时间段内没有消息产生,则现有的实现机制在这样情况下极易造成忙闲不均,消息量大时导致发生拥塞,没有消息时空闲浪费;或者因极端超大消息造成判断条件一直无法成立,进而导致设备端与驱动端无法通信的弊端。现有的其它基于vring的一些修改都只是修改vring的内部通信消息,减少报文传输的时延或者减少拷贝次数等提高效率,对流量控制基本没有任何的涉及,也无法避免上述描述的弊端。
需要说明的是,Qemu是一套由法布里斯·贝拉所编写的以GPL许可证分发源码的模拟处理器软件,在GNU/Linux平台上使用广泛。Kvm是一种内建于Linux中的开源虚拟化技术,可以将Linux转变为虚拟机监控程序,使主机能够运行多个隔离的虚拟环境。Thread线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,每条线程并行执行不同的任务。Vring是堆空间的一部分。在堆空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。IT是指互联网信息技术的统称;驱动端由Kvm进行模拟,文中驱动端指代Kvm端;设备端由Qemu进行模拟,文中设备端指代Qemu端。
发明内容
针对如果在某一时间段内消息量很大,或者某一时间段内没有消息产生,则现有的实现机制在这样情况下极易造成忙闲不均,消息量大时导致发生拥塞,没有消息时空闲浪费;或者因极端超大消息造成判断条件一直无法成立,进而导致设备端与驱动端无法通信的弊端,本发明提供一种基于vring的流量控制系统与方法。
第一方面,本发明技术方案提供一种基于缓冲区的流量控制系统,包括缓冲区、由Qemu模拟的设备端、由Kvm模拟的驱动端;
缓冲区为设备端和驱动端共有的用于存储设备端和驱动端存入消息的缓存装置;
设备端和驱动端均分别设置有消息处理装置、窗口更新装置、消息接收装置、消息发送装置;
消息处理装置,用于对接收到的消息进行业务处理触发同端的窗口更新装置,当需要拆分消息时进行消息的拆分,将消息的拆分偏移和拆分标志填充到消息的头部并通过发送装置将满足发送条件的消息填充到缓存装置,同时通过发送装置发送消息通知到对端;
接收装置,用于接收到消息通知后,获取缓存装置中的消息,并将获取的消息传输给同端的消息处理装置;
窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新;或,计算剩余窗口的大小并计算结果更新到消息头部,经同端的发送装置发送窗口同步消息通知到对端。
进一步的,驱动端的消息处理装置,用于当有消息需要处理时对消息进行处理获取消息长度,判断缓存装置中的剩余空间大于所述消息长度时触发驱动端的窗口更新装置,判断缓存装置中的剩余空间不大于所述消息长度时对消息进行拆分,判断拆分后得到满足可发送的消息时,触发驱动端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过驱动端的发送装置发送消息通知到设备端。
进一步的,设备端的接收装置是一个多线程的装置,设备端的接收装置接收到驱动端的发送装置发送的消息通知后,利用主线程获取缓冲装置中的消息,并将获取的消息传输给设备端的消息处理装置。
进一步的,设备端的消息处理装置,用于接收到消息后判断消息是否是窗口同步消息,若是,触发设备端的窗口更新装置,若否,进一步判断消息为待发送消息时,判断剩余窗口满足发送条件时触发设备端的窗口更新装置,剩余窗口不满足发送条件时将消息进行拆分,判断拆分后得到满足可发送的消息时,触发设备端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过设备端的发送装置发送消息通知到驱动端。
进一步的,驱动端的接收装置接收到设备端的发送装置发送的消息通知后,触发驱动端的消息处理装置。
进一步的,驱动端的消息处理装置,还用于判断驱动端的接收装置接收到消息通知是否是窗口同步消息,若是,触发驱动端的窗口更新装置,若否,进行消息处理,触发窗口更新装置。
进一步的,驱动端的窗口更新装置,用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置;还用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回驱动端的消息处理装置;还用于驱动端的接收装置接收到的消息通知不是窗口同步消息,驱动端的消息处理装置进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置。
进一步的,设备端的窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回设备端的接收装置;还用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经设备端的发送装置发送窗口同步的消息通知到驱动端的接收装置。
本发明提供的系统的工作流程如下:
1)当Kvm端有消息需要处理时则进入Kvm端的消息处理装置进行下一步消息处理,当没有消息需要处理时Kvm端需要等待消息的产生。
2)从需要处理的消息中获取消息的长度,进行下一步。
3)判断缓冲区(也就是存储装置)中的剩余空间是否足够发送此次消息,如果没有足够的空间则进行消息拆分,执行步骤4);如果空间足够则直接进入步骤5)。
4)将拆分得到的满足可发送的消息进入步骤5),将拆分得到的不满足发送窗口的消息返回步骤1)处理。
5)进入Kvm端的窗口更新装置,从剩余窗口中扣除本次需要发送的消息大小,并将计算结果更新到消息头部中的窗口字段,经Kvm端的发送装置发送窗口同步消息通知,进行下一步。
6)将消息填充到缓冲区中,进行下一步。
7)进入Kvm端的发送装置发送消息通知到Qemu端,进行下一步。
8)进入Qemu端的接收装置,Qemu端接收到消息之后,利用主接收线程不断的获取缓冲区vring中的消息,并根据负载均衡策略进行消息分发,进行下一步。
9)进入Qemu端的消息处理装置,对接收的消息进行判断,如果是同步消息,则进入Qemu端的窗口更新装置更新剩余窗口,进行窗口同步后直接返回步骤8),如果不是窗口同步消息则进行下一步。
10)进入Qemu端的消息处理装置将接收的消息进行相应的业务处理并进行下一步。
11)判断是否需要发送消息到Kvm端。如果不需要,则返回步骤8)进入Qemu端的消息接收装置;如果需要,进行下一步。
12)获取需要发送的消息长度并判断剩余窗口是否足够,如果不满足则需要利用Qemu端的消息处理装置进行消息拆分,将满足剩余窗口的消息进入步骤13)处理,不满足的消息进入步骤11)等待有剩余空间时再进行处理。
13)经Qemu端的窗口更新装置重新计算窗口且发送窗口同步消息通知(步骤15)中的窗口更新装置将会进行处理)后,将消息填充到缓冲区中,进行下一步。
14)进入到Qemu端的发送装置,将消息通知发送到Kvm端,进行下一步操作。
15)进入到Kvm端的接收装置接收通知消息,再进入Kvm端的消息处理装置判断是否为窗口同步消息,如果是同步消息则进入Kvm端的窗口更新装置中进行窗口更新后进入步骤1)处理;如果不是则进行消息处理,进入下一步。
16)Kvm端的消息处理装置处理完成之后,首先,进入窗口更新装置进行窗口更新并经Kvm端的发送装置发送窗口同步消息到Qemu端进行处理;其次,重新进入步骤1)处理。
第二方面,本发明技术方案还提供一种基于缓冲区的流量控制方法,包括如下步骤:
当驱动端有消息需要处理时对消息进行处理获取消息长度,判断缓冲区中的剩余空间是否大于所述消息长度,若是,触发窗口更新,若否,对消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到设备端;
设备端接收到消息通知后,获取缓冲区中的消息;判断消息是否是窗口同步消息,若是,触发窗口更新,若否,判断消息为待发送消息时,判断剩余窗口是否满足发送条件,若满足,触发窗口更新,若不满足,将消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到驱动端;
驱动端接收到消息通知后,判断消息通知是否是窗口同步消息,若是,触发窗口更新,若否,进行消息处理,触发窗口更新,并发送消息通知到设备端。
进一步的,触发窗口更新的步骤包括:
当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,发送消息通知到设备端或驱动端;或,
根据接收到的窗口同步消息进行剩余窗口的更新;或,
驱动端接收到的消息通知不是窗口同步消息,驱动端进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,发送窗口同步的消息通知到设备端。
从以上技术方案可以看出,本发明具有以下优点:可以避免极端场景下峰值峰谷的频繁出现导致的驱动端和设备端的通信阻塞的发生;同时可以避免极端大报文情况下,堵塞场景的发生,使负载更均衡;同时本方案的Qemu端多线程机制可以极大地提高Qemu端的消息处理速度,使消息通信更流畅。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的系统的示意性框图。
图2是本发明一个实施例的消息格式示意图。
图3是本发明一个实施例的方法的示意性流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明技术方案提供一种基于缓冲区的流量控制系统,包括缓冲区、由Qemu模拟的设备端、由Kvm模拟的驱动端;在这里,设备端也可以称Qemu端,驱动端也可以称为Kvm端;
缓冲区为设备端和驱动端共有的用于存储设备端和驱动端存入消息的缓存装置;
设备端和驱动端均分别设置有消息处理装置、窗口更新装置、消息接收装置、消息发送装置;
消息处理装置,用于对接收到的消息进行业务处理触发同端的窗口更新装置,当需要拆分消息时进行消息的拆分,将消息的拆分偏移和拆分标志填充到消息的头部并通过发送装置将满足发送条件的消息填充到缓存装置,同时通过发送装置发送消息通知到对端;
接收装置,用于接收到消息通知后,获取缓存装置中的消息,并将获取的消息传输给同端的消息处理装置;
窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新;或,计算剩余窗口的大小并计算结果更新到消息头部,经同端的发送装置发送窗口同步消息通知到对端。消息的格式如图2所示。
Qemu端的消息处理装置主要负责设备端具体业务的处理,Kvm端的消息处理装置主要负责驱动端的业务;窗口更新装置主要负责维护剩余窗口的大小;接收装置主要负责从缓存装置中获取消息;Qemu端的发送装置主要负责将设备端消息存放到缓存区装置,Kvm端的发送装置主要负责将驱动端消息存放到缓冲区装置;缓存装置主要负责存储Qemu端与Kvm端的消息。
由消息处理装置、窗口更新装、接收装置、发送装置、缓存装置多个装置模块共同组成的基于vring的流控系统。支持Qemu端的多线程处理,支持大消息的拆分,支持更精准的窗口控制机制并利用窗口机制能够更好地达到流量控制。
在有些实施例中,驱动端的消息处理装置,用于当有消息需要处理时对消息进行处理获取消息长度,判断缓存装置中的剩余空间大于所述消息长度时触发驱动端的窗口更新装置,判断缓存装置中的剩余空间不大于所述消息长度时对消息进行拆分,判断拆分后得到满足可发送的消息时,触发驱动端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过驱动端的发送装置发送消息通知到设备端。驱动端的消息处理装置,还用于判断驱动端的接收装置接收到消息通知是否是窗口同步消息,若是,触发驱动端的窗口更新装置,若否,进行消息处理,触发窗口更新装置。
也就是说,驱动端的消息处理装置负责从驱动端的接收装置接收消息并进行具体的业务处理和进行有拆分需求的发送消息拆分;在这里,以符合发送窗口和消息完整性为拆分的原则,例如消息具有不同的类型不同,假如到来的消息类型满足剩余窗口,则将此消息中满足窗口类型的消息进行单独拆分进行发送,其它类型的消息作为不满足窗口的拆分部分;假如到来的消息类型不满足剩余窗口则再直接对不满足剩余窗口类型的消息进行拆分,拆分的过程中对填充的消息填充拆分标志和拆分偏移。
在有些实施例中,设备端的接收装置是一个多线程的装置,设备端的接收装置接收到驱动端的发送装置发送的消息通知后,利用主线程获取缓冲装置中的消息,并将获取的消息传输给设备端的消息处理装置。
在有些实施例中,设备端的消息处理装置,用于接收到消息后判断消息是否是窗口同步消息,若是,触发设备端的窗口更新装置,若否,进一步判断消息为待发送消息时,判断剩余窗口满足发送条件时触发设备端的窗口更新装置,剩余窗口不满足发送条件时将消息进行拆分,判断拆分后得到满足可发送的消息时,触发设备端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过设备端的发送装置发送消息通知到驱动端。
设备端的消息处理装置从设备端的接收装置接收消息并进行具体的业务处理和进行有拆分需求的发送消息拆分,拆分时,以符合发送窗口和消息完整性为拆分的原则,例如消息具有不同的类型不同,假如到来的消息类型满足剩余窗口,则将此消息中满足窗口类型的消息进行单独拆分进行发送,其它类型的消息作为不满足窗口的拆分部分;假如到来的消息类型不满足剩余窗口则再直接对不满足剩余窗口类型的消息进行拆分,拆分的过程中对填充的消息填充拆分标志和拆分偏移。
驱动端的接收装置接收到设备端的发送装置发送的消息通知后,触发驱动端的消息处理装置。
在有些实施例中,驱动端的窗口更新装置,用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置;还用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回驱动端的消息处理装置;还用于驱动端的接收装置接收到的消息通知不是窗口同步消息,驱动端的消息处理装置进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置。
设备端的窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回设备端的接收装置;还用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经设备端的发送装置发送窗口同步的消息通知到驱动端的接收装置。
也就是说,窗口更新装置在Qemu端和Kvm端的功能是一致的。它们有两种触发途径:一种是从Qemu端或者Kvm端的接收装置中接收到更新窗口的消息从而进行剩余窗口大小的同步;一种是由于Qemu端或者Kvm端的消息填充而导致剩余窗口的重新计算。
缓存装置负责开辟Qemu与Kvm都能访问的内存,它可以是一个环形或非环形的缓存区且在物理上必须是连续的页。它里面维护了Qemu存放消息的位置,Qemu释放的位置,Kvm存放的位置,Kvm释放的位置以及Qemu和Kvm存放的消息。
本发明实施例还提供一种基于缓冲区的流量控制方法,包括如下步骤:
当驱动端有消息需要处理时对消息进行处理获取消息长度,判断缓冲区中的剩余空间是否大于所述消息长度,若是,触发窗口更新,若否,对消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到设备端;
设备端接收到消息通知后,获取缓冲区中的消息;判断消息是否是窗口同步消息,若是,触发窗口更新,若否,判断消息为待发送消息时,判断剩余窗口是否满足发送条件,若满足,触发窗口更新,若不满足,将消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到驱动端;
驱动端接收到消息通知后,判断消息通知是否是窗口同步消息,若是,触发窗口更新,若否,进行消息处理,触发窗口更新,并发送消息通知到设备端。
需要说明的是,触发窗口更新的步骤包括:
当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,发送消息通知到设备端或驱动端;或,
根据接收到的窗口同步消息进行剩余窗口的更新;或,
驱动端接收到的消息通知不是窗口同步消息,驱动端进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,发送窗口同步的消息通知到设备端。
如图3所示,具体步骤如下;
本发明提供的系统的工作流程如下:
1)当Kvm端有消息需要处理时则进入Kvm端的消息处理装置进行下一步消息处理,当没有消息需要处理时Kvm端需要等待消息的产生。
2)从需要处理的消息中获取消息的长度,进行下一步。
3)判断缓冲区(也就是存储装置)中的剩余空间是否足够发送此次消息,如果没有足够的空间则进行消息拆分,执行步骤4);如果空间足够则直接进入步骤5)。
4)将拆分得到的满足可发送的消息进入步骤5),将拆分得到的不满足发送窗口的消息返回步骤1)处理。
5)进入Kvm端的窗口更新装置,从剩余窗口中扣除本次需要发送的消息大小,并将计算结果更新到消息头部中的窗口字段,经Kvm端的发送装置发送窗口同步消息通知,进行下一步。
6)将消息填充到缓冲区中,进行下一步。
7)进入Kvm端的发送装置发送消息通知到Qemu端,进行下一步。
8)进入Qemu端的接收装置,Qemu端接收到消息之后,利用主接收线程不断的获取缓冲区vring中的消息,并根据负载均衡策略进行消息分发,进行下一步。
9)进入Qemu端的消息处理装置,对接收的消息进行判断,如果是同步消息,则进入Qemu端的窗口更新装置更新剩余窗口,进行窗口同步后直接返回步骤8),如果不是窗口同步消息则进行下一步。
10)进入Qemu端的消息处理装置将接收的消息进行相应的业务处理并进行下一步。
11)判断是否需要发送消息到Kvm端。如果不需要,则返回步骤8)进入Qemu端的消息接收装置;如果需要,进行下一步。
12)获取需要发送的消息长度并判断剩余窗口是否足够,如果不满足则需要利用Qemu端的消息处理装置进行消息拆分,将满足剩余窗口的消息进入步骤13)处理,不满足的消息进入步骤11)等待有剩余空间时再进行处理。
13)经Qemu端的窗口更新装置重新计算窗口且发送窗口同步消息通知(步骤15)中的窗口更新装置将会进行处理)后,将消息填充到缓冲区中,进行下一步。
14)进入到Qemu端的发送装置,将消息通知发送到Kvm端,进行下一步操作。
15)进入到Kvm端的接收装置接收通知消息,再进入Kvm端的消息处理装置判断是否为窗口同步消息,如果是同步消息则进入Kvm端的窗口更新装置中进行窗口更新后进入步骤1)处理;如果不是则进行消息处理,进入下一步。
16)Kvm端的消息处理装置处理完成之后,首先,进入窗口更新装置进行窗口更新并经Kvm端的发送装置发送窗口同步消息到Qemu端进行处理;其次,重新进入步骤1)处理。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于缓冲区的流量控制系统,其特征在于,包括缓冲区、由Qemu模拟的设备端、由Kvm模拟的驱动端;
缓冲区为设备端和驱动端共有的用于存储设备端和驱动端存入消息的缓存装置;
设备端和驱动端均分别设置有消息处理装置、窗口更新装置、消息接收装置、消息发送装置;
消息处理装置,用于对接收到的消息进行业务处理触发同端的窗口更新装置,当需要拆分消息时进行消息的拆分,将消息的拆分偏移和拆分标志填充到消息的头部并通过发送装置将满足发送条件的消息填充到缓存装置,同时通过发送装置发送消息通知到对端;
接收装置,用于接收到消息通知后,获取缓存装置中的消息,并将获取的消息传输给同端的消息处理装置;
窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新;或,计算剩余窗口的大小并计算结果更新到消息头部,经同端的发送装置发送窗口同步消息通知到对端。
2.根据权利要求1所述的基于缓冲区的流量控制系统,其特征在于,驱动端的消息处理装置,用于当有消息需要处理时对消息进行处理获取消息长度,判断缓存装置中的剩余空间大于所述消息长度时触发驱动端的窗口更新装置,判断缓存装置中的剩余空间不大于所述消息长度时对消息进行拆分,判断拆分后得到满足可发送的消息时,触发驱动端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过驱动端的发送装置发送消息通知到设备端。
3.根据权利要求2所述的基于缓冲区的流量控制系统,其特征在于,设备端的接收装置是一个多线程的装置,设备端的接收装置接收到驱动端的发送装置发送的消息通知后,利用主线程获取缓冲装置中的消息,并将获取的消息传输给设备端的消息处理装置。
4.根据权利要求3所述的基于缓冲区的流量控制系统,其特征在于,设备端的消息处理装置,用于接收到消息后判断消息是否是窗口同步消息,若是,触发设备端的窗口更新装置,若否,进一步判断消息为待发送消息时,判断剩余窗口满足发送条件时触发设备端的窗口更新装置,剩余窗口不满足发送条件时将消息进行拆分,判断拆分后得到满足可发送的消息时,触发设备端的窗口更新装置,将拆分后得到满足可发送的消息填充到缓存装置,通过设备端的发送装置发送消息通知到驱动端。
5.根据权利要求4所述的基于缓冲区的流量控制系统,其特征在于,驱动端的接收装置接收到设备端的发送装置发送的消息通知后,触发驱动端的消息处理装置。
6.根据权利要求5所述的基于缓冲区的流量控制系统,其特征在于,驱动端的消息处理装置,还用于判断驱动端的接收装置接收到消息通知是否是窗口同步消息,若是,触发驱动端的窗口更新装置,若否,进行消息处理,触发窗口更新装置。
7.根据权利要求5所述的基于缓冲区的流量控制系统,其特征在于,驱动端的窗口更新装置,用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置;还用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回驱动端的消息处理装置;还用于驱动端的接收装置接收到的消息通知不是窗口同步消息,驱动端的消息处理装置进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,经驱动端的发送装置发送窗口同步的消息通知到设备端的接收装置。
8.根据权利要求7所述的基于缓冲区的流量控制系统,其特征在于,设备端的窗口更新装置,用于根据接收到的窗口同步消息进行剩余窗口的更新,更新完成后返回设备端的接收装置;还用于当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,经设备端的发送装置发送窗口同步的消息通知到驱动端的接收装置。
9.一种基于缓冲区的流量控制方法,其特征在于,包括如下步骤:
当驱动端有消息需要处理时对消息进行处理获取消息长度,判断缓冲区中的剩余空间是否大于所述消息长度,若是,触发窗口更新,若否,对消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到设备端;
设备端接收到消息通知后,获取缓冲区中的消息;判断消息是否是窗口同步消息,若是,触发窗口更新,若否,判断消息为待发送消息时,判断剩余窗口是否满足发送条件,若满足,触发窗口更新,若不满足,将消息进行拆分,判断拆分后得到满足可发送的消息时,触发窗口更新,将拆分后得到满足可发送的消息填充到缓冲区,并发送消息通知到驱动端;
驱动端接收到消息通知后,判断消息通知是否是窗口同步消息,若是,触发窗口更新,若否,进行消息处理,触发窗口更新,并发送消息通知到设备端。
10.根据权利要求9所述的基于缓冲区的流量控制方法,其特征在于,触发窗口更新的步骤包括:
当剩余空间大于所述消息长度时,或拆分后得到满足可发送的消息时,从剩余窗口中扣除本次待发送的消息大小,并将扣除后的窗口大小更新到消息头部中的窗口字段,发送消息通知到设备端或驱动端;或,
根据接收到的窗口同步消息进行剩余窗口的更新;或,
驱动端接收到的消息通知不是窗口同步消息,驱动端进行消息处理后,重新进行剩余窗口的计算并将计算结果更新到消息头部中的窗口字段,发送窗口同步的消息通知到设备端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211164472.1A CN115567459B (zh) | 2022-09-23 | 2022-09-23 | 一种基于缓冲区的流量控制系统与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211164472.1A CN115567459B (zh) | 2022-09-23 | 2022-09-23 | 一种基于缓冲区的流量控制系统与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115567459A true CN115567459A (zh) | 2023-01-03 |
CN115567459B CN115567459B (zh) | 2024-10-22 |
Family
ID=84740313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211164472.1A Active CN115567459B (zh) | 2022-09-23 | 2022-09-23 | 一种基于缓冲区的流量控制系统与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567459B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015096692A1 (zh) * | 2013-12-23 | 2015-07-02 | 腾讯科技(深圳)有限公司 | 数据接收流量控制方法及其系统、计算机存储介质 |
CN110048958A (zh) * | 2018-01-16 | 2019-07-23 | 厦门亿联网络技术股份有限公司 | 一种系统间消息流传输的缓冲区控制方法 |
CN110166376A (zh) * | 2019-06-06 | 2019-08-23 | 北京百度网讯科技有限公司 | 流量控制方法及装置、系统、服务器、计算机可读介质 |
-
2022
- 2022-09-23 CN CN202211164472.1A patent/CN115567459B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015096692A1 (zh) * | 2013-12-23 | 2015-07-02 | 腾讯科技(深圳)有限公司 | 数据接收流量控制方法及其系统、计算机存储介质 |
CN110048958A (zh) * | 2018-01-16 | 2019-07-23 | 厦门亿联网络技术股份有限公司 | 一种系统间消息流传输的缓冲区控制方法 |
CN110166376A (zh) * | 2019-06-06 | 2019-08-23 | 北京百度网讯科技有限公司 | 流量控制方法及装置、系统、服务器、计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115567459B (zh) | 2024-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106330769B (zh) | 一种业务处理方法及服务器 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US10754686B2 (en) | Method and electronic device for application migration | |
US11074203B2 (en) | Handling an input/output store instruction | |
WO2020156796A1 (en) | Handling an input/output store instruction | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN110502364A (zh) | 一种OpenStack平台下大数据沙箱集群的跨云备份恢复方法 | |
US20140059152A1 (en) | Support server for redirecting task results to a wake-up server | |
WO2020156798A1 (en) | Handling an input/output store instruction | |
US10673983B2 (en) | Processing a unit of work | |
WO2024051454A1 (zh) | 处理事务日志的方法及装置 | |
CN109327321B (zh) | 网络模型业务执行方法、装置、sdn控制器及可读存储介质 | |
US9268621B2 (en) | Reducing latency in multicast traffic reception | |
CN107632890B (zh) | 一种数据流体系结构中动态节点分配方法和系统 | |
CN108446182A (zh) | 一种基于共享内存的跨进程通信方法及装置 | |
CN110445874A (zh) | 一种会话处理方法、装置、设备和存储介质 | |
CN115567459B (zh) | 一种基于缓冲区的流量控制系统与方法 | |
CN107391388B (zh) | 一种基于即时通信进行数据存储的方法和设备 | |
US11386043B2 (en) | Method, device, and computer program product for managing snapshot in application environment | |
CN115640100A (zh) | 一种虚拟机信息同步方法及计算机可读介质 | |
CN113687962A (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN114237858A (zh) | 一种基于多集群网络的任务调度方法及系统 | |
CN113961641A (zh) | 数据库同步方法、装置、设备和存储介质 | |
CN115767448B (zh) | 一种消息发送方法、装置、设备和存储介质 | |
CN117170891A (zh) | 消息处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |