CN113656190B - 一种任务之间传递vlan信息的实现方法及装置 - Google Patents
一种任务之间传递vlan信息的实现方法及装置 Download PDFInfo
- Publication number
- CN113656190B CN113656190B CN202110779981.4A CN202110779981A CN113656190B CN 113656190 B CN113656190 B CN 113656190B CN 202110779981 A CN202110779981 A CN 202110779981A CN 113656190 B CN113656190 B CN 113656190B
- Authority
- CN
- China
- Prior art keywords
- vlan
- information
- identification
- array
- transferred
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 145
- 238000012546 transfer Methods 0.000 title claims abstract description 8
- 230000008569 process Effects 0.000 claims abstract description 115
- 238000003491 array Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/354—Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提出了一种任务之间传递VLAN信息的实现方法,运行于交换机中,包括:第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息,本发明还提出了一种任务之间传递VLAN信息的实现装置,有效的降低了任务进程之间传递VLAN信息时占用的CPU资源以及存储空间。
Description
技术领域
本发明涉及PCB系统设计领域,尤其是涉及一种任务之间传递VLAN信息的实现方法及装置。
背景技术
在交换机系统中,经常会遇到任务(进程)间进行通讯的需求,例如任务A监控交换机端口的创建、加入VLAN(Virtual Local Area Network,虚拟局域网)等事件,并且对结果进行保存;而任务B则负责整个系统信息的输出,例如将交换机相关信息显示到console(控制台或仪表板)上。当希望显示系统当前存在的物理端口及其相关信息时,就需要任务A将物理端口信息进行组织,然后发送给任务B,由任务B输出到终端(交换机显示端口)。
一个端口包含了很多信息,例如name(名称)、ifindex(接口索引号)、type(类型)、speed(速率)、duplex(双工模式)、state(状态)、VLAN等。除VLAN外,其余信息的类型、长度基本是固定的,而VLAN的数量是不固定的。在任务之间传递VLAN信息需要考虑简单、高效等因素。
VLAN信息主要是指VLAN特性信息,例如enable(可用或使能)、disable(不可用或不使能),一般是指物理端口是否属于对应的VLAN,如果是enable,表示该物理端口属于对应的VLAN;如果是disable,表示该物理端口不属于对应的VLAN。
但是以交换机为例,VLAN ID的取值范围是0到4095,属性为trunk(端口汇聚)的物理端口(port)可以同时属于多个VLAN,最多可以成为4096个VLAN的成员端口。但物理端口可能只是其中1个VLAN的成员端口,也可能是4K个VLAN的成员端口。
现有技术中,记录物理端口属于哪些VLAN的成员端口,一般是使用字符串记录。例如char VLAN[],记录的内容为“1,2,4,2048”,即物理端口为4个VLAN 1、2、4、2048的成员端口,VLAN ID之间以逗号隔开。考虑到最多可以为4K个VLAN的成员端口,需要定义字符串长度为35000左右(大约9x2+90x3+900x4+3096x5,即0-9字符串长度为2,10-99字符串长度为3,100-999字符串长度为4,1000-4095字符串长度为5)。在端口只属于1个VLAN的情况下,字符串也需要定义为最大大长度的字符串(35000个作用),空间浪费比较严重,任务进程之间通信不仅需要占用较大的存储空间,而且对CPU资源占用较多。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种任务之间传递VLAN信息的实现方法及装置,有效解决现有技术造成任务进程之间传递VLAN信息时占用CPU资源较多以及占用存储空间较大的问题,有效的降低了任务进程之间传递VLAN信息时占用的CPU资源以及存储空间。
本发明第一方面提供了一种任务之间传递VLAN信息的实现方法,运行于交换机中,包括:
第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;
第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息。
可选地,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位具体包括:
第一任务进程获取待传递VLAN信息;
将待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息。
进一步地,数组的数量为128个,每个数组中包含32个标识位。
可选地,VLAN特性信息位于数组的序号为所述VLAN的ID与数组中标识位个数的商,VLAN特性信息位于数组的位置为所述VLAN的ID与数组中标识位个数的余数。
进一步地,VLAN特性信息包括enable及disable,数组中标识位包括0及1。
进一步地,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息具体包括:
第二任务进程接收转换后的VLAN信息对应的标识位;
依次识别每个数组中表示VLAN特性信息的标识位,并将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息。
进一步地,依次识别每个数组中表示VLAN特性信息的标识位具体是:
获取当前数组中表示VLAN特性信息的标识位;
查看所述当前数组中当前所有标识位构成的二进制数值是否不为0,如果所述当前数组中当前所有标识位构成的二进制数值不为0,判断当前最右侧标识位是否为1,如果当前最右侧标识位为1,记录当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置;如果当前最右侧标识位不为1,将所述当前数组中当前所有标识位右移一位;
如果所述当前数组中当前所有标识位构成的二进制数值为0,则查看下一数组。
可选地,还包括:
第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口。
本发明第二方面提供了一种任务之间传递VLAN信息的实现装置,运行于交换机中,包括:
获取转换模块,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;
发送模块,第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
识别模块,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息。
可选地,还包括:
转发模块,第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口。
本发明采用的技术方案包括以下技术效果:
1、本发明技术方案将基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位,便于第二进程进行有效识别,有效解决现有技术造成任务进程之间传递VLAN信息时占用CPU资源较多以及占用存储空间较大的问题,有效的降低了任务进程之间传递VLAN信息时占用的CPU资源以及存储空间。
2、本发明技术方案第一任务进程将待传递VLAN信息转换为若干数组,每个数组中包括若干表示VLAN信息的标识位,第二任务进程在识别第一任务进程发送的若干数组中的若干标识位时,通过判断每一数组中的当前标识位构成的二进制数值是否为0,判断是否要进行标识位的具体识别,提高了第二任务进程的识别效率,特别适用于当交换机物理端口数量较多时,提高了用户使用体验。
3、本发明技术方案还包括第二任务进程识别第一任务进程发送的待传递VLAN信息后,将识别转换后的待传递VLAN信息转发至交换机显示端口,便于工作人员及时了解待传递VLAN信息。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方案中实施例一方法的一流程示意图;
图2为本发明方案中实施例一方法中步骤S1的流程示意图;
图3为本发明方案中实施例一方法中步骤S3的流程示意图;
图4为本发明方案中实施例一方法中步骤S32的流程示意图;
图5为本发明方案中实施例一方法的另一流程示意图;
图6为本发明方案中实施例二装置的一结构示意图;
图7为本发明方案中实施例二装置中获取转换模块101的结构示意图;
图8为本发明方案中实施例二装置中识别模块103的结构示意图;
图9为本发明方案中实施例二装置的另一结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
IEEE(Institute of Electrical and Electronics Engineers,电气与电子工程师协会)于1999年颁布了用于标准化VLAN(Virtual Local Area Network,虚拟局域网)实现方案的802.1Q协议标准草案。VLAN出现,使得管理员根据实际应用需求,把同一物理局域网内的不同用户逻辑地划分成不同的广播域,每一个VLAN都包含一组有着相同需求的计算机工作站,与物理上形成的LAN(Local Area Network,局域网)有着相同的属性。由于它是从逻辑上划分,而不是从物理上划分,所以同一个VLAN内的各个工作站没有限制在同一个物理范围中,即这些工作站可以在不同物理LAN网段。由VLAN的特点可知,一个VLAN内部的广播和单播流量都不会转发到其他VLAN中,从而有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。
在交换机系统中,经常会遇到任务(进程)间进行通讯的需求,例如任务A监控交换机端口的创建、加入VLAN(Virtual Local Area Network,虚拟局域网)等事件,并且对结果进行保存;而任务B则负责整个系统信息的输出,例如将交换机相关信息显示到console(控制台或仪表板)上。当希望显示系统当前存在的物理端口及其相关信息时,就需要任务A将接收到的物理端口信息进行组织,然后发送个任务B,由任务B输出到终端(交换机显示端口)。
一个端口包含了很多信息,例如name(名称)、ifindex(接口索引号)、type(类型)、speed(速率)、duplex(双工模式)、state(状态)、VLAN等。除VLAN外,其余信息的类型、长度基本是固定的,而VLAN的数量是不固定的。在任务之间传递VLAN信息需要考虑简单、高效等因素。
VLAN信息主要是指VLAN特性信息,例如enable(可用或使能)、disable(不可用或不使能),一般是指物理端口是否属于对应的VLAN,如果是enable,表示该物理端口属于对应的VLAN;如果是disable,表示该物理端口不属于对应的VLAN。
为了降低现有任务进程之间传递VLAN信息时占用CPU资源以及占用存储空间提出了本发明技术方案。
如图1所示,本发明技术方案提供了一种任务之间传递VLAN信息的实现方法,运行于交换机中,包括:
S1,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;
S2,第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
S3,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息。
其中,如图2所示,步骤S1具体包括:
S11,第一任务进程获取待传递VLAN信息;
S12,将待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息。
其中,在步骤S11中,MCLAG模块(多机箱链路聚合,两个或多个交换机在形成链路束时能够像单个交换机一样工作的能力,这样一台主机可以上行到两个交换机,以实现物理多样性,而只有一个捆绑接口可以管理;同样,两个交换机可以使用MLAG连接到其他两个交换机,并转发所有链接)包含了两个进程,第一任务进程(进程iccpd)主要负责监控交换机物理端口的创建、加入VLAN等事件,并且对结果(物理端口信息,即物理端口对应的VLAN信息)进行保存;当需要显示第一任务进程保存的物理端口信息时,第一任务进程通过bitmap,将物理端口对应的VLAN信息发送给第二任务进程(mclagdctl进程),由第二任务进程将物理端口对应的VLAN信息显示到console上。因此,第一任务进程首先获取物理端口对应的待传递VLAN信息。
在步骤S12中,将步骤S11中的获取的待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息。
具体地,bitmap是一种以bit位的状态来表示某种特性的状态的一种操作方式,在表示某种特性enable/disable的时候很适用且占用的内存空间也很小。在32位的系统中,一个unsigned int(无符号整形)占用4个字节,每个字节含8个bit,也即一个unsigned int对应32个bit。VLAN域分为0-4095共4096个VLAN,如果一个bit表示一个VLAN,用128个unsigned int就可以完整地表示4096个VLAN,即定义数组unsigned int bitmap_VLAN[128]就可以表示4096个VLAN(数组的数量为128个(序号为0-127),每个数组中包含32个标识位)。假设目前设置的VLAN为VLAN_x,则设置相应bit的操作为bitmap_VLAN[VLAN_x/32]|(0x1<<(VLAN_x%32)),而检查某个VLAN是否设置了的操作为if(bitmap_VLAN[VLAN_x/32]&(0x1<<(VLAN_x%32)))。其中VLAN_x/32表示VLAN_x除以32所得的商数,VLAN_x%32表示VLAN_x除以32所得的余数。不需要的设置的VLAN对应数组中的标识位为0,对应disable。
举例说明,假设目前设置的VLAN ID为10,10=0*32+10,则10/32商数为0(即对应数组成员bitmap_VLAN[0],序号为0的数组),10%32余数为10,bitmap_VLAN[0]|(0x1<<10)的结果为bitmap_VLAN[0]的32个bit位中,从最右边的bit位开始往左数(不包括最右侧的bit位)的第10个bit位被设置为1(即enable)。
假设目前设置的VLAN ID为200,200=6*32+8,则200/32商数为6(即对应数组成员bitmap_VLAN[6],序号为6的数组),200%32余数为8,bitmap_VLAN[6]|(0x1<<8)的结果为bitmap_VLAN[6]的32个bit位中,从最右边的bit位开始往左数的第8个bit位被设置为1。
假设目前设置的VLAN ID为128,128=4*32+0,则128/32商数为4(即对应数组成员bitmap_VLAN[4],序号为4的数组),128%32余数为0,bitmap_VLAN[4]|(0x1<<0)的结果为bitmap_VLAN[4]的32个bit位中,从最右边的bit位被设置为1。
假设目前设置的VLAN ID为65,65=2*32+1,则65/32商数为2(即对应数组成员bitmap_VLAN[2],序号为2的数组),65%32余数为1,bitmap_VLAN[2]|(0x1<<1)的结果为bitmap_VLAN[2]的32个bit位中,从最右边的bit位开始往左数的第1个bit位被设置为1。剩余不需要的设置的VLAN对应数组中的标识位为0,对应disable。
VLAN特性信息位于数组的序号为所述VLAN的ID与数组中标识位个数的商,VLAN特性信息位于数组的位置为所述VLAN的ID与数组中标识位个数的余数。
VLAN特性信息包括enable及disable,数组中标识位包括0及1。
其中,在步骤S3中,如图3所示,步骤S3具体包括:
S31,第二任务进程接收转换后的VLAN信息对应的标识位;
S32,依次识别每个数组中表示VLAN特性信息的标识位,并将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息。
其中,在步骤S32中,如图4所示,步骤S32具体包括:
S321,获取当前数组中表示VLAN特性信息的标识位;
S322,查看所述当前数组中当前所有标识位构成的二进制数值,如果判断结果为是,则执行步骤S323;如果判断结果为否,则执行步骤S324;
S323,判断当前最右侧标识位是否为1,如果判断结果为是,则执行步骤S325;如果判断结果为否,则执行步骤S326;
S324,则查看下一数组;
S325,记录当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置,将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息;
S326,将所述当前数组中当前所有标识位右移一位,继续执行步骤S323;
在步骤S321-S326中,第二任务进程收到第一任务进程发送的消息以后,如何判断哪些VLAN被设置了呢?现有方法是for(VLAN_ID=1;VLAN_ID<4096;VLAN_ID++),然后在for循环中调用判断函数if(bitmap_VLAN[VLAN_ID/32]&(0x1<<(VLAN_ID%32)))进行判断。这种方法无论设置了多少个VLAN,都需要循环差不多4K次,效率比较低。本发明实施例采用判断方法具体是:
for(VLAN_ID=get_bit_value(VLAN_bitmap[],-1,4095);VLAN_ID<4095;VLAN_ID=get_bit_value(VLAN_bitmap[],VLAN_ID,4095))
函数get_bit_value(unsigned int bitmap[],int bit,unsigned int limit)的作用是给定一个int型数组bitmap[],判断从bit开始到limit结束,其中哪些数字对应的bit位被设置了。上面的for循环中get_bit_value(VLAN_bitmap[],-1,4095)表示判断数组VLAN_bitmap[128]中从VLAN ID为-1(实际为0,函数开始处有bit++存在)开始到4095中,有哪些VLAN ID对应的bit位被设置了。整体的思路描述如下:从VLAN_bitmap[0]开始循环至VLAN_bitmap[127],对每一个数组成员中的32个bit位从最右边bit位开始进行循环判断;查看所述当前数组中当前标识位的数值是否不为0,如果所述当前数组中当前全部标识位构成的二进制数值不为0,从最右侧标识位开始向左依次识别;判断当前最右侧标识位是否为1,如果当前最右侧标识位为1,记录当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置,并根据当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置获取对应的VLAN的ID;如果当前表示位不为1,将所述当前数组中当前标识位左移一位;如果所述当前数组中当前全部标识位构成的二进制数值为0,则查看下一数组(举例:8个二进制00001001(判断二进制数值不为0,首先判断当前最右侧标识位即最右边bit为1,然后把整个二进制数右移1位,得到0000100,二级制数值结果仍然不为0,当前最右侧标识位不为1,将所述当前数组中当前所有标识位右移一位;得到000010,以此类推,当循环到从右边算起的第4个bit位时,整个二进制数右移4位,得到0000,结果已经为0了,余下的bit位无需再继续判断,循环结束);如果剩余bit中全部为0了,则跳到数组VLAN_bitmap[]下一个成员继续进行相同的判断。
函数get_bit_value()的定义如下:
通过第二任务进程对标识位的识别,即可获得哪些VLAN被设置为enable,哪些为disable,获取第一任务进程待传递的VLAN信息,即物理端口对应的VLAN信息。
进一步地,如图5所示,本发明技术方案中的任务之间传递VLAN信息的实现方法,还包括:
S4,第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口(console)。
当需要显示第一任务进程保存的另一物理端口信息时,第一任务进程通过bitmap,将另一物理端口对应的VLAN信息发送给第二任务进程(mclagdctl进程),由第二任务进程将另一物理端口对应的VLAN信息显示到console上。第一任务进程会获取另一物理端口对应的待传递VLAN信息;不断进行循环,可以实现第一任务进程与第二任务进程之间关于VLAN信息的传递通信。
需要说明的是,本发明技术方案可以通过硬件或软件编程实现,编程的思路与本发明步骤相对应,也可以通过其他方式实现,本发明在此不做限制。
本发明技术方案将基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位,便于第二进程进行有效识别,有效解决现有技术造成任务进程之间传递VLAN信息时占用CPU资源较多以及占用存储空间较大的问题,有效的降低了任务进程之间传递VLAN信息时占用的CPU资源以及存储空间。
本发明技术方案第一任务进程将待传递VLAN信息转换为若干数组,每个数组中包括若干表示VLAN信息的标识位,第二任务进程在识别第一任务进程发送的若干数组中的若干标识位时,通过判断每一数组中的当前全部标识位构成的二进制数值是否为0,判断是否要进行标识位的具体识别,提高了第二任务进程的识别效率,特别适用于当交换机物理端口数量较多时,提高了用户使用体验。
本发明技术方案还包括第二任务进程识别第一任务进程发送的待传递VLAN信息后,将识别转换后的待传递VLAN信息转发至交换机显示端口,便于工作人员及时了解待传递VLAN信息。
实施例二
如图6所示,本发明技术方案还提供了一种任务之间传递VLAN信息的实现装置,运行于交换机中,包括:
获取转换模块101,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;
发送模块102,第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
识别模块103,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息。
其中,如图7所示,获取转换模块101具体包括:
获取子模块1011,第一任务进程获取待传递VLAN信息;
转换子模块1012,将待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息。
其中,在获取子模块1011中,MCLAG模块(多机箱链路聚合,两个或多个交换机在形成链路束时能够像单个交换机一样工作的能力,这样一台主机可以上行到两个交换机,以实现物理多样性,而只有一个捆绑接口可以管理;同样,两个交换机可以使用MLAG连接到其他两个交换机,并转发所有链接)包含了两个进程,第一任务进程(进程iccpd)主要负责监控交换机物理端口的创建、加入VLAN等事件,并且对结果(物理端口信息,即物理端口对应的VLAN信息)进行保存;当需要显示第一任务进程保存的物理端口信息时,第一任务进程通过bitmap,将物理端口对应的VLAN信息发送给第二任务进程(mclagdctl进程),由第二任务进程将物理端口对应的VLAN信息显示到console上。因此,第一任务进程首先获取物理端口对应的待传递VLAN信息。
在转换子模块1012中,将获取子模块1011中的获取的待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息。
具体地,bitmap是一种以bit位的状态来表示某种特性的状态的一种操作方式,在表示某种特性enable/disable的时候很适用且占用的内存空间也很小。在32位的系统中,一个unsigned int(无符号整形)占用4个字节,每个字节含8个bit,也即一个unsigned int对应32个bit。VLAN域分为0-4095共4096个VLAN,如果一个bit表示一个VLAN,用128个unsigned int就可以完整地表示4096个VLAN,即定义数组unsigned int bitmap_VLAN[128]就可以表示4096个VLAN(数组的数量为128个(序号为0-127),每个数组中包含32个标识位)。假设目前设置的VLAN为VLAN_x,则设置相应bit的操作为bitmap_VLAN[VLAN_x/32]|(0x1<<(VLAN_x%32)),而检查某个VLAN是否设置了的操作为if(bitmap_VLAN[VLAN_x/32]&(0x1<<(VLAN_x%32)))。其中VLAN_x/32表示VLAN_x除以32所得的商数,VLAN_x%32表示VLAN_x除以32所得的余数。不需要的设置的VLAN对应数组中的标识位为0,对应disable。
举例说明,假设目前设置的VLAN ID为10,10=0*32+10,则10/32商数为0(即对应数组成员bitmap_VLAN[0],序号为0的数组),10%32余数为10,bitmap_VLAN[0]|(0x1<<10)的结果为bitmap_VLAN[0]的32个bit位中,从最右边的bit位开始往左数(不包括最右侧的bit位)的第10个bit位被设置为1(即enable)。
假设目前设置的VLANID为200,200=6*32+8,则200/32商数为6(即对应数组成员bitmap_VLAN[6],序号为6的数组),200%32余数为8,bitmap_VLAN[6]|(0x1<<8)的结果为bitmap_VLAN[6]的32个bit位中,从最右边的bit位开始往左数的第8个bit位被设置为1。
假设目前设置的VLANID为128,128=4*32+0,则128/32商数为4(即对应数组成员bitmap_VLAN[4],序号为4的数组),128%32余数为0,bitmap_VLAN[4]|(0x1<<0)的结果为bitmap_VLAN[4]的32个bit位中,从最右边的bit位被设置为1。
假设目前设置的VLANID为65,65=2*32+1,则65/32商数为2(即对应数组成员bitmap_VLAN[2],序号为2的数组),65%32余数为1,bitmap_VLAN[2]|(0x1<<1)的结果为bitmap_VLAN[2]的32个bit位中,从最右边的bit位开始往左数的第1个bit位被设置为1。剩余不需要的设置的VLAN对应数组中的标识位为0,对应disable。
VLAN特性信息位于数组的序号为所述VLAN的ID与数组中标识位个数的商,VLAN特性信息位于数组的位置为所述VLAN的ID与数组中标识位个数的余数。VLAN特性信息包括enable及disable,数组中标识位包括0及1。
其中,在识别模块103中,如图8所示,识别模块103具体包括:
接收子模块1031,第二任务进程接收转换后的VLAN信息对应的标识位;
识别子模块1032,依次识别每个数组中表示VLAN特性信息的标识位,并将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息。
其中,在识别子模块1032中,识别子模块1032具体是:
获取当前数组中表示VLAN特性信息的标识位,查看所述当前数组中当前所有标识位构成的二进制数值是否不为0,如果所述当前数组中当前所有标识位构成的二进制数值不为0,从最右侧标识位开始向左依次识别;判断当前最右侧标识位是否为1,如果当前最右侧标识位为1,记录当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置;如果当前最右侧标识位不为1,将所述当前数组中当前所有标识位右移一位;如果所述当前数组中当前所有标识位构成的二进制数值为0,则查看下一数组;
在识别子模块1032中,第二任务进程收到第一任务进程发送的消息以后,如何判断哪些VLAN被设置了呢?现有方法是for(VLAN_ID=1;VLAN_ID<4096;VLAN_ID++),然后在for循环中调用判断函数if(bitmap_VLAN[VLAN_ID/32]&(0x1<<(VLAN_ID%32)))进行判断。这种方法无论设置了多少个VLAN,都需要循环差不多4K次,效率比较低。本发明实施例采用判断方法具体是:从VLAN_bitmap[0]开始循环至VLAN_bitmap[127],对每一个数组成员中的32个bit位从最右边bit位开始进行循环判断;查看所述当前数组中当前标识位的数值是否不为0,如果所述当前数组中当前全部标识位构成的二级制数值不为0,从最右侧标识位开始向左依次识别;判断当前最右侧标识位是否为1,如果当前最右侧标识位为1,记录当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置,并根据当前最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置获取对应的VLAN的ID;如果当前表示位不为1,将所述当前数组中当前标识位左移一位;如果所述当前数组中当前全部标识位构成的二进制数值为0,则查看下一数组(举例:8个二进制00001001(判断二进制数值不为0,首先判断当前最右侧标识位即最右边bit为1,然后把整个二进制数右移1位,得到0000100,二级制数值结果仍然不为0,当前最右侧标识位不为1,将所述当前数组中当前所有标识位右移一位;得到000010,以此类推,当循环到从右边算起的第4个bit位时,整个二进制数右移4位,得到0000,结果已经为0了,余下的bit位无需再继续判断,循环结束);如果剩余bit中全部为0了,则跳到数组VLAN_bitmap[]下一个成员继续进行相同的判断。
通过第二任务进程对标识位的识别,即可获得哪些VLAN被设置为enable,哪些为disable,获取第一任务进程待传递的VLAN信息,即物理端口对应的VLAN信息。
进一步地,如图9所示,本发明技术方案的一种任务之间传递VLAN信息的实现装置还包括:
转发模块104,第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口。
本发明技术方案将基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位,便于第二进程进行有效识别,有效解决现有技术造成任务进程之间传递VLAN信息时占用CPU资源较多以及占用存储空间较大的问题,有效的降低了任务进程之间传递VLAN信息时占用的CPU资源以及存储空间。
本发明技术方案第一任务进程将待传递VLAN信息转换为若干数组,每个数组中包括若干表示VLAN信息的标识位,第二任务进程在识别第一任务进程发送的若干数组中的若干标识位时,通过判断每一数组中的当前全部标识位构成的二进制数值是否为0,判断是否要进行标识位的具体识别,提高了第二任务进程的识别效率,特别适用于当交换机物理端口数量较多时,提高了用户使用体验。
本发明技术方案还包括第二任务进程识别第一任务进程发送的待传递VLAN信息后,将识别转换后的待传递VLAN信息转发至交换机显示端口,便于工作人员及时了解待传递VLAN信息。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (6)
1.一种任务之间传递VLAN信息的实现方法,其特征是,运行于交换机中,包括:
第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;其中,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位具体包括:
第一任务进程获取待传递VLAN信息;
将待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息;VLAN特性信息包括enable及disable,数组中标识位包括0及1;
第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息;其中,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息具体包括:
第二任务进程接收转换后的VLAN信息对应的标识位;
依次识别每个数组中表示VLAN特性信息的标识位,并将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息;其中,依次识别每个数组中表示VLAN特性信息的标识位具体是:
获取当前数组中表示VLAN特性信息的标识位;
查看所述当前数组中所有标识位构成的二进制数值是否不为0,如果所述当前数组中所有标识位构成的二进制数值不为0,判断最右侧标识位是否为1,如果最右侧标识位为1,记录最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置;如果最右侧标识位不为1,将所述当前数组中所有标识位右移一位;
如果所述当前数组中所有标识位构成的二进制数值为0,则查看下一数组。
2.根据权利要求1所述的任务之间传递VLAN信息的实现方法,其特征是,数组的数量为128个,每个数组中包含32个标识位。
3.根据权利要求1所述的任务之间传递VLAN信息的实现方法,其特征是,VLAN特性信息位于数组的序号为所述VLAN的ID与数组中标识位个数的商,VLAN特性信息位于数组的位置为所述VLAN的ID与数组中标识位个数的余数。
4.根据权利要求1-3任一所述的任务之间传递VLAN信息的实现方法,其特征是,还包括:
第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口。
5.一种任务之间传递VLAN信息的实现装置,其特征是,运行于交换机中,包括:
获取转换模块,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位;其中,第一任务进程获取待传递VLAN信息,并基于bitmap将待传递VLAN信息转换为VLAN信息对应的标识位具体包括:
第一任务进程获取待传递VLAN信息;
将待传递VLAN信息基于bitmap划分为若干数组,每个数组中的若干标识位表示若干数量VLAN特性信息;VLAN特性信息包括enable及disable,数组中标识位包括0及1;
发送模块,第一任务进程将转换后的VLAN信息对应的标识位发送至第二任务进程;
识别模块,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息;其中,第二任务进程接收转换后的VLAN信息对应的标识位,并根据转换后的VLAN信息对应的标识位识别待传递的VLAN信息具体包括:
第二任务进程接收转换后的VLAN信息对应的标识位;
依次识别每个数组中表示VLAN特性信息的标识位,并将表示VLAN特性信息的标识位转换为待传递的VLAN特性信息;其中,依次识别每个数组中表示VLAN特性信息的标识位具体是:
获取当前数组中表示VLAN特性信息的标识位;
查看所述当前数组中所有标识位构成的二进制数值是否不为0,如果所述当前数组中所有标识位构成的二进制数值不为0,判断最右侧标识位是否为1,如果最右侧标识位为1,记录最右侧标识位为1所在数组的序号以及所在数组中最右侧标识位的具体位置;如果最右侧标识位不为1,将所述当前数组中所有标识位右移一位;
如果所述当前数组中所有标识位构成的二进制数值为0,则查看下一数组。
6.根据权利要求5所述的任务之间传递VLAN信息的实现装置,其特征是,还包括:
转发模块,第二任务进程将识别后的待传递的VLAN信息转发至交换机输出端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779981.4A CN113656190B (zh) | 2021-07-09 | 2021-07-09 | 一种任务之间传递vlan信息的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779981.4A CN113656190B (zh) | 2021-07-09 | 2021-07-09 | 一种任务之间传递vlan信息的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656190A CN113656190A (zh) | 2021-11-16 |
CN113656190B true CN113656190B (zh) | 2023-08-08 |
Family
ID=78477278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110779981.4A Active CN113656190B (zh) | 2021-07-09 | 2021-07-09 | 一种任务之间传递vlan信息的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656190B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786447A (zh) * | 2017-11-09 | 2018-03-09 | 锐捷网络股份有限公司 | 一种基于fpga的报文转发方法及设备 |
CN108183851A (zh) * | 2017-12-29 | 2018-06-19 | 北京物芯科技有限责任公司 | 一种报文转发方法及转发设备 |
CN111682997A (zh) * | 2020-05-15 | 2020-09-18 | 烽火通信科技股份有限公司 | 基于位图表的以太网vlan段流分类方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9929880B2 (en) * | 2013-10-07 | 2018-03-27 | Dell Products L.P. | System and method for managing VLAN associations with network ports |
-
2021
- 2021-07-09 CN CN202110779981.4A patent/CN113656190B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786447A (zh) * | 2017-11-09 | 2018-03-09 | 锐捷网络股份有限公司 | 一种基于fpga的报文转发方法及设备 |
CN108183851A (zh) * | 2017-12-29 | 2018-06-19 | 北京物芯科技有限责任公司 | 一种报文转发方法及转发设备 |
CN111682997A (zh) * | 2020-05-15 | 2020-09-18 | 烽火通信科技股份有限公司 | 基于位图表的以太网vlan段流分类方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113656190A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7424551B2 (en) | Passive video multiplexing method and apparatus priority to prior provisional application | |
CN110855568B (zh) | 报文转发方法及系统 | |
CN101573913A (zh) | 用于多播路由选择的方法和设备 | |
US11206216B2 (en) | Flexible ethernet frame forwarding method and apparatus | |
WO2017012517A1 (zh) | 混合物理编码子层以及数据发送、接收方法、存储介质 | |
CN113656190B (zh) | 一种任务之间传递vlan信息的实现方法及装置 | |
JP3561129B2 (ja) | ネットワーク監視装置及びリピータハブの接続端末認識方法 | |
CN112073249B (zh) | 数据传输方法、集群交换机系统及相关设备 | |
JP4134127B2 (ja) | 同期化イーサネット(登録商標)システムにおけるタイミングマスター選定方法 | |
CN107438035B (zh) | 一种网络处理器、网络处理方法和系统、单板 | |
US20130114603A1 (en) | Method for diverting packet multiple times, apparatus and system | |
US10432582B2 (en) | Technologies for scalable local addressing in high-performance network fabrics | |
CN108650180B (zh) | 堆叠系统及其表项下发方法、装置 | |
CN115278395A (zh) | 一种网络交换设备、数据流处理控制方法及相关设备 | |
WO2017045486A1 (zh) | 用于传输无线数据的方法、装置和系统 | |
CN112543142B (zh) | 基于fpga实现rstp环网协议的方法和装置 | |
CN201726502U (zh) | 多网合一终端设备 | |
CN116437419A (zh) | 虚拟局域网vlan接口聚合方法、报文收发方法及相关设备 | |
CN101471793B (zh) | 速率适配的方法和设备、交换板与线卡 | |
EP3618317A1 (en) | Message sending method and message receiving method and apparatus | |
CN105847877A (zh) | 直播请求的处理方法和系统 | |
CN1411645A (zh) | 经由非网络依从链路把节点接入网络的系统和方法 | |
JP2001333088A (ja) | データ転送制御方法及びその装置 | |
CN115250187B (zh) | 一种提高NetFlow中继设备快速过滤的方法及装置 | |
CN111614632B (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 |