转发报文和建立媒质接入控制地址表项的方法及交换机
技术领域
本发明涉及虚拟局域网技术,特别是涉及一种转发报文的方法和一种建立媒质接入控制(MAC)地址表项的方法以及一种交换机。
背景技术
隔离用户虚拟局域网(isolate-user-vlan)技术是应用在交换机上的二层虚拟局域网(VLAN)技术。如图1所示,在交换机上应用isolate-user-vlan技术时,需要在交换机上划分出一个主虚拟局域网(Primary VLAN)和多个次虚拟局域网(Secondary VLAN),并且,每一个Secondary VLAN中至少包括一个与固定用户终端相连的接入端口,所有Secondary VLAN共用一个上行端口,该上行端口也与固定的网络设备相连。Primary VLAN中包含所有Secondary VLAN中包含的接入端口和上行端口。在交换机上应用isolate-user-vlan技术后,对于与交换机通信的上层设备来说,只须识别交换机中的Primary VLAN,而不必关心Primary VLAN中包含的SecondaryVLAN,因此,简化了配置,节省了VLAN资源。
参见图1,比如,用户终端1与上行端口即端口1相连,其IP地址为1.1.1.1/24,MAC地址为8888-8888-8888,用户终端2与Secondary VLAN20中的接入端口即端口2相连,其IP地址为1.1.1.2/24,MAC地址为2222-2222-2222,用户终端3与Secondary VLAN30中的接入端口即端口3相连,其IP地址为1.1.1.3/24,MAC地址为6666-6666-6666。在任意两个用户终端比如用户终端1与用户终端2通信时,在交换机上实现报文转发的过程可参见图2所示,具体包括以下步骤:
步骤201:当用户终端2需要与用户终端1通信时,用户终端2将请求报文发送至交换机的端口2。
这里,用户终端2发送的请求报文中携带有源MAC地址即用户终端2的MAC地址2222-2222-2222。
步骤202:交换机在Secondary VLAN20的接入端口即端口2上接收到请求报文后,根据该请求报文中的源MAC地址,分别建立对应于SecondaryVLAN20和Primary VLAN100的MAC地址表项。
这里,交换机在接收到携带源MAC地址2222-2222-2222的请求报文后,由于是首次学习到源MAC地址2222-2222-2222,因此,交换机会建立如下表1中对应于Secondary VLAN20的第1条MAC地址表项,另外,还将该源MAC地址同步到Primary VLAN100,即建立如下表1中对应于PrimaryVLAN100的第2条MAC地址表项。
序号 | MAC地址 | VLAN ID | 端口 |
1 | 2222-2222-2222 | 20 | 端口2 |
2 | 2222-2222-2222 | 100 | 端口2 |
表1
步骤203:交换机根据请求报文中的目的MAC地址和SecondaryVLAN20的VLAN ID,在Secondary VLAN20中发送请求报文。
这里,由于只建立了表1所示的MAC地址表项,交换机根据请求报文中的目的MAC地址8888-8888-8888以及Secondary VLAN20的VLAN ID为20则无法查找到出端口,则通过Secondary VLAN20中除接收到该请求报文的端口2之外的所有端口分别发送一份请求报文。请求报文从端口1发送出去,到达与端口1相连的用户终端1。
步骤204:用户终端1将响应报文发送至交换机的端口1。
这里,用户终端1发送的响应报文中携带有源MAC地址即用户终端1的MAC地址8888-8888-8888。
步骤205:交换机在Primary VLAN100的上行端口即端口1上接收到响应报文后,根据该响应报文中的源MAC地址,建立对应于Primary VLAN100和所有Secondary VLAN的MAC地址表项。
这里,交换机在接收到携带源MAC地址8888-8888-8888的响应报文后,由于是首次学习到源MAC地址8888-8888-8888,因此,交换机会建立如下表2中对应于Primary VLAN100的第6条MAC地址表项,另外,还将该源MAC地址同步到所有的Secondary VLAN,即建立如下表2中分别对应于各个Secondary VLAN的第3、4和5条MAC地址表项。
序号 | MAC地址 | VLAN ID | 端口 |
1 | 2222-2222-2222 | 20 | 端口2 |
2 | 2222-2222-2222 | 100 | 端口2 |
3 | 8888-8888-8888 | 20 | 端口1 |
4 | 8888-8888-8888 | 30 | 端口1 |
5 | 8888-8888-8888 | 40 | 端口1 |
6 | 8888-8888-8888 | 100 | 端口1 |
表2
步骤206:交换机根据响应报文中的目的MAC和VLAN ID,在PrimaryVLAN中转发响应报文。
这里,交换机根据目的MAC和VLAN ID(2222-2222-2222/100)在表2所示的MAC地址表中查找出端口,这时可以匹配到第2条表项,出端口为端口2,于是交换机将该响应报文从端口2转发出去。
步骤207:当交换机再次从Secondary VLAN20的端口2上接收到用户终端2发送给用户终端1的报文时,则根据该报文中的目的MAC和VLANID,查找到表2中的第3条MAC地址表项,确定出端口为端口1,则通过端口1将报文发送至用户终端1。
由以上描述可以看出,在现有技术中,当在交换机上应用isolate-user-vlan技术时,交换机在首次学习到一个MAC地址后,都会建立该MAC地址对应的MAC地址表项,也就是说,从Primary VLAN的上行端口学习到的MAC地址会同步到所有Secondary VLAN,而从SecondaryVLAN的接入端口学习到的MAC地址会同步到Primary VLAN,即分别建立对应于该Secorndary VLAN的MAC地址表项和对应于Primary VLAN的MAC地址表项。这样,则会使得交换机中建立大量的MAC地址表项,大大浪费了交换机中的表项资源。
发明内容
有鉴于此,本发明的主要目的在于提供一种转发报文的方法、一种建立MAC地址表项的方法以及一种交换机,以便于减少交换机中建立的MAC地址表项,节约交换机的表项资源。
为了达到上述目的,本发明的技术方案是这样实现的:
一种转发报文的方法,该方法包括:
交换机确定在接入端口上首次学习到第一MAC地址后,仅建立对应于Primary VLAN的第一MAC地址的表项;
交换机在上行端口上首次学习到第二MAC地址后,分别建立对应于Primary VLAN和各个Secondary VLAN的第二MAC地址的表项;
交换机根据已建立的MAC地址表项转发报文。
所述交换机确定在接入端口上首次学习到第一MAC地址的步骤包括:交换机判断自身中是否保存有第一MAC地址,如果未保存,则确定在接入端口上首次学习到所述第一MAC地址,并保存该第一MAC地址。
当交换机在Secondary VLAN中接收到报文时,所述交换机根据已建立的MAC地址表项转发报文的步骤包括:
交换机根据报文中携带的目的MAC地址和VLAN ID,在已建立的MAC地址表项中查找对应的MAC地址表项,如果查找到对应的MAC地址表项,则通过该MAC地址表项中记录的端口转发报文,如果未查找到对应的MAC地址表项,则通过Secondary VLAN中除接收到所述报文的端口之外的所有端口分别转发在Secondary VLAN中接收到的报文。
一种建立MAC地址表项的方法,该方法包括:
交换机确定在接入端口上首次学习到一个MAC地址后,仅建立对应于Primary VLAN的该MAC地址的表项,不建立对应于Secondary VLAN的该MAC地址的表项。
所述交换机确定在接入端口上首次学习到一个MAC地址的步骤包括:交换机判断自身中是否保存有所述MAC地址,如果未保存,则确定在接入端口上首次学习到所述MAC地址,并保存该MAC地址。
一种交换机,该交换机包括:MAC地址学习单元、检测单元和表项建立单元,其中,
MAC地址学习单元,用于从接入端口接收到的报文中学习第一MAC地址,并将学习到的第一MAC地址发送至检测单元;
检测单元,用于检测学习到的第一MAC地址是否为首次学习到,在确定第一MAC地址为首次学习到后,将第一MAC地址发送至表项建立单元;
表项建立单元,用于在接收到检测单元发来的第一MAC地址后,仅建立对应于Primary VLAN的第一MAC地址的表项。
该交换机进一步包括:MAC地址存储单元,其中,
所述检测单元,用于检测MAC地址存储单元中是否保存有第一MAC地址,在检测出未保存后,确定第一MAC地址为首次学习到,并将该第一MAC地址保存在MAC地址存储单元中。
所述MAC地址学习单元,进一步用于从上行端口接收到的报文中学习第二MAC地址,并将学习到的第二MAC地址发送至检测单元;
检测单元,用于检测学习到的第二MAC地址是否为首次学习到,在确定第二MAC地址为首次学习到后,将第二MAC地址发送至表项建立单元;
表项建立单元,用于在接收到检测单元发来的第二MAC地址后,分别建立对应于PrimaryVLAN和各个次虚拟局域网Secondary VLAN的第二MAC地址的表项。
该交换机进一步包括:MAC地址存储单元,其中,
所述检测单元,用于检测MAC地址存储单元中是否保存有第二MAC地址,在检测出未保存后,确定第二MAC地址为首次学习到,并将该第二MAC地址保存在MAC地址存储单元中。
该交换机进一步包括:报文转发单元,用于根据表项建立单元所建立的MAC地址的表项,转发报文。
由此可见,在本发明中,当交换机确定在接入端口上首次学习到一个MAC地址后,仅建立对应于Primary VLAN的MAC地址表项,而不再执行现有技术中建立对应于Secondary VLAN的MAC地址表项的过程。这样,由于在交换机上存在多个接入端口,按照本发明的实现方式,从所有接入端口上学习到的MAC地址都无需建立对应于Secondary VLAN的MAC地址表项,因此,大大减少了交换机中建立的MAC地址表项,节约了交换机的表项资源。
附图说明
图1是在交换机上应用isolate-user-vlan技术的示意图。
图2是在现有技术中转发报文的流程图。
图3是在本发明中转发报文的流程图。
图4是在本发明中交换机内部的基本结构示意图。
图5是在本发明中交换机内部的一种优选结构示意图。
图6是在本发明中交换机内部的另一种优选结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
在现有技术中,交换机从一个接入端口学习到一个MAC地址后,不仅会建立该MAC地址对应于Secondary VLAN的MAC地址表项,而且还要建立该MAC地址对应于Primary VLAN的MAC地址表项。而通过交换机上的报文转发流程可以看出,如果一个Secondary VLAN中只设置一个与固定用户终端相连的接入端口,也就是说,每一个Secondary VLAN中只有一个接入端口和一个上行端口,那么,根据从接入端口学习到的MAC地址所建立的对应于Secondary VLAN的MAC地址表项,在报文转发过程中根本不会被使用,也就是说,该MAC地址表项对于交换机来说,没有实际的利用价值;如果一个Secondary VLAN中包括多个接入端口,那么,根据从接入端口学习到的MAC地址所建立的对应于Secondary VLAN的MAC地址表项,也完全可以不用来转发报文,而通过其他方式,比如广播的方式来转发报文。
根据上述特点,本发明提出了一种转发报文的方法,其核心思想是:交换机确定在接入端口上首次学习到第一MAC地址后,仅建立对应于PrimaryVLAN的第一MAC地址的表项;交换机在上行端口上首次学习到第二MAC地址后,分别建立对应于Primary VLAN和各个Secondary VLAN的第二MAC地址的表项;交换机根据已建立的MAC地址表项转发报文。
相应地,本发明还提出了一种建立MAC地址表项的方法,该方法包括:交换机确定在接入端口上首次学习到一个MAC地址后,仅建立对应于Primary VLAN的MAC地址表项。
为了更加清楚地说明在本发明中建立MAC地址表项和转发报文的具体过程,下面以一个具体的报文转发流程为例进行说明。
比如,每一个Secondary VLAN中只有一个接入端口,用户终端1与上行端口即端口1相连,其IP地址为1.1.1.1/24,MAC地址为8888-8888-8888,用户终端2与Secondary VLAN20中的接入端口即端口2相连,其IP地址为1.1.1.2/24,MAC地址为2222-2222-2222,用户终端3与Secondary VLAN30中的接入端口即端口3相连,其IP地址为1.1.1.3/24,MAC地址为6666-6666-6666。在任意两个用户终端比如用户终端1与用户终端2通信时,在交换机上实现报文转发的过程可参见图3所示,具体包括以下步骤:
步骤301:当用户终端2需要与用户终端1通信时,用户终端2将请求报文发送至交换机的端口2。
这里,用户终端2发送的请求报文中携带有源MAC地址即用户终端2的MAC地址2222-2222-2222。
步骤302:交换机在Secondary VLAN20的接入端口即端口2上接收到请求报文,并学习到该请求报文中的源MAC地址。
步骤303:交换机判断在接入端口上即端口2上学习到的源MAC地址是否为首次学习到,如果是,则执行步骤304,否则,直接执行步骤305。
步骤304:交换机根据在接入端口上即端口2上学习到的源MAC地址,仅建立对应于Primary VLAN100的MAC地址表项。
这里,交换机在接收到携带源MAC地址2222-2222-2222的请求报文后,由于是首次学习到源MAC地址2222-2222-2222,因此,交换机仅将该源MAC地址同步到Primary VLAN100,即仅建立如下表3中对应于PrimaryVLAN100的第1条MAC地址表项。
序号 | MAC地址 | VLANID | 端口 |
1 | 2222-2222-2222 | 100 | 端口2 |
表3
步骤305:交换机根据请求报文中的目的MAC地址和SecondaryVLAN20的VLAN ID,在Secondary VLAN20中发送请求报文。
这里,由于只建立了表3所示的MAC地址表项,交换机根据请求报文中的目的MAC地址8888-8888-8888以及Secondary VLAN20的VLAN ID为20则无法查找到出端口,则通过Secondary VLAN20中除接收到该请求报文的端口2之外的所有端口分别发送一份请求报文。其中,由于在Secondary VLAN20中除端口2之外的端口只有上行端口即端口1,因此,请求报文从端口1发送出去,到达与端口1相连的用户终端1。
步骤306:用户终端1将响应报文发送至交换机的端口1。
这里,用户终端1发送的响应报文中携带有源MAC地址即用户终端1的MAC地址8888-8888-8888。
步骤307:交换机在Primary VLAN100的上行端口即端口1上接收到响应报文后,根据该响应报文中的源MAC地址,建立对应于Primary VLAN100和所有Secondary VLAN的MAC地址表项。
本步骤的实现过程与现有技术的相应实现过程相同,即,交换机在接收到携带源MAC地址8888-8888-8888的响应报文后,由于是首次学习到源MAC地址8888-8888-8888,因此,建立如下表4中对应于Primary VLAN100的第5条MAC地址表项,另外,还将该源MAC地址同步到所有的SecondaryVLAN,即建立如下表4中分别对应于各个Secondary VLAN的第2、3和4条MAC地址表项。
序号 | MAC地址 | VLAN ID | 端口 |
1 | 2222-2222-2222 | 100 | 端口2 |
2 | 8888-8888-8888 | 20 | 端口1 |
3 | 8888-8888-8888 | 30 | 端口1 |
4 | 8888-8888-8888 | 40 | 端口1 |
5 | 8888-8888-8888 | 100 | 端口1 |
表4
步骤308:交换机根据响应报文中的目的MAC和VLAN ID,在PrimaryVLAN中转发响应报文。
这里,交换机根据目的MAC和VLAN ID(2222-2222-2222/100)在表2所示的MAC地址表中查找出端口,这时可以匹配到第1条表项,出端口为端口2,于是交换机将该报文从Primary VLAN中的端口2转发出去。
步骤309:当交换机再次从端口2上接收到用户终端2发送给用户终端1的报文时,则根据该报文中的目的MAC和VLAN ID,查找到表4中的第2条MAC地址表项,确定出端口为端口1,则在SecondaryVLAN20中通过端口1将报文发送至用户终端1。
需要说明的是,在上述图3所示过程中,是以Secondary VLAN中只有一个接入端口为例来说明报文转发流程。如果Secondary VLAN中包括多个接入端口,那么,交换机建立MAC地址表项的具体过程与上述图3所示流程中的相应过程完全相同,而需要指出的是,当交换机在Secondary VLAN中接收到报文时,交换机根据已建立的MAC地址表项转发报文的具体实现过程包括:交换机根据报文中携带的目的MAC地址和VLAN ID,在已建立的MAC地址表项中查找对应的MAC地址表项,如果查找到对应的MAC地址表项,则通过该MAC地址表项中记录的端口转发报文,如果未查找到对应的MAC地址表项,则通过Secondary VLAN中除接收到所述报文的端口之外的所有端口分别转发所述报文。
相应地,本发明还提出了一种交换机。图4是在本发明中交换机内部的基本结构示意图。参见图4,在本发明中,该交换机包括:MAC地址学习单元、检测单元和表项建立单元,其中,
MAC地址学习单元,用于从接入端口接收到的报文中学习第一MAC地址,并将学习到的第一MAC地址发送至检测单元;
检测单元,用于检测学习到的第一MAC地址是否为首次学习到,在确定第一MAC地址为首次学习到后,将第一MAC地址发送至表项建立单元;
表项建立单元,用于在接收到检测单元发来的第一MAC地址后,仅建立对应于Primary VLAN的第一MAC地址的表项。
参见图4,较佳地,在本发明提出的交换机中,
所述MAC地址学习单元,进一步用于从上行端口接收到的报文中学习第二MAC地址,并将学习到的第二MAC地址发送至检测单元;
检测单元,用于检测学习到的第二MAC地址是否为首次学习到,在确定第二MAC地址为首次学习到后,将第二MAC地址发送至表项建立单元;
表项建立单元,用于在接收到检测单元发来的第二MAC地址后,分别建立对应于Primary VLAN和各个次虚拟局域网Secondary VLAN的第二MAC地址的表项。
图5是在本发明中交换机的一种优化结构示意图。参见图5,在本发明中,交换机还可以进一步包括:MAC地址存储单元,这样,
较佳地,所述检测单元用于检测MAC地址存储单元中是否保存有第一MAC地址,在检测出未保存后,确定第一MAC地址为首次学习到,并将该第一MAC地址存储在MAC地址存储单元中;
较佳地,所述检测单元用于检测MAC地址存储单元中是否保存有第二MAC地址,在检测出未保存后,确定第二MAC地址为首次学习到,并将该第二MAC地址存储在MAC地址存储单元中。
图6是在本发明中交换机的另一种优化结构示意图。参见图6,在本发明中,交换机还可以进一步包括:报文转发单元,用于根据表项建立单元所建立的MAC地址的表项,转发报文。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。