CN112866127B - 一种分组网络中控制流量的方法及装置 - Google Patents

一种分组网络中控制流量的方法及装置 Download PDF

Info

Publication number
CN112866127B
CN112866127B CN202011639151.3A CN202011639151A CN112866127B CN 112866127 B CN112866127 B CN 112866127B CN 202011639151 A CN202011639151 A CN 202011639151A CN 112866127 B CN112866127 B CN 112866127B
Authority
CN
China
Prior art keywords
data
control
packet
queue
message
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.)
Active
Application number
CN202011639151.3A
Other languages
English (en)
Other versions
CN112866127A (zh
Inventor
李国平
袁庭球
涂伯颜
马涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011639151.3A priority Critical patent/CN112866127B/zh
Publication of CN112866127A publication Critical patent/CN112866127A/zh
Application granted granted Critical
Publication of CN112866127B publication Critical patent/CN112866127B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/18End to end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based

Abstract

本申请公开了一种分组网络中控制流量的方法,能够有效降低网络拥塞和传输延时。该方法中,发送端在发送C个数据报文之前,通过控制通道发送与所述C个数据报文对应的控制报文。所述发送端在接收到接收端反馈的与所述控制报文对应的报文后,获知与所述控制通道对应的数据通道允许发送所述C个数据报文。所述发送端通过所述数据通道发送所述C个数据报文。在所述发送端与所述接收端之间的中间节点在接收到来自所述发送端的控制报文后,根据预设时长发送控制队列中的控制报文。所述中间节点在完成了所述控制队列中的一个控制报文的发送之后,执行数据队列中的C个数据报文的发送。所述中间节点通过控制报文的发送节奏来控制数据报文的发送节奏。

Description

一种分组网络中控制流量的方法及装置
本申请是于2018年2月14日提交中国专利局、申请号为CN 201810152118.4、发明名称为“一种分组网络中控制流量的方法及装置”的中国专利申请的分案申请。
技术领域
本申请涉及通信领域,尤其涉及一种分组网络中控制流量的方法及装置。
背景技术
目前分组网络是以互联网协议(Internet Protocol,IP)提供的端到端的报文传输为基础。传输控制协议(Transmission Control Protocol,TCP)保证了上述端到端的报文传输过程中的可靠性。因此,TCP成为了目前分组网络中被使用最多的传输协议。TCP在保证传输可靠性的同时,还可利用滑动窗口机制实现流量控制。该滑动窗口机制中,发送端与接收端建立TCP连接的过程中,接收端向发送端通告接收端的接收窗口(receive window,rwnd)的数值。该rwnd的数值用于表示接收端缓冲区的大小,具体地,该rwnd的数值可携带在TCP报文头的窗口字段发送至发送端。发送端根据rwnd的数值设置其发送窗口(sendwindow,swnd)的数值。该swnd的数值小于等于rwnd的数值和拥塞窗口(congestionwindow,cwnd)的数值中的最小值。该cwnd的数值用于表示网络允许的该TCP流最大的在途数据量。发送端根据swnd的数值,向接收端发送数据。接收端根据其缓冲区的缓存能力的改变,可通过用于确认收到数据的确认(acknowledgement,ACK)消息,向发送端通告更新后的rwnd的数值。发送端在接收到接收端发送的更新后的rwnd的数值后,动态调整发送端的swnd的数值。直至rwnd的数值被调整为接近0值,发送端不再向接收端发送数据。该滑动窗口机制实现流量控制的方法是采用AIMD机制试探发送端与接收端之间的网络传输能力。这种试探机制控制精度较低,会造成网络拥塞,传输延时较大的问题。
发明内容
本申请实施例提供了一种分组网络中控制流量的方法及装置,能够有效降低网络拥塞和传输延时。
第一方面,提供了一种分组网络中控制流量的方法,所述方法包括:发送端通过控制通道向接收端发送第一控制报文,所述第一控制报文包括参数集;所述发送端接收所述接收端发送的第二控制报文,所述第二控制报文包括所述参数集;所述发送端在接收到包括所述参数集的所述第二控制报文后,通过数据通道向所述接收端发送所述第一数据报文集,所述第一数据报文集包括C个数据报文,所述C为大于或等于1的整数,所述第一数据报文集中的任一数据报文包括所述参数集。
上述方法中,发送端在发送数据报文的过程中,比如所述发送端发送第一数据报文集的过程中,通过发送第一控制报文来探测所述第一数据报文集的传输链路上的拥塞状况。所述发送端在接收到与所述第一控制报文对应的第二控制报文后,确认所述第一数据报文集的传输链路未发生拥塞,所述第一数据报文集可被发送。所述发送端通过控制报文来控制数据报文的发送节奏,有助于在链路发生拥塞之前减少链路拥塞的发生,能够有效降低网络拥塞和传输时延。
其中,所述参数集是能够用来识别数据报文所属的业务流的参数的集合。在互联网协议(Internet Protocol,IP)网络中,所述参数集包括五元组,或者所述参数集包括源地址和目的地址。所述源地址为源媒体接入控制(Media Access Control,MAC)地址或源IP地址。所述目的地址为目的MAC地址或目的IP地址。在光纤通道(fiber channel,FC)网络中,所述参数集包括FC对应的源地址和目的地址。在一种可能的设计中,所述参数集包括所述五元组和流标识,所述流标识用于标识所述第一数据报文集所属的业务流。在另一种可能的设计中,所述参数集包括所述源地址、所述目的地址和所述流标识。
其中,所述数据通道和所述控制通道承载于所述发送端与所述接收端之间的一条或多条物理链路。在一种可能的设计中,若所述数据通道和所述控制通道承载于所述发送端与所述接收端之间的一条物理链路上,则所述数据通道的带宽和所述控制通道的带宽之和为所述一条物理链路的带宽,且所述数据通道和所述控制通道的带宽比为所述C个数据报文的包长之和与任一控制报文的包长之比。上述方法中,所述带宽比使得发送一个控制报文所需的时长与发送C个数据报文所需的时长相同,有助于充分利用物理链路上的带宽资源和降低传输延时。在另一种可能的设计中,若所述数据通道和所述控制通道分别承载所述发送端与所述接收端之间的两条物理链路上,则承载所述数据通道的物理链路和承载所述控制通道的物理链路的带宽比为所述C个数据报文的包长之和与任一控制报文的包长之比。承载所述数据通道的物理链路和承载所述控制通道的物理链路所经过的节点相同,这样,通过发送控制报文所探测获得的承载所述控制通道的物理链路的链路状况能够间接地反映承载所述数据通道的物理链路的链路状况。
其中,在网络中未发生丢弃控制报文的情况下,所述第二控制报文为所述第一控制报文的源地址和目的地址交换后获得的控制报文。在网络中发生了丢弃控制报文的情况下,所述第二控制报文可以是第三控制报文的源地址和目的地址交换后获得的控制报文,所述第三控制报文是所述发送端在发送了所述第一控制报文之后发送的控制报文。
在一种可能的设计中,所述发送端通过控制通道向接收端发送第一控制报文之前,所述方法还包括:所述发送端根据所述第一数据报文集中的任一数据报文,获得所述第一控制报文的报文头,所述第一控制报文的报文头包括所述参数集;所述发送端根据所述第一控制报文的报文头和预设的包长,生成所述第一控制报文。上述方法中,所述发送端可根据数据报文来生成与之对应的控制报文,以便于利用生成的控制报文来控制数据报文的发送节奏。
其中,所述第一控制报文可缓存于所述发送端的控制队列中,或者所述第一控制报文在生成后即被所述发送端发送而不缓存。当所述发送端上存在所述控制队列时,所述控制队列中的控制报文需要经过所述控制通道进行发送。所述第一数据报文集可缓存于所述发送端的数据队列中。所述数据队列中的数据报文可通过所述数据通道进行发送。
在一种可能的设计中,所述发送端在接收到所述第二控制报文后,所述方法还包括:所述发送端根据和式增加积式减少(additive-increase/multiplicative-decrease,AIMD)算法,通过所述控制通道发送第三控制报文,所述第三控制报文包括所述参数集。所述发送端在预设时长内未接收到接收端反馈的控制报文后,比如所述发送端在预设时长内未接收到所述第二控制报文,则所述发送端可以延迟发送所述第三控制报文,进而控制数据报文的发送节奏。上述方法中,在分组网络的链路发生拥塞的初期,所述发送端通过动态调整发送控制报文的节奏来控制数据报文的发送节奏,有助于降低链路发生拥塞的概率。
在一种可能的设计中,所述发送端通过所述控制通道发送第三控制报文之后,所述方法还包括:所述发送端接收所述接收端发送的第四控制报文,所述第四控制报文包括所述参数集;所述发送端在接收到包括所述参数集的所述第四控制报文之后,通过所述数据通道向所述接收端发送第二数据报文集,所述第二数据报文集在所述第一数据报文集所属的业务流中位于所述第一数据报文集之后,所述第二数据报文集包括C个数据报文,所述第二数据报文集中任一数据报文包括所述参数集。其中,所述第二数据报文集包括的C个数据报文不同于所述第一数据报文包括的C个数据报文。
在一种可能的设计中,所述第一控制报文还包括往返时间(round trip time,RTT)和序列号,所述RTT为所述发送端发送所述第一控制报文到所述发送端接收到所述第二控制报文为止的时长,所述序列号用于标识所述第一控制报文。上述方法中,所述发送端可根据所述第二控制报文包括的序列号与所述第一控制报文包括的序列是否一致,来判断网络中是否发生了丢包。此外,所述发送端还可在发送了所述第一控制报文之后开始计时,并在收到所述第二控制报文后停止计时。所述发送端可在计时的时长大于所述第一控制报文包括的RTT时,确定链路处于拥塞初期,进而可根据AIMD算法来控制所述第三控制报文的发送节奏,比如延迟发送所述第三控制报文,以免链路的拥塞情况进一步恶化。
在一种可能的设计中,所述C个数据报文的包长之和与所述第一控制报文的包长的比值为所述数据通道与所述控制通道间的带宽比。所述C个数据报文可以是所述第一数据报文集中的C个数据报文,所述C个数据报文还可以是所述第二数据报文集中的C个数据报文。所述第一控制报文的包长为生成所述第一控制报文所采用的预设的包长。
第二方面,提供了一种分组网络中控制流量的方法,所述方法包括:中间节点根据第一时长,发送第一控制队列中位于队首的控制报文,所述第一时长是基于承诺突发尺寸(committed burst size,CBS)与第一承诺信息速率(committed information rate,CIR)获得,所述中间节点用于在分组网络中向第一接收端发送来自第一发送端的报文;所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集,所述第一数据报文集包括C个数据报文,所述C为大于或等于1的整数。
上述方法中,中间节点根据第一时长来控制控制报文的发送节奏,进而实现了数据队列中任一数据报文集的发送周期为第一时长。上述方法中,在分组网络中任一数据报文集的发送周期为第一时长,而该第一时长是与链路状态相关的参数,这样在链路未发生拥塞时根据链路状态对数据报文的发送节奏进行预先的控制,能够有效地降低网络拥塞和传输延时。
在一种可能的设计中,所述方法还包括:所述中间节点接收来自所述第一发送端的第一控制报文,所述第一控制报文包括第一参数集;所述中间节点接收所述分组网络中第二发送端发送的第二控制报文,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述中间节点用于在所述分组网络中向第二接收端发送来自所述第二发送端的报文;所述中间节点基于接收到所述第一控制报文和所述第二控制报文的顺序,将所述第一控制报文和所述第二控制报文放入所述第一控制队列。其中,所述中间节点接收所述第二控制报文的时间点可先于所述中间节点发送所述第一控制队列中位于队首的控制报文,或者所述中间节点接收所述第二控制报文的同时所述中间点发送所述第一控制队列中位于队首的控制报文。
在一种可能的设计中,C个数据报文是来自于所述第一发送端的数据报文,所述来自于所述第一发送端的数据报文包括所述第一参数集。或者所述C个数据报文是来自于所述第二发送端的数据报文,所述来自于所述第二发送端的数据报文包括所述第二参数集。
在一种可能的设计中,在所述中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之后,所述方法还包括:所述中间节点在所述数据队列中已缓存的数据报文的包长之和大于或等于第一阈值且小于第二阈值时,根据所述CBS和第二CIR获得第二时长,所述第二CIR小于所述第一CIR,所述第一阈值大于所述C个数据报文的包长之和,所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值;所述中间节点根据所述第二时长,发送所述第一控制队列中位于队首的控制报文;所述中间节点根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。其中,所述第二时长大于所述第一时长。所述第二数据报文集包括的数据报文可以来自于所述第一发送端或者来自于所述第二发送端。上述方法中,所述中间节点在发现数据队列中已缓存的数据报文不能被及时发送之后,延长控制队列中控制报文的发送周期,以使得发送端延迟接收到接收端反馈的控制报文,进而使得发送端延迟发送C个数据报文。所述中间节点可利用延迟的时间发送已缓存的数据报文,比如所述中间节点可在延迟的时间内加快发送已缓存的数据报文,比如所述中间节点可在延迟的时间内无需控制报文的触发就发送已缓存的数据报文。
在一种可能的设计中,在所述中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之后,所述方法还包括:所述中间节点在所述数据队列处于空闲状态的时长达到第三阈值时,根据所述CBS和第三CIR获得第三时长,所述第三CIR大于所述第一CIR,所述第三阈值为第一RTT和第二RTT中的最大值,所述第一RTT为所述中间节点发送第一控制报文起直至所述中间节点接收到由所述第一控制报文触发发送的C个数据报文为止的时长,所述第二RTT为所述中间节点发送第二控制报文起直至所述中间节点接收到由所述第二控制报文触发发送的C个数据报文为止的时长;所述中间节点根据所述第三时长,发送所述第一控制队列中位于队首的控制报文;所述中间节点根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。其中,所述第三时长小于所述第一时长。所述第二数据报文集包括的数据报文可来自于所述第一发送端或者来自于所述第二发送端。所述空闲状态为所述数据队列中没有待发送的数据报文的状态。上述方法中,所述中间节点发现在第三阈值对应的时长范围内数据队列中没有待发送的数据报文,则会缩短控制队列中控制报文的发送周期,以使得发送端加快接收到接收端反馈的控制报文,进而使得发送端能够快速发送C个数据报文,有助于充分利用网络中的带宽资源。
在一种可能的设计中,在所述中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之后,所述方法还包括:所述中间节点在所述数据队列中已缓存的数据报文的包长之和大于或等于第二阈值时,发送所述数据队列中位于队首的第二数据报文集,且停止发送所述第一控制队列中位于队首的控制报文,所述第二数据报文集包括C个数据报文,所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值。上述方法中,所述中间节点发送数据队列中已缓存的数据报文已经达到缓存上限之后,通过暂停发送控制队列中的控制报文,以降低发送端发送的数据报文因中间节点的数据队列无法缓存被丢弃的情况的发生。
在一种可能的设计中,中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之前,所述方法还包括:所述中间节点接收来自所述第一发送端的第一控制报文,将所述第一控制报文放入所述第一控制队列,所述第一控制报文包括第一参数集;所述中间节点接收来自第二发送端的第二控制报文,将所述第二控制报文放入第二控制队列,所述第二控制队列的优先级低于所述第一控制队列的优先级,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述中间节点用于在所述分组网络中向第二接收端发送来自所述第二发送端的报文;中间节点根据第一时长,发送第一控制队列中位于队首的控制报文包括:所述中间节点根据所述第一控制队列的优先级和所述第二控制队列的优先级,在达到所述第一时长后,按照优先级调度策略发送所述第一控制队列或所述第二控制队列中的控制报文,所述优先级调度策略为优先级队列调度(priorityqueuing,PQ)或加权公平队列调度(weighted fair queuing,WFQ)。上述方法中,通过对不同的控制队列进行优先级设置,能够实现有低延迟需求的业务流的数据报文能够被优先发送,同时又不会使得对延迟需求要求不高的业务流也能够被发送。
在一种可能的设计中,所述第一控制报文包括第一参数集、第一RTT和C个序列号,所述第一RTT为所述中间节点发送第一控制报文起直至所述中间节点接收到由所述第一控制报文触发发送的C个数据报文为止的时长,所述中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之前,所述方法还包括:所述中间节点在所述数据队列存在空闲的且未被预留的存储空间,且所述中间节点的登记表存在未被占用的C个表项,则确定预留第一存储空间,所述第一存储空间用于缓存所述由所述第一控制报文触发发送的所述C个数据报文;所述中间节点根据所述第一参数集和所述C个序列号,生成C个标识,所述C个标识中的第i标识为所述第一参数集和所述C个序列号中的第i序列号生成的标识,所述i的取值范围为1至所述C中的整数;所述中间节点将所述第一RTT和所述C个标识写入所述未被占用的C个表项中,所述C个表项中的第i表项包括所述第一RTT和所述第i标识。上述方法中,所述中间节点通过发送控制报文之前就预留一定的存储空间,能够保证由已发送的控制报文触发发送的C个数据报文到达所述中间节点时不会因为无法缓存而被丢弃,有助于降低数据报文被丢弃的情况的发生。
其中,当所述中间节点具有动态调整控制报文发送周期的功能,且具有上述预留存储空间的功能时,所述中间节点的数据队列中已缓存的数据报文包长之和可以是已放入所述数据队列中的数据报文的包长之和,还可以是第一存储空间对应的数据报文的包长之和。所述中间节点的数据队列中处于空闲状态的时长指的是所述中间节点的数据队列中不包括预留的存储空间且未缓存数据报文的时长。
在一种可能的设计中,所述中间节点将所述第一RTT和所述C个标识写入所述未被占用的C个表项中之后,所述方法还包括:所述中间节点为所述C个表项中的第i表项设置第i定时器,所述第i定时器的时长为所述第一RTT;所述中间节点在所述第i定时器超时之前未接收到第i数据报文,则所述中间节点释放所述C个表项中的第i表项和所述第一存储空间中为所述第i数据报文预留的存储空间,所述第i数据报文为所述由所述第一控制报文触发发送的所述C个数据报文中的任一数据报文,所述第i数据报文包括所述第一参数集和所述第i序列号。上述方法中,所述中间节点通过利用第一RTT和第i定时器来监控第i数据报文到达的时间点,在预设时间内未能接收到所述第i数据报文,可以释放为所述第i数据报文预留的存储空间和相应的表项,以便能够合理和充分地利用缓存资源。
在一种可能的设计中,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集之前,所述方法还包括:所述中间节点根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;所述中间节点在确定所述登记表包括所述第j标识之后,将所述第j数据报文放入所述中间节点的数据队列中;所述中间节点释放所述登记表中包括所述第j标识的表项。上述方法中,所述中间节点在收到第j数据报文之后就可释放登记表中的相应表项,有利于更充分地利用表项资源。
在一种可能的设计中,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集之前,所述方法还包括:所述中间节点根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;所述中间节点在确定所述登记表不包括所述第j标识之后,判断所述数据队列中是否存在空闲的且未被预留的可容纳所述第j数据报文的存储空间;所述中间节点确定所述数据队列中存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,将所述第j数据报文放入所述中间节点的数据队列中。上述方法中,当所述中间节点接收到第j数据报文的时间点超出定时器的定时时长之后,所述第j数据报文对应的表项被释放,所述中间节点可根据所述数据队列中的缓存情况来确定是否将第j数据报文放入数据队列,以降低所述第j数据报文因为表项被释放而被丢弃。
在一种可能的设计中,所述方法还包括:所述中间节点确定所述数据队列中不存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,丢弃所述第j数据报文。
其中,对于上述中间节点而言,所述中间节点的任一控制队列中的控制报文可通过中间节点连接的控制通道来进行发送。所述中间节点的任一数据队列中的数据报文可通过所述中间节点连接的数据通道来进行发送。所述数据通道和所述控制通道可以承载在一条或多条物理链路上。所述数据通道和所述控制通道的带宽比为C个数据报文的包长之和与任一控制报文的包长之比。
第三方面,提供一种分组网络中的源设备,所述源设备包括能够实现上述第一方面或第一方面的任一种可能的设计所对应的功能的模块。其中,所述源设备可以是上述第一方面或第一方面的任一种可能的设计中提及的发送端。
第四方面,提供一种分组网络中的中间设备,所述中间设备包括能够实现上述第二方面或第二方面的任一种可能的设计所对应的功能的模块。其中,所述中间设备可以是上述第二方面或第二方面的任一种可能的设计中提及的中间节点。
第五方面,提供一种分组网络中的目的设备,所述目的设备包括接收模块、生成模块和发送模块。所述接收模块用于接收来自源设备的第一控制报文,所述第一控制报文包括参数集。所述生成模块用于根据所述第一控制报文生成第二控制报文,所述第二控制报文的源地址为所述第一控制报文的目的地址,所述第二控制报文的目的地址为所述第一控制报文的源地址。所述发送模块用于向所述源设备发送所述第二控制报文。其中,所述第二控制报文的源地址为所述目的设备的地址。所述第二控制报文的目的地址为所述源设备的地址。其中,所述目的设备可以是上述第一方面、第二方面或任一种可能的设计中提及的接收端。
第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质包括指令,当其在计算机上运行时,使得所述计算机执行上述第一方面或第一方面的任一种可能的设计所述的分组网络中控制流量的方法。
第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质包括指令,当其在计算机上运行时,使得所述计算机执行上述第二方面或第二方面的任一种可能的设计所述的分组网络中控制流量的方法。
第八方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第一方面或第一方面的任一种可能的设计所述的分组网络中控制流量的方法。
第九方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第二方面或第二方面的任一种可能的设计所述的分组网络中控制流量的方法。
第十方面,提供一种分组网络中的源设备,所述源设备包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述源设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述源设备执行上述第一方面或第一方面的任一种可能的设计所述的分组网络中控制流量的方法。其中,所述源设备可以是上述第一方面或第一方面的任一种可能的设计中提及的发送端。
第十一方面,提供一种分组网络中的中间设备,所述中间设备包括:处理器、存储器、总线和通信接口;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述中间设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述中间设备执行上述第二方面或第二方面的任一种可能的设计所述的分组网络中控制流量的方法。其中,所述中间设备可以是上述第二方面或第二方面的任一种可能的设计中提及的中间节点。
第十二方面,提供一种分组网络中控制流量的系统,所述系统包括上述第三方面或第十方面提供的源设备,以及上述第四方面或第十一方面提供的中间节点。在一种可能的设计中,所述系统还包括上述第五方面提供的目的设备。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍。
图1为本申请实施例一提供的场景示意图。
图2为本申请实施例一提供的分组网络中控制流量的方法流程示意图。
图3为本申请实施例二提供的场景示意图。
图4为本申请实施例二提供的分组网络中控制流量的方法流程示意图。
图5为本申请实施例三提供的场景示意图。
图6为本申请实施例三提供的分组网络中控制流量的方法流程示意图。
图7为本申请实施例四提供的场景示意图。
图8为本申请实施例四提供的分组网络中控制流量的方法流程示意图。
图9为本申请实施例五提供的场景示意图。
图10为本申请实施例六提供的状态机的状态切换示意图。
图11为本申请实施例七提供的源设备的结构示意图。
图12为本申请实施例八提供的转发设备的结构示意图。
图13为本申请实施例九提供的转发设备的机头示意图。
图14为本申请实施例十提供的源设备的结构示意图。
图15为本申请实施例十一提供的转发设备的结构示意图。
图16为本申请实施例十二提供的转发设备的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
实施例一
图1为本申请实施例一提供的场景示意图。本申请实施例一提供的场景中,S1表示作为发送端的源主机。S2表示作为接收端的目的主机。R1表示第一转发设备。R2表示第二转发设备。R3表示第三转发设备。S1与S2间的物理链路为第一物理链路。所述第一物理链路包括S1与R1间的链路link1、R1与R2间的链路link2、R2与R3间的链路link3、以及R3与S2间的链路link4。link1在S1的端口包括第一数据队列和第一控制队列。所述第一数据队列用于存放至少一个数据报文。在图1所示的场景中,所述第一数据队列包括数据报文A1、数据报文A2、数据报文A3和数据报文A4。所述第一控制队列用于存放至少一个控制报文。在图1所示的场景中,所述第一控制队列包括控制报文a1、控制报文a2、控制报文a3、控制报文a4和控制报文a5。link 3在R2的端口包括第二数据队列、第二控制队列和令牌桶。所述第二数据队列用于存放来自link 2的数据报文。所述第二控制队列用于存放来自link 2的控制报文。所述令牌桶用于对所述第二控制队列中的控制报文进行调度。R1和R3也可采用图1中R2的结构,即任一转发设备的出端口设置有数据队列、控制队列和令牌桶。R1和R3上设置的数据队列、控制队列和令牌桶的功能可参见R2的相关描述。link 3为S1与S2间的物理链路上有可能成为瓶颈链路的链路。所述瓶颈链路指业务流所流经的链路中可分得的最小带宽所在的链路。在图1所示的场景中,link 1、link 2、link 3和link 4为所述业务流流经的链路。其中,相比于link 1、link 2和link 4来说,所述业务流在link 3上可分得的带宽最小,link 3为所述瓶颈链路。不同业务流的瓶颈链路可能相同,也可以不同。在不同时间点,同一业务流的瓶颈链路可能不同。
图2为本申请实施例一提供的分组网络中控制流量的方法流程示意图。实施例一提供的方法可应用于图1所示的场景中。下面结合图1和图2,对本申请实施例一提供的分组网络中控制流量的方法进行说明。
S201,源主机根据待发送的第一数据报文集,生成第一控制报文。
举例说明,所述源主机根据待发送的第一数据报文集,生成第一控制报文包括:所述源主机根据待发送的第一数据报文集,获得所述第一控制报文的报文头;所述源主机根据所述第一控制报文的报文头和所述第一控制报文的包长,生成所述第一控制报文。其中,所述第一控制报文的包长可设置为M与N的商向下取整后的数值与1的和。所述M为路径最大传输单元(path maximum transmission unit,PMTU)。所述N为数据通道和控制通道之间的带宽比。所述第一控制报文的报文头与所述第一数据报文集中任意数据报文的报文头之间存在对应关系,即所述源主机可根据报文头中携带的参数集,确定所述第一控制报文所对应的数据报文。
在一种实现方式中,考虑到网络中可能发生丢包,所述源主机生成的与所述任意数据报文对应的控制报文的数量为L1,所述第一数据报文集包括的数据量为M的数据报文的数量为L2,所述L1大于或等于所述L2,所述L2为大于或等于1的整数。在另一种方式中,所述源主机可生成L2个与所述任意数据报文对应的控制报文,如果探测到网络中发生了丢包,可根据探测获得的丢包数量L3,再生成L3个与所述任意数据报文对应的控制报文,所述L3为大于或等于1的整数。所述第一数据报文集包括的数据量为M的数据报文均能够在其对应的控制报文的触发下,通过所述数据通道进行发送。
其中,所述待发送的第一数据报文集包括至少一个数据量为所述M的数据报文,比如所述待发送的第一数据报文集包括第一数据报文和第二数据报文。所述第一数据报文数据量为所述M。所述第二数据报文的数据量为所述M。以所述第一数据报文为例,所述第一控制报文的报文头和所述第一数据报文中的报文头包括相同的参数集。所述参数集包括一个或多个参数。比如,在IP网络中,所述第一控制报文的报文头和所述第一数据报文的报文头包括相同的五元组(5-tuple)。所述五元组中的一个参数为所述参数集中的一个参数。或者所述第一控制的报文头和所述第一数据报文的报文头包括相同的源地址和相同的目的地址。所述源地址包括源媒体接入控制(Media Access Control,MAC)地址和源互联网协议(Internet Protocol,IP)地址中的至少一个。所述目的地址包括目的MAC地址和目的IP地址中的至少一个。在光纤通道(fiber channel,FC)网络中,所述第一控制的报文头和所述第一数据报文的报文头包括相同的源地址和相同的目的地址。所述源地址为FC对应的源地址。所述目的地址为FC对应的目的地址。当所述第一数据报文的报文头还包括流标识,所述流标识用于标识所述第一数据报文集所属的业务流时,所述第一控制报文的报文头除了包括所述源地址和所述目的地址之外,还可包括所述流标识。
其中,所述源主机获得所述第一控制报文的包长的方法不局限于上述方式。所述源主机还可以将所述第一控制报文的包长设定为预设值,进而所述源主机可根据所述第一控制报文的包长和所述M确定所述N。所述数据通道用于传输数据报文。所述控制通道用于传输控制报文。所述数据通道和所述控制通道可承载于一条或多条物理链路。本申请实施例以所述数据通道和所述控制通道承载于第一物理链路为例进行说明。所述第一物理链路为所述源主机和所述目的主机之间的物理链路。所述数据通道和所述控制通道的实现方式主要有以下三种:第一种方式为逻辑分割,即所述数据通道体现为设备的出端口上的数据队列,所述控制通道体现为所述设备的出端口上的控制队列,所述设备为所述源主机、中间节点或所述目的主机。所述中间节点可以是网络中的转发设备,比如路由器、交换机、网关或GGSN。第二种方式为物理分割,即所述数据通道和所述控制通道可以为所述设备的出端口上的两个时分复用(time division multiplexing,TDM)通道。第三种方式为逻辑分割,即所述数据通道体现为设备的出端口上的数据队列,在所述源主机不缓存生成的控制报文的情况下,所述源主机的出端口上可不包括控制队列,有助于减小所述源主机上的内存开销。所述源主机不缓存生成的控制报文的情况指代的是所述源主机生成一个控制报文就进行发送动作。所述数据通道和所述控制通道承载于两条物理链路时,承载所述数据通道的物理链路与承载所述控制通道的物理链路的带宽比为所述N。
在图1所示的场景中,所述第一数据队列包括至少一个数据报文。在初始阶段,所述至少一个数据报文包括:数据报文A1、数据报文A2、数据报文A3和数据报文A4。所述数据报文A1是所述第一数据队列中位于队首的数据报文。所述数据报文A1为所述第一数据报文。所述数据报文A2为所述第二数据报文。所述第一控制队列包括至少一个控制报文。在所述初始阶段,所述至少一个控制报文包括控制报文a1、控制报文a2、控制报文a3、控制报文a4和控制报文a5。所述控制报文a1为所述第一控制报文。所述控制报文a1为所述第一控制队列中位于队首的控制报文。所述初始阶段为S1未发送任一数据报文和任一控制报文的阶段。在IP网络中,所述数据报文A1、所述数据报文A2、所述数据报文A3和所述数据报文A4具有相同的五元组(5-tuple)。所述数据报文A1、所述数据报文A2、所述数据报文A3和所述数据报文A4属于同一业务流。S1可根据任一数据报文生成与之对应的控制报文。所述任一控制报文的包长为Ls,所述任一数据报文的包长为Ld。所述控制通道带宽分配比例的计算公式可表示为
Figure BDA0002879469910000101
所述数据通道带宽分配比例的计算公式可表示为
Figure BDA0002879469910000102
上述公式中,C表示所述源主机每接收到一个来自所述目的主机的控制报文就向所述目的主机发送C个数据包报文。C的取值为大于或等于1的整数。在Ls为84个字节,Ld为1596个字节,且C的取值为1的情况下,S1可根据根据上述计算公式获知:所述数据通道的带宽占所述第一物理链路的带宽的比例为1596/(84+1596)=95%,所述控制通道的带宽占所述第一物理链路的带宽的比例为84/(84+1596)=5%。基于上述带宽的比例,以带宽为10G的第一物理链路为例,所述数据通道的带宽为9.5Gbps,所述控制通道的带宽为500Mbps。其中,本申请实施例中包长和数据量之间可相互替换。比如一个报文的包长为84个字节表示该报文所占的数据量为84个字节。
在一种实现方式中,所述源主机可在生成的所述第一控制报文中添加一标识,所述标识用于标识其所在的报文为控制报文。接收到所述第一控制报文的中间节点和目的主机能够根据所述标识区分所述第一控制报文和所述任一数据报文。例如,在IP网络中,所述标识可通过所述第一控制报文的报文头中的服务类型(type of service,TOS)字段或差分服务码点(differentiated services code point,DSCP)字段中的某个比特或某几个比特来实现。
S202,所述源主机通过控制通道,向目的主机发送所述第一控制报文。
举例说明,所述源主机发送的所述第一控制报文会经过源主机和所述目的主机之间的中间节点,逐跳发送至所述目的主机。本申请实施例以S202中的第一控制报文是所述源主机至所述目的主机之间发送的首个控制报文为例,对分组网络中控制流量的方法进行说明。在图1所示的场景中,S1可通过连接link 1的端口发送所述控制报文a1。所述控制报文a1会经过link 1->R1->link 2发送至R2。R1的结构可参见R2的相关描述。R1对所述控制报文a1的处理方式可参见R2对所述控制报文a1的处理方式。S1在发送所述控制报文a1的阶段,所述第一数据队列包括:所述数据报文A1、所述数据报文A2、所述数据报文A3和所述数据报文A4。所述控制报文a1被发送后,所述控制报文a2位于所述第一控制队列的队首。
S203,中间节点将接收到的所述第一控制报文,放入位于所述中间节点的控制队列。
举例说明,所述中间节点接收到的所述第一控制报文为S202中提及的首个控制报文。在位于所述中间节点的控制队列为空的情况下,所述中间节点将所述第一控制报文放入位于所述中间节点的控制队列的队首。本申请实施例中的中间节点的出端口包括数据队列和控制队列。在图1所示的场景中,S202和S203中提及的第一控制报文为所述控制报文a1。实施例一中的中间节点为R2。所述控制报文a1被R2放置于所述第二控制队列中的队首。所述第二数据队列未缓存任一数据报文。R2后续通过link 2接收到的控制报文,可按照接收顺序放入所述第二控制队列。
举例说明,当位于所述中间节点的控制队列没有溢出,则所述中间节点将所述第一控制报文放入位于所述中间节点的控制队列的队尾。所述控制队列没有溢出表示位于所述中间节点的控制队列中存在存储空间来缓存接收到的控制报文。当位于所述中间节点的控制队列存在溢出,则所述中间节点丢弃所述第一控制报文。所述控制队列存在溢出表示位于所述中间节点的控制队列中没有存储空间来缓存接收到的控制报文。鉴于所述中间节点的控制队列中还缓存有其他控制报文,所述中间节点丢弃所述第一控制报文的行为不会影响本申请实施例中的任一数据报文的传输。
S204,所述中间节点按照预设时长,发送所述第一控制报文。
举例说明,所述第一控制报文位于所述中间节点的控制队列的队首。所述预设时长为承诺突发尺寸(committed burst size,CBS)与承诺信息速率(committedinformation rate,CIR)的商。所述CBS的取值可以是所述第一控制报文的包长。所述CIR的取值可以是所述控制通道占用的带宽。所述中间节点可以通过其出端口上设置的令牌桶,读取位于所述中间节点的控制队列中位于队首的第一控制报文。所述中间节点的出端口上设置的令牌桶按照预设时长发送所读取的第一控制报文。在所述第一控制报文被发送的情况下,所述中间节点发送所述中间节点的数据队列中的C个数据报文。所述C为大于或等于1的整数。所述C个数据报文为以所述中间节点的数据队列的队首为起始位置所获得的C个数据报文。由于所述中间节点的控制队列中位于队首的第一控制报文是S202中提及的所述源主机发送的首个控制报文,所述中间节点发送所述第一控制报文时所述中间节点的数据队列中还未缓存所述源主机发送的数据报文。该步骤中所述第一控制报文的发送不会导致所述中间节点发送任何数据报文。当CBS为84个字节,CIR的值为500Mbps时,所述预设时长为1.344us。具体的,所述预设时长可为84个字节乘以8除以500Mbps之后获得的数值。在图1所示的场景中,R2上的令牌桶每隔1.344us发送所述第二控制队列中的一个控制报文。在所述第二控制队列的队首为控制报文a1的情况下,在达到1.344us时,R2的令牌桶发送所述控制报文a1。
S205,所述目的主机将生成的第二控制报文发送至所述源主机。
举例说明,所述目的主机接收到来自所述中间节点的第一控制报文。所述目的主机可将所述第一控制报文的目的地址和源地址进行交换,获得第二控制报文。所述第一控制报文的目的地址为所述第二控制报文的源地址。所述第一控制报文的源地址为所述第二控制报文的目的地址。所述第二控制报文的目的地址为所述源主机的地址。所述第二控制报文的源地址为所述目的主机的地址。其中,所述目的主机可采用第二物理链路来发送所述第二控制报文。所述第二物理链路为所述第二控制报文从所述目的主机到达所述源主机所经过的物理链路。所述第二物理链路可以不同于所述第一物理链路。若所述第一物理链路未丢包,则所述目的主机接收到的第一控制报文为S202中所述源主机发送的首个控制报文。
在一种实现方式中,若S202中所述源主机生成的第一控制报文还包括第一序列号,则所述目的主机在S205发送的第二控制报文还包括所述第一序列号。所述S205的第二控制报文为所述S202的第一控制报文经目的地址和源地址交换后获得的控制报文。
在一种实现方式中,S202中所述源主机生成的第一控制报文还包括第一明确拥塞通告(explicit congestion notification,ECN)标识,所述第一ECN标识用于表示链路未出现拥塞,例如所述第一ECN标识的值为0。在所述第一控制报文经所述第一物理链路转发的过程中,若某个中间节点的出端口出现报文积累,则所述第一ECN标识可被替换为第二ECN标识。所述第二ECN标识用于标识链路可能发生拥塞,例如所述第二ECN标识的值为1。所述目的主机根据所述第一控制报文中的第二ECN标识,确定所述第一物理链路的控制通道可能存在拥塞。S205中的第二控制报文还包括所述第二ECN标识。
在图1所示的场景中,R2发送的控制报文a1经link 3->R3->link 4发送至S2。R3的结构和功能可参见R2的相关描述。R3对所述控制报文a1的处理方式可参见R2对所述控制报文a1的处理方式。S2在接收到所述控制报文a1后,可对所述控制报文a1的目的地址和源地址进行交换,以获得控制报文a1’。所述控制报文a1’的目的地址为所述控制报文a1的源地址。所述控制报文a1’的源地址为所述控制报文a1的目的地址。在一种实现方式中,若所述控制报文a1还包括所述第一序列号,则所述控制报文a1’还包括所述第一序列号。在一种实现方式中,若所述控制报文a1还包括所述第一ECN标识,则所述控制报文a1’还包括所述第一ECN标识。若所述控制报文a1还包括所述第二ECN标识,则所述控制报文a1’还包括所述第二ECN标识。所述控制报文a1’的传输路径可以不同于所述控制报文a1的传输路径。
S206,所述源主机根据所述第二控制报文,通过数据通道向所述目的主机发送所述第一数据集中的C个数据报文。
举例说明,所述C个数据报文为所述第一数据集中以队首为起始位置的C个数据报文。当所述C为1时,所述源主机通过所述数据通道发送的数据报文为第一数据报文。所述第一数据报文为S201中所述待发送的第一数据报文集中数据量为M的数据报文。所述第一数据报文位于所述源主机的数据队列中的队首。所述源主机确定所述第二控制报文对应于所述第一数据报文集中的任意一个数据报文,比如所述源主机确定所述第二控制报文的报文头与所述第一数据报文的报文头包括相同的参数集,则所述源主机发送所述第一数据报文。当所述C为1时,在所述第一数据报文被发送之后,所述源主机的数据队列中位于队首的数据报文为所述第二数据报文。当所述C为2时,所述源主机根据所述第二控制报文,发送所述第一数据报文和所述第二数据报文。所述C大于2时,所述源主机对其数据队列中的数据报文的处理方式可参见C为2时所述源主机所采用的处理方式。
在图1所示的场景中,S1接收到来自S2的控制报文a1’。S1确定所述控制报文a1’与所述第一数据队列中的数据报文对应。在一种实现方式中,S1可通过所述控制报文a1’的报文头与所述数据报文A1的报文头包括相同的参数集,确定所述控制报文a1’与所述第一数据队列中的数据报文对应。在另一种方式中,S1交换了所述控制报文a1’的源地址和目的地址之后,当所述控制报文a1’的源地址与所述第一数据队列中的数据报文的源地址相同,且所述控制报文a1’的目的地址与所述第一数据队列中的数据报文的目的地址相同,S1确定所述控制报文a1’与所述第一数据队列中的数据报文对应。如果C的取值为1,则S1通过连接link 1的端口(出端口)发送所述数据报文A1。所述数据报文A1被发送后,所述数据报文A2成为所述第一数据队列中队首的数据报文。所述数据报文A1会经过link 1->R1->link 2发送至R2。R1可通过link 1接收所述数据报文A1,并放入R1上的数据队列。如果C的取值为2,则S1通过出端口发送所述数据报文A1和数据报文A2。如果C的取值为4,则S1通过出端口发送所述数据报文A1、数据报文A2、数据报文A3和数据报文A4。所述数据报文A2、所述数据报文A3和所述数据报文A4在第一物理链路上的传输方法可参见所述数据报文A1在所述第一物理链路上的传输方法。
本申请实施例提供的方法中,所述源主机可通过数据量较小的所述第一控制报文,对所述第一物理链路的拥塞状况进行探测。由于控制通道所占的带宽较小,所述第一控制报文在所述第一物理链路的传输并不会影响任一数据报文的正常传输。本实施例提供的方法可在数据报文传输的过程中,利用其对应的控制报文获得的探测结果,对所述数据报文的发送节奏进行控制,以免发送所述数据报文的过程中出现拥塞。
S207,所述中间节点将接收到的所述C个数据报文,放入位于所述中间节点的数据队列。
举例说明,所述中间节点接收到的所述C个数据报文为S206中提及的所述源主机的数据队列中以队首为起始位置的C个数据报文。在位于所述中间节点的数据队列为空的情况下,所述中间节点将所述C个数据报文放入位于所述中间节点的数据队列。在图1所示的场景中,当C的取值为1时,S206和S207中提及的C个数据报文为所述第一数据报文,即图1中的数据报文A1。所述数据报文A1为R2接收到的首个数据报文。如图1的第二数据队列中的虚线所示,所述数据报文A1被放置于所述第二数据队列的队首。R2后续通过link 2接收到的数据报文可按照接收顺序放入所述第二数据队列。当C的取值为2时,S206和S207中提及的C个数据报文为图1中的数据报文A1和数据报文A2。R2将所述数据报文A1放入所述第二数据队列的队首,将所述数据报文A2放入所述第二数据队列中紧邻所述数据报文A1的位置。
本申请实施例提供的方法中,S201至S207对应的步骤可按照标号的顺序执行。
S208,所述源主机通过控制通道,向所述目的主机发送队首的第三控制报文。
举例说明,所述第三控制报文为所述源主机生成的第二个控制报文。所述源主机生成所述第一控制报文后,根据所述第一数据集中的任一数据报文生成第三控制报文。所述源主机可采用S201的方法生成所述第三控制报文。在所述源主机生成的控制报文不包括序列号的情况下,所述第三控制报文和所述第一控制报文为在不同时间点发送的相同的控制报文。在所述源主机生成的控制报文包括序列号的情况下,所述第三控制报文所包括的序列号与所述第一控制报文所包括的序列号不相同。在图1所示的场景中,所述控制报文a2为所述第三控制报文。S1可在发送了所述控制报文a1之后发送所述控制报文a2。所述控制报文a2可通过link 1->R1->link 2被发送至R2,具体发送方式可参见所述控制报文a1的发送方式。所述控制报文a2被发送后,所述控制报文a3位于所述第一控制队列的队首。
在一种实现方式中,所述源主机可在发送了所述第一控制报文之后,匀速地发送所述第一控制队列中的控制报文。所述匀速的发送为以相同的间隔时间发送所述第一控制队列中的控制报文,所述间隔时间的时长为t。或者所述匀速的发送为周期性地发送所述第一控制队列中的控制报文,所述周期的时长为t。所述t可以采用所述预设时长,比如t的取值可以为1.344us。若所述第三控制报文为所述第一控制报文发送后所述第一控制队列中位于队首的报文,则所述第三控制报文的发送时刻与所述第一控制报文的发送时刻间的时长为t。比如,所述源主机可在执行了S201之后开始计时,在达到时长t对应的时间点时执行S208。
在另一种实现方式中,所述源主机可根据通常的TCP中采用的加性增加乘性减少(additive-increase multiplicative-decrease,AIMD)算法发送所述第一控制队列中的控制报文。当S208在S202和S205之间执行,根据AIMD算法,所述源主机无需等待所述目的主机反馈的控制报文,所述源主机可线性加速发送所述第三控制报文及其控制队列中包括的后续控制报文。当S208在S205之后执行,所述源主机确定未发生控制报文的丢包,所述源主机可线性加速发送所述第三控制报文及其控制队列中包括的后续控制报文。这种实现方式能够保证网络带宽分配的公平性。
S209,所述中间节点将接收到的所述第三控制报文,放入位于所述中间节点的控制队列。
举例说明,S209可在S203之后执行。所述中间节点对所述第三控制报文的处理方式可参见S203中所述中间节点对所述第一控制报文的处理方式。当S208在S202和S205之间执行,所述第三控制报文可早于所述第一数据报文到达所述中间节点。当S208在S205之后执行,所述第三控制报文和所述第一数据报文可同时到达所述中间节点,或者所述第三控制报文可早于所述第一数据报文到达所述中间节点。在图1所示的场景中,R2将从link 2获得的控制报文a2放入所述第二控制队列,如图1中所述第二控制队列的虚线。随着S1发送后续生成的控制报文,所述第二控制队列中的控制报文可能会出现报文积累(图1中未示出)。
S210,所述中间节点按照预设时长,发送所述第三控制报文。
举例说明,所述中间节点可采用S204的方法发送所述第三控制报文。在图1所示的场景中,R2的令牌桶从所述第二控制队列中读取所述控制报文a2,且计时达到1.344us时,通过连接link 3的端口发送所述控制报文a2。
S211,所述中间节点根据所述第三控制报文,通过数据通道发送C个数据报文。
举例说明,所述中间节点所发送的C个数据报文是其数据队列中以队首为起始位置的C个数据报文。S211在S210之后执行,即所述中间节点的控制队列中位于队首的控制报文被发送后,所述中间节点发送其数据队列中的C个数据报文。当C的取值为1时,根据S207可知,所述中间节点的数据队列中至少包括所述第一数据报文,且所述第一数据报文位于所述中间节点的数据队列的队首。所述中间节点发送所述第三控制报文的动作,触发所述中间节点发送所述第一数据报文。
在图1所示的场景中,R2接收到的数据报文A1位于所述第二数据队列的队首。当C的取值为1时,R2在发送了所述控制报文a2后,通过link 3发送所述数据报文A1。所述数据报文A1可经过link 3->R3->link4发送至S2。当C的取值为2时,R2在发送了所述控制报文a2后,通过link 3发送所述第二数据队列的队首起的2个数据报文,比如所述数据报文A1和所述数据报文A2。所述数据报文A1和所述数据报文A2可经过link3->R3->link4发送至S2。其中,R3可采用R2的方式发送接收到的数据报文。
S212,所述目的主机将生成的第四控制报文发送至所述源主机。
举例说明,所述目的主机根据所述第三控制报文生成所述第四控制报文,具体生成方法可参见S205中生成所述第二控制报文的方法。S212可在S210之后执行,即S212可先于S211执行,也可晚于S211执行。在图1所示的场景中,S2可采用对所述控制报文a1的处理方式,对接收到的控制报文a2进行处理,获得控制报文a2’(图1中未示出)。
举例说明,所述源主机在接收到所述第四控制报文后,可参照S206的方法发送所述源主机的数据队列中以队首为起始位置的C个数据报文。所述源主机可参照上述方法对其数据队列中的后续数据报文以及其生成的控制报文进行发送。
在一种实现方式中,当所述第一物理链路上未发生拥塞,所述目的主机接收到所述源主机发送的第一控制报文,所述第二控制报文是根据所述第一控制报文生成的控制报文。本申请实施例提供的方法中,S208、S209、S210和S212在S205之后执行。鉴于本申请实施例中所述控制通道和所述数据通道承载于所述第一物理链路,S208和S209的执行并不影响S206和S207的执行,比如S208可以先于S206执行或与S206同时执行,S209可以先于S207执行或与S207同时执行。在这种实现方式中,所述源主机会在接收到所述第二控制报文之后,接收到所述第四控制报文。所述源主机接收到所述第四控制报文的时刻与接收到所述第二控制报文的时刻间的时长为S208中的时长t。所述源主机可在接收到所述第四控制报文后,通过数据通道发送所述第一数据报文集中的C个数据报文。当C的取值为1时,所述源主机在接收到所述第四控制报文后发送的数据报文为所述第二数据报文。所述第二数据报文为所述第一数据报文被发送后,在所述源主机的数据队列中位于队首的数据报文。所述第二数据报文在所述第一物理链路上的传输方法可参照所述第一数据报文在所述第一物理链路上的传输方法。
在另一种实现方式中,当所述第一物理链路上的控制通道发生了拥塞,所述目的主机未能接收到所述源主机发送的所述第一控制报文。本申请实施例提供的方法中,S208、S209、S210和S212在S204与S206之间执行,S205和S212合并成一个步骤S205’(图2中未示出)。S205’中的第二控制报文所携带的参数集为S212中所述第四控制报文携带的参数集。换句话说,网络中发生了丢包,且所述第一控制报文被丢弃,所述目的主机根据所述第三控制报文生成S205’中的第二控制报文。如果所述源主机生成的控制报文还包括序列号,所述第一控制报文包括的序列号为第一序列号,所述第三控制报文包括的序列号为第二序列号。在该实现方式中,S205’中的第二控制报文包括的序列号为所述第二序列号。所述第二序列号与所述第一序列号不相等。相应的,所述源主机在接收到所述第二控制报文后,确定所述第一控制报文被丢弃,进而获知所述第一物理链路的控制通道可能存在拥塞。所述源主机可根据所述AIMD算法乘性降低待发送的控制报文的发送速率。在图1所示的场景中,如果所述控制报文a1在发送至S2之前被丢弃,而所述控制报文a2被传输至S2,则S1在接收到所述控制报文a2’之后发送与之对应的C个数据报文。在一种方式中,所述控制报文a2’包括的序列号不同于所述控制报文a1包括的序列号。S1可根据所述控制报文a2’包括的序列号,确定所述控制报文a1被丢弃。S1可根据所述AIMD算法延长发送所述控制报文a3的间隔时间。在另一种方式中,S1可根据所述控制报文a2’包括的所述第二ECN标识,确定所述第一物理链路的控制通道可能存在拥塞。S1可根据所述AIMD算法延长发送所述控制报文a3的间隔时间。
除了上述两种方式之外,在所述源主机生成的控制报文不包括序列号和ECN标识的情况下,所述源主机可在发送了一个控制报文之后启动定时器,且在定时器超时后确定所述第一物理链路的控制通道可能存在拥塞。本申请实施例中所述源主机还可采用通常的判断拥塞的方法来确定所述第一物理物理链路的控制通道可能存在拥塞,在此不再逐一举例说明。本申请实施例一提供的方法中,通过控制通道传输的控制报文被用于探测第一物理链路的拥塞状况。所述源主机在接收到来自所述目的主机的任意一个控制报文后,通过数据通道发送与所述控制报文对应的数据报文。所述控制通道与所述数据通道承载在所述第一物理链路上的结构,使得所述控制报文的传输并不会影响所述数据报文的传输,且所述控制报文的丢包只会延长所述数据报文间的发送间隔时间,有助于消除链路的数据通道上的拥塞状态,无需进行TCP传输中的丢包重传操作。所述中间节点根据预设时长发送其控制队列中的控制报文,使得所述源主机以所述中间节点发送控制报文的节奏(pacing)来发送后续的数据报文。
实施例二
图3为本申请实施例二提供的场景示意图。本申请实施例二提供的场景中,S1表示作为发送端的第一主机。S2表示作为接收端的第二主机。S3表示作为发送端的第三主机。S4表示作为接收端的第四主机。R1表示第一转发设备,R2表示第二转发设备,R3表示第三转发设备。S1与S2间的物理链路为第一物理链路。所述第一物理链路包括S1与R1间的链路link1、R1与R2间的链路link2、R2与R3间的链路link3、以及R3与S2间的链路link4。S3与S4间的物理链路为第二物理链路。所述第二物理链路包括S3与R2间的链路link5、R2与R3间的链路link3、R3与R4间的链路link6、以及R4与S4间的链路link 7。其中,R2与R3间的链路link3是所述第一物理链路和所述第二物理链路重合的链路。link1在S1的端口包括第一数据队列和第一控制队列。若S1无需缓存生成的控制报文,则link1在S1的端口包括所述第一数据队列。所述第一数据队列用于存放至少一个数据报文A。所述至少一个数据报文A包括数据报文A1、数据报文A2、数据报文A3和数据报文A4。所述第一控制队列用于存放至少一个控制报文a。所述至少一个控制报文a包括控制报文a1、控制报文a2、控制报文a3、控制报文a4和控制报文a5。link 5在S3的端口包括第三数据队列和第三控制队列。若S3无需缓存生成的控制报文,则link5在S3的端口包括所述第三数据队列。所述第三数据队列用于存放至少一个数据报文B。所述至少一个数据报文B包括数据报文B1、数据报文B2、数据报文B3和数据报文B4。所述第三控制队列用于存放至少一个控制报文b。所述至少一个控制报文b包括控制报文b1、控制报文b2、控制报文b3、控制报文b4和控制报文b5。link 3在R2的端口包括第二数据队列、第二控制队列和令牌桶。所述第二数据队列用于存放来自link 2的数据报文A和来自link 5的数据报文B。所述第二控制队列用于存放来自link 2的控制报文a和来自link5的控制报文b。所述令牌桶用于对所述第二控制队列中的控制报文进行调度。R1、R3和R4也可采用图2中R2的结构,即任一转发设备的出端口设置有数据队列、控制队列和令牌桶。R1、R3和R4上设置的数据队列、控制队列和令牌桶的功能可参见R2的相应内容。link 3为所述第一物理链路和所述第二物理链路上有可能成为瓶颈链路的链路。
图4为本申请实施例二提供的分组网络中控制流量的方法流程示意图。实施例二提供的方法可应用到图3所示的场景中。实施例二提供的方法中,第一主机对第一数据报文集和任一控制报文的处理方法可参见实施例一中源主机采用的方法。第三主机对第二数据报文集和任一控制报文的处理方法可参见实施例一中源主机采用的方法。第二主机对接收到的控制报文的处理方法可参见实施例一中目的主机采用的方法。第四主机对接收到的控制报文的处理方法可参见实施例二中目的主机采用的方法。实施例二中的位于任一物理链路上的数据通道和控制通道间的带宽比与实施例一相同。下面结合图3和图4,对本申请实施例二提供的分组网络中控制流量的方法进行说明。
S401,第一主机根据待发送的第一数据报文集,生成第一控制报文。
S401中所述第一主机生成所述第一控制报文的方法可参见S201中所述源主机采用的方法。所述第一数据报文集包括第一数据报文和第二数据报文。在图3所示的场景中,S1为图1场景中的S1。控制报文a1为所述第一控制报文。数据报文A1为所述第一数据报文。在S1的初始阶段,所述控制报文a1位于第一控制队列的队首。所述数据报文A1位于第一数据队列的队首。所述S1的初始阶段为S1未发送任一数据报文和任一控制报文的阶段。
S402,所述第一主机通过第一控制通道,向第二主机发送所述第一控制报文。
S402中所述第一主机发送所述第一控制报文的方法可参见S202中所述源主机采用的方法。实施例二中,所述第一主机为第一物理链路的发送端。所述第二主机为所述第一物理链路的接收端。所述第一物理链路为所述第一主机与所述第二主机之间的物理链路。在图3所示的场景中,S2可为图1所示场景中的S2。
实施例二中,S403至S404的执行顺序不局限于上述顺序。在一种实现方式中,S403可与S401同时执行,S404晚于S402执行。在另一种实现方式中,S403可先于S401执行,S404晚于S402执行。
S403,第三主机根据待发送的第二数据报文集,生成第二控制报文。
为了与所述第一数据报文集包括的数据报文进行区分,所述第二数据报文集包括第三数据报文和第四数据报文。所述第三数据报文是所述第二数据报文集的首个数据报文。所述第三数据报文位于所述第三主机上的数据队列的队首。所述第四数据报文是所述第二数据报文集中的第二个数据报文。所述第四数据报文在所述第三主机的数据队列中紧邻所述第三数据报文。所述第三主机生成第二控制报文的方法可参见实施例一中S201的相应内容。在IP网络中,所述第二数据报文集中任意两个数据报文包括相同的五元组。所述第二数据报文集与所述第一数据报文集属于不同的业务流。
在一种实现方式中,所述第三主机可在生成的所述第二控制报文中添加标识。所述标识用于标识其所在的报文为控制报文。这样,接收到所述第二控制报文的中间节点和目的主机能够根据所述标识区分所述第二控制报文和所述第二数据报文集中的任一数据报文。在IP网络中,所述标识可通过所述第二控制报文的报文头中的TOS字段或DSCP字段中的某个比特或某几个比特来实现。
在图3所示的场景中,所述第二数据报文集包括数据报文B1、数据报文B2、数据报文B3和数据报文B4。在S3的初始阶段,所述第三数据队列包括所述数据报文B1、所述数据报文B2、所述数据报文B3和所述数据报文B4。所述第三控制队列包括控制报文b1、控制报文b2、控制报文b3、控制报文b4和控制报文b5。所述S3的初始阶段为S3未发送任一数据报文和任一控制报文的阶段。所述数据报文B1是所述第三数据队列中位于队首的数据报文。所述数据报文B1为所述第三数据报文。所述数据报文B2为所述第四数据报文。所述控制报文b1为所述第二控制报文。所述控制报文b1为所述第三控制队列中位于队首的控制报文。S3上数据通道与控制通道之间的带宽比的计算方式与实施例一相同。
S404,所述第三主机通过第二控制通道,向第四主机发送所述第二控制报文。
实施例二中,所述第三主机为第二物理链路的发送端。所述第四主机为所述第二物理链路的接收端。所述第二物理链路为所述第三主机与所述第四主机之间的物理链路。所述第三主机发送的所述第二控制报文会经过所述第二物理链路上的中间节点,逐跳发送至所述第四主机。在图3所示的场景中,S3可通过连接link 5的端口(出端口)发送所述控制报文b1。所述控制报文b1会经过link 5发送至R2。S3在发送所述控制报文b1的阶段,所述第三数据队列包括:所述数据报文B1、所述数据报文B2、所述数据报文B3和所述数据报文B4。所述控制报文b1被发送后,所述控制报文b2位于所述第三控制队列的队首。
S405,中间节点将接收到的控制报文,放入位于所述中间节点的控制队列。
举例说明,所述中间节点接收到的控制报文包括所述第一控制报文和所述第二控制报文。所述第一控制报文是来自所述第一主机的首个控制报文。所述第二控制报文是来自所述第三主机的首个控制报文。所述中间节点根据所述第一控制报文和所述第二控制报文到达的顺序,依次放入所述中间节点的控制队列。实施例二中,所述中间节点是所述第一物理链路和第二物理链路重合的首个节点,如图3中的R2。所述第一物理链路和所述第二物理链路所重合的链路可包括瓶颈链路。在图3所示的场景中,R2为所述瓶颈链路的上游节点。R3可采用图3中R2的结构。R1和R4可采用图1中的R2的结构。在图3所示的场景中,所述控制报文a1位于所述第二控制队列的队首。所述控制报文b1在所述第二控制队列中紧邻所述控制报文a1。R2后续通过link 5和link 2接收到的控制报文,均会根据接收到的顺序放入所述第二控制队列。
S406,所述中间节点根据第一时长,发送所述中间节点的控制队列中的控制报文。
举例说明,所述第一时长的计算方法可参见实施例一中预设时长的计算方法。所述第一控制报文位于所述中间节点的控制队列的队首。所述第二控制报文在所述中间节点的控制队列中紧邻所述第一控制报文。所述中间节点的出端口上设置的令牌桶按照所述第一时长发送所述中间节点上控制队列中的控制报文。此时,所述中间节点的数据队列中还未缓存任何数据报文,因此,所述中间节点不会发送任何数据报文。当CBS为84个字节,CIR的值为500Mbps,所述第一时长为1.344us。在图3所示的场景中,R2上的令牌桶每隔1.344us发送一个所述第二控制队列中的控制报文。所述控制报文a1和所述控制报文b1的发送间隔时长为1.344us。这样,在分组网络中,后续由所述控制报文a1触发发送的C1个数据报文与由所述控制报文b1触发发送的C2个数据报文的发送步调一致,使得分组网络中的链路时延主要为转发时延,降低了缓存产生的时延。
举例说明,第一往返时间(round trip time,RTT)为所述中间节点(瓶颈链路的上游节点)通过所述第一物理链路发送控制报文开始,到所述中间节点通过所述第一物理链路接收到由所述控制报文触发的数据报文为止的时长。经过所述第一物理链路发送的控制报文为所述第一主机生成的控制报文。通过所述第一物理链路接收到的数据报文为所述第一主机缓存的数据报文(第一数据报文集中的数据报文)。第二RTT为所述中间节点(瓶颈链路的上游节点)通过所述第二物理链路发送控制报文开始,到所述中间节点通过所述第二物理链路接收到由所述控制报文触发的数据报文为止的时长。经过所述第二物理链路发送的控制报文为所述第三主机生成的控制报文。通过所述第二物理链路接收到的数据报文为所述第三主机缓存的数据报文(第二数据报文集中的数据报文)。
当所述第一RTT与所述第二RTT相同时,由所述控制报文a1触发的数据报文和由所述控制报文b1触发的数据报文在全网的发送间隔时间为1.344us。由所述控制报文a1触发的数据报文A1和由所述控制报文b1触发的数据报文B1到达R2时的时间间隔大于或等于1.344us,从而不会发生时序冲突。
S407,所述第二主机将生成的第三控制报文发送至所述第一主机。
所述第二主机生成第三控制报文的方法可参见实施例一中目的主机生成第二控制报文的方法。所述第二主机发送所述第三控制报文的方法可参见实施例一中目的主机发送第二控制报文的方法。在图3所示的场景中,控制报文a1’为所述第三控制报文。S2生成和发送所述控制报文a1’的方法可参见实施例一中S2生成和发送控制报文a1’的方法。
S408,所述第四主机将生成的第四控制报文发送至所述第三主机。
所述第四主机生成第四控制报文的方法可参见实施例一中目的主机生成第二控制报文的方法。所述第四主机发送所述第四控制报文的方法可参见实施例一中目的主机发送第二控制报文的方法。在图3所示的场景中,控制报文b1’为所述第四控制报文。S4通过link7接收到所述控制报文b1。R4处理所述控制报文b1的方法可参见实施例一中R2处理控制报文a1的方法。S4生成所述控制报文b1’的方法可参见实施例一中S2生成控制报文a1’的方法。
S409,所述第一主机根据所述第三控制报文,通过第一数据通道向所述第二主机发送C1个数据报文。
举例说明,S409的具体方法可参见实施例一中S206的相应内容。所述C1的取值可以与实施例一中的C相同。在图3所示的场景中,S1接收到来自S2的控制报文a1’。S1确定所述控制报文a1’与所述第一数据队列中的数据报文对应。S1可采用实施例一中S1所采用的方法确定所述控制报文a1’与所述第一数据队列中的数据报文对应。S1通过连接link 1的端口发送所述第一数据队列中的C1个数据报文。当C1的取值为1时,S1通过link1发送所述数据报文A1。所述数据报文A1为所述第一数据报文。所述数据报文A1被发送后,所述数据报文A2将位于所述第一数据队列的队首。所述数据报文A1会经过link1->R1->link 2发送至R2。当C1的取值为3时,S1通过link 1发送所述数据报文A1、数据报文A2和数据报文A3。所述数据报文A1、所述数据报文A2和所述数据报文A3可经过link 1->R1->link 2发送至R2。所述数据报文A1、所述数据报文A2和所述数据报文A3被发送后,数据报文A4将位于所述第一数据队中的队首。
S410,所述第三主机根据所述第四控制报文,通过第二数据通道向所述第四主机发送C2个数据报文。
举例说明,S410的具体方法可参见实施例一的S206中源主机采用的方法。所述C2的取值可以与实施例一中的C相同。在图3所示的场景中,S3接收到来自S4的控制报文b1’。S3确定所述控制报文b1’与所述第三数据队列中的数据报文对应。S3可采用实施例一中S1所采用的方法确定所述控制报文b1’与所述第三数据队列中的数据报文对应。S3通过连接link 5的端口发送所述第三数据队列中的C2个数据报文。当C2的取值为1时,S1通过link 5发送所述数据报文B1。所述数据报文B1为所述第三数据报文。所述数据报文B1被发送后,所述数据报文B2将位于所述第三数据队列的队首。所述数据报文B1会经过link 5发送至R2。当C2的取值为3时,S1通过link 5发送所述数据报文B1、数据报文B2和数据报文B3。所述数据报文B1、所述数据报文B2和所述数据报文B3可经过link 5发送至R2。所述数据报文B1、所述数据报文B2和所述数据报文B3被发送后,数据报文B4将位于所述第三数据队列的队首。
S411,所述中间节点将接收到的数据报文,放入位于所述中间节点的数据队列。
举例说明,所述中间节点接收到的数据报文包括所述C1个数据报文和所述C2个数据报文。在位于所述中间节点的数据队列为空的情况下,所述中间节点根据接收到所述C1个数据报文和所述C2个数据报文的顺序,将所述C2个数据报文放入所述中间节点的数据队列的队首,将所述C1个数据报文放入所述中间节点的数据队列的队尾。所述C1个数据报文在所述中间节点的数据队列中紧邻所述C2个数据报文。所述C2个数据报文早于所述C1个数据报文到达所述中间节点的原因是所述第一RTT与所述第二RTT不相等,比如:所述第二RTT小于所述第一RTT。当所述第一RTT与所述第二RTT相等,C1与C2的取值均为1时,所述C1个数据报文将早于所述C2个数据报文到达所述中间节点,则所述中间节点的数据队列不会存在报文积累。本申请实施例中提及的数据报文积累的原因主要是时序冲突导致的。对于其他原因导致的报文积累,本申请实施例不进行限定。
当所述第一RTT与所述第二RTT不相等时,所述第一数据报文集中被发送的C1个数据报文和所述第二数据报文集中被发送的C2个数据报文到达瓶颈链路时可能会产生时序冲突。比如:所述C1和所述C2的取值均为1时,所述第三数据报文与所述第一数据报文可能到达所述中间节点的间隔时间小于1.344us,此时发生了时序冲突。在图3所示的场景中,所述第一RTT与所述第二RTT不相等,所述C1和所述C2的取值均为1,所述数据报文B1位于所述第二数据队列的队首。所述数据报文A1被放入所述第二数据队列中紧邻所述数据报文B1的位置。所述控制报文a1早于所述控制报文b1被发送,在所述第一RTT与所述第二RTT相等的情况下,所述C1个数据报文早于所述C2个数据报文到达R2。在所述第一RTT大于所述第二RTT的情况下,所述C1个数据报文晚于所述C2个数据报文到达R2。
S412,所述第一主机通过所述第一控制通道,向所述第二主机发送队首的第五控制报文。
S412在S402之后执行。所述第五控制报文为实施例一中的第三控制报文。S412的具体方法可参见实施例一中S208的相应内容。在图3所示的场景中,控制报文a2为所述第五控制报文。
S413,所述第三主机通过所述第二控制通道,向所述第四主机发送队首的第六控制报文。
S413在S404之后执行。所述第三主机发送所述第六控制报文的方法可参见实施例一的S208中源主机发送第三控制报文的方法。在图3所示的场景中,控制报文b2为所述第六控制报文。
S414,所述中间节点将接收到的控制报文,放入位于所述中间节点的控制队列。
S414中,所述中间节点接收到的控制报文包括所述第五控制报文和所述第六控制报文。所述中间节点对所述第五控制报文和所述第六控制报文的处理方法,可参见S405中的相应内容。在图3所示的场景中,所述控制报文a2和所述控制报文b2经过不同的链路发送至R2。所述R2根据接收顺序,将所述控制报文a2放入所述第二控制队列中虚线指示的相应位置,将所述控制报文b2放入所述第二控制队列中虚线指示的相应位置。
S415,所述中间节点根据第二时长,发送所述中间节点的控制队列中的控制报文。
举例说明,当不存在RTT网络噪声时,所述第二时长可采用S406中的第一时长。所述中间节点可采用S406的方法发送所述中间节点的控制队列中的报文。当存在RTT网络噪声时,所述中间节点可根据其数据队列的缓存情况来调整所述第二时长的数值。其中,RTT网络噪声是指承载在同一条瓶颈链路上的多个业务流的RTT不相等。产生所述RTT网络噪声的因素包括:光纤链路长度的不同、设备内部逻辑处理的时间差异、设备内部内存的差异以及路径跳数的差异。RTT网络噪声会导致经过不同路径承载的不同业务流的数据报文到达瓶颈链路时发生时序冲突,比如所述第一RTT与所述第二RTT不相等。
如果所述第一RTT与所述第二RTT相等,且网络采用的AIMD算法可实现绝对公平。所述绝对公平指代的是所述第二控制队列中控制报文的顺序为控制报文a和控制报文b交替排列。比如:R2接收到的控制报文的顺序可以为:控制报文a1->控制报文b1->控制报文a2->控制报文b2->控制报文a3->控制报文b3->控制报文a4->控制报文b4->控制报文a5->控制报文b5。相应地,所述第二数据队列中数据报文的顺序为数据报文A和数据报文B交替排列,比如:R2接收到的数据报文顺序可以为:数据报文A1->数据报文B1->数据报文A2->数据报文B2->数据报文A3->数据报文B3->数据报文A4->数据报文B4。R2发送所述控制报文a2后,会相应地发送所述第二数据队列中的C3个数据报文。所述C3的取值与C1的取值相同。当C3的取值为1时,R2发送所述控制报文a2后,会相应的发送所述第二数据队列中位于队首的一个数据报文。R2发送所述控制报文a2后,会根据所述第二时长发送所述控制报文b2。R2发送所述控制报文b2后,会相应地发送所述第二数据队列中的C3个数据报文。这样,当C3的取值为1时,所述第二数据队列上就不会存在报文积累的问题。
如果所述第一RTT与所述第二RTT不相等,在图3所示的场景中,所述第二数据队列中队首的报文为所述数据报文B1。所述第二控制队列中队首的报文为所述控制报文a2。若R2的令牌桶仍旧采用S406中的所述第一时长来发送所述控制报文a2,则会因为到达所述第二数据队列的数据报文可能存在时序冲突,从而导致所述第二数据队列上可能有数据报文积累。
为了减少所述RTT网络噪声引起的数据报文的积累,所述中间节点可采用下述方法计算第二时长。具体包括:所述中间节点在其数据队列中积累的数据报文的包长之和超过第一阈值且小于第二阈值,将减小计算所述第一时长所采用的CIR的数值,以获得所述第二时长,所述第二时长大于所述第一时长。其中,所述积累的数据报文表示已经缓存的数据报文。这样,所述中间节点延长了发送控制报文的间隔时间,所述第一主机发送所述第一数据报文集的周期被延长,所述第三主机发送所述第二数据报文集的周期被延长。所述第一阈值可以是所述数据队列所能缓存数据报文的包长之和的最大值的a%。所述a%可以是大于或等于10%且小于或等于20%的数值。所述第二阈值可以根据所述中间节点的缓存空间的大小来确定,具体地,所述第二阈值可以是所述中间节点的缓存空间所能缓存数据报文的包长之和的最大值。在数据中心网络的场景下,数据中心中的交换机(即作为所述中间节点的交换机)的缓冲区较小,所述第一阈值可以是数据报文的数量,比如所述第一阈值可以是L个数据报文,所述L的取值范围为8至10中的整数。在数据中心网络的场景下,所述第二阈值可以是所述中间节点的缓存空间能够缓存的数据报文的数量的最大值。所述中间节点上接收到新的数据报文的间隔时间将被延长,有利于减少单位时间内到达所述中间节点的数据报文的数量,有助于消除数据报文积累。
为了减少上述消除数据报文积累的措施带来过度减速,使得所述第二数据队列无数据报文可发,所述中间节点可采用下述方法计算第三时长,将计算获得的第三时长作为S415中所述中间节点采用的第二时长。具体包括:所述中间节点在其数据队列处于空闲状态的时长达到第三阈值,将增大计算所述第一时长所采用的CIR的数值,以获得所述第三时长,所述第三时长小于所述第一时长。其中,当所述CIR增大到第三控制通道的带宽最大值时,所述中间节点将不再对CIR进行上调。所述第三控制通道是所述中间节点的控制通道。所述第三阈值的取值与分组网络中RTT的最小值有关。所述第三阈值的范围可以是1us至5us中的数值,比如所述第三阈值小于分组网络中RTT的最小值。这样,所述中间节点将缩小发送控制报文的间隔时间,所述第一主机发送所述第一数据报文集的周期被缩短,所述第三主机发送所述第二数据报文集的周期被缩短。所述中间节点上接收到新的数据报文的间隔时间将缩短,有利于提高链路的带宽利用率。
S416,所述中间节点根据已发送的控制报文,发送所述中间节点的数据队列中的C3个数据报文。
S416的具体方法可参见实施例一中S211的方法。所述C3与实施例一中的C的取值相同,且所述C3与C1或C2的取值相同。在图3所示的场景中,R2发送了所述控制报文a2之后,R2发送所述第二数据队列中的C3个数据报文。当C3的取值为1时,R2发送所述数据报文B1。当C3的取值为2时,R2发送所述数据报文B1和所述数据报文A1。
S416之后,所述第二主机和所述第四主机可采用实施例一提供的方法,对接收到的控制报文进行处理。本申请实施例二提供的所述第一主机、所述第三主机、所述中间节点、所述第二主机和所述第四主机可采用实施例一提供的相应方法,在链路的控制通道发生丢包或拥塞时对相应的控制报文进行AIMD算法处理,以实现业务流之间的公平性。实施例二中,所述中间节点对所述第二时长的动态调整方法,也可以应用于实施例一中所述中间节点对所述第一时长的调整,即实施例一的中间节点可采用上述方法减少发生数据报文积累。
本申请实施例二提供的方法中,中间节点能够根据其数据队列中数据报文的缓存情况,动态调整令牌桶发送控制报文的周期,以控制第一主机和第三主机发送数据报文的周期,能够有效减少数据报文传输过程中可能发生的拥塞,减少传输延迟,提高链路带宽的利用率。
实施例三
图5为本申请实施例三提供的场景示意图。本申请实施例三提供的场景是在实施例二提供的场景的基础上,对实施例二的R2进行了优化。实施例三中,link 3在R2的端口包括第二数据队列、第二控制队列、第四控制队列和令牌桶。所述第二数据队列用于存放来自link 2的数据报文A和来自link 5的数据报文B。所述第二控制队列用于存放来自link 2的控制报文a。所述第四控制队列用于存放来自link 5的控制报文b。所述令牌桶用于对所述第二控制队列中的控制报文a和所述第四控制队列中的控制报文b进行调度。实施例三中与实施例二相同的设备和链路,可参见实施例二的相应说明。
图6为本申请实施例三提供的分组网络中控制流量的方法流程示意图。实施例三提供的方法可应用于图5所示的场景中。实施例三中的中间节点可采用实施例二的方法动态调整缓存的控制报文的发送周期。实施例三中的中间节点还能够对具有特殊需求的业务流进行优化调度。实施例三中的第一业务流可以是数据中心场景中的小流(mice flow)。所述小流具有每次传输的数据量较小和间歇性发送的特点。实施例三中的第二业务流可以是数据中心场景中的大流(elephant flow)。该大流可以是实施例一或实施例二中提及的业务流或数据报文集。实施例三中的位于任一物理链路上的数据通道和控制通道间的带宽比与实施例一或实施例二相同。下面结合图5和图6,对本申请实施例三提供的分组网络中控制流量的方法进行说明。
S601,第一主机根据待发送的第一数据报文集,生成第一控制报文。
S601中所述第一主机生成所述第一控制报文的方法可参见S401中的相应内容。所述第一数据报文集包括第一数据报文和第二数据报文。在图5所示的场景中,S1为图1场景中的S1。S1包括第一数据队列和第一控制队列。控制报文a1为所述第一控制报文。数据报文A1为所述第一数据报文。在S1的初始阶段,所述控制报文a1位于所述第一控制队列的队首。所述数据报文A1位于所述第一数据队列的队首。所述S1的初始阶段为S1未发送任一数据报文和任一控制报文的阶段。
S602,所述第一主机通过第一控制通道,向第二主机发送所述第一控制报文。
S602中所述第一主机发送所述第一控制报文的方法可参见S402中的相应内容。实施例三中,所述第一主机为第一物理链路的发送端。所述第二主机为所述第一物理链路的接收端。所述第一物理链路为所述第一主机与所述第二主机之间的物理链路。在图5所示的场景中,S2可为图1场景中的S2。
实施例三中,S603至S604的执行顺序不局限于上述顺序。在一种实现方式中,S603可与S601同时执行,S604晚于S602执行。在另一种实现方式中,S603可早于S601执行,S604晚于S602执行。
S603,第三主机根据待发送的第二数据报文集,生成第二控制报文。
为了与所述第一数据报文集包括的数据报文进行区分,所述第二数据报文集包括第三数据报文和第四数据报文。所述第三数据报文是所述第二数据报文集的首个数据报文。所述第三数据报文位于所述第三主机上的数据队列的队首。所述第四数据报文是所述第二数据报文集中的第二个数据报文。所述第四数据报文在所述第三主机的数据队列中紧邻所述第三数据报文。S603的具体方法可参见S403的相应内容。在图5所示的场景中,S3包括第三控制队列和第三数据队列。在S3的初始阶段,数据报文B1是所述第三数据队列中位于队首的数据报文。所述数据报文B1为所述第三数据报文。数据报文B2为所述第四数据报文。控制报文b1为所述第二控制报文。所述控制报文b1为所述第三控制队列中位于队首的控制报文。所述S3的初始阶段为S3未发送任一数据报文和任一控制报文的阶段。
S604,所述第三主机通过第二控制通道,向第四主机发送所述第二控制报文。
实施例三中,所述第三主机为第二物理链路的发送端。所述第四主机为所述第二物理链路的接收端。所述第二物理链路为所述第三主机与所述第四主机之间的物理链路。所述第三主机发送的所述第二控制报文会经过所述第二物理链路上的中间节点,逐跳发送至所述第四主机。S604的具体方法可参见S404的相应内容。在图5所示的场景中,S3可通过连接link 5的端口发送所述控制报文b1。所述控制报文b1会经过link 5发送至R2。所述控制报文b1被发送后,所述控制报文b2位于所述第三控制队列的队首。
S605,中间节点将接收到的控制报文,放入位于所述中间节点的控制队列。
举例说明,所述中间节点接收到的控制报文包括所述第一控制报文和所述第二控制报文。所述第一控制报文是来自所述第一主机的首个控制报文。所述第二控制报文是来自所述第三主机的首个控制报文。所述中间节点包括一个数据队列和两个控制队列。所述两个控制队列包括所述第一业务流对应的控制队列和所述第二业务流对应的控制队列。所述中间节点将所述第一控制报文放入所述第一业务流对应的控制队列。所述中间节点将所述第二控制报文放入所述第二业务流对应的控制队列。实施例三中,所述中间节点是所述第一物理链路和第二物理链路重合的首个节点,如图5中的R2。在图5所示的场景中,R3可采用与R2相同的结构。R1可采用图1中R2的结构。R4也可采用图1中R2的结构。在图5所示的场景中,R2包括第二数据队列、第二控制队列和第四控制队列。所述控制报文a1被放入所述第二控制队列的队首。所述控制报文b1被放入所述第四控制队列的队首。R2后续通过link 5和link2接收到的控制报文,均会根据所述控制报文对应的业务流的类型,放入相应的控制队列中。所述业务流的类型指代的是该业务流是属于大流还是属于小流。所述第二控制队列对应所述第一业务流,即数据报文A1是小流的数据报文。所述第四控制队列对应所述第二业务流,即数据报文B1是大流的数据报文。
S606,所述中间节点根据第一时长和优先级策略,发送所述中间节点的控制队列中的控制报文。
实施例三中,所述中间节点比较两个控制队列中位于队首的报文的优先级,根据优先级策略读取控制报文。所述优先级策略可以为PQ策略或WFQ策略。所述PQ策略是优先读取高优先级的控制报文。所述WFQ策略是在优先读取了K1个高优先级的控制报文后可读取K2个低优先级的控制报文。所述K1和K2为大于1的整数,且K1大于K2。实施例三中提及的高优先级和低优先级是个相对概念,即所述第一控制报文相对于所述第二控制报文来说属于高优先级,所述第二控制报文相对于所述第一控制报文来说属于低优先级。所述中间节点根据所述第一时长,周期性地发送控制报文。实施例三中,所述第一业务流的优先级高于所述第二业务流。所述中间节点可根据控制报文中携带的优先级标识,确定所述第一控制报文的优先级高于所述第二控制报文。在IP网络中,所述优先级标识可携带于所述第一控制报文和所述第二控制报文的TOS字段,或者所述优先级标识可携带于所述第一控制报文和所述第二控制报文的DSCP字段。所述中间节点根据所述第一时长发送读取的控制报文的方法,可参见实施例一的S204或实施例二的S406的相应内容。所述中间节点的控制通道为第三控制通道。所述第三控制通道的总带宽为所述令牌桶的CIR。
在图5所示的场景中,R2上的令牌桶每隔1.344us发送一个从所述第二控制队列中读取的控制报文。所述令牌桶在读取了所述第二控制队列中的控制报文后,会根据PQ策略或WFQ策略,读取下一个控制报文。这样,所述第二控制队列中的控制报文发送了K1个之后,所述第四控制队列中的控制报文才可能被发送。所述R2在发送了所述第四控制队列中的K2个控制报文后,再次发送所述第二控制队列中的控制报文。
S607,所述第二主机将生成的第三控制报文发送至所述第一主机。
S607的具体方法可参见S407。在图5所示的场景中,控制报文a1’为所述第三控制报文。S2生成所述控制报文a1’的方法可参见实施例二的相应内容。
S608,所述第一主机根据所述第三控制报文,通过第一数据通道向所述第二主机发送C1个数据报文。
S608的具体方法可参见实施例二中S409的相应内容。在图5所示的场景中,S1接收到来自S2的控制报文a1’。S1确定所述控制报文a1’与所述第一数据队列中的数据报文对应。S1可采用实施例一中S1采用的方法来确定所述控制报文a1’与所述第一数据队列中的数据报文对应。当C1的取值为1时,S1通过连接link 1的端口发送所述数据报文A1。所述数据报文A1被发送后,所述数据报文A2成为所述第一数据队列中队首的数据报文。所述数据报文A1会经过link 1->R1->link 2发送至R2。
S609,所述中间节点将接收到的所述C1个数据报文,放入位于所述中间节点的数据队列。
S609的具体方法可参见实施例一中的S207。所述中间节点的数据通道为第三数据通道。所述中间节点可通过所述第三数据通道发送C3个数据报文。所述C3与实施例二中的C3相同。在图5所示的场景中,当C1的取值为1时,R2将所述数据报文A1放入所述第二数据队列的队首。后续接收到的数据报文A2被R2放入所述第二数据队列中紧邻所述数据报文A1的位置。
实施例三中,由于S606的中间节点优先发送所述第一业务流对应的控制队列中的控制报文,所述中间节点在一段时间内只会收到所述第一主机发送的数据报文。实施例三中,所述第一主机、所述中间节点和所述第二主机可参照实施例一中的S208至S212的方法,对所述第一业务流的数据报文及其对应的控制报文进行发送,在此不再赘述。
当S606的中间节点还发送了一个与所述第二业务流对应的控制队列中的控制报文,则实施例三提供的方法还包括下述S610至S612。下述S610至S612在S609之后执行。
S610,所述第四主机将生成的第四控制报文发送至所述第三主机。
S610的具体方法可参见S408。在图5所示的场景中,控制报文b1’为所述第四控制报文。S4通过link 7接收到所述控制报文b1。R4处理所述控制报文b1的方法可参见实施例二的相应内容。S4生成和发送所述控制报文b1’的方法可参见实施例二的相应内容。
S611,所述第三主机根据所述第四控制报文,通过第二数据通道向所述第四主机发送C2个数据报文。
S611的具体方法可参见实施例二中S410。在图5所示的场景中,S3接收到来自S4的控制报文b1’。S3确定所述控制报文b1’与所述第三数据队列中的数据报文对应。S3可采用实施例一中S1采用的方法来确定所述控制报文b1’与所述第三数据队列中的数据报文对应。当C2的取值为1时,S3通过连接link 5的端口发送所述数据报文B1。所述数据报文B1被发送后,所述数据报文B2成为所述第三数据队列中队首的数据报文。所述数据报文B1会经过link 5发送至R2。
S612,所述中间节点将接收到的所述C2个数据报文,放入位于所述中间节点的数据队列。
S612的中间节点缓存所述第三数据报文的具体方法可参见实施例一中S207的相应内容或实施例二中S411的相应内容。
实施例三中,所述第三主机、所述中间节点和所述第四主机可参照实施例一中的S208至S212的方法,对所述第二业务流的数据报文及所述第二业务流对应的控制报文进行发送,在此不再赘述。
本申请实施例三提供的方法中,中间节点设置两个控制队列来存放不同优先级的控制报文,所述中间节点的令牌桶根据优先级策略,对所述两个控制队列中的报文进行调度,有助于网络中高优先级的控制报文对应的数据报文被优先处理和发送,有助于满足特殊需求的业务流的承载要求,例如在数据中心的场景中,小流的流完成时间(flowcompletion time)需要达到最小。
实施例四
图7为本申请实施例四提供的场景示意图。本申请实施例四提供的场景是在实施例二提供的场景的基础上,对实施例二的R2进行了优化。具体地,实施例四中第二数据队列可以为由已发送的控制报文将触发的数据报文预留存储空间。实施例四中与实施例二相同的设备和链路,可参见实施例二的相应说明。
图8为本申请实施例四提供的分组网络中控制流量的方法流程示意图。实施例四提供的方法可应用于图7所示的场景中。实施例四中的中间节点可采用实施例二的方法动态调整缓存的控制报文的发送周期。实施例四中的中间节点还能为由已发送的控制报文将触发的数据报文预留存储空间。下面结合图7和图8,对本申请实施例四提供的分组网络中控制流量的方法进行说明。
S801,第一主机根据待发送的第一数据报文集,生成第一控制报文。
S801中所述第一主机生成所述第一控制报文的方法可参见S401中的相应内容。实施例四中的第一主机将获得的第一RTT添加至生成的第一控制报文,比如添加至所述第一控制报文的头部。所述第一RTT可以是设置的经验值。或者所述第一RTT可以是根据平均值与大于1的系数相乘而获得的时长。所述平均值是所述第一主机探测到的其发送的至少一个控制报文的RTT的时长平均值。本申请实施例中的控制报文的RTT是所述控制报文经发送端发送到所述发送端接收到接收端反馈的控制报文间的时长。实施例四中的第一控制报文的头部还包括序列号。在一个控制报文将触发发送C1个数据报文的场景下,控制报文的头部需要携带C1个序列号,以便对由所述控制报文所触发发送的C1个数据报文进行标识。实施例四中的序列号也用于区分所述第一主机在不同的时间点生成的控制报文。所述第一数据报文集包括第一数据报文和第二数据报文。在图7所示的场景中,S1为图1场景中的S1。S1包括第一数据队列和第一控制队列。控制报文a1为所述第一控制报文。数据报文A1为所述第一数据报文。在S1的初始阶段,所述控制报文a1位于所述第一控制队列的队首。所述数据报文A1位于所述第一数据队列的队首。所述S1的初始阶段为S1未发送任一数据报文和任一控制报文的阶段。
S802,所述第一主机通过第一控制通道,向第二主机发送所述第一控制报文。
S802中所述第一主机发送所述第一控制报文的方法可参见S402中的相应内容。实施例四中,所述第一主机为第一物理链路的发送端。所述第二主机为所述第一物理链路的接收端。所述第一物理链路为所述第一主机与所述第二主机之间的物理链路。在图7所示的场景中,S2可为图1场景中的S2。
实施例四中,S803至S804的执行顺序不局限于上述顺序。在一种实现方式中,S803可与S801同时执行,S804晚于S802执行。在另一种实现方式中,S803可早于S801执行,S804晚于S802执行。
S803,第三主机根据待发送的第二数据报文集,生成第二控制报文。
为了与所述第一数据报文集包括的数据报文进行区分,所述第二数据报文集包括第三数据报文和第四数据报文。所述第三数据报文是所述第二数据报文集的首个数据报文。所述第三数据报文位于所述第三主机上的数据队列的队首。所述第四数据报文是所述第二数据报文集中的第二个数据报文。所述第四数据报文在所述第三主机的数据队列中紧邻所述第三数据报文。S803的具体方法可参见S403的相应内容。所述第二控制报文包括序列号和第二RTT。所述第二控制报文包括的序列号有可能与所述第一控制报文包括的序列号相同。所述第三主机获取所述第二RTT的方法可参见所述第一主机获取所述第一RTT的方法。在图7所示的场景中,S3包括第三控制队列和第三数据队列。在S3的初始阶段,数据报文B1是所述第三数据队列中位于队首的数据报文。所述数据报文B1为所述第三数据报文。数据报文B2为所述第四数据报文。控制报文b1为所述第二控制报文。所述控制报文b1为所述第三控制队列中位于队首的控制报文。所述S3的初始阶段为S3未发送任一数据报文和任一控制报文的阶段。
S804,所述第三主机通过第二控制通道,向第四主机发送所述第二控制报文。
实施例四中,所述第三主机为第二物理链路的发送端。所述第四主机为所述第二物理链路的接收端。所述第二物理链路为所述第三主机与所述第四主机之间的物理链路。所述第三主机发送的所述第二控制报文会经过第二物理链路上的中间节点,逐跳发送至所述第四主机。S804的具体方法可参见实施例二的S404的相应内容。在图7所示的场景中,S3可通过连接link 5的端口发送所述控制报文b1。所述控制报文b1会经过link 5发送至R2。所述控制报文b1被发送后,所述控制报文b2位于所述第三控制队列的队首。
S805,中间节点将接收到的控制报文,放入位于所述中间节点的控制队列。
S805的具体方法可参见S405的相应内容。实施例四中,所述中间节点是所述第一物理链路和第二物理链路重合的首个节点,如图7中的R2。在图7所示的场景中,R3可采用与R2相同的结构。R1可采用图1或图7中R2的结构。R4也可采用图1或图7中R2的结构。在图7所示的场景中,R2包括第二数据队列和第二控制队列。当所述控制报文a1先于所述控制报文b1到达R2,所述控制报文a1被放入所述第二控制队列的队首。所述控制报文b1被放入所述第二控制队列中紧邻所述控制报文a1的位置。R2后续通过link5和link2接收到的控制报文,均会根据接收到的顺序放入所述第二控制队列中。
S806,所述中间节点判断是否可以预留第一存储空间,如果是执行S807,否则执行S809。
举例说明,所述中间节点判断所述中间节点的数据队列是否包括空闲的且未被预留的存储空间,且所述中间节点的登记表中是否存在未被占用的表项。登记表中的表项数量可以根据需要进行设置,本申请实施例不进行具体限定。所述中间节点在所述中间节点的数据队列包括空闲的且未被预留的存储空间,且在所述中间节点的登记表中至少存在C1个未被占用的表项时,确定预留所述第一存储空间,之后执行S807。所述第一存储空间用于缓存将由第一控制报文所触发发送的C1个数据报文。所述第一存储空间应大于或等于所述C1个数据报文占用的存储空间。所述中间节点的数据队列包括的空闲的且未被预留的存储空间大于或等于所述第一存储空间。所述中间节点在所述中间节点的数据队列不包括空闲的且未被预留的存储空间,或所述中间节点的数据队列包括的空闲的且未被预留的存储空间小于所述第一存储空间,或所述中间节点的登记表不包括C1个未被占用的表项时,确定不预留所述第一存储空间,之后执行S809。所述中间节点的数据队列不包括空闲的且未被预留的存储空间指代下述两种情况:一种情况是所述中间节点的数据队列被缓存的数据报文占满。另一种情况是所述中间节点的数据队列未被缓存的数据报文占满,但剩余的空闲的且未被预留的存储空间小于所述第一存储空间。分组网络中的任一节点均可采用所述中间节点所采用的处理方法进行流量控制。在图7所示的场景中,R1、R2、R3和R4均可采用所述中间节点的方法进行判断。R2上存储空间A’为所述第一存储空间。
S807,所述中间节点根据所述第一控制报文更新登记表,之后执行S808。
举例说明,在一个控制报文触发发送C1个数据报文,且C1的取值为1的场景下,所述中间节点根据所述第一控制报文更新登记表包括:所述中间节点根据所述第一控制报文包括的序列号和第一参数集,生成第一标识,所述第一控制报文包括的序列号用于标识所述第一控制报文,所述第一参数集为所述第一控制报文及其触发发送的C1个数据报文所共有的参数集;所述中间节点获取所述第一控制报文中包括的第一RTT;所述中间节点将所述第一标识和所述第一控制报文中包括的第一RTT记录于所述登记表的一个空闲表项中。在一种实现方式中,在一个控制报文触发发送C1个数据报文,且C1的取值大于1的场景下,所述第一控制报文包括C1个序列号。相应的,所述中间节点可根据所述C1个序列号和所述第一控制报文包括的第一参数集,生成C1个标识。所述C1个标识可表示为第i标识。所述i为大于等于1且小于等于C1的整数。所述中间节点会将所述C1个标识和所述第一控制报文中包括的RTT值写入所述登记表的C1个表项中。
在图7所示的场景中,R2可根据已发送的所述控制报文a1,在第二数据队列中为数据报文A1预留存储空间A’。所述存储空间A’为所述第一存储空间。在IP网络中,所述控制报文a1和所述数据报文A1所共有的参数集为五元组,R2可根据所述控制报文a1包括的五元组和序列号,生成第一控制包标识(control packet identifier)。所述第一控制包标识为所述第一标识。R2获取所述控制报文a1包括的第一RTT,即RTTA。R2将所述第一控制包标识和所述RTTA写入图7所示的登记表中未被占用的一个表项中。在C1的取值大于1的场景下,所述控制报文a1包括的C1个序列号可用于区分由所述控制报文a1触发发送的C1个数据报文。比如C1的取值为2的场景下,所述C1个序列号包括第一序列号和第二序列号。R2可根据所述控制报文a1包括的五元组和第一序列号,生成第一控制包标识。R2可根据所述控制报文a1包括的五元组和第二序列号,生成第二控制包标识。R2获取所述控制报文a1包括的RTT,即RTTA。R2将所述第一控制包标识、所述第二控制包标识和所述RTTA写入图7所示的登记表中未被占用的2个表项中。
S808,所述中间节点根据第一时长发送所述第一控制报文,之后执行S810。
S808的具体方法可参见S406的相应内容。实施例四中的第一时长与实施例二或实施例一中的第一时长相同。所述中间节点在发送了所述第一控制报文之后,所述中间节点为所述登记表中的C1个表项中的每个表项启动一个对应的定时器,以确定能否在所述第一RTT(图7中的RTTA)内接收到与所述C1个表项对应的数据报文。所述登记表中的C1个表项对应C1个定时器,第k表项与第k定时器一一对应。所述k的数值为大于等于1,且小于等于C1的整数。所述第k定时器的时长设置为所述第一RTT。所述第k定时器超时后,如果所述中间节点还未接收到C1个数据报文中的第k数据报文,则释放为所述第k数据报文预留的资源。所述C1个数据报文为由所述第一控制报文所触发发送的数据报文。所述为所述第k数据报文预留的资源包括所述第一存储空间中为所述第k数据报文预留的存储空间和所述登记表中与所述第k定时器对应的表项。实施例四中的中间节点也可按照实施例二中的方法,调整所述第一时长。以所述第一时长为1.344us为例,在图7所示的场景中,R2上的令牌桶每隔1.344us发送一个从所述第二控制队列中读取的控制报文。所述控制报文a1和所述控制报文b1的发送间隔时长为1.344us。
S809,所述中间节点等待所述第一时长,之后执行S806。
举例说明,所述中间节点在确定不预留所述第一存储空间之后,等待所述第一时长再判断所述中间节点的数据队列和登记表是否满足S806中的预留条件。
S810,所述第二主机将生成的第三控制报文发送至所述第一主机。
S810的具体方法可参见S407。S810在S808之后执行。在图7所示的场景中,控制报文a1’为所述第三控制报文。S2生成和发送所述控制报文a1’的方法可参见实施例二的相应内容。
S811,所述第一主机根据所述第三控制报文,通过第一数据通道向所述第二主机发送C1个数据报文。
S811的具体方法可参见实施例二中S409的相应内容。每个数据报文包括不同的序列号。实施例四中,所述第一主机可将接收到的所述第三控制报文包括的C1个序列号添加至所述C1个数据报文中的每个数据报文。在图7所示的场景中,S1接收到来自S2的控制报文a1’。S1确定所述控制报文a1’与所述第一数据队列中的数据报文对应。S1可采用实施例一中S1所采用的方法来所述控制报文a1’与所述第一数据队列中的数据报文对应。当C1的取值为1时,S1将所述控制报文a1’的序列号添加至所述数据报文A1,并通过连接link 1的端口发送所述添加了序列号的数据报文A1。所述数据报文A1被发送后,所述数据报文A2成为所述第一数据队列中队首的数据报文。所述数据报文A1会经过link1->R1->link 2发送至R2。当C1的取值为2时,所述控制报文a1’包括序列号1和序列号2。S1将所述序列号1添加至所述数据报文A1,并通过连接link 1的端口发送所述添加了序列号1的数据报文A1。S1将所述序列号2添加至所述数据报文A2,并通过连接link 1的端口发送所述添加了序列号2的数据报文A2。所述数据报文A1和所述数据报文A2被发送后,所述数据报文A3成为所述第一数据队列中队首的数据报文。所述数据报文A1和所述数据报文A2会经过link 1->R1->link 2发送至R2。
S812,所述中间节点对接收到的C4个数据报文进行处理。
举例说明,所述C4大于等于1且小于等于C1,即所述C1个数据报文在到达所述中间节点之前有可能发生丢包。所述中间节点对接收到的所述C4个数据报文进行处理包括:所述中间节点接收到所述C4个数据报文后,根据所述C4个数据报文中第j数据报文包括的序列号j和所述第一参数集,生成第j标识,所述j的取值为1至C4间的整数;所述中间节点利用所述第j标识查找所述登记表,判断所述登记表中是否包括与所述第j标识对应的表项;如果所述登记表包括与所述第j标识对应的表项,则所述中间节点将所述第j数据报文放入所述中间节点的数据队列,之后执行S813。如果所述登记表不包括与所述第j标识对应的表项,则表明所述中间节点接收到的所述第j数据报文所经历的时长超出了所述第一RTT,所述中间节点为所述第j数据报文所预留的资源已被释放。所述为所述第j数据报文所预留的资源包括所述第一存储空间中为所述第j数据报文所预留的存储空间和所述登记表中与所述第j数据报文对应的表项。所述与所述第j数据报文对应的表项包括第j标识和所述第一RTT。所述第j标识为根据所述第一控制报文包括的第j序列号和所述第一参数集生成的标识。所述中间节点可判断所述中间节点的数据队列中是否存在空闲的且未被预留的可容纳所述第j数据报文的存储空间。如果所述中间节点的数据队列中存在空闲的且未被预留的可容纳所述第j数据报文的存储空间,则所述中间节点将所述第j数据报文放入所述数据队列。如果所述中间节点的数据队列中不存在空闲的且未被预留的可容纳所述第j数据报文的存储空间,则所述中间节点丢弃所述第j数据报文。这样,能够保证由所述第一控制报文触发发送的C1个数据报文中到达所述中间节点的C4个数据报文不会因为没有存储空间而被丢弃。其中,所述C4个数据报文中的第j数据报文包括的所述第一参数集是与所述第一控制报文共有的参数集。所述C4个数据报文中的第j数据报文包括的序列号是所述第一控制报文包括的C1个序列号中的一个序列号。其中,j的取值为大于等于1且小于等于C4的整数。
在图7所示的场景中,当C4的数值为1时,在IP网络中,R2根据所述数据报文A1包括的五元组和序列号,获得第一数据包标识。所述第一数据包标识可以是所述第j标识。R2根据所述第一数据包标识,查找图7所示的登记表。如果R2查找到与所述第一数据包标识对应的表项,则R2将所述数据报文A1放入所述第二数据队列的存储空间A’。如果R2未查找到与所述第一数据包标识对应的表项,则R2确定从发出控制报文a1到接收到数据报文A1的时长超出RTTA。R2可进一步在确定所述第二数据队列中空闲的且未被预留的存储空间可容纳所述数据报文A1后,将所述数据报文A1放入所述第二数据队列。否则,R2丢弃所述数据报文A1。
S813,所述中间节点更新所述登记表。
举例说明,所述中间节点在所述登记表中查找到与所述第j标识对应的表项后,释放与所述第j标识对应的表项。这样,所述登记表中的表项就能够及时释放,以供后续控制报文和数据报文使用。
在一种实现方式中,在S808之后,所述中间节点在S808中的定时器超时后,将释放所述登记表中与所述第j标识对应的表项以及为所述第j标识预留的存储空间。
在一种实现方式中,所述中间节点在确定预留所述第一存储空间后,可继续判断是否可以预留第二存储空间。所述第二存储空间用于存放所述第二控制报文所触发发送的数据报文。实施例四中预留所述第二存储空间以及利用所述第二存储空间存放第三数据报文的方法可参见上述S806至S813的内容。
图7所示的场景中,所述登记表还包括了第三控制包标识和RTTB,所述RTTB为所述第二RTT。所述RTTB可以是R2接收到的控制报文b1中携带的第二RTT。所述第三控制包标识基于所述控制报文b1包括的序列号与所述控制报文b2包括的第二参数集计算获得。所述中间节点可在发送所述控制报文b1之前,采用预留所述第一存储空间的方法,判断是否为由所述控制报文b1触发发送的数据报文预留存储空间,并对所述登记表进行相应操作。
实施例四提供的方法中,中间节点能够在发送了一个控制报文,比如第一控制报文后,根据所述中间节点的登记表和所述中间节点的数据队列的存储空间,预先为被发送的控制报文所触发发送的数据报文预留存储空间。这样,由发送的控制报文所触发发送的数据报文到达中间节点的数据队列时,不会因为没有存储空间而被丢弃,有助于减少数据报文在传输过程中的丢包。
本申请实施例二至四提供的方法中,在业务流将要结束发送的阶段,源主机仍可以交替发送控制报文和数据报文。但中间节点上有可能存在一种情况,即控制报文被发送了但缓存的数据报文还未发送且后续还有待发送的数据报文进入数据队列。中间节点此时会将所述数据队列中剩余的所有数据报文发送至其对应的目的主机。在中间节点的控制队列被缓存的控制报文占满的情况下,所述中间节点没有缓存空间来缓存接收到的控制报文,则所述中间节点会丢弃接收到的控制报文,直至所述中间节点存在缓存空间后继续缓存接收到的控制报文。
当本申请实施例二于本申请实施例四相结合时,实施例二中所述中间节点的数据队列中已缓存的数据报文的包长之和可包括所述中间节点预留的第一存储空间。比如:所述已缓存的数据报文的包长之和包括已放入所述数据队列中的数据报文的包长之和以及所述预留的第一存储空间。实施例二中所述中间节点的数据队列处于空闲状态表示所述中间节点的数据队列不包括已缓存的数据报文,且所述中间节点的数据队列中不包括所述预留的第一存储空间。
实施例五
图9为本申请实施例五提供的场景示意图。本申请实施例五提供的场景是在实施例一提供的场景的基础上,增加了对TCP数据流的处理。在link 1、link 2、link 3和link 4在传输数据报文和控制报文之外还有多余的带宽的情况下,上述link还可用来传输其他报文,比如TCP数据流包括的数据报文。具体地,S1上的TCP数据队列用于缓存所述TCP数据流包括的TCP数据报文。所述TCP数据报文可用C进行标识,如图9所示的数据报文C1、数据报文C2、数据报文C3和数据报文C4。S1上的TCP数据队列的优先级低于所述第一数据队列的优先级,且低于所述第一控制队列的优先级。即S1上的第一数据队列和第一控制队列均无可调度或可发送的报文的情况下,S1才会调度和发送S1的TCP数据队列中的TCP数据报文。R2上设置有用来缓存所述TCP数据报文的TCP数据队列。R2上包括了三个队列,如图9所示的第二数据队列、第二控制队列和TCP数据队列。R2上的TCP数据队列的优先级低于所述第二数据队列的优先级,且低于所述第二控制队列的优先级。即R2上的第二数据队列和第二控制队列均无可调度或发送的报文的情况下,R2才会调度和发送R2的TCP数据队列中的TCP数据报文。R2对所述第二数据队列和所述第二控制队列的处理方法可参见实施例一。S1对第一数据队列和第一控制队列的处理方法可参见实施例一。
实施例六
图10为本申请实施例六提供的状态机的状态切换示意图。图10所示的状态机可设置于上述实施例一至实施例五中任一实施例中的中间节点。具体地,所述状态机可设置于所述中间节点的出端口上。所述状态机可在0状态和1状态之间进行切换。所述状态机处于0状态时,所述出端口上的控制队列包括的控制报文被禁止发送,所述出端口上的数据队列包括的数据报文可被发送。所述状态机处于1状态时,所述出端口上的控制队列包括的控制报文可被发送,所述出端口上的数据队列包括的数据报文可被发送。上述实施例一至实施例五中任一实施例中,所述控制报文可触发所述源主机和所述中间节点发送一个或多个数据报文。所述一个或多个数据报文可以是实施例一中的C个数据报文,或者所述一个或多个数据报文可以是实施例二至实施例四中任一实施例中的C1个数据报文或C2个数据报文。
如图10所示,数据队列中空闲的缓存空间用于缓存所述中间节点接收到的由控制报文触发发送的数据报文集。所述数据报文集为实施例一中的C个数据报文,或者所述数据报文集为实施例二至实施例四中任一实施例的C1个数据报文或C2个数据报文。所述数据队列中任一空闲的缓存空间与所述数据报文集所占存储空间相同。所述数据队列中空闲的缓存空间的数量可用来表示所述数据队列能够缓存的数据报文集的数量。当所述数据队列中空闲的缓存空间的数量为所述第一阈值时,所述数据队列中所述第一阈值个空闲的缓存空间能够缓存所述第一阈值个所述数据报文集。当所述出端口上的数据队列中空闲的缓存空间的数量大于或等于所述第一阈值,且所述出端口上的控制队列中已缓存的控制报文的数量大于或等于所述第一阈值,所述状态机由0状态转换到1状态。第一阈值为大于或等于1的整数。实施例六中的所述第一阈值还可以是所述中间节点的缓存空间能够缓存的数据报文集的数量的最大值。所述状态机在1状态发送所述控制队列中缓存的所述第一阈值个控制报文。被发送的控制报文可触发发送所述数据报文集。所述数据报文集会被发送并到达所述数据队列。当所述数据队列收到了与所述第一阈值数量相同的数据报文集时,所述状态机由1状态切换至0状态。所述状态机在0状态下,所述控制队列中的控制报文被禁止发送,但所述数据队列中的数据报文集仍可被发送,这样就能够有效清除数据队列中积累的数据报文,有助于减少数据报文被丢弃。或者当所述状态机在达到第二阈值之前未收到源主机发送的数据报文,所述状态机由1状态切换至0状态。所述第二阈值设置为上述任一实施例中的RTT的最大值的L倍,或者设置为分组网络中的RTT的最大值的L倍。所述L大于1且小于或等于2。
本申请实施例六,通过在中间节点的出端口设置状态机,可控制所述出端口上的数据包报文的发送过程,有助于减少因RTT网络噪声或链路拥塞而导致的丢包。
实施例七
图11为本申请实施例七提供的源设备的结构示意图。实施例七提供的源设备可作为分组网络中用于发送某一业务流的发送端。实施例七提供的源设备可实现实施例一中的源主机的功能或实施例五中S1所标识的设备的功能。或者实施例七提供的源设备可实现实施例二至实施例四中任一实施例中的第一主机的功能或第三主机的功能。实施例七提供的源设备包括:第一发送单元1101、接收单元1102和第二发送单元1103。所述第一发送单元1101用于通过控制通道向目的设备发送第一控制报文。所述第一控制报文包括参数集。所述接收单元1102用于接收所述目的设备发送的第二控制报文。所述第二控制报文包括所述参数集。所述第二发送单元1103用于在所述第一接收单元接收到包括所述参数集的所述第二控制报文后,通过数据通道向所述目的设备发送第一数据报文集。所述第一数据报文集包括C个数据报文。所述C为大于或等于1的整数。所述第一数据报文集中的任一数据报文包括所述参数集。其中,所述C个数据报文的包长之和与所述第一控制报文的包长的比值为所述数据通道与所述控制通道间的带宽比。
在一种实现方式中,所述接收单元1102还用于接收所述目的设备发送的第四控制报文。所述第四控制报文包括所述参数集。所述第二发送单元1103还用于在所述接收单元1102接收到所述第四控制报文之后,通过所述数据通道向所述目的设备发送第二数据报文集。所述第二数据报文集为所述第一数据报文集所属的业务流中位于所述第一数据报文集之后数据报文集。所述第二数据报文集包括C个数据报文。所述第二数据报文集中任一数据报文包括所述参数集。
在一种实现方式中,所述源设备还包括获得单元1104和生成单元1105。所述获得单元1104用于根据所述第一数据报文集中的任一数据报文,获得所述第一控制报文的报文头。所述第一控制报文的报文头包括所述参数集。所述生成单元1105用于根据所述第一控制报文的报文头和预设的包长,生成所述第一控制报文。
在一种实现方式中,所述源设备还包括第三发送单元1106。所述第三发送单元1106用于根据AIMD算法,通过所述控制通道发送第三控制报文。所述第三控制报文包括所述参数集。
实施例七提供的源设备所包括的单元可以执行上述实施例中源主机、第一主机或第三主机的相应功能。当所述源设备具有实施例一中源主机的功能,所述第一发送单元1101用于支持所述源设备执行实施一中的S202,所述接收单元1102用于支持所述源设备执行实施例一中的S205和S212,所述第二发送单元1103用于支持所述源设备执行实施例一中S206。所述获得单元1104和所述生成单元1105用于支持所述源设备执行实施例一中的S201。所述第三发送单元1106用于支持所述源设备执行实施例一中的S208。
当所述源设备具备实施例二至实施例四中的第一主机的功能,所述第一发送单元1101用于支持所述源设备执行实施例二中的S402,和/或实施例三中的S602,和/或实施例四中的S802。所述接收单元1102用于支持所述源设备执行实施例二中的S407,和/或实施例三中的S607,和/或实施例四中的S810。所述第二发送单元1103用于支持所述源设备执行实施例二中的S409,和/或实施例三中的S608,和/或实施例四中的S811。所述获得单元1104和所述生成单元1105用于支持所述源设备执行实施例二中的S401,和/或实施例三中的S601,和/或实施例四中的S801。所述第三发送单元1106用于支持所述源设备执行实施例二中的S412。
当所述源设备具备实施例二至实施例四中的第三主机的功能,所述第一发送单元1101用于支持所述源设备执行实施例二中的S404,和/或实施例三中的S604,和/或实施例四中的S804。所述接收单元1102用于支持所述源设备执行实施例二中的S408,和/或实施例三中的S610。所述第二发送单元1103用于支持所述源设备执行实施例二中的S410,和/或实施例三中的S611。所述获得单元1104和所述生成单元1105用于支持所述源设备执行实施例二中的S403,和/或实施例三中的S603,和/或实施例四中的S803。所述第三发送单元1106用于支持所述源设备执行实施例二中的S413。
在采用集成结构的情况下,实施例七提供的源设备所包括的所述第一获得单元1104和所述生成单元1105的功能可由处理单元来实现。实施例七提供的源设备所包括的所述第一发送单元1101、所述第二发送单元1103、所述接收单元1102和所述第三发送单元1106的功能可由通信单元来实现。在采用集成结构的情况下,所述源设备还包括用于存储程序代码和数据的存储单元。所述存储单元还可用来缓存某一业务流的数据报文和与所述数据报文匹配的控制报文。所述处理单元、所述通信单元和所述存储单元的相应内容可参见实施例一至实施例五以及实施例七中的相应内容。
实施例八
图12为本申请实施例八提供的转发设备的结构示意图。实施例八提供的转发设备可作为分组网络中发送端与接收端之间的物理链路上的中间节点。实施例八提供的转发设备可实现实施例一、实施例二或实施例四提供的中间节点的相应功能。实施例八提供的转发设备还可采用实施例六提供的状态机,具体内容可参见实施例六的相应内容。实施例八提供的转发设备包括:第一发送单元1201和第二发送单元1202。所述第一发送单元1201用于根据第一时长,发送第一控制队列中位于队首的控制报文,所述第一时长是CBS与第一CIR获得。所述第二发送单元1202用于根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集,所述第一数据报文集包括C个数据报文,所述C为大于或等于1的整数。
在一种实现方式中,所述转发设备还包括:第一获得单元1206。所述第一获得单元1206用于在所述数据队列中已缓存的数据报文的包长之和大于或等于第一阈值且小于第二阈值时,根据所述CBS和第二CIR获得第二时长。所述第二CIR小于所述第一CIR。所述第一阈值大于所述C个数据报文的包长之和。所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值。所述第一发送单元1201还用于根据所述第二时长,发送所述第一控制队列中位于队首的控制报文。所述第二发送单元1202还用于根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。
在一种实现方式中,所述转发设备还包括:第二获得单元1207。所述第二获得单元1207用于在所述数据队列处于空闲状态的时长达到第三阈值时,根据所述CBS和第三CIR获得第三时长。所述第三CIR大于所述第一CIR。所述第三阈值为第一RTT和第二RTT中的最大值。所述第一RTT为所述转发设备发送第一控制报文起直至所述转发设备接收到由所述第一控制报文触发发送的C个数据报文为止的时长。所述第二RTT为所述转发设备发送第二控制报文起直至所述转发设备接收到由所述第二控制报文触发发送的C个数据报文为止的时长。所述第一发送单元1201还用于根据所述第三时长,发送所述第一控制队列中位于队首的控制报文。所述第二发送单元1202还用于根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集。所述二数据报文集包括C个数据报文。
在一种实现方式中,所述转发设备还包括:第一接收单元1203、第二接收单元1204和第一控制单元1205。所述第一接收单元1203用于接收来自所述第一源设备的第一控制报文。所述第一控制报文包括第一参数集。所述第二接收单元1204用于接收所述分组网络中第二源设备发送的第二控制报文。所述第二控制报文包括第二参数集。所述第二参数集与所述第一参数集不相同。所述转发设备用于在所述分组网络中向第二目的设备发送来自所述第二源设备的报文。所述第一控制单元1205用于基于接收到所述第一控制报文和所述第二控制报文的顺序,将所述第一控制报文和所述第二控制报文放入所述第一控制队列。
在一种实现方式中,所述转发设备还包括第二控制单元1208。所述第二控制单元1208用于在所述数据队列中已缓存的数据报文的包长之和大于或等于第二阈值时,控制所述第二发送单元1202发送所述数据队列中位于队首的第二数据报文集,且控制所述第一发送单元1201停止发送所述第一控制队列中位于队首的控制报文。所述第二数据报文集包括C个数据报文。所述第二阈值为所述数据队列所能缓存的数据报文的包长之和的最大值。
在一种实现方式中,所述转发设备还包括:第三控制单元1209、第一生成单元1210和更新单元1211。所述第三控制单元1209用于在所述数据队列存在空闲的且未被预留的存储空间,且所述转发设备的登记表存在未被占用的C个表项,则确定预留第一存储空间。所述第一存储空间用于缓存所述由所述第一控制报文触发发送的所述C个数据报文。所述第一生成单元1210用于根据所述第一参数集和所述C个序列号,生成C个标识。所述C个标识中的第i标识为所述第一参数集和所述C个序列号中的第i序列号生成的标识。所述i的取值范围为1至所述C中的整数。所述更新单元1211用于将所述第一RTT和所述C个标识写入所述未被占用的C个表项中。所述C个表项中的第i表项包括所述第一RTT和所述第i标识。
在一种实现方式中,所述转发设备还包括:定时单元1212和第四控制单元1213。所述定时单元1212用于为所述C个表项中的第i表项设置第i定时器。所述第i定时器的时长为所述第一RTT。所述第四控制单元1213用于在所述第i定时器超时之前未接收到第i数据报文,控制所述更新单元1212释放所述C个表项中的第i表项和所述第一存储空间中为所述第i数据报文预留的存储空间。所述第i数据报文为所述由所述第一控制报文触发发送的所述C个数据报文中的任一数据报文。所述第i数据报文包括所述第一参数集和所述第i序列号。
在一种实现方式中,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文。所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号。所述j的取值为1至所述C中的整数。所述转发设备还包括:第二生成单元1214和第五控制单元1215。所述第二生成单元1214用于根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识。所述第五控制单元1215用于在确定所述登记表包括所述第j标识之后,将所述第j数据报文放入所述转发设备的数据队列中,并控制所述更新单元1211释放所述登记表中包括所述第j标识的表项。
在一种实现方式中,所述第一数据报文集为所述所述第一控制报文触发发送的所述C个数据报文。所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号。所述j的取值为1至所述C中的整数。所述转发设备还包括:第二生成单元1214、判断单元1216和第六控制单元1217。所述第二生成单元1214用于根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识。所述判断单元1216用于在确定所述登记表不包括所述第j标识之后,判断所述数据队列中是否存在空闲的且未被预留的可容纳所述第j数据报文的存储空间。所述第六控制单元1217用于在所述判断单元1216确定所述数据队列中存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,将所述第j数据报文放入所述转发设备的数据队列中。在另一种实现方式中,所述第六控制单元1217还用于在所述判断单元1216确定所述数据队列中不存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,丢弃所述第j数据报文。
实施例八提供的转发设备所包括的单元可以执行上述实施例一、实施例二或实施例四提供的中间节点的相应功能。所述第一发送单元1201用于支持所述转发设备执行实施一中的S204和S210,和/或实施例二中的S406,和/或实施例四中的S808。所述第二发送单元1202用于支持所述转发设备执行实施例一中的S211,和/或实施例二中的S416。所述第一接收单元1203用于支持所述转发设备执行实施例一中的S202,和/或实施例二中的S402,和/或实施例四中的S802。所述第二接收单元1204用于支持所述转发设备执行实施例二中的S404,和/或实施例四中的S804。所述第一控制单元1205用于支持所述转发设备实现实施例一中的S203和S209,和/或实施例二中的S405和S414,和/或实施例四中的S805。所述第一获得单元1206、所述第二获得单元1207和所述第一发送单元1201用于支持所述转发设备执行实施例二中的S415。所述第三控制单元1209用于支持所述转发设备执行实施例四中的S806。所述第一生成单元1210和所述更新单元1211用于支持所述转发设备执行实施例四中的S807。所述更新单元1211、所述第二生成单元1214、所述第五控制单元1215、所述判断单元1216和所述第六控制单元1217用于支持所述转发设备执行实施例四中的S812和S813。
在采用集成结构的情况下,实施例八提供的转发设备所包括的所述第一控制单元1205、所述第一获得单元1206、所述第二获得单元1207、所述第二控制单元1208、所述第三控制单元1209、所述第一生成单元1210、所述更新单元1211、所述定时单元1212、所述第四控制单元1213、所述第五控制单元1215、所述第二生成单元1214、所述判断单元1216和所述第六控制单元1217的功能可由处理单元来实现。实施例八提供的转发设备所包括的所述第一接收单元1203、所述第二接收单元1204、所述第一发送单元1201和所述第二发送单元1202的功能可由通信单元来实现。在采用集成结构的情况下,所述源设备还包括用于存储程序代码和数据的存储单元。所述存储单元还可用来缓存某一业务流的数据报文和与所述数据报文匹配的控制报文。所述处理单元、所述通信单元和所述存储单元的具体内容可参见实施例一至实施例六以及实施例八中的相应内容。
实施例九
图13为本申请实施例九提供的转发设备的结构示意图。实施例九提供的转发设备可作为分组网络中发送端与接收端之间的物理链路上的中间节点。实施例九提供的转发设备可实现实施例三中的中间节点的功能。实施例九提供的转发设备还可采用实施例六提供的状态机,具体内容可参见实施例六的相应内容。实施例九提供的转发设备可以是对实施例八提供的转发设备的部分结构进行替换,具体地,实施例九提供的转发设备包括的第一接收单元1303、替换实施例八提供的转发设备包括的第一接收单元1203。实施例九提供的转发设备包括的第二接收单元1304替换实施例八提供的转发设备包括的第二接收单元1204。实施例九提供的转发设备包括的第一控制单元1305替换实施例八提供的转发设备包括的第一控制单元1205。图13所示的实施例九提供的转发设备包括的其他单元的内容可参见实施例八中的相应内容。
在一种实现方式中,所述第一接收单元1303用于接收来自第一源设备的第一控制报文,将所述第一控制报文放入所述第一控制队列。所述第一控制报文包括第一参数集。所述第二接收单元1304用于接收来自第二源设备的第二控制报文,将所述第二控制报文放入第二控制队列。所述第二控制队列的优先级低于所述第一控制队列的优先级。所述第二控制报文包括第二参数集。所述第二参数集与所述第一参数集不相同。所述转发设备用于在所述分组网络中向第二目的设备发送来自所述第二源设备的报文。所述第一控制单元1305用于根据所述第一控制队列的优先级和所述第二控制队列的优先级,控制所述第一发送单元在达到所述第一时长后,按照优先级调度策略发送所述第一控制队列或所述第二控制队列中的控制报文。所述优先级调度策略为PQ或WFQ。实施例九提供的转发设备所包括的单元可以执行上述实施例三的中间节点的相应功能。所述第一接收单元1303和所述第二接收单元1304用于支持所述转发设备执行实施例三中的S602、S604和S605。所述第一控制单元1305用于支持所述转发设备执行实施例三中的S606。
本申请实施例八和实施例九提供的转发设备还包括用于将接收到的数据报文放入所述中间节点的数据队列的模块。所述模块用于支持所述实施例八或实施例九提供的转发设备执行实施例一中的S207,和/或实施例二中的S411,和/或实施例三中的S609和S612。基于实施例八的集成结构,实施例九提供的转发设备在采用集成结构的情况下,所述第一接收单元1303和所述第二接收单元1304的功能可由通信模块来实现,所述第一控制单元1305的功能可由处理模块来实现。实施例九的集成结构与实施例八的集成结构相同的内容,可参见实施例八中的相应内容。
实施例十
图14为本申请实施例十提供的源设备的结构示意图。实施例十提供的源设备可以是实施例七提供的源设备。实施例十提供的源设备是从硬件结构的角度对源设备的结构进行的描述。实施例十提供的源设备可实现实施例一中的源主机的功能或实施例五中S1所标识的设备的功能。或者实施例十提供的源设备可实现实施例二至实施例四中任一实施例中的第一主机的功能或第三主机的功能。实施例十提供的源设备包括处理器1401、存储器1402、通信总线1404和通信接口1403。所述处理器1401、所述存储器1402和所述通信接口1403通过通信总线1404连接。所述存储器1402用于存储程序。所述处理器1401根据从所述存储器1402中读取的程序所包括的可执行指令,执行上述实施例一中的源主机执行的方法,和/或实施例二至实施例四中任一实施例中的第一主机执行的方法,和/或实施例二至实施例四中任一实施例中的第三主机执行的方法。所述处理器1401可通过通信接口1403接收某一业务流的数据报文和收发与所述数据报文对应的控制报文。
实施例十提供的源设备所包括的硬件结构可以执行实施例一中的源主机、实施例二至实施例四中任一实施例中的第一主机、和/或实施例二至实施例四中任一实施例中的第三主机的相应功能。当所述源设备具有实施例一中源主机的功能,所述通信接口1403用于支持所述源设备执行实施一中的S202、S205、S212、S206和S208。所述处理器1401用于支持所述源设备执行实施例一中的S201。所述存储器1402除了用于存储程序代码和数据之外,还用于缓存实施例一中的第一控制报文、第二控制报文和第一数据报文集。
当所述源设备具备实施例二至实施例四中的第一主机的功能,所述通信接口1403用于支持所述源设备执行实施例二中的S402、S407、S409和S412,和/或实施例三中的S602、S607和S608,和/或实施例四中的S802、S810和S811。所述处理器1401用于支持所述源设备执行实施例二中的S401,和/或实施例三中的S601,和/或实施例四中的S801。所述存储器1402除了用于存储程序代码和数据之外,还用于缓存实施例二中的第一控制报文、第五控制报文和C1个数据报文,和/或实施例三中的第一控制报文和C1个数据报文,和/或实施例四中的第一控制报文和C1个数据报文。
当所述源设备具备实施例二至实施例四中的第三主机的功能,所述通信接口1403用于支持所述源设备执行实施例二中的S404、S408、S410和S413,和/或实施例三中的S604、S610和S611,和/或实施例四中的S804。所述处理器1401用于支持所述源设备执行实施例二中的S403,和/或实施例三中的S603,和/或实施例四中的S803。所述存储器1402除了用于存储程序代码和数据之外,还用于缓存实施例三中的第二控制报文和C2个数据报文,和/或实施例四中的第二控制报文。
实施例十一
图15为本申请实施例十一提供的转发设备的结构示意图。实施例十一提供的转发设备可作为分组网络中发送端与接收端之间的物理链路上的中间节点。实施例十一提供的源设备可实现实施例一至四中的中间节点的功能。实施例十一提供的转发设备还可采用实施例六提供的状态机,具体内容可参见实施例六的相应内容。实施例十一提供的转发设备包括处理器1501、存储器1502、通信总线1504和通信接口1503。所述处理器1501、所述存储器1502和所述通信接口1503通过通信总线1504连接。所述存储器1502用于存储程序。所述处理器1501根据从所述存储器1502中读取的程序所包括的可执行指令,执行上述实施例一至实施例四中任一实施例中的中间节点执行的方法。所述处理器1501可通过通信接口1503收发一条或多条业务流的数据报文和收发与所述数据报文对应的控制报文。
实施例十一提供的转发设备所包括的单元可以执行上述实施例一至实施例四中任一实施例提供的中间节点的相应功能。所述通信接口1503用于支持所述转发设备执行实施一中的S204、S210、S211和S202,和/或实施例二中的S406、S415、S416、S402和S404,和/或实施例三中的S602、S604和S606,和/或实施例四中的S808、S802和S804。所述处理器1501用于支持所述转发设备实现实施例一中的S203、S207和S209,和/或实施例二中的S405、S411和S414,和/或实施例三中的S605、S609和S612,和/或实施例四中的S805、S806、S807、S809、S812和S813。
实施例十二
图16为本申请实施例十二提供的转发设备的结构示意图。实施例十二提供的转发设备是从产品硬件实现的角度对转发设备的结构进行描述。实施例十二提供的转发设备还可采用实施例六提供的状态机,具体内容可参见实施例六的相应内容。实施例十二提供的转发设备包括交换网板1605和下行单板1600。所述下行单板1600用于处理来自用户的且发送给网络侧的报文。所述下行单板1600包括交换接口控制器(fabric interfacecontroller,FIC)1604、流管理(traffic manager,TM)芯片1603、包转发引擎(packetforward engine,PFE)1602和物理接口控制器(physical interface controller,PIC)1601。其中,所述交换网板1605、所述交换接口控制器1604、所述包转发引擎1602和所述物理接口控制器1601支持通常的路由器相应硬件的功能。所述流管理芯片1603在支持通常的路由器包括的流管理芯片的功能的基础上,还能够支持实施例十一的转发设备的功能。实施例十一的转发设备所包括的通信接口可以是所述流管理芯片603与所述交换接口控制器1604和所述包转发引擎1602之间的接口。实施例十一的转发设备所包括的处理器1501可以是所述流管理芯片1603中的处理器。所述流管理芯片1603包括的令牌桶的功能、控制队列处理功能以及数据队列处理功能均可由设置于所述流管理芯片1603的处理器实现。实施例十一的转发设备所包括的存储器1502可以是所述流管理芯片1603中用于缓存数控制队列和数据队列的存储器或存储空间。实施例十二的转发设备的具体内容可参见实施例十一中的相应内容。
本申请实施例十三提供了一种分组网络中控制流量的系统。所述系统包括源设备和中间设备。所述源设备具备实施例一提供的源主机的功能,所述转发设备具备实施例一提供的中间节点的功能。或者所述源设备具备实施例二提供的第一主机或第三主机的功能,所述转发设备具备实施例二提供的中间节点的功能。或者所述源设备具备实施例三提供的第一主机或第三主机的功能,所述转发设备具备实施例三提供的中间节点的功能。或者所述源设备具备实施例四提供的第一主机或第三主机的功能,所述转发设备具备实施例四提供的中间节点的功能。
本申请实施例十四提供了一种分组网络中的目的设备。所述目的设备包括接收模块、生成模块和发送模块。所述接收模块用于接收来自源设备的第一控制报文,所述第一控制报文包括参数集。所述生成模块用于根据所述第一控制报文生成第二控制报文,所述第二控制报文的源地址为所述第一控制报文的目的地址,所述第二控制报文的目的地址为所述第一控制报文的源地址。所述发送模块用于向所述源设备发送所述第二控制报文。其中,所述第二控制报文的源地址为所述目的设备的地址。所述第二控制报文的目的地址为所述源设备的地址。其中,所述目的设备可以是上述第一方面、第二方面或任一种可能的设计中提及的接收端。当所述目的设备是实施例一中的目的主机,则所述源设备为实施例一中的源主机。当所述目的设备是实施例二至实施例四中任一实施例中的第二主机,则所述源设备为相应的实施例中的第一主机。当所述目的设备是实施例二至实施例四中任一实施例中的第四主机,则所述源设备为相应的实施例中的第三主机。
本申请实施例提供的场景中,中间节点的出端口包括的令牌桶可以替换为其他调度器,所述其他调度器的功能与所述令牌桶的功能相同。本申请实施例中的任意一种主机可以是用户侧的终端或用户侧的网络设备。其中,所述用户侧的终端可以是被用户使用的平板或计算机。所述用户侧的网络设备可以是设置于用户侧的机顶盒或家庭网关。
本申请实施例中为了描述方便,用“第一”、“第二”、“第三”和“第四”对位于不同设备上的数据队列和控制队列进行区分。以图1所示的场景为例,S1上的数据队列也可以称为第二数据队列,S1上的控制队列也可以称为第二控制队列,相应地,R2上的数据队列称为第一数据队列,R2上的控制队列称为第一控制队列。其他附图所示的场景中,数据队列和控制队列的名称可根据需要进行设置,并不局限于附图所示的场景中提供的方式。
本申请实施例中的数据通道和控制通道承载于源主机(第一主机)与目的主机(第二主机)之间的一条或多条物理链路。若所述数据通道和所述控制通道承载于所述一条物理链路上,则所述数据通道的带宽和所述控制通道的带宽之和为所述一条物理链路的带宽,且所述数据通道和所述控制通道的带宽比为所述C个数据报文的包长之和与任一控制报文的包长之比。图11至图13只是对于所述数据通道和所述控制通道承载于一条物理链路的示意。若所述数据通道和所述控制通道分别承载于源主机(第一主机)与目的主机(第二主机)之间两条物理链路上,则承载所述数据通道的物理链路和承载所述控制通道的物理链路的带宽比为所述C个数据报文的包长之和与任一控制报文的包长之比。承载所述数据通道的物理链路和承载所述控制通道的物理链路所经过的节点相同,这样,通过发送控制报文所探测获得的承载所述控制通道的物理链路的链路状况能够间接地反映承载所述数据通道的物理链路的链路状况。
本申请实施例中所提及的通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器。结合本发明实施例所公开的方法的步骤,可以直接体现为处理器中的硬件及软件模块组合执行完成。当使用软件实现时,可以将实现上述功能的代码存储在计算机可读介质中。计算机可读介质包括计算机存储介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以是随机存取存储器(英文全称为random-access memory,英文缩写为RAM)、只读存储器(英文全称为read-only memory,英文缩写为ROM)、电可擦可编程只读存储器(英文全称为electrically erasableprogrammable read-only memory,英文缩写为EEPROM)、只读光盘(英文全称为compactdisk read-only memory,英文缩写为CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。计算机可读介质可以是压缩碟(英文全称为compact disk,英文缩写为CD)、激光碟、数字视频光碟(英文全称为digital video disk,英文缩写为DVD)、软盘或者蓝光碟。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

Claims (24)

1.一种分组网络中控制流量的方法,其特征在于,包括:
在分组网络中用于向接收端发送来自发送端的报文的中间节点根据第一时长,发送第一控制队列中位于队首的控制报文,所述第一时长是基于承诺突发尺寸CBS与第一承诺信息速率CIR获得,所述中间节点用于在所述分组网络中向第一接收端发送来自第一发送端的报文;
所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集,所述第一数据报文集包括C个数据报文,所述C为大于或等于1的整数。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述中间节点接收来自所述第一发送端的第一控制报文,所述第一控制报文包括第一参数集;
所述中间节点接收所述分组网络中第二发送端发送的第二控制报文,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述中间节点用于在所述分组网络中向第二接收端发送来自所述第二发送端的报文;
所述中间节点基于接收到所述第一控制报文和所述第二控制报文的顺序,将所述第一控制报文和所述第二控制报文放入所述第一控制队列。
3.根据权利要求2所述的方法,其特征在于,所述C个数据报文是来自于所述第一发送端的数据报文,所述来自于所述第一发送端的数据报文包括所述第一参数集;或者
所述C个数据报文是来自于所述第二发送端的数据报文,所述来自于所述第二发送端的数据报文包括所述第二参数集。
4.根据权利要求1至3任一所述的方法,其特征在于,还包括:
所述中间节点在所述数据队列中已缓存的数据报文的包长之和大于或等于第一阈值且小于第二阈值时,根据所述CBS和第二CIR获得第二时长,所述第二CIR小于所述第一CIR,所述第一阈值大于所述C个数据报文的包长之和,所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值;
所述中间节点根据所述第二时长,发送所述第一控制队列中位于队首的控制报文;
所述中间节点根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。
5.根据权利要求1至3任一所述的方法,其特征在于,还包括:
所述中间节点在所述数据队列处于空闲状态的时长达到第三阈值时,根据所述CBS和第三CIR获得第三时长,所述第三CIR大于所述第一CIR,所述第三阈值为第一RTT和第二RTT中的最大值,所述第一RTT为所述中间节点发送第一控制报文起直至所述中间节点接收到由所述第一控制报文触发发送的C个数据报文为止的时长,所述第二RTT为所述中间节点发送第二控制报文起直至所述中间节点接收到由所述第二控制报文触发发送的C个数据报文为止的时长;
所述中间节点根据所述第三时长,发送所述第一控制队列中位于队首的控制报文;
所述中间节点根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。
6.根据权利要求1至3任一所述的方法,其特征在于,还包括:
所述中间节点在所述数据队列中已缓存的数据报文的包长之和大于或等于第二阈值时,发送所述数据队列中位于队首的第二数据报文集,且停止发送所述第一控制队列中位于队首的控制报文,所述第二数据报文集包括C个数据报文,所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值。
7.根据权利要求1所述的方法,其特征在于,还包括:
所述中间节点接收来自所述第一发送端的第一控制报文,将所述第一控制报文放入所述第一控制队列,所述第一控制报文包括第一参数集;
所述中间节点接收来自第二发送端的第二控制报文,将所述第二控制报文放入第二控制队列,所述第二控制队列的优先级低于所述第一控制队列的优先级,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述中间节点用于在所述分组网络中向第二接收端发送来自所述第二发送端的报文;
中间节点根据第一时长,发送第一控制队列中位于队首的控制报文包括:所述中间节点根据所述第一控制队列的优先级和所述第二控制队列的优先级,在达到所述第一时长后,按照优先级调度策略发送所述第一控制队列或所述第二控制队列中的控制报文,所述优先级调度策略为优先级队列调度PQ或加权公平队列调度WFQ。
8.根据权利要求2或7所述的方法,其特征在于,所述第一控制报文包括第一参数集、第一RTT和C个序列号,所述第一RTT为所述中间节点发送第一控制报文起直至所述中间节点接收到由所述第一控制报文触发发送的C个数据报文为止的时长,所述中间节点根据第一时长,发送第一控制队列中位于队首的控制报文之前,还包括:
所述中间节点在所述数据队列存在空闲的且未被预留的存储空间,且所述中间节点的登记表存在未被占用的C个表项,则确定预留第一存储空间,所述第一存储空间用于缓存所述由所述第一控制报文触发发送的所述C个数据报文;
所述中间节点根据所述第一参数集和所述C个序列号,生成C个标识,所述C个标识中的第i标识为所述第一参数集和所述C个序列号中的第i序列号生成的标识,所述i的取值范围为1至所述C中的整数;
所述中间节点将所述第一RTT和所述C个标识写入所述未被占用的C个表项中,所述C个表项中的第i表项包括所述第一RTT和所述第i标识。
9.根据权利要求8所述的方法,其特征在于,所述中间节点将所述第一RTT和所述C个标识写入所述未被占用的C个表项中之后,还包括:
所述中间节点为所述C个表项中的第i表项设置第i定时器,所述第i定时器的时长为所述第一RTT;
所述中间节点在所述第i定时器超时之前未接收到第i数据报文,则所述中间节点释放所述C个表项中的第i表项和所述第一存储空间中为所述第i数据报文预留的存储空间,所述第i数据报文为所述由所述第一控制报文触发发送的所述C个数据报文中的任一数据报文,所述第i数据报文包括所述第一参数集和所述第i序列号。
10.根据权利要求8所述的方法,其特征在于,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集之前,还包括:
所述中间节点根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;
所述中间节点在确定所述登记表包括所述第j标识之后,将所述第j数据报文放入所述中间节点的数据队列中;
所述中间节点释放所述登记表中包括所述第j标识的表项。
11.根据权利要求8所述的方法,其特征在于,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,所述中间节点根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集之前,还包括:
所述中间节点根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;
所述中间节点在确定所述登记表不包括所述第j标识之后,判断所述数据队列中是否存在空闲的且未被预留的可容纳所述第j数据报文的存储空间;
所述中间节点确定所述数据队列中存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,将所述第j数据报文放入所述中间节点的数据队列中。
12.根据权利要求11所述的方法,其特征在于,还包括:
所述中间节点确定所述数据队列中不存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,丢弃所述第j数据报文。
13.一种分组网络中的转发设备,其特征在于,所述转发设备用于在所述分组网络中向接收端发送来自发送端的报文;所述转发设备用于在所述分组网络中向第一目的设备发送来自第一源设备的报文,包括:
第一发送单元,用于根据第一时长,发送第一控制队列中位于队首的控制报文,所述第一时长是基于承诺突发尺寸CBS与第一承诺信息速率CIR获得;
第二发送单元,用于根据已发送的控制报文,发送数据队列中位于队首的第一数据报文集,所述第一数据报文集包括C个数据报文,所述C为大于或等于1的整数。
14.根据权利要求13所述的转发设备,其特征在于,还包括:
第一接收单元,用于接收来自所述第一源设备的第一控制报文,所述第一控制报文包括第一参数集;
第二接收单元,用于接收所述分组网络中第二源设备发送的第二控制报文,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述转发设备用于在所述分组网络中向第二目的设备发送来自所述第二源设备的报文;
第一控制单元,用于基于接收到所述第一控制报文和所述第二控制报文的顺序,将所述第一控制报文和所述第二控制报文放入所述第一控制队列。
15.根据权利要求14所述的转发设备,其特征在于,所述C个数据报文是来自于所述第一源设备的数据报文,所述来自于所述第一源设备的数据报文包括所述第一参数集;或者
所述C个数据报文是来自于所述第二源设备的数据报文,所述来自于所述第二源设备的数据报文包括所述第二参数集。
16.根据权利要求13至15任一所述的转发设备,其特征在于,还包括:
第一获得单元,用于在所述数据队列中已缓存的数据报文的包长之和大于或等于第一阈值且小于第二阈值时,根据所述CBS和第二CIR获得第二时长,所述第二CIR小于所述第一CIR,所述第一阈值大于所述C个数据报文的包长之和,所述第二阈值为所述数据队列所能缓存数据报文的包长之和的最大值;
所述第一发送单元还用于根据所述第二时长,发送所述第一控制队列中位于队首的控制报文;
所述第二发送单元还用于根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述第二数据报文集包括C个数据报文。
17.根据权利要求13至15任一所述的转发设备,其特征在于,还包括:
第二获得单元,用于在所述数据队列处于空闲状态的时长达到第三阈值时,根据所述CBS和第三CIR获得第三时长,所述第三CIR大于所述第一CIR,所述第三阈值为第一RTT和第二RTT中的最大值,所述第一RTT为所述转发设备发送第一控制报文起直至所述转发设备接收到由所述第一控制报文触发发送的C个数据报文为止的时长,所述第二RTT为所述转发设备发送第二控制报文起直至所述转发设备接收到由所述第二控制报文触发发送的C个数据报文为止的时长;
所述第一发送单元还用于根据所述第三时长,发送所述第一控制队列中位于队首的控制报文;
所述第二发送单元还用于根据已发送的控制报文,发送所述数据队列中位于队首的第二数据报文集,所述二数据报文集包括C个数据报文。
18.根据权利要求13至15任一所述的转发设备,其特征在于,还包括:
第二控制单元,用于在所述数据队列中已缓存的数据报文的包长之和大于或等于第二阈值时,控制所述第二发送单元发送所述数据队列中位于队首的第二数据报文集,且控制所述第一发送单元停止发送所述第一控制队列中位于队首的控制报文,所述第二数据报文集包括C个数据报文,所述第二阈值为所述数据队列所能缓存的数据报文的包长之和的最大值。
19.根据权利要求13所述的转发设备,其特征在于,还包括:
第一接收单元,用于接收来自第一源设备的第一控制报文,将所述第一控制报文放入所述第一控制队列,所述第一控制报文包括第一参数集;
第二接收单元,用于接收来自第二源设备的第二控制报文,将所述第二控制报文放入第二控制队列,所述第二控制队列的优先级低于所述第一控制队列的优先级,所述第二控制报文包括第二参数集,所述第二参数集与所述第一参数集不相同,所述转发设备用于在所述分组网络中向第二目的设备发送来自所述第二源设备的报文;
第一控制单元,用于根据所述第一控制队列的优先级和所述第二控制队列的优先级,控制所述第一发送单元在达到所述第一时长后,按照优先级调度策略发送所述第一控制队列或所述第二控制队列中的控制报文,所述优先级调度策略为优先级队列调度PQ或加权公平队列调度WFQ。
20.根据权利要求14或19所述的转发设备,其特征在于,所述第一控制报文包括第一参数集、第一RTT和C个序列号,所述第一RTT为所述转发设备发送第一控制报文起直至所述转发设备接收到由所述第一控制报文触发发送的C个数据报文为止的时长,还包括:
第三控制单元,用于在所述数据队列存在空闲的且未被预留的存储空间,且所述转发设备的登记表存在未被占用的C个表项,则确定预留第一存储空间,所述第一存储空间用于缓存所述由所述第一控制报文触发发送的所述C个数据报文;
第一生成单元,用于根据所述第一参数集和所述C个序列号,生成C个标识,所述C个标识中的第i标识为所述第一参数集和所述C个序列号中的第i序列号生成的标识,所述i的取值范围为1至所述C中的整数;
更新单元,用于将所述第一RTT和所述C个标识写入所述未被占用的C个表项中,所述C个表项中的第i表项包括所述第一RTT和所述第i标识。
21.根据权利要求20所述的转发设备,其特征在于,还包括:
定时单元,用于为所述C个表项中的第i表项设置第i定时器,所述第i定时器的时长为所述第一RTT;
第四控制单元,用于在所述第i定时器超时之前未接收到第i数据报文,控制所述更新单元释放所述C个表项中的第i表项和所述第一存储空间中为所述第i数据报文预留的存储空间,所述第i数据报文为所述由所述第一控制报文触发发送的所述C个数据报文中的任一数据报文,所述第i数据报文包括所述第一参数集和所述第i序列号。
22.根据权利要求20所述的转发设备,其特征在于,所述第一数据报文集为所述由所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,还包括:
第二生成单元,用于根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;
第五控制单元,用于在确定所述登记表包括所述第j标识之后,将所述第j数据报文放入所述转发设备的数据队列中,并控制所述更新单元释放所述登记表中包括所述第j标识的表项。
23.根据权利要求20所述的转发设备,其特征在于,所述第一数据报文集为所述第一控制报文触发发送的所述C个数据报文,所述第一数据报文集中的第j数据报文包括所述第一参数集和第j序列号,所述j的取值为1至所述C中的整数,还包括:
第二生成单元,用于根据所述第j数据报文包括的所述第一参数集和所述第j序列号,生成第j标识;
判断单元,用于在确定所述登记表不包括所述第j标识之后,判断所述数据队列中是否存在空闲的且未被预留的可容纳所述第j数据报文的存储空间;
第六控制单元,用于在所述判断单元确定所述数据队列中存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,将所述第j数据报文放入所述转发设备的数据队列中。
24.根据权利要求23所述的转发设备,其特征在于,
所述第六控制单元还用于在所述判断单元确定所述数据队列中不存在空闲的且未被预留的可容纳所述第j数据报文的存储空间之后,丢弃所述第j数据报文。
CN202011639151.3A 2018-02-14 2018-02-14 一种分组网络中控制流量的方法及装置 Active CN112866127B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011639151.3A CN112866127B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法及装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810152118.4A CN110166367B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法、装置及存储介质
CN202011639151.3A CN112866127B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201810152118.4A Division CN110166367B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112866127A CN112866127A (zh) 2021-05-28
CN112866127B true CN112866127B (zh) 2022-12-30

Family

ID=67619146

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810152118.4A Active CN110166367B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法、装置及存储介质
CN202011639151.3A Active CN112866127B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810152118.4A Active CN110166367B (zh) 2018-02-14 2018-02-14 一种分组网络中控制流量的方法、装置及存储介质

Country Status (4)

Country Link
US (2) US11516134B2 (zh)
EP (1) EP3745661B1 (zh)
CN (2) CN110166367B (zh)
WO (1) WO2019157867A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3677003A4 (en) 2017-08-31 2021-05-26 Pensando Systems Inc. METHODS AND SYSTEMS FOR OVERLOAD MANAGEMENT IN A NETWORK
CN110661723B (zh) 2018-06-29 2023-08-22 华为技术有限公司 一种数据传输方法、计算设备、网络设备及数据传输系统
US11212227B2 (en) 2019-05-17 2021-12-28 Pensando Systems, Inc. Rate-optimized congestion management
CN111143088B (zh) * 2019-12-18 2023-06-20 北京浩瀚深度信息技术股份有限公司 报文乱序问题处理方法、装置、设备及存储介质
US11394700B2 (en) 2020-01-31 2022-07-19 Pensando Systems Inc. Proxy service through hardware acceleration using an IO device
US11431681B2 (en) 2020-04-07 2022-08-30 Pensando Systems Inc. Application aware TCP performance tuning on hardware accelerated TCP proxy services
CN113677005A (zh) * 2020-05-14 2021-11-19 华为技术有限公司 一种通信方法及装置
US11863465B1 (en) * 2020-08-21 2024-01-02 Cox Communications, Inc. Local network traffic prioritization for improved quality of service
US11800498B2 (en) * 2021-03-01 2023-10-24 Charter Communications Operating, Llc Logical control channels and implementation in a network
KR20230169378A (ko) * 2021-07-15 2023-12-15 뉴 에이치3씨 테크놀로지스 코., 엘티디. 메시지 전송 방법 및 디바이스
CN114124841A (zh) * 2021-11-19 2022-03-01 青岛信大云谷信息科技有限公司 一种高速转发数据轻量级流量控制的方法
CN114173213A (zh) * 2021-12-10 2022-03-11 善理通益信息科技(深圳)有限公司 基于websocket的语音质量优化方法及对讲终端
CN114827033B (zh) * 2022-04-15 2024-04-19 咪咕文化科技有限公司 数据流控方法、装置、设备与计算机可读存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7102999B1 (en) * 1999-11-24 2006-09-05 Juniper Networks, Inc. Switching device
US7113507B2 (en) * 2000-11-22 2006-09-26 Silicon Image Method and system for communicating control information via out-of-band symbols
KR100456636B1 (ko) * 2002-11-25 2004-11-10 한국전자통신연구원 Ieee 1394와 tcp/ip를 동시에 지원하는 홈네트웍에서 지니 룩업 서비스 구조 및 방법
US7260079B1 (en) * 2003-04-07 2007-08-21 Nortel Networks, Ltd. Method and apparatus for directional transmission of high bandwidth traffic on a wireless network
FI20031502A0 (fi) * 2003-10-14 2003-10-14 Tellabs Oy Menetelmä ja laitteisto aggregaattiosuuskohtaisen vuonmuokkauksen tekemiseksi pakettikytkentäisessä tietoliikenteessä
WO2005076655A1 (ja) * 2004-02-10 2005-08-18 Mitsubishi Denki Kabushiki Kaisha 移動局、基地局、通信システム、および通信方法
CN101345749B (zh) * 2008-08-04 2011-07-20 华南理工大学 基于rts/cts机制的多跳无线网络拥塞控制方法
US8059559B2 (en) * 2008-09-09 2011-11-15 Embarq Holdings Company, Llc System and method for monitoring bandwidth utilization by a user
CN102377631B (zh) * 2010-08-06 2015-08-05 北京乾唐视联网络科技有限公司 一种基于流量控制的数据传输方法及通信系统
US8964538B2 (en) * 2010-09-24 2015-02-24 Broadcom Corporation Method and apparatus for supporting differentiated performance for multiple categories of packets in a passive optical network
US20130232537A1 (en) * 2012-03-04 2013-09-05 Qualcomm Atheros, Inc. Packet filtering at a media converter in a network with optical and coaxial components
CN102891803B (zh) 2012-10-10 2015-05-13 华为技术有限公司 拥塞处理方法及网络设备
US8989167B2 (en) * 2012-10-10 2015-03-24 Motorola Solutions, Inc. Method and apparatus for establishing radio communications on a trunked network using an inbound proxy
WO2014121843A1 (en) * 2013-02-08 2014-08-14 Telefonaktiebolaget L M Ericsson (Publ) Time slot allocation for burst switched network
CN103888379A (zh) * 2013-12-03 2014-06-25 江苏达科信息科技有限公司 一种基于可信调度的改进队列调度算法
US9621471B2 (en) * 2014-06-30 2017-04-11 Vmware, Inc. Framework for early congestion notification and recovery in a virtualized environment
RU2683483C2 (ru) * 2014-12-08 2019-03-28 Нек Корпорейшн Система управления беспроводными ресурсами, беспроводная базовая станция, устройство ретрансляции, способ управления беспроводными ресурсами и программа
US9838320B2 (en) * 2016-01-13 2017-12-05 Ciena Corporation Optimum utilization of green tokens in packet metering
US20180145919A1 (en) * 2016-11-23 2018-05-24 Qualcomm Incorporated Wi-fi link aggregation
CN107547388B (zh) * 2017-08-24 2021-03-09 新华三技术有限公司 一种报文发送方法及装置
SE544512C2 (en) * 2017-08-25 2022-06-28 Telia Co Ab Methods and apparatuses for routing data packets in a network topology
US11178262B2 (en) * 2017-09-29 2021-11-16 Fungible, Inc. Fabric control protocol for data center networks with packet spraying over multiple alternate data paths
US20190132765A1 (en) * 2017-10-31 2019-05-02 Qualcomm Incorporated Flow controlling a network stack
US10581962B2 (en) * 2017-11-01 2020-03-03 Alibaba Group Holding Limited Direct communication between physical server and storage service

Also Published As

Publication number Publication date
WO2019157867A1 (zh) 2019-08-22
US20200382426A1 (en) 2020-12-03
US11516134B2 (en) 2022-11-29
EP3745661B1 (en) 2023-06-07
US20230037724A1 (en) 2023-02-09
CN110166367A (zh) 2019-08-23
CN112866127A (zh) 2021-05-28
EP3745661A4 (en) 2021-01-20
EP3745661A1 (en) 2020-12-02
CN110166367B (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN112866127B (zh) 一种分组网络中控制流量的方法及装置
US7039013B2 (en) Packet flow control method and device
JP4446356B2 (ja) レート・シェーパ・アルゴリズム
JP7231749B2 (ja) パケットスケジューリング方法、スケジューラ、ネットワーク装置及びネットワークシステム
JP2008518552A (ja) 粗細試験期間を使用したネットワーク・パケットの経験的スケジューリング法
WO2003090419A1 (en) Reducing packet data delay variation
CN111147381B (zh) 流量均衡方法和装置
JP2007506364A (ja) ネットワーク・パケットの経験的スケジュール設定方法
Irazabal et al. Dynamic buffer sizing and pacing as enablers of 5G low-latency services
JP2002111742A (ja) データ伝送フローのパケットをマークするための方法およびこの方法を実行するマーカデバイス
US11805071B2 (en) Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus
JP4838739B2 (ja) ルータのバッファ管理方法並びにその管理方法を用いたルータ
JP4259349B2 (ja) トラヒックシェーピング方法及びトラヒックシェーピング装置
Badis et al. CEQMM: a complete and efficient quality of service model for MANETs
JP3540698B2 (ja) パケットスケジューリング方式及び方法及びこの方法を実行するプログラムを記録した記録媒体。
JP2004166080A (ja) パケットシェーパ、パケット中継装置
Bhatnagar et al. Providing quality of service guarantees using only edge routers
US20230254264A1 (en) Software-defined guaranteed-latency networking
Sivakumar et al. Analysis of FiWi networks to improve TCP performance
Peng et al. A multicast congestion control scheme for mobile ad-hoc networks
Coelho Implementation of Advanced Mechanisms for Cross-Protect Router
Lizambri et al. TCP throughput and buffer management
Casoni TCP window estimation for burst assembly in OBS networks
Joo et al. Weighted Fair Bandwidth Allocation for Adaptive Flows
CN116436863A (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
GR01 Patent grant