具体实施方式
本发明提供一种MAC帧转发的方法及设备,用于网络中MAC帧的转发。通过比较接收MAC帧的端口与MAC地址转发表中的源MAC地址对应的端口是否一致,若不一致通过目的MAC地址对应的端口转发MAC帧,阻止网络中环路中数据的循环转发,避免引起网络阻塞。
请参阅图1是本发明提供的MAC帧转发的方法实施例图。
步骤101、解析收到的MAC帧携带的源MAC地址;
当网络搭建起来后,网络中会有用户发送的数据包传输,数据包的传送不只是在两个设备之间,会经过中间设备的传输。当网络中的设备收到其他设备发送的MAC帧后,解析该MAC帧携带的源MAC地址;MAC帧一般为网络中用户发送的数据和网络中的控制数据(如CCM帧)。
步骤102、查询源MAC地址;
在MAC地址转发表中查询MAC帧中携带的源MAC地址,若查询到则进入步骤103;若未查询到则进入步骤108;另外,若查询源MAC地址为接收MAC帧的设备的MAC帧,则直接丢弃收到的MAC帧。
步骤103、提取源MAC地址以及接收MAC帧的端口;
提取101步骤中解析得到的源MAC地址,与设备接收MAC帧的端口对应。
步骤104、比较端口;
比较接收MAC帧的端口与MAC地址转发表中源MAC地址对应的转发端口是否一致,若不一致进入步骤105中;若一致则进入步骤109;
此步骤的另一可选方案:若比较端口不一致,比较接收MAC帧的端口与MAC地址转发表中源MAC地址对应的转发端口哪个最优,若接收MAC帧的端口最优,则将该端口替换MAC地址转发表中与源MAC地址对应的端口,进入步骤109。比较端口可以根据不同的策略进行路径最优的比较,比如可以进行端口流量比较以确定最优的端口,选择流量小的端口作为最优的端口。
步骤105、解析目的MAC地址;
解析收到的MAC帧携带的目的MAC地址。
步骤106、查询目的MAC地址;
在MAC地址转发表中查询所述目的MAC地址,若查询到则进入步骤108,若未查询到则丢弃收到的MAC帧。
步骤107、将MAC帧转发到MAC地址转发表中目的MAC地址对应的转发端口。
步骤108、学习源MAC地址以及接收MAC帧的端口;
将学习到的MAC地址以及接收MAC帧的端口对应写入MAC地址转发表中。
步骤109、解析目的MAC地址,转发MAC帧;
网络中根据帧的目的MAC地址的不同可以将数据帧分为:广播,组播和单播;广播为目的地址为全网内所有的设备地址;组播为目的地址是一组地址;单播为目的地址只有一个。
在此步骤中,广播的转发过程是将MAC帧转发到除接收该MAC的端口外的其他所有端口。
单播的转发,用目的MAC地址查询MAC地址转发表,若查询到则将MAC帧转发到表项中目的MAC地址对应的端口,若未查询到则将该MAC帧转发到除接收该MAC帧的端口的其他所有端口。
组播的转发,用目的MAC地址查询MAC地址转发表,若查询到则将MAC帧转发到表项中目的MAC地址对应的端口,若未查询到则将该MAC帧转发到除接收该MAC帧的端口的其他所有端口。
至此,在一个网络设备中MAC帧的转发过程结束。
从上述实施例可以看出,本发明提供在设备收到MAC帧后,若解析源MAC地址为接收到MAC帧的设备的MAC地址,则丢弃该MAC帧,有效防止环路中数据包的循环转发,避免网络阻塞。
进一步的,本发明还提供若在MAC地址转发表中未查询到源MAC地址则学习源MAC地址以及接收该MAC帧的端口,避免MAC地址转发表中未出现的表项的数据包被丢弃。
进一步的,本发明提供端口比较最优的步骤,可以根据当前网络状况合理的分配端口流量。
可选的,本发明提供网络出现故障时,通过CCM消息转发与故障设备或/和故障线路连接的端口对应的MAC地址,删除与故障设备或/和故障线路连接的端口对应的MAC地址转发表项,并删除所述MAC地址转发表中与所述接收到携带所述MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址的CCM的接收端口对应的MAC地址转发表项,在网络出现故障时保障数据包的顺畅转发。
请参阅图2是本发明提供的CCM帧转发的方法图。
以太网故障检测,每个设备会向网络中其他设备发送连通性检查消息(CCM,Continuity Check Message),本发明提供设备通过CCM向其他网络中其他设备转发设备故障和/或线路故障方法。
步骤10、将MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址填入到CCM中的TLV中;
类型长度值(TLV,Type Length Value)是CCM帧中一个字段。
根据具体的情况,选用TLV中没有被使用的类型填入MAC地址,本发明使用Reserved for definition by IEEE 802.1类型填写MAC地址,本领域技术人员可以根据具体的情况选择填入MAC地址的类型。
步骤11、将CCM转发到未与故障设备或/和故障线路连接的端口;
将携带MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址的CCM转发到未与故障设备或/和故障链路连接的端口,即转发到除与故障设备或/和故障线路连接的端口的其他端口。
步骤12、删除MAC地址转发表中的MAC地址转发表项;
删除MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址转发表项。
若该设备收到其他设备转发的CCM消息,进入步骤13。
步骤13、解析CCM中TLV中是否携带MAC地址;
解析收到的CCM中TLV中是否携带其他设备发送的与故障设备或/和故障线路连接的端口对应的MAC地址,若有进入步骤14,若解析CCM中TLV中未携带MAC地址则不再进行下面的步骤,跳出该过程。
步骤14、在MAC地址转发表中查询端口;
在MAC转发表中查询步骤13查询到的MAC地址对应的端口是否是设备接收到CCM的端口,若是则进入步骤15,若不是则不予处理。
步骤15、删除MAC地址转发表中CCM携带的MAC地址转发表项;
删除MAC地址转发表中CCM携带的MAC地址转发表项,该MAC地址对应的端口为设备接收CCM的端口。
需要说明的是,上述CCM帧转发的过程是伴随在MAC帧转发的过程中的,不依赖于MAC帧转发的过程而存在;CCM帧转发的过程达到删除MAC地址转发表中不可达的MAC帧转发线路和/或设备,使得MAC帧的转发更有效和顺畅。
请参阅图3是本发明提供的MAC帧转发的设备结构图。
MAC地址解析单元201,用于解析接收到的MAC帧携带的MAC地址;
MAC地址查询单元202,用于在MAC地址转发表中查询MAC地址解析单元中解析到的MAC地址;
源MAC地址提取单元203,用于在MAC地址查询单元在MAC地址转发表中查询到源MAC地址后,提取所述MAC帧中携带的源MAC地址以及接收MAC帧的端口;
端口比较单元204,用于比较接收所述MAC帧的端口与所述MAC地址转发表中源MAC地址对应的转发端口是否一致;
MAC帧转发单元205,用于在端口比较单元比较的接收MAC帧的端口与所述MAC地址转发表中源MAC地址对应的转发端口不一致时,将MAC帧转发到MAC地址查询单元在MAC地址转发表中查询MAC地址解析单元中解析到的目的MAC地址对应的端口,若在所述MAC地址转发表中未查询到所述MAC地址解析单元中解析到的MAC地址,则丢弃所述MAC帧;所述端口比较单元比较的所述接收MAC帧的端口与MAC地址转发表中源MAC地址对应的转发端口一致时,将MAC帧转发到所述MAC地址查询单元在MAC地址转发表中查询MAC地址解析单元中解析到的MAC地址对应的端口,在MAC地址查询单元未查询到MAC地址解析单元解析到的MAC帧携带的目的MAC地址时,MAC帧转发到未接收到MAC帧的端口。
另外本发明提供在设备收到MAC帧后,若解析源MAC地址为接收到MAC帧的设备的MAC地址,则丢弃该MAC帧,有效防止环路中数据包的循环转发,避免网络阻塞。因此,在上述MAC帧转发设备方案的基础上,MAC地址查询单元202,还用于查询MAC地址解析单元解析的源MAC地址是否为接收MAC帧的设备的MAC地址,若是则通知MAC帧转发单元丢弃所述MAC帧。
在上述MAC帧转发设备方案的基础上,若MAC帧中携带的MAC地址未在MAC地址转发表中查询,本发明提供学习MAC地址到MAC地址转发表中。此时MAC帧转发设备还包括:
MAC地址学习单元206,用于在所述MAC地址查询单元在所述MAC地址转发表中未查询到源MAC地址时,将源MAC地址以及接收所述MAC帧的端口填入到MAC地址转发表中,并通知所述MAC帧转发单元转发所述MAC帧。。
在上述MAC帧转发设备方案的基础上,若端口比较单元比较接收MAC帧的端口与MAC地址转发表中MAC帧中携带的MAC地址对应的端口,接收MAC帧的端口最优,根据当前网络状况合理的分配端口流量。此时MAC帧转发设备还包括:
最优端口替换单元207,用于在端口比较单元比较接收MAC帧的端口与MAC地址转发表中源MAC地址对应的转发端口不一致时,比较接收MAC帧的端口与MAC地址转发表中源MAC地址对应的转发端口是否最优,若所述接收MAC帧的端口最优,则将接收MAC帧的端口替换MAC地址转发表中源MAC地址对应的转发端口。
以太网故障检测,每个MAC帧转发设备会向网络中其他设备发送连通性检查消息(CCM,Continuity Check Message),本发明提供设备通过CCM向其他网络中其他设备转发设备故障和/或线路故障的CCM帧转发的装置,在网络出现故障时保障数据包的顺畅转发。
MAC地址填入单元301,用于在网络发生故障时,将MAC地址转发表中与所述故障设备或/和故障线路连接的端口对应的MAC地址填入到所述CCM中的TLV中;
MAC地址转发表项删除单元302,用于删除MAC地址转发表中与所述故障设备或/和故障线路连接的端口对应的MAC地址转发表项。
基于上述的CCM帧转发的装置,CCM帧转发的装置还包括:
CCM解析单元303,用于解析收到的CCM中是否携带MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址,若携带则通知MAC地址查询单元在MAC地址转发表中查询携带的MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址;
若MAC地址查询单元在MAC地址转发表中查询到CCM中携带的MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址,则MAC地址单元进一步查询所述与MAC地址对应的端口是否为接收携带MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址的CCM的端口,若是则通知MAC地址转发表项删除单元删除MAC地址转发表中与接收到的携带MAC地址转发表中与故障设备或/和故障链路连接的端口对应的MAC地址的CCM的端口对应的MAC地址转发表项。
本发明可以应用在任意的组网中避免环路引起的数据循环转发,比如可以应用在水平分割方案中。
以上对本发明所提供的MAC帧转发的方法和设备以及CCM帧转发的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。