具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,其示出了本申请实施例的一种系统架构,终端设备至少可以包括:
操作系统和硬件层。
其中,操作系统分为用户层和内核层,用户层是基于用户态构建的,内核层是基于内核态构建的,用户层为上层应用程序的活动空间,应用程序的执行必须依托于内核层提供的资源,因此,内核层控制计算机的硬件资源,并提供上层应用程序运行的环境,运行在内核层中的应用程序可以通过系统调用,访问内核层中的计算机资源。
在本申请实施例中,用户层中可以运行有应用程序以及设定控制程序,内核层中可以运行有网络连接设备的驱动程序,用户层的运行的应用程序可以产生要发送的数据,并通过系统调用,向下发送至内核层的驱动程序,利用内核层中的网络连接设备驱动程序进行数据的封装,得到数据报文,再由驱动程序与硬件设备进行交互,将报文发送至硬件设备。
需要说明的是,上述应用程序,指为完成某项或多项特定工作的计算机程序,它运行在用户层,可以和用户进行交互,可以具有可视的用户界面,也可以在后台运行。
上述的驱动程序(Device Driver),全称为“设备驱动程序”,是一种可以使计算机和硬件设备通信的特殊程序,相当于硬件设备的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。
硬件层中设置有与网络连接的网络连接设备,网络连接设备可以包括报文接收模块、带宽确定模块、存储模块、指令寄存器模块和调度器。
网络连接设备是把网络中的通信线路连接起来的各种硬件设备的总称,用于传输数据至网络,对于单个计算机或者服务器而言,该网络连接设备可以是网卡,具有网卡功能的FPGA(Field-Programmable Gate Array,现场可编程门阵列)等,网络连接设备通过主板接口插在终端设备的主板上,并且网络连接设备通过总线与CPU进行通信,CPU启动后,操作系统通过总线向网络连接设备发送指令,由网络连接设备中对外的网络端口,将获取到的报文从该端口发送至网络中。
具体的,在本申请中可以通过网卡设备具体说明一种带宽隔离方法的实现方式。
需要说明的是,报文(message)是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息。数据报文是由操作系统的内核态的驱动程序,对用户层下发的数据包进行封装获得。通过将需要传输的数据封装成数据报文,即可以通过网络连接设备可以将数据报文传输至网络中。
图1中,报文接收模块用于S1接收数据报文,数据报文是由用户态中的应用程序生成,并经过内核态中的驱动程序封装后得到的。具体而言,是上述应用程序将待发送的数据包下发至驱动程序,驱动程序按照协议规定将该数据包封装为数据报文。数据报文中写有头部信息,该头部信息也叫数据包包头,可以包括五元组信息,具体包括:源IP(InternetProtocol,网络互连协议)地址,源端口,目的IP地址,目的端口和传输层协议,报文的数据包称为“数据流”,五元组信息可以称为“控制流”,用于对“数据流”进行控制,如,确定报文的目的地、所采用的传输协议等,不同的五元组信息可以区分不同数据报文的报文类别,以达到按不同报文类别传输不同数据报文的目的。
带宽确定模块S2根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定所述数据报文的头部信息所对应的目标带宽占用比例,该匹配过程逻辑简单,实现难度较低,产生的系统开销也较低。
存储模块是设置在网卡设备中的一个存储组件,可以存储由接收模块接收到的报文以及存储预设的带宽选择条件与带宽占用比例之间的对应关系。
需要说明的是,可以通过向操作系统中写入网卡对应的驱动程序,使得网卡设备在驱动初始化的时候,即操作系统加载网卡的时候,操作系统可以通过驱动注册函数,如当操作系统为Linux系统时,可以通过linux的probe函数去注册该驱动程序所对应的功能。
另外,网络连接设备中可以设置有指令寄存器,指令寄存器(CR,commandregister),是临时放置程序指令的寄存器,用于存放当前获取到的指令,指令寄存器模块可以与网卡驱动进行通信,获取经由网卡驱动判断合法的指令,因此可以通过指令寄存器模块的帮助,实现对存储模块中预设对应关系的更新,如,对对应关系进行“增删改查”处理。
调度器中,根据预设的对应关系建立有对应的传输队列,且针对每个传输队列,都被设定有对应的带宽占用比例,调度器用于S3将数据报文调度至传输队列,并按照数据报文所对应的目标带宽占用比例进行发送。
在本申请实施例中,带宽是指信号具有的频带宽度或者是单位时间内点到点所能通过的“最高数据率”,可以用来标识单位时间内通过链路的数据量,而一般基于网络互联设备的硬件规格,其最大网络传输带宽是固定的,带宽隔离的具体含义是为不同传输队列分配不同比例的带宽资源,以保证传输队列在传输数据报文时,严格按照规定的带宽占用比例进行发送,达到网络带宽资源的最优化利用。
需要说明的是,本申请实施例是对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请实施例可以任意增加或减少预设带宽选择条件集合中带宽选择条件的数量,使得对应传输队列的数量也可以任意增加或减少,大大提高了带宽隔离的效率。
具体的,对存储模块中预设对应关系的更新可以为,S4用户通过运行在用户层的设定控制程序生成第二更新指令,该第二更新指令经由网卡设备的驱动程序判断合法后,S5驱动程序会将对应的第一更新指令发送至指令寄存器模块,使得指令寄存器模块S6根据第一更新指令的具体内容,更新存储模块中预设的对应关系,其中,第一更新指令和第二更新指令可以为同一指令。
需要说明的是,本申请的设定控制程序是运行在用户层的,其是用于对网络连接设备中的带宽选择条件与带宽占用比例之间的对应关系的更新操作。其中所述更新操作包括:增加、删除、修改几种操作中的一种或者多种。
在本申请实施例中,可以根据实际需求,建立对应的预设带宽选择条件集合,基于在网卡设备中带宽隔离的具体实现方法,可以为建立带宽选择条件表,并将该带宽选择条件表存储在存储模块中,在一个具体实例中,可以建立如下表1的带宽选择条件表,表1中包括了A、B两组预设的带宽选择条件与带宽占用比例之间的对应关系。
表1
其中,*代表这一项为任意值,即数据报文的头部信息中,无论对应该项的值为何值,都可以与*匹配,另外,带宽占用比例是一个百分数,代表通过该条件传输的数据报文所占的带宽与总带宽的比值。
同时,根据上表1,可以对应建立传输队列1和传输队列2,其中,队列1传输的数据报文需满足源IP为192.168.0.10,目的IP为192.168.0.100,传输协议为传输控制协议(TCP,Transmission Control Protocol),传输数据报文所占的带宽与总带宽的比值为百分之四十。队列2传输的数据报文需满足目的端口为4791的RDMA端口,传输协议为UDP(UserDatagram Protocol,用户数据报协议),传输数据报文所占的带宽与总带宽的比值为百分之六十。
因此,当报文接收模块接收到数据报文时,带宽确定模块将数据报文与带宽选择条件表进行比较,调度器根据比较结果,将所有从源IP为192.168.0.10,任意源端口,发往目的IP为192.168.0.100,任意目的端口,且传输协议为TCP的数据报文调度至队列1,按照百分之四十的带宽占用比例进行发送,将从任意源IP,任意源端口,发往任意目的IP,目的端口为4791,且传输协议为UDP的数据报文调度至队列2,按照百分之六十的带宽占用比例进行发送,队列1和队列2严格按照被分配的带宽值进行报文发送,不会占用到额外的带宽资源,达到了对不同两种类型数据报文实现带宽隔离的目的。
需要说明的是,本申请提供的一种带宽隔离装置的硬件实现不局限于网卡,可以在FPGA芯片中独立实现,也可以在SoC(System on Chip,系统级芯片)中实现,FPGA芯片包括一些基本的逻辑门电路或者更复杂一些的组合功能,比如解码器或数学方程式,可以通过写入程序从而实现相应的功能,SoC芯片是一个有专用目标的集成电路,其中包含完整的系统并有嵌入软件的全部内容,FPGA芯片与SoC芯片可以作为一种定制兼嵌入式芯片,可以通过向操作系统中中写入芯片的对应数据报文接收、处理、调度发送的驱动程序,使得芯片去应用该驱动程序所对应的功能,由芯片的存储器存储预设带宽选择条件集合,并由芯片的处理器执行数据报文的头部信息与带宽选择条件与带宽占用比例之间的对应关系进行比较的逻辑处理,进一步通过芯片的调度器建立传输队列和调度数据报文进行发送的操作,因此,本申请实施例对一种带宽隔离方法所应用的具体网络连接设备不做限定。
本申请应用于终端设备的网络连接设备中的带宽隔离装置,终端设备中安装有与网络连接设备对应的驱动程序,带宽隔离装置包括:报文接收模块,用于通过驱动程序获取数据报文;带宽确定模块,用于根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建;调度器,用于根据目标带宽占用比例,对数据报文进行发送,从而实现了报文传输的带宽隔离,并且,本申请通过对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请可以任意增加或减少带宽选择条件与带宽占用比例之间的对应关系的数量,使得对应传输数据报文的通道的数量也可以任意增加或减少,大大提高了带宽隔离的效率,另外,由于本申请的方案是对已封装好的报文进行分析和处理,处理时机处于协议栈的最底层的硬件层,不受用户态或软/硬件内核态的约束,因此可以支持并兼容所有的传输协议,可以实现rdma等纯硬件层的高性能带宽隔离的场景,最后,本申请通过将已封装的报文的头部信息来直接映射对应的带宽选择条件,执行逻辑简单且没有任何协议耦合,系统开销低且非常易于扩展,综上,本申请通过提高了带宽隔离方案的适用范围,使得其能够满足更高性能的隔离需求。
参照图2,示出了本申请提供的一种终端设备的结构框图,应用于终端设备10的网络连接设备20中,终端设备10中安装有与网络连接设备20对应的驱动程序101,具体的,带宽隔离装置30可以包括:
报文接收模块301,带宽确定模块302,调度器303;报文接收模块301连接带宽确定模块302,带宽确定模块302连接调度器303。
报文接收模块301,用于通过驱动程序获取数据报文。带宽确定模块302,用于根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建。调度器303,用于根据目标带宽占用比例,对数据报文进行发送。
在本申请实施例中,报文接收模块301可以经由驱动程序101获取取已封装完毕的数据报文,此时数据报文添加了包括五元组内容的头部信息,并且数据报文已到达协议栈的物理层进行处理,即网络连接设备20从数据源获取到了已封装完毕的数据报文。
具体的,报文接收模块301获取到的数据报文的头部信息可以包括五元组信息,在本申请实施例中,对数据报文的带宽隔离处理时机发生在协议栈的最下层,处于硬件层,因此可以不受软件层中用户态和内核态的约束,因此,本申请实施例在协议栈的硬件层接收数据报文,并对数据报文进行处理,可依摆脱用户态和内核态的约束,以实现rdma等纯硬件层的高性能带宽隔离的场景。
需要说明的是,rdma是一种直接内存访问技术,是将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入,这允许高通量、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用,由于rdma技术无需操作系统的介入,因此需要不受软件层中用户态和内核态的约束,另外,若通过ETS来实现rdma技术,由于ETS最多支持8组带宽隔离的限制,会导致rdma的效率受限。
进一步的,在本申请实施例中,带宽确定模块302可以提取数据报文的头部信息,解析其中的五元组信息,并与预设带宽选择条件与带宽占用比例之间的对应关系进行比较,以映射到具体的目标带宽占用比例,由于带宽确定模块的执行逻辑简单且没有任何协议耦合,使得系统开销低且非常易于扩展。
具体的,带宽选择条件可以基于数据报文的头部信息进行构建,可以包括五元组信息中的一个或多个,已达到对不同数据报文进行筛选的目的,同时带宽选择条件还对应有带宽占用比例参数,从而对不同带宽选择条件对应的不同带宽占用比例进行发送。
进一步的,在本申请实施例中,调度器303首先可以根据目标带宽占用比例,对数据报文进行发送。
例如,有10个数据报文a所匹配到的目标带宽占用比例为百分之四十,有10个数据报文b所匹配到的目标带宽占用比例为百分之六十,此时10个数据报文a被调度器调度至队列1进行发送,10个数据报文b被调度器调度至队列2进行发送,
假设调度器依次调度最多可以调度10次,其中有4次会选择队列1发送4个报文,另外6次会选择队列6发送4个报文,使得队列1和队列2的发包比例为6:4,实现了报文发送时的带宽隔离。
实际上,当队列1中的报文a数量小于或等于4个时,由于报文的数量不大于队列1在进行一次调度时的最大发送数量,因此可以直接进行发送,带宽隔离的目的是在当队列1中报文a数量大于4个时,由于此时队列1中待发送的报文a的数量大于了队列1在进行一次调度时的最大发送数量,此时为了保证其他队列的带宽不受影响,因此在一次调用时队列1最多只调用4个报文a,报文a的数量大于4个时,则通过多次调用进行报文a的传输,同理,队列2也执行相同的逻辑。
综上所述,本申请实施例提供的一种带宽隔离装置,应用于终端设备的网络连接设备中的带宽隔离装置,终端设备中安装有与网络连接设备对应的驱动程序,带宽隔离装置包括:报文接收模块,用于通过驱动程序获取数据报文;带宽确定模块,用于根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建;调度器,用于根据目标带宽占用比例,对数据报文进行发送。本申请通过预设带宽选择条件与带宽占用比例之间的对应关系,使得数据报文的头部信息与对应关系匹配得到对应的传输队列目标带宽占用比例,并按照该目标带宽占用比例将数据报文进行发送,从而实现了报文传输的带宽隔离,并且,本申请通过对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请可以任意增加或减少带宽选择条件与带宽占用比例之间的对应关系的数量,使得对应传输数据报文的通道的数量也可以任意增加或减少,大大提高了带宽隔离的效率,另外,由于本申请的方案是对已封装好的报文进行分析和处理,处理时机处于协议栈的最底层的硬件层,不受用户态或软/硬件内核态的约束,因此可以支持并兼容所有的传输协议,可以实现rdma等纯硬件层的高性能带宽隔离的场景,最后,本申请通过将已封装的报文的头部信息来直接映射对应的带宽选择条件,执行逻辑简单且没有任何协议耦合,系统开销低且非常易于扩展,综上,本申请通过提高了带宽隔离方案的适用范围,使得其能够满足更高性能的隔离需求。
可选的,参照图2,网络连接设备20还包括:指令寄存器201、更改指令接收模块202、模式选择模块203;指令寄存器201与更改指令接收模块202连接、更改指令接收模块202与模式选择模块203连接,模式选择模块203与报文接收模块301连接;更改指令接收模块202,用于从指令寄存器201中读取第一模式更改指令;第一模式更改指令,由驱动程序101在接收到设定控制程序发送的第二模式更改指令后发送;模式选择模块203,用于通过第一模式更改指令进入目标带宽处理模式。
在本申请实施例中,网络连接设备20可以在硬件层面,进行多种带宽处理模式的实现,并在不同的应用场景下,选取不同的带宽处理模式进行报文的发送,具体的,用户可以通过设定控制程序向驱动程序101发送第二模式更改指令,驱动程序101接收到第二模式更改指令,并在判断第二模式更改指令合法的情况下,发送第一模式更改指令至指令寄存器201,更改指令接收模块202可以从指令寄存器201中读取第一模式更改指令;使得模式选择模块203通过第一模式更改指令进入目标带宽处理模式,其中,第一模式更改指令和第二模式更改指令可以为内容相同的指令。
例如,在本申请提供的一种提供带宽隔离装置30进行报文传输的基础上,进一步在硬件层面实现通过ETS、SR-IOV进行报文传输的模式,在硬件层面实现本申请提供的一种提供带宽隔离装置30、ETS和SR-IOV的同时,可以对应设置带宽处理模式标识,假设本申请实施例提供的带宽隔离装置30的带宽处理模式标识为A、ETS的带宽处理模式标识为B,SR-IOV的带宽处理模式标识为C,则根据用户的需求,可以在第一模式更改指令和第二模式更改指令包括相应的带宽处理模式标识,比如,第一模式更改指令和第二模式更改指令中包括带宽处理模式标识为B,则模式选择模块203可以根据第一模式更改指令中包括的带宽处理模式标识为B,进入ETS对应的带宽处理模式进行报文发送,此时本申请实施例提供的带宽隔离装置30对应的带宽处理模式,以及SR-IOV对应的带宽处理模式相应的进行停止。
需要说明的是,多种带宽处理模式之间相互逻辑隔离,以避免造成业务冲突,也就是意味着,多种带宽处理模式中,同时只能启用一种带宽处理模式。
可选的,参照图3,示出了本申请提供的一种调度器的结构框图,调度器303包括:调度子模块3031、传输子模块3032;调度子模块3031连接传输子模块3032;调度子模块3031,用于将数据报文调度至与对应关系对应的目标传输队列中;其中,传输队列针对对应关系构建;传输子模块3032,用于按照预设队列调度规则,从目标传输队列中,选取与目标带宽占用比例对应数量的数据报文进行发送。
具体的,调度子模块3031将数据报文调度至与对应关系对应的目标传输队列中。
传输子模块3032可以从传输队列中选择数据报文进行发送具体可以为采用预设队列调度规则,从传输队列中提取对应带宽占用比例数量的数据报文进行发送。
例如,针对步骤402中队列1和队列2,队列1所占的带宽与总带宽的比值为百分之四十,队列2所占的带宽与总带宽的比值为百分之六十,此时10个数据报文a被调度至队列1进行发送,10个数据报文b被调度至队列2进行发送,
此时传输子模块3032会调度10次,其中有6次会选择队列1发送6个报文a,另外4次会选择队列2发送4个报文b,使得队列1和队列2的发包比例为6:4。
另外,基于队列调度规则,还可以进一步应用严格优先级(SP,Strict Priority)调度、循环调度(RR,Round Robin)和加权循环调度规则(WRR,Weighted Round Robin)调度,其中,SP调度是对不同的队列设置不同的优先级,优先级高的队列绝对优先于优先级低的队列,只要优先级高的队列中有数据包存在,优先调度优先级高的队列,RR调度依次调度各队列的数据包,重复一个又一个周期,是一个绝对公平的调度规则,WRR调度是通过设置一个权重表,通过对权重表的分配可以较多的调度优先级高的队列。采用何种队列调度规则,可以根据实际需求进行选择,本申请对此不作限定。
在本申请实施例中,WRR调度可以通过支持优先级概念,达到对重要性较高的数据报文进行优先传输,具体可以为对所有传输队列按照重要性设置对应的权重值,权重值越大的传输队列,其中的数据报文的传输优先级越高。
具体的,在WRR调度中,若传输队列的权重值大于其他传输队列的权重值,则传输子模块3032在调度时,通过该调度方法,将首先处理高优先级的传输队列的调度,当高优先级的传输队列很多时,较低优先级的传输队列并没有被完全阻塞,因此可以达到根据每个队列配置的权值,与所有的业务流在排队等待调度的队列的权值总和的比值来平等地分配带宽,在处理多个高优先等级的调度任务时,能够确保每个队列都不会过度地占用网络带宽。
进一步的,将总带宽分配给多个传输队列,传输队列之间轮流调度,保证每个队列都得到一定的服务时间,例如,可以为每个队列配置一个加权值(依次为w3、w2、w1、w0),加权值表示获取资源的比重,如一个100兆的端口,配置它的加权值为50、30、10、10(依次对应w3、w2、w1、w0),这样可以保证最低优先级队列至少获得10兆/秒的带宽,避免了采用SP调度方法时低优先级队列中的报文可能长时间得不到服务的缺点。
WRR调度的过程中,虽然多个队列的调度是轮循进行的,但对每个队列不是固定的分配服务时间,如果某个高权重的传输队列为空,那么马上换到下一个次优先级的传输队列进行调度,这样带宽资源可以得到充分的利用。
本申请实施例通过一个具体示例来说明WRR调度的实现方式,假设,针对队列1、队列2和队列3,队列1的带宽为50%,队列2的带宽的比值为30%,队列3的带宽的比值为20%,队列1的权重值为20,队列2的权重值为30,队列3的权重值为50,假设队列1和队列2中各有10个数据报文。队列3有3个数据报文,一次调用可最多调用10个数据报文,则第一次调用时,队列1可以调用2个数据报文,队列2可以调用3个数据报文,队列3可以调用2个数据报文;第二次调用时,队列3可以调用剩余的1个数据报文,队列2可以调用3个数据报文,队列1则可以调用5个数据报文。第三次调用时,队列3已调用空,停止调用,队列1可以调用剩余的3个数据报文,队列2则可以调用3个数据报文,最第四次调用时,可以调用队列2中剩余的1个数据报文,虽然在第一次和第二次调用时,实际调用的数据报文数量并未达到最多可调用数量,但是可以根据每个队列配置的权值,与所有的业务流在排队等待调度的队列的权值总和的比值来平等地分配带宽,使得在处理多个高优先等级的调度任务时,能够确保每个队列都不会过度地占用网络带宽。
可选的,参照图2,带宽隔离装置30还包括:
建立模块304,建立模块304与调度器303连接,建立模块304,用于针对多个对应关系,分别构建相应的传输队列。
在本申请实施例中,建立模块304首先可以根据预设的带宽选择条件与带宽占用比例之间的对应关系,分别建立对应的传输队列,并为每个队列分配相应的带宽占用比例,传输队列用于根据匹配结果,通过调度器303将数据报文调按照目标带宽占用比例进行发送。
在实际应用中,每种网络连接设备,比如网卡,可以将支持带宽隔离功能的支持标识写入pci-ecapability容量(pci可移植性容量中),其中pci(Peripheral ComponentInterconnect,外部设备互连总线),操作系统注册时,其可以通过调用驱动注册函数从pci-ecapability容量获取到上述支持标识,然后将该支持标识通过设定控制程序进行显示,以供技术人员了解该网卡是否支持本申请实施例的带宽隔离功能。
可选的,参照图2,还包括:更新指令获取模块204、更新模块205;更新指令获取模块204连接更新模块205;更新指令获取模块204,用于获取第一更新指令;更新模块205,用于通过第一更新指令更新带宽选择条件与带宽占用比例之间的对应关系。
可选的,网络连接设备还包括:指令寄存器201,所述指令寄存器201与所述更新指令获取模块204连接,所述更新指令获取204模块,包括:第二获取子模块,用于从所述网络连接设备20的指令寄存器201中读取所述第一更新指令;所述指令寄存器201中的第一更新指令,由所述驱动程序101在接收到设定控制程序发送的第二更新指令后发送。
可选的,第一更新指令由所述驱动程序101在确定合法后发送。
在本申请实施例的一种实现方式中,可以通过网卡设备具体说明带宽选择条件更新的实现方式,参照图1,当网络连接设备为网卡设备时,运行在用户态的设定控制程序可以为第三方的ethtool工具,ethtool工具是用于查询和设置网卡参数的工具,通过Linux下ethtool指令配合指令寄存器201执行对应设置网卡参数的操作,ethtool指令可以包括多种不同的语法,以分别执行相应的功能,例如,ethtool指令-i可以显示网卡驱动的信息,如驱动的名称、版本等。-A指令可以修改网卡设备中接收模块、发送模块的状态,如启动on或停用off。
网卡驱动程序是设置在操作系统中的与网卡功能实现相关的代码,通过网卡驱动程序,用户态中可以运行有用于发送第二更新指令的设定控制程序,内核态中可以运行有网络连接设备的驱动程序,设定控制程序可以产生要发送的第二更新指令,并通过系统调用,利用内核态中的网络连接设备驱动程序101在判断第二更新指令合法后,将第一更新指令发送至指令寄存器201,其中,第一更新指令和第二更新指令可以为同一指令。
指令寄存器201是临时放置从网卡驱动里面取得的程序指令的寄存器,并可以将程序指令进行解析和输出,指令寄存器201通过设置在设备和主存之间的共享内存暴露给网卡驱动程序。
因此,可以通过ethtool工具实现经由驱动程序101向网卡设备发送更新指令的目的,ethtool工具的更新指令可以通过netlink(套接字)下发给网卡驱动程序101,由网卡驱动程序101获取更新指令,并判断该更新指令是否合法,若合法,则由指令寄存器201获取该指令,并通过更新模块205将该指令更新带宽选择条件与带宽占用比例之间的对应关系。
可选的,更新指令获取模块204,包括:第一获取子模块,用于通过与所述网络连接设备20对应的驱动程序101获取所述第一更新指令。
在本申请实施例的另一种实现方式中,可以直接通过与网络连接设备对应的驱动程序获取所述第一更新指令,此时可以绕开指令寄存器,而是通过驱动程序直接将第一更新指令更新带宽选择条件与带宽占用比例之间的对应关系。
综上所述,本申请实施例提供的一种带宽隔离装置,应用于终端设备的网络连接设备中的带宽隔离装置,终端设备中安装有与网络连接设备对应的驱动程序,带宽隔离装置包括:报文接收模块,用于通过驱动程序获取数据报文;带宽确定模块,用于根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建;调度器,用于根据目标带宽占用比例,对数据报文进行发送,从而实现了报文传输的带宽隔离,同时,本申请还可以通过更新指令对带宽选择条件与带宽占用比例之间的对应关系进行更新,实现传输队列的增加、减少和修改,提高了扩展性,并且,本申请通过对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请可以任意增加或减少带宽选择条件与带宽占用比例之间的对应关系,使得对应传输队列的数量也可以任意增加或减少,大大提高了带宽隔离的效率,另外,由于本申请的方案是对已封装好的报文进行分析和处理,处理时机处于协议栈的最底层,不受用户态或软/硬件内核态的约束,因此可以支持并兼容所有的传输协议,可以实现rdma等纯硬件层的高性能带宽隔离的场景,最后,本申请通过将已封装的报文的头部信息来直接哈希映射对应的目标带宽占用比例,执行逻辑简单且没有任何协议耦合,系统开销低且非常易于扩展,综上,本申请通过提高了带宽隔离方案的适用范围,使得其能够满足更高性能的隔离需求。
参照图4,示出了本申请提供的一种带宽隔离方法的步骤流程图,具体可以包括如下步骤:
步骤401,通过所述驱动程序获取数据报文。
在本申请实施例中,网络连接设备的接收模块可以经由驱动程序获取取已封装完毕的数据报文,此时数据报文添加了包括五元组内容的头部信息,并且数据报文已到达协议栈的物理层进行处理,即网络连接设备从数据源获取到了已封装完毕的数据报文。
步骤402,根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定所述数据报文的头部信息所对应的目标带宽占用比例;所述带宽选择条件针对数据报文的头部信息构建。
在本申请实施例中,网络连接设备的带宽确定模块可以提取数据报文的头部信息,解析其中的五元组信息,并与存储模块存储的预设带宽选择条件与带宽占用比例之间的对应关系进行比较,以映射到具体的目标带宽占用比例,由于带宽确定模块的执行逻辑简单且没有任何协议耦合,使得系统开销低且非常易于扩展。
具体的,带宽选择条件可以基于数据报文的头部信息进行构建,可以包括五元组信息中的一个或多个,已达到对不同数据报文进行筛选的目的,同时带宽选择条件还对应有带宽占用比例参数,从而对不同带宽选择条件对应的不同带宽占用比例进行发送。
步骤403,根据所述目标带宽占用比例,对所述数据报文进行发送。
在本申请实施例中,网络连接设备的调度器首先可以根据目标带宽占用比例,对数据报文进行发送。
综上所述,本申请实施例提供的一种带宽隔离方法,包括:获取数据报文;根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建;根据目标带宽占用比例,对所述数据报文进行发送。本申请通过预设带宽选择条件与带宽占用比例之间的对应关系,使得数据报文的头部信息与对应关系匹配得到对应的传输队列目标带宽占用比例,并按照该目标带宽占用比例将数据报文进行发送,从而实现了报文传输的带宽隔离,并且,本申请通过对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请可以任意增加或减少带宽选择条件与带宽占用比例之间的对应关系的数量,使得对应传输数据报文的通道的数量也可以任意增加或减少,大大提高了带宽隔离的效率,另外,由于本申请的方案是对已封装好的报文进行分析和处理,处理时机处于协议栈的最底层的硬件层,不受用户态或软/硬件内核态的约束,因此可以支持并兼容所有的传输协议,可以实现rdma等纯硬件层的高性能带宽隔离的场景,最后,本申请通过将已封装的报文的头部信息来直接映射对应的带宽选择条件,执行逻辑简单且没有任何协议耦合,系统开销低且非常易于扩展,综上,本申请通过提高了带宽隔离方案的适用范围,使得其能够满足更高性能的隔离需求。
参照图5,示出了本申请提供的一种带宽隔离方法的具体步骤流程图,具体可以包括如下步骤:
步骤501,针对预设的带宽选择条件与带宽占用比例之间的对应关系,分别构建相应的传输队列。
在本申请实施例中,网络连接设备的调度器首先可以根据预设的带宽选择条件与带宽占用比例之间的对应关系,分别建立对应的传输队列,并为每个队列分配相应的带宽占用比例,传输队列用于根据带宽确定模块得到的匹配结果,将数据报文调按照目标带宽占用比例进行发送。
在实际应用中,每种网络连接设备,比如网卡,可以将支持带宽隔离功能的支持标识写入pci-ecapability容量(pci可移植性容量中),其中pci(Peripheral ComponentInterconnect,外部设备互连总线),操作系统注册时,其可以通过调用驱动注册函数从pci-ecapability容量获取到上述支持标识,然后将该支持标识通过设定控制程序进行显示,以供技术人员了解该网卡是否支持本申请实施例的带宽隔离功能。
步骤502,从所述指令寄存器中读取第一模式更改指令;所述第一模式更改指令,由所述驱动程序在接收到设定控制程序发送的第二模式更改指令后发送。
在本申请实施例中,网络连接设备20可以在硬件层面,进行多种带宽处理模式的实现,并在不同的应用场景下,选取不同的带宽处理模式进行报文的发送。
步骤503,通过所述第一模式更改指令进入目标带宽处理模式。
具体的,用户可以通过设定控制程序向驱动程序发送第二模式更改指令,驱动程序接收到第二模式更改指令,并在判断第二模式更改指令合法的情况下,发送第一模式更改指令至指令寄存器,可以从指令寄存器中读取第一模式更改指令;使得通过第一模式更改指令进入目标带宽处理模式,其中,第一模式更改指令和第二模式更改指令可以为内容相同的指令。
步骤504,通过所述驱动程序获取数据报文。
该步骤可以参照上述步骤401,此处不再赘述。
步骤505,根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定所述数据报文的头部信息所对应的目标带宽占用比例;所述带宽选择条件针对数据报文的头部信息构建。
该步骤可以参照上述步骤402,此处不再赘述。
可选的,数据报文的头部信息包括五元组信息,所述带宽选择条件包括:源IP地址信息、源端口信息、目的IP地址信息、目的端口信息、传输层协议信息中的一个或多个。
在本申请实施例中,数据报文可以为经过封装处理后,写有头部信息的数据报文,该头部信息可以包括五元组信息,通常也叫数据包包头,具体包括:源IP地址,源端口,目的IP地址,目的端口和传输层协议,报文的数据包称为“数据流”,五元组信息可以称为“控制流”,用于对“数据流”进行控制,如,确定报文的目的地、所采用的传输协议等,不同的五元组信息可以区分不同数据报文的报文类别,以达到按不同报文类别传输不同数据报文的目的。
基于实际需求,可以将带宽选择条件设置为包括源IP地址信息、源端口信息、目的IP地址信息、目的端口信息、传输层协议信息中的一个或多个,以达到与数据报文的头部信息有针对性的进行匹配的目的。
可选的,在本申请实施例的一种具体实现方式中,步骤505还可以包括:
子步骤5051,将所述带宽选择条件与带宽占用比例之间的对应关系以哈希值的形式存储在网络连接设备的存储空间中。
在该步骤中,哈希规则是将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进哈希函数是一个数学方程式,它可用文本来生成称为信息摘要的代码,因此,可以将带宽选择条件与带宽占用比例之间的对应关系以哈希值的形式写入网络连接设备的存储空间,并使得带宽选择条件与带宽占用比例之间的对应关系形成哈希匹配表,带宽选择条件的哈希值可以作为哈希表的key,其对应的Value可以为对应的带宽占用比例。
通过将带宽选择条件与带宽占用比例之间的对应关系存储网络连接设备的存储空间,实现了对带宽选择条件与带宽占用比例之间的对应关系的备份,使得网络连接设备的带宽确定模块可以通过调用存储模块的接口,获取该带宽选择条件与带宽占用比例之间的对应关系进行匹配操作,带宽选择条件与带宽占用比例之间的对应关系通过哈希值的形式进行存储,所占用的存储空间较小,另外,存储模块还可以借助指令寄存器,修改带宽选择条件与带宽占用比例之间的对应关系,进行“增删改查”操作。
子步骤5052,将所述数据报文的头部信息转换为哈希值,并与所述对应关系的哈希值进行匹配,确定对应的目标带宽占用比例。
在该步骤中,通过将据报文头部信息中与五元组信息对应的内容转换为哈希值,作为查询key,与子步骤5051中哈希表的key进行哈希匹配,从而确定对应目标带宽占用比例的Vlaue。
在本申请实施例中,通过哈希匹配的方式确定传输队列,其执行逻辑简单,相应速度快,所产生的系统开销较小,可以满足高性能的带宽隔离需求。
步骤506,将所述数据报文调度至与所述对应关系对应的目标传输队列中;其中,所述传输队列针对所述对应关系构建。
在该步骤中,网络连接设备的调度器首先可以根据带宽选择条件,分别建立对应的传输队列,并为每个队列分配相应的带宽占用比例,再根据带宽确定模块得到的匹配结果,确定传输队列,从而将数据报文调度至该传输队列。
步骤507,按照预设队列调度规则,从所述目标传输队列中,选取与所述目标带宽占用比例对应数量的数据报文进行发送。
具体的,从传输队列中选择数据报文进行发送具体可以为采用预设队列调度规则,从传输队列中提取对应带宽占用比例数量的数据报文进行发送。
可选的,在本申请实施例的一种具体实现方式中,还可以包括:
步骤A1,获取第一更新指令。
可选的,从网络连接设备的指令寄存器中读取所述第一更新指令;所述指令寄存器中的第一更新指令,由所述驱动程序在接收到设定控制程序发送的第二更新指令后发送。
在本申请实施例的一种实现方式中,可以通过网卡设备具体说明带宽选择条件更新的实现方式,参照图1,当网络连接设备为网卡设备时,运行在用户态的设定控制程序可以为第三方的ethtool工具,ethtool工具是用于查询和设置网卡参数的工具,通过Linux下ethtool指令配合指令寄存器执行对应设置网卡参数的操作,ethtool指令可以包括多种不同的语法,以分别执行相应的功能,例如,ethtool指令-i可以显示网卡驱动的信息,如驱动的名称、版本等。-A指令可以修改网卡设备中接收模块、发送模块的状态,如启动on或停用off。
网卡驱动程序是设置在操作系统中的与网卡功能实现相关的代码,通过网卡驱动程序,用户态中可以运行有用于发送第二更新指令的设定控制程序,内核态中可以运行有网络连接设备的驱动程序,设定控制程序可以产生要发送的第二更新指令,并通过系统调用,利用内核态中的网络连接设备驱动程序在判断第二更新指令合法后,将第一更新指令发送至指令寄存器,其中,第一更新指令和第二更新指令可以为同一指令。
指令寄存器是临时放置从网卡驱动里面取得的程序指令的寄存器,并可以将程序指令进行解析和输出,指令寄存器通过设置在设备和主存之间的共享内存暴露给网卡驱动程序。
因此,可以通过ethtool工具实现经由网卡驱动程序向网卡设备发送更新指令的目的,ethtool工具的更新指令可以通过netlink(套接字)下发给网卡驱动,由网卡驱动程序获取更新指令,并判断该更新指令是否合法,若合法,则由指令寄存器获取该指令,并将该指令更新带宽选择条件与带宽占用比例之间的对应关。
步骤A2,通过所述第一更新指令更新所述带宽选择条件与带宽占用比例之间的对应关系。
具体的,第一更新指令的指令格式可以为:指令码-带宽选择条件与带宽占用比例之间的对应关系。
指令码可以包括:增,删,改,查四种形式,若驱动程序接收到的更新指令的指令码不属于这四种形式,则判断其不合法,予以忽略。若合法,驱动程序发送该第一更新指令至指令寄存器,指令寄存器则按照其按照增,删,改,查四种形式中的具体一种,进行更新带宽选择条件的操作。
具体的,以网卡设备进行第一更新指令更新所述带宽选择条件与带宽占用比例之间的对应关系的说明,指令寄存器可以执行以下步骤:
步骤B1,当确定所述指令码为增加规则指令码时,指令寄存器在网络连接设备的存储空间中增加所述指令码对应的带宽选择条件与带宽占用比例之间的对应关系。
具体的,在该步骤中,当确定指令码为增加规则指令码时,此时根据指令码-带宽选择条件与带宽占用比例之间的对应关系,在网络连接设备的存储空间中,写入指令码对应的带宽选择条件与带宽占用比例之间的对应关系,即增加了一条新的对应关系,使得调度器可以对应生成一个新的传输队列。
步骤B2,当确定所述指令码为删除规则指令码时,在网络连接设备的存储空间中删除与指令码对应的带宽选择条件与带宽占用比例之间的对应关系匹配的对应关系。
在该步骤中,当确定指令码为删除规则指令码时,此时根据指令码-带宽选择条件与带宽占用比例之间的对应关系,在网络连接设备的存储空间中删除与指令码对应的带宽选择条件与带宽占用比例之间的对应关系匹配的对应关系,即删除了一条对应关系,使得调度器可以删除对应的传输队列。
步骤B3,当确定所述指令码为修改规则指令码时,在网络连接设备的存储空间中确定所述指令码指向的目标对应关系,并将指令码对应的带宽选择条件与带宽占用比例之间的对应关系替换所述目标对应关系。
在该步骤中,当确定指令码为修改规则指令码时,此时根据指令码-带宽选择条件与带宽占用比例之间的对应关系,在网络连接设备的存储空间中确定所述指令码指向的目标对应关系,并将指令码对应的带宽选择条件与带宽占用比例之间的对应关系替换所述目标对应关系,使得调度器可以将已有的一个传输队列进行对应更新。
另外,当确定指令码为查找规则指令码时,此时根据指令码-带宽选择条件与带宽占用比例之间的对应关系,在预设带宽选择条件集合中确定指令码指向的目标对应关系,并将目标对应关系上报给ethtool工具。
综上所述,本申请实施例提供的一种带宽隔离方法,包括:获取数据报文;根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定数据报文的头部信息所对应的目标带宽占用比例;带宽选择条件针对数据报文的头部信息构建;根据目标带宽占用比例,将数据报文进行发送。本申请根据预设的带宽选择条件与带宽占用比例之间的对应关系,构建对应传输队列,使得头部信息与带宽选择条件匹配的数据报文被调度到对应的传输队列,并按照该队列所占的带宽占用比例进行发送,从而实现了报文传输的带宽隔离,同时,本申请还可以通过更新指令对带宽选择条件与带宽占用比例之间的对应关系进行更新,实现传输队列的增加、减少和修改,提高了扩展性,并且,本申请通过对已封装好的报文进行分析和处理,并不对报文本身进行修改,因此理论上不受ETS传输报文的技术里最多8组带宽隔离的限制,本申请可以任意增加或减少带宽选择条件与带宽占用比例之间的对应关系,使得对应传输队列的数量也可以任意增加或减少,大大提高了带宽隔离的效率,另外,由于本申请的方案是对已封装好的报文进行分析和处理,处理时机处于协议栈的最底层,不受用户态或软/硬件内核态的约束,因此可以支持并兼容所有的传输协议,可以实现rdma等纯硬件层的高性能带宽隔离的场景,最后,本申请通过将已封装的报文的头部信息来直接哈希映射对应的目标带宽占用比例,执行逻辑简单且没有任何协议耦合,系统开销低且非常易于扩展,综上,本申请通过提高了带宽隔离方案的适用范围,使得其能够满足更高性能的隔离需求。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图6是本申请实施例提供的一种装置的结构示意图。参见图6,服务器900可以用于实施上述实施例中提供的带宽隔离方法。该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储的或持久存储的。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。
服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,一个或一个以上键盘956,和/或和,一个或一个以上操作系统941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。其中,中央处理器922可以在服务器900上执行以下操作的指令:
通过所述驱动程序获取数据报文;
根据预设的带宽选择条件与带宽占用比例之间的对应关系,确定所述数据报文的头部信息所对应的目标带宽占用比例;所述带宽选择条件针对数据报文的头部信息构建;
根据所述目标带宽占用比例,对所述数据报文进行发送。
本申请还提供一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行一种带宽隔离方法。
本申请提供一种装置,其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行一种业务进度展示方法。
本申请还提供一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行一种业务进度展示方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种带宽隔离装置及方法,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。