CN112637188A - 一种基于虚地址形成的交换机帧转发方法 - Google Patents
一种基于虚地址形成的交换机帧转发方法 Download PDFInfo
- Publication number
- CN112637188A CN112637188A CN202011508821.8A CN202011508821A CN112637188A CN 112637188 A CN112637188 A CN 112637188A CN 202011508821 A CN202011508821 A CN 202011508821A CN 112637188 A CN112637188 A CN 112637188A
- Authority
- CN
- China
- Prior art keywords
- mac address
- frame
- address
- virtual
- switch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于虚地址形成的交换机帧转发方法,该交换机帧转发方法包括以下步骤,一、交换机提取帧的相关信息;二、对帧进行MAC地址检查,若未通过,则丢弃;若通过,则进行步骤三;三、若MAC转发表中有源MAC地址对应的条目,则更新MAC地址转发表,若无则进行步骤四;四、进行MAC地址学习,将源MAC地址映射成虚MAC地址;五、若目的MAC地址是一个广播地址,则进行步骤六;若的MAC地址是一个虚地址,则进行步骤七;六、进行源MAC地址转换,以广播方式发送该帧;七、若转换表内不存在目的MAC地址,则转到步骤六;若存在,进行步骤八;八、进行源MAC地址转换和目的MAC地址转换,然后以单播方式发送该帧。该转发方法具有有效的防止MAC地址欺骗攻击的特点。
Description
技术领域
本发明涉及网络通信技术,特别涉及一种基于虚地址形成的交换机帧转发方法。
背景技术
长期以来,针对MAC地址的攻击始终困扰着以太网交换机。我们知道,二层以太网的工作原理就是帧转发,即每收到一个帧,交换机就提取帧的目的MAC地址,然后查找自己的MAC地址转发表。若表中有与目的MAC地址匹配的条目,就从对应的端口转发出去,若没有就广播该帧。
交换机为了维持自身的MAC地址转发表会进行MAC学习。具体方法就是每当有一个帧进入交换机的时候,交换机就记录帧进入的端口,同时提取出帧的源MAC地址。若该源MAC地址在MAC地址转发表中存在,则更新该条目,比如更新该条目的进入端口和生存期。若没有条目与该源MAC地址匹配,则新增一个条目记录该源MAC地址和进入端口。若某个条目长时间没有被匹配过,则从MAC转发表中移除该条目。通常来说,交换机的MAC地址转发表格式如表1。
表1 MAC地址转发表
MAC地址 | 端口 | 生存期 |
针对交换机转发机制的攻击方式很多,比较典型的就是MAC地址欺骗攻击。假设网络拓扑见图1,各个主机的配置与连接信息见表2。
表2主机配置与连接信息表
主机 | MAC地址 | 连接设备 | 设备端口 |
A | MACa | S2 | 1 |
B | MACb | S2 | 2 |
C | MACc | S3 | 1 |
系统正常运行时,各个交换机的MAC地址转表见表3、4、5。
表3交换机S1的MAC地址转发表
MAC地址 | 端口 | 生存期 |
MACa | 1 | 默认值 |
MACb | 1 | 默认值 |
MACc | 2 | 默认值 |
表4交换机S2的MAC地址转发表
MAC地址 | 端口 | 生存期 |
MACa | 1 | 默认值 |
MACb | 2 | 默认值 |
MACc | 3 | 默认值 |
表5交换机S3的MAC地址转发表
不妨假设主机B已知主机A的MAC地址的,现在主机B想要对主机A进行MAC地址欺骗攻击,B的攻击方式如下:
步骤1:主机B伪造一个帧,这个帧的目的地址是MACc,源MAC地址是MACa,发送出去;
步骤2:该帧到达交换机S2后,交换机S2会进行MAC地址学习,学习后交换机S2的MAC地址转发表如下:
表6交换机S2更新后的MAC地址转发表
MAC地址 | 端口 | 生存期 |
MACa | 2 | 300 |
MACb | 2 | 300 |
MACc | 3 | 300 |
步骤3:由于帧目的MAC地址是MACc,所以该帧还会经过交换机S1和交换机S3,同样交换机S1和交换机S3也会进行MAC地址学习,不过更新后的MAC地址转发表和原来的一样的,这里不再给出;
步骤4:现在若主机C要发送一个帧给主机A,那该帧的目的地址是MACa,当该帧入到交换机S3后,交换机S3会通过端口2转发至交换机交换机S1。交换机S1查询自己的MAC转发表后会通过端口1转发至交换机S2,交换机S2查找自己的转发后,会通过端口2将该帧发给主机B,这样主机B就成功的收到了本应该发给主机A的帧,完成了MAC地址欺骗。
为了有效的防止帧转发过程中MAC地址欺骗攻击,本发明设计出一种基于虚地址形成的交换机帧转发方法,本案由此产生。
发明内容
本发明提供一种基于虚地址形成的交换机帧转发方法,该转发方法具有有效的防止MAC地址欺骗攻击的特点;具体地,本发明是通过以下技术方案实现:
一种基于虚地址形成的交换机帧转发方法,该交换机帧转发方法包括以下步骤,
步骤一、交换机接收发送的帧,提取帧的源MAC地址和目的MAC地址,记录帧进入时的端口;
步骤二、进行MAC地址检查,若未检查通过,则丢弃该帧;若检查通过,则进行步骤三;
步骤三、检查MAC转发表中是否有源MAC地址对应的条目,若有则更新MAC地址转发表,若没有则进行步骤四;
步骤四、进行MAC地址学习,将源MAC地址映射成虚MAC地址并写入转换表,更新转发表;
步骤五、判断目的MAC地址的地址类型,若目的MAC地址是一个广播地址,则进行步骤六;若是一个虚地址,则进行步骤七;
步骤六、进行源MAC地址转换,然后以广播方式发送该帧;
步骤七、遍历交换机的所有转换表,查找是否存在目的MAC地址;若不存在,则转到步骤六;若存在,就记下所在转换表的名字,然后从MAC地址转发表中找到该转换表所属条目,提取该条目的MAC地址和端口号,然后进行步骤八;
步骤八、进行源MAC地址转换和目的MAC地址转换,然后以单播方式发送该帧。
进一步,步骤二中,MAC地址通过的标准是需要同时满足条件A和C,或者同时满足条件B和C;条件A、B和C如下所述:
A、源MAC地址是一个真实MAC地址,且来自于主机;
B、源MAC地址是一个虚MAC地址,且来自于其他设备;
C、目的MAC地址是一个虚MAC地址或者广播地址。
进一步,步骤三中,MAC地址转发表更新方法如下所述:在MAC地址转发表中找到源MAC对应的条目,将其端口字段设置为帧进入时的端口,生存期重新设置为默认值。
进一步,步骤四中,MAC地址学习过程如下所述:
(1)、在MAC地址转发表中新增加一个条目;新条目的MAC地址字段写源MAC,端口字段,生存期为默认值;然后生成一个随机的转换表名,长度64比特,即16个英文字符,将这个表名写入新条目的转换表字段;
(2)、生成源MAC对应的转换表;具体方法如下:
依据主机的端口信息表,排除掉连接控制器的端口和帧的进入端口,对于剩下的每个端口,都产生一个随机的虚MAC地址,然后写入转换表。
进一步,步骤六中;对于每个需要转发该帧的端口,在转发该帧之前,需要查询源MAC地址对应的转换表,根据端口号确定对应的虚MAC地址,然后用该虚MAC地址替换帧中的源MAC字段,并重新计算帧的帧校检序列字段,然后再把替换后的帧从该端口转发出去。
进一步,步骤八具体如下所述:
(1)、用步骤七中找出的MAC地址替换掉帧的目的MAC地址字段;
(2)、用步骤七中找到的端口号,则检索目的MAC地址对应的转换表,找到该端口号对应的虚MAC地址,然后用该虚MAC地址替换帧的源MAC字段,并重新计算帧校检序列,然后从该端口发送该帧。
进一步,步骤四中,交换机内将源MAC地址映射成虚MAC地址的方法如下所述:
第一、将真实MAC地址和设备接入端口号相连接,得到一个64比特的二进制串,记为x;
第二、计算x的哈希值;
第三、取x哈希值的后24位,再加上一个固定的前24位前缀,形成新的MAC地址,即虚MAC地址。
采用此方法进行计算,仅需要一次哈希计算,因此计算量小;同时冲突概率低,由于哈希算法产生的值是随机的,所以后24位也是随机的,而两个长度为24位的随机二进制数冲突的概率也是极低的。
进一步,源MAC地址映射成虚MAC地址的方法中的第二步中,采用MD5或SHA哈希算法计算x的哈希值,且产生的哈希值长度不低于128比特。
本申请的有益效果在于:
通过在交换机中将帧的源MAC地址转换成虚拟的MAC地址,再将该帧转发出去;因此接收帧的某台主机只能获知其它主机的虚MAC地址,而无法获知其它主机的实MAC地址;从而避免了将主机的实MAC地址泄露的危险。
同时每个实MAC地址在不同的交换机上或者同一个交换机的不同端口上都会被映射为不同的虚MAC地址;避免了恶意主机通过MAC地址对其他主机进行追踪。传统以太网中,当一个帧在不同交换机之间转发时,每台主机都会对这个帧进行MAC地址学习,记录帧进入的端口号。所以恶意主机可以通过MAC地址追踪、监听其他主机。而这里虚MAC地址方式则可以有效的避免这一点。因为恶意节点只能知道某台主机在当前交换机上的虚MAC地址而已,而不能从这个虚地址上推测出目标主机在其他交换机上的虚MAC地址是多少,这大大增加了恶意节点的攻击难度。
因此同一个实地址虚MAC地址在不同交换机上映射的虚MAC地址皆是不同的,避免接收帧的某台主机追踪原始主机的实MAC地址。
通过这样的虚MAC地址映射,可有效的防止MAC地址欺骗攻击。
附图说明
图1为现有的MAC地址欺骗攻击的网络拓扑图;
图2为本发明提供的一种主机间的帧转发系统构成图;
图3为本发明提供的一种交换机工作流程图;
图4为本发明提供的一种主机A发送的广播帧的格式图;
图5为本发明提供的一种交换机S1端口2发出的帧的格式图;
图6为本发明提供的一种交换机S1端口3发出的帧的格式图;
图7为本发明提供的一种交换机S2端口2发出的帧的格式图;
图8为本发明提供的一种交换机S3端口1发出的帧的格式图;
图9为本发明提供的一种交换机S3端口2发出的帧的格式图;
图10为本发明提供的一种主机D构造的单播帧的格式图;
图11为本发明提供的一种交换机S3端口3发出的帧的格式图;
图12为本发明提供的一种交换机S2端口1发出的帧的格式图;
图13为本发明提供的一种交换机S1的1端口发出的帧的格式图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
一种基于虚地址形成的交换机帧转发方法,该方法涉及到交换机、主机和控制器。
在该帧转发过程中,交换机的MAC转发表格式见表7,即新增了转换表字段。
表7 MAC地址转发表
MAC地址、端口和生存期这三个字段的含义与普通交换机相同。转换表字段用于记录MAC地址所对应的转换表,转换表的名字长度是64位,用16个西文字符表示,转换表格式见表8,有端口和虚MAC两个字段。
表8转换表
端口 | 虚MAC |
若某个帧的源MAC在MAC地址转发表中存在,那当该帧需要从某个端口转发出去的时候,该帧的源MAC字段应该用转换表中端口所对应的虚MAC替换。
若帧的目的MAC地址是一个虚地址,那在帧被转发出去之前,要依次遍历交换机的各个转换表。若在某个转换表中找到了帧的目的MAC地址,则根据该转换表的名字在交换机的MAC地址转发表中查找该转换表对应的MAC地址,然后用该MAC地址替换帧的目的MAC地址字段。
若在各个转换表中都没有找到与帧目的MAC地址匹配的条目,那就不进行目的MAC地址转换,并且广播该帧。
该帧转发过程中,控制器主要功能包括如下两方面:
(1)、获取网络拓扑信息。
每当有新的设备接入网络或者原有设备端口状态发生变化的时候(比如一个端口的状态由关闭变成开启),控制器就利用LLDP(Link Layer Discovery Protocol,LLDP)或OSPF(Open Shortest Path First,OSPF)等协议进行拓扑发现,得到网络的拓扑信息。这里得到网络拓扑信息包括网络中有哪些设备,以及这些设备是如何连接的,比如某交换机通过端口2与另一台交换机端口1相连接。
对于网络中的交换机来说,端口连接的设备可以有三种:控制器、其他网络设备或主机。在利用LLDP或OSPF等协议得到网络拓扑信息后,对于每一个交换机,去除掉连接控制器的端口和连接其他网络设备的端口,那剩下的端口就是用于连接主机的端口了。
(2)、下发端口信息。
控制器把每台交换机的端口连接信息下发至对应的交换机,这样交换机就知道自己的哪些端口连接的是主机,哪些端口连接的是其他交换机,哪些端口连接的是控制器了。端口信息表样式见表9。
表9端口信息表
端口 | 对端设备 |
1 | 控制器 |
2 | 其他网络设备 |
3 | 主机 |
该帧转发过程中,交换机工作流程见图3,描述如下:
步骤1:当有帧到达交换机的时候,交换机提取帧的源MAC地址和目的MAC地址,这里分别记为MACx和MACy,然后记录该帧进入时的端口,这里记为portz;
步骤2:进行MAC地址检查,通过的标准是需要同时满足条件(1)和(3),或者同时满足条件(2)和(3);
(1)、MACx是一个实MAC地址,且来自于主机;
(2)、MACx是虚MAC地址,且来自于其他设备;
(3)、MACy是一个虚MAC地址或者广播地址;
若不能通过MAC地址检查,则直接丢弃该帧。若通过检查,则进行步骤3;
步骤3:检查MAC转发表中是否有MACx对应的条目,若有则更新MAC地址转发表;若没有则进行步骤4;
MAC地址转发表更新方法:在MAC地址转发表中找到MACx对应的条目,将其端口字段设置为portz,生存期重新设置为默认值。
步骤4:进行MAC地址学习,具体方法如下:
(1)、在MAC地址转发表中新增加一个条目。新条目的MAC地址字段写MACx,端口字段portz,生存期为默认值;然后生成一个随机的转换表名,长度64比特,即16个英文字符,将这个表名写入新条目的转换表字段;
(2)、生成MACx对应的转换表;具体方法如下:
依据主机的端口信息表,排除掉连接控制器的端口和帧的进入端口(即portz),对于剩下的每个端口,都产生一个随机的虚MAC地址,然后写入转换表;
步骤5:判断MACy地址类型:若是一个广播地址,则进行步骤6;若是一个虚地址,则进行步骤7;
步骤6:进行源MAC地址转换,然后以广播方式发送该帧。具体方法如下:
对于每个需要转发该帧的端口,在转发该帧之前,需要查询MACx对应的转换表,根据端口号确定对应的虚MAC地址,然后用该虚MAC地址替换帧中的源MAC字段,并重新计算帧的帧校检序列(FCS)字段,然后再把替换后的帧从该端口转发出去。
步骤7:遍历交换机的所有转换表,查找是否存在MACy。若不存在,则转到步骤6;若存在,就记下所在转换表的名字,然后从MAC地址转发表中找到该转换表所属条目,提取该条目的MAC地址和端口号,然后进行步骤8;
步骤8:进行源MAC地址转换和目的MAC地址转换,然后以单播方式发送该帧。具体方法:
(1)、用步骤7中找出的MAC地址替换掉帧的目的MAC地址字段;
(2)、用步骤7中找到的端口号,则检索MACx对应的转换表,找到该端口号对应的虚MAC地址,然后用该虚MAC地址替换帧的源MAC字段,并重新计算帧校检序列,然后从该端口发送该帧。
在进行虚MAC地址转发过程中,
1、当交换机的某个端口关闭的时候,需要从MAC地址转发表中移除与该端口有关的条目,同时删除这些条目对应的转换表。
2、每当MAC地址转发表中新增一个条目的时候,生存期字段都设置为默认值,该字段随着时间递减,即每过1秒钟该字段值减少1。当该字段值小于等于0时,需要移除该条目,并删除该条目对应的转换表。
其中虚MAC地址的产生方法如下所述:
每块网卡上都有一个固化的、全球唯一的MAC地址,长度为48比特,这里我们称之为实MAC地址,利用实MAC地址产生的、具有特殊格式的MAC地址我们称之为虚MAC地址。具体过程如下:
(1)将实MAC地址(48比特)和主机接入端口号(16比特,不足16比特的扩展到16比特)相连接,得到一个64比特的二进制串,记为x;
(2)计算x的哈希值,这里可以采用MD5、SHA等哈希算法,要求产生的哈希值长度不低于128比特。
取哈希值的后24位,再加上一个固定的前24位前缀(01-80-C2),形成新的MAC地址,即虚MAC地址。
下面结合具体的一种主机间的帧转发系统,对主机之间的基于虚地址形成的交换机帧转发方法进行详细描述:
如图2所示,其中一种主机间的帧转发系统中,各设备的连接方式如下所示,主机A连接交换机S1,交换机S1连接主机B,交换机S1连接交换机S2,交换机S1连接控制器;控制器连接交换机S2,控制机连接交换机S3;交换机S2连接交换机S3,交换机S3连接主机D,交换机S3连接主机C。
各个主机的IP与MAC地址见表10。
表10主机地址信息表
主机 | MAC地址 | IP地址 |
A | MACa | IPa |
B | MACb | IPb |
C | MACc | IPc |
D | MACd | IPd |
一、初始阶段
初始,控制器利用LLDP生成每个交换机的端口信息表,并下发至对应的交换机。各交换机的端口信息表见表11、12和13。
表11交换机S1端口信息表
表12交换机S2端口信息表
端口 | 对端设备 |
1 | 设备 |
2 | 设备 |
3 | 控制器 |
表13交换机S3端口信息表
端口 | 对端设备 |
1 | 主机 |
2 | 主机 |
3 | 设备 |
4 | 控制器 |
二、主机A与主机D进行通信
现在假设主机A要和主机D进行通信,主机A知道主机D的IP地址,但不知道主机D的MAC地址。那么首先主机A要进行地址解析,目的是获得主机D的MAC地址。主机A发送地址解析(Address Resolution Protocol,ARP)请求或者邻居发现(Neighbor DiscoveryProtocol,NDP)请求,该请求是一个广播帧,帧的目的地址是一个广播地址,帧格式见图4。
1、交换机S1的处理过程
当帧通过端口1到达交换机S1后,交换机S1的处理过程如下:
(1)、从帧中提取出源MAC地址:MACa,提取出目的MAC地址:一个广播地址;
(2)、检查MACa发现是一个实MAC地址,且来自于主机端口。目的MAC地址是一个广播地址,所以通过检查;
(3)、由于交换机S1的MAC地址转发表是空的,所以进行MAC地址学习,随机生成的转换表名字是AABBCCDD0001MACA,学习结果如下:
表14交换机S1 MAC地址转发表
MAC地址 | 端口 | 生存期 | 转换表 |
MACa | 1 | 默认值 | AABBCCDD0001MACA |
(4)、生成转换表AABBCCDD0001MACA(这里为连接设备和主机的端口生成虚MAC地址,控制器端口不用)。这里产生的虚MAC地址是按照第二部分中描述的虚MAC地址产生方法而得到的,比如可能为01-80-c2-00-01-a2,但这里为了描述方便,我们将其表示VMACXXXX,比如VMACS1A2表示主机A的MAC地址在被映射到交换机S1上的2端口时产生的虚MAC地址。
表15交换机S1的转换表AABBCCDD0001MACA
(5)、由于目的MAC地址是广播地址,所以从各个端口(不包括控制器端口和帧的进入端口)进行广播,对原始帧源MAC地址进行转换,然后从端口2和3广播出去。端口2和端口3发出的帧见图5和图6。
2、主机B的处理过程
主机B收到了交换机S1的2端口发送的广播帧,具体见图4,然后更新自己的地址缓存,得到一个新的地址条目,见表16。
表16主机B的地址缓存
MAC地址 | IP地址 |
VMACS1A2 | IPa |
3、交换机S2的处理过程
交换机S2的1端口收到了交换机S1的3端口发送的广播帧,具体见图5,交换机S2的处理过程如下:
(1)、提取帧的源地址:VMACS1a3。提取帧的目的地址:一个广播地址;
(2)、源MAC地址是一个虚MAC地址,且来自于一个设备端口,目的MAC地址是一个广播地址,所以MAC检查通过。
(3)、交换机S2的转发表中没有VMACS1A3,所以进行学习,随机生成的转换表名字是AABBCCDD0002MACA,学习结果见表17。
表17交换机S2 MAC地址转发表
(4)、生成转换表AABBCCDD0002MACA,见表18。
表18交换机S2的转转换表AABBCCDD0002MACA
端口 | 虚MAC |
2 | VMACS2A2 |
(5)、由于帧的目的MAC地址是广播地址,所以从各个端口(不包括控制器端口)进行广播,进行源MAC地址转换,从端口2转发出去,产生的帧见图7。
4、交换机S3的处理过程
帧到达交换机S3的3端口,处理过程与交换机S2基本类似,帧来自于端口3,简要描述如下:
(1)、提取源地址:VMACS2A2,目的地址:广播地址;
(2)、由于帧的源MAC地址是一个虚MAC地址,且来自于一个设备端口,目的MAC地址是广播地址,所以MAC检查通过;
(3)、交换机S3的MAC地址转发表中没有VMACS2A2,所以进行地址学习,生成随机转换表名AABBCCDD0003MACA,学习结果见表19。
表19交换机S3 MAC地址转发表
MAC地址 | 端口 | 生存期 | 转换表 |
VMACS2A2 | 3 | 默认值 | AABBCCDD0003MACA |
(4)、生成转换表AABBCCDD0003MACA,结果见表20。
表20交换机S3的转换表AABBCCDD0003MACA
(5)、由于目的MAC地址是广播地址,所以从各个端口(不包括控制器端口和进入端口)进行广播。产生的帧见图8和图9。
5、主机C和主机D的处理过程
主机C收到了交换机S3的1端口发送的广播帧,然后更新自己的地址缓存,得到一个新的地址条目,见表21。同样主机D也收到了交换机S3发送的广播帧,得到了一个新的地址条目,见表22。
表21主机C的地址缓存
VMACS3A1 | IPa |
表22主机D的地址缓存
VMACS3A2 | IPa |
三、主机D的回答阶段
1、主机D回答
由于主机D已经知道了主机A的IP地址和MAC地址,所以主机D若想要回答主机A,那首先构造一个单播的帧,具体见图10,然后发送出去,通过端口2到达交换机S3。
2、交换机S3的处理过程
(1)、提取帧的源MAC地址:MACd,目的MAC地址:VMACS3A2;
(2)、检查发现源MAC地址是一个实地址,且来自于主机端口,目的MAC是一个虚MAC地址,所以通过检查;
(3)、交换机S3的MAC地址转发表非空,但不存在MACd对应的条目,所以进行MAC地址学习,生成随机转换表名AABBCCDD0003MACD,学习结果见表21。
表21交换机S3的MAC地址转发表
MAC地址 | 端口 | 生存期 | 转换表 |
VMACS2A2 | 3 | 默认值 | AABBCCDD0003MACA |
MACd | 2 | 默认值 | AABBCCDD0003MACD |
(4)、生成转换表AABBCCDD0003MACD,具体见表22。
(5)、由于目的MAC地址一个虚地址,所以交换机S3要依次遍历自己的转换表,找到了VMACS3A2所属的转换表,这里是转换表AABBCCDD0003MACA,即表20,MAC地址表中对应的MAC地址是VMACS2A2,端口3。
(6)、进行地址转换,源MAC地址转换为VMACS3D3,目的MAC地址转换为VMACS2A2,最终从交换机S3的3端口发出的帧如图11所示。
表22交换机S3的转换表AABBCCDD0003MACD
端口 | 虚MAC |
1 | VMACS3D1 |
3 | VMACS3D3 |
3、交换机S2的处理过程
帧从交换机S3的3端口到达交换机S2的2端口,交换机S2的处理过程如下:
(1)、提取源地址:VMACS3D3,目的地址:VMACS2A2;
(2)、检查发现,源MAC地址是一个虚MAC地址,且来自于设备,目的MAC是一个虚地址,所以通过检查;
(3)、MAC地址转发表非空,但并没有VMACS3D3,所以进行学习,生成随机转换表名AABBCCDD0002MACD,学习结果见表23。
表23交换机S2的MAC地址转发表
MAC地址 | 端口 | 生存期 | 转换表 |
VMACS1A3 | 1 | 默认值 | AABBCCDD0002MACA |
VMACS3D3 | 2 | 默认值 | AABBCCDD0002MACD |
(4)、生成转换表AABBCCDD0002MACD,具体见表24。
表24交换机S2的转换表AABBCCDD0002MACD
端口 | 虚MAC |
1 | VMACS2D1 |
(5)、由于目的MAC地址一个虚地址,所以交换机S2要依次遍历自己的转换表,找到了VMACS2A2所属的转换表,这里是转换表AABBCCDD0002MACA,即表18,MAC地址表中对应的MAC地址是VMACS1A3,端口1。
(6)、进行地址转换,源MAC地址转换为VMACS2D1,目的MAC地址转换为VMACS1A3,最终从交换机S3的3端口发出的帧如图12所示。
4、交换机S1的处理过程
(1)、提取帧的源MAC地址:VMACS2D1,目的MAC地址:VMACS1A3;
(2)、检查发现源MAC地址是一个虚拟址,且来自于设备,目的MAC地址是一个虚地址,所以通过检查;
(3)、MAC地址转发表非空,但并没有VMACS2D1,所以进行学习,生成随机转换表名AABBCCDD0001MACD,学习结果见表24。
表24交换机S1的MAC地址转发表
MAC地址 | 端口 | 生存期 | 转换表 |
MACa | 1 | 默认值 | AABBCCDD0001MACA |
VMACS2D1 | 3 | 默认值 | AABBCCDD0001MACD |
(4)、生成转换表AABBCCDD0001MACD,具体见表25。
表25交换机S1的转换表AABBCCDD0001MACD
端口 | 虚MAC |
1 | VMACS1D1 |
2 | VMACS1D2 |
(5)、由于目的MAC地址一个虚MAC地址,所以交换机S1要依次遍历自己的转换表,找到了VMACS1A3所属的转换表,这里是转换表AABBCCDD0001MACA,即表15,MAC地址表中对应的MAC地址是MACa,端口1。
(6)、进行地址转换,源MAC地址转换为VMACS1D1,目的MAC地址转换为MACa,最终从交换机S1的1端口发出的帧如图13所示。
5、主机A的处理过程
主机A收到了交换机S1发送的单播帧,得到了一个新的地址条目,见表26。这样主机A就得到了主机D的MAC地址。主机A和主机D之间的后续通信就可以直接采用单播通信了。
表26主机A的地址缓存
VMACS1d1 | IPd |
以上是本发明优选实施方式,在本发明构思前提下所做出若干其他简单替换和改动,都应当视为属于本发明的保护范畴。
Claims (8)
1.一种基于虚地址形成的交换机帧转发方法,其特征在于:该交换机帧转发方法包括以下步骤,
步骤一、交换机接收发送过来的帧,提取帧的源MAC地址和目的MAC地址,记录帧进入时的端口;
步骤二、进行MAC地址检查,若检查未通过,则丢弃该帧;若检查通过,则进行步骤三;
步骤三、检查MAC转发表中是否有源MAC地址对应的条目,若有则更新MAC地址转发表,若没有则进行步骤四;
步骤四、进行MAC地址学习,将源MAC地址映射成虚MAC地址并写入转换表,更新转发表;
步骤五、判断目的MAC地址的地址类型,若目的MAC地址是一个广播地址,则进行步骤六;若是一个虚地址,则进行步骤七;
步骤六、将源MAC地址转换成虚MAC地址,然后以广播方式发送该帧;
步骤七、遍历交换机的所有转换表,查找是否存在目的MAC地址;若不存在,则转到步骤六;若存在,就记下所在转换表的名字,然后从MAC地址转发表中找到该转换表所属条目,提取该条目的MAC地址和端口号,然后进行步骤八;
步骤八、进行源MAC地址转换和目的MAC地址转换,然后以单播方式发送该帧。
2.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤二中,MAC地址通过的标准是需要同时满足条件A和C,或者同时满足条件B和C;条件A、B和C如下所述:
A、源MAC地址是一个真实MAC地址,且来自于主机;
B、源MAC地址是一个虚MAC地址,且来自于其他设备;
C、目的MAC地址是一个虚MAC地址或者广播地址。
3.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤三中,MAC地址转发表更新方法如下所述:在MAC地址转发表中找到源MAC对应的条目,将其端口字段设置为帧进入时的端口,生存期重新设置为默认值。
4.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤四中,MAC地址学习过程如下所述:
(1)、在MAC地址转发表中新增加一个条目;新条目的MAC地址字段写源MAC,端口字段,生存期为默认值;然后生成一个随机的转换表名,长度64比特,即16个英文字符,将这个表名写入新条目的转换表字段;
(2)、生成源MAC对应的转换表;具体方法如下:
依据主机的端口信息表,排除掉连接控制器的端口和帧的进入端口,对于剩下的每个端口,都产生一个随机的虚MAC地址,然后写入转换表。
5.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤六中;对于每个需要转发该帧的端口,在转发该帧之前,需要查询源MAC地址对应的转换表,根据端口号确定对应的虚MAC地址,然后用该虚MAC地址替换帧中的源MAC字段,并重新计算帧的帧校检序列字段,然后再把替换后的帧从该端口转发出去。
6.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤八具体如下所述:
(1)、用步骤七中找出的MAC地址替换掉帧的目的MAC地址字段;
(2)、用步骤七中找到的端口号,则检索目的MAC地址对应的转换表,找到该端口号对应的虚MAC地址,然后用该虚MAC地址替换帧的源MAC字段,并重新计算帧校检序列,然后从该端口发送该帧。
7.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:步骤四中,交换机内将源MAC地址映射成虚MAC地址的方法如下所述:
第一、将真实MAC地址和设备接入端口号相连接,得到一个64比特的二进制串,记为x;
第二、计算x的哈希值;
第三、取x哈希值的后24位,再加上一个固定的前24位前缀,形成新的MAC地址,即虚MAC地址。
8.根据权利要求1所述的一种基于虚地址形成的交换机帧转发方法,其特征在于:源MAC地址映射成虚MAC地址的方法中的第二步中,采用MD5或SHA哈希算法计算x的哈希值,且产生的哈希值长度不低于128比特。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011508821.8A CN112637188B (zh) | 2020-12-18 | 2020-12-18 | 一种基于虚地址形成的交换机帧转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011508821.8A CN112637188B (zh) | 2020-12-18 | 2020-12-18 | 一种基于虚地址形成的交换机帧转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112637188A true CN112637188A (zh) | 2021-04-09 |
CN112637188B CN112637188B (zh) | 2022-07-08 |
Family
ID=75317710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011508821.8A Active CN112637188B (zh) | 2020-12-18 | 2020-12-18 | 一种基于虚地址形成的交换机帧转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112637188B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1739276A (zh) * | 2003-01-21 | 2006-02-22 | 艾利森电话股份有限公司 | 用于以太网mac地址管理的系统、方法和功能 |
US20070274311A1 (en) * | 2003-10-30 | 2007-11-29 | Lei Yang | Method for preventing ethernet from being attacked |
CN101605084A (zh) * | 2009-06-29 | 2009-12-16 | 北京航空航天大学 | 基于虚拟机的虚拟网络报文处理方法和系统 |
US20110274110A1 (en) * | 2010-05-07 | 2011-11-10 | Vishnu Mmmadi | Method for preventing mac spoofs in a distributed virtual switch |
CN105827628A (zh) * | 2016-04-29 | 2016-08-03 | 上海斐讯数据通信技术有限公司 | 一种基于软件定义网络的防源地址欺骗的方法 |
CN105847148A (zh) * | 2016-03-18 | 2016-08-10 | 上海斐讯数据通信技术有限公司 | 一种数据帧转发控制方法及系统 |
-
2020
- 2020-12-18 CN CN202011508821.8A patent/CN112637188B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1739276A (zh) * | 2003-01-21 | 2006-02-22 | 艾利森电话股份有限公司 | 用于以太网mac地址管理的系统、方法和功能 |
US20070274311A1 (en) * | 2003-10-30 | 2007-11-29 | Lei Yang | Method for preventing ethernet from being attacked |
CN101605084A (zh) * | 2009-06-29 | 2009-12-16 | 北京航空航天大学 | 基于虚拟机的虚拟网络报文处理方法和系统 |
US20110274110A1 (en) * | 2010-05-07 | 2011-11-10 | Vishnu Mmmadi | Method for preventing mac spoofs in a distributed virtual switch |
CN105847148A (zh) * | 2016-03-18 | 2016-08-10 | 上海斐讯数据通信技术有限公司 | 一种数据帧转发控制方法及系统 |
CN105827628A (zh) * | 2016-04-29 | 2016-08-03 | 上海斐讯数据通信技术有限公司 | 一种基于软件定义网络的防源地址欺骗的方法 |
Non-Patent Citations (1)
Title |
---|
梁贝 等: "华为接入设备中的VMAC技术", 《数字技术与应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112637188B (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10623311B2 (en) | Technologies for distributed routing table lookup | |
US8984112B2 (en) | Internet address information processing method, apparatus, and internet system | |
US20060098644A1 (en) | Translating native medium access control (MAC) addresses to hierarchical MAC addresses and their use | |
TWI511512B (zh) | 在一通信網路中給一個網路元件創建多位址的方法及透過通信網路傳送訊息的方法 | |
US7729362B2 (en) | Method and apparatus for processing packet in high speed router | |
CN108769290B (zh) | 一种IPv6多地址生成与重复地址检测方法 | |
US20070165543A1 (en) | Routing system and route update method | |
US20060023744A1 (en) | Network address-port translation apparatus and method for IP fragment packets | |
US20120243521A1 (en) | Gateway device | |
US9819641B2 (en) | Method of and a processing device handling a protocol address in a network | |
US20050190752A1 (en) | Method and system for locating the incoming port of a MAC address in an Ethernet switch network | |
US7948916B2 (en) | Method and apparatus for discovering topology information in a network | |
JP5889218B2 (ja) | データ転送装置及びデータ転送方法 | |
JP5050978B2 (ja) | 伝送情報転送装置及び方法 | |
CN112637188B (zh) | 一种基于虚地址形成的交换机帧转发方法 | |
US7746865B2 (en) | Maskable content addressable memory | |
CN112165539B (zh) | 一种IPv6地址转换方法 | |
US20140029621A1 (en) | Method for learning media access control address, network device, and system | |
JP2009071423A (ja) | ネットワークアダプタ | |
JP3376941B2 (ja) | ルータ装置 | |
US7275077B2 (en) | Method for associating a first address with a second address of reduced size for directly addressing a context memory on a computer | |
EP4184820A1 (en) | Ipv6 message transmission method, device and system | |
CN111343096B (zh) | 一种标地分离报文转发方法、设备、交换芯片和存储介质 | |
US9444731B2 (en) | Methods and systems for data packet routing | |
KR100596385B1 (ko) | 라우터에서 가상근거리통신망에 설정된 포워딩정보 처리방법 |
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 |