一种多点间无隧道透传的方法
技术领域
本发明涉及一种多点间无隧道透传的方法,特别是指一种多个非以太网端口的被接入设备之间的无隧道透传的方法,属于数据通信领域。
背景技术
网络互连技术经过多年的发展,形成了很多不同的协议簇。而目前骨干网的解决方案则呈现统一的趋势。在骨干网中,以太网交换机被大面积使用。以太网交换机有2层和3层的两种,2层主要根据MAC地址来转发,3层则根据IP地址来转发。2层交换机以其价格和容量的优势在骨干网中大量使用。
局域网之间需要通过骨干网互连时,如果两个需要互连的网络的接口都是ethernet接口,那它们之间的通讯就是一个标准的以太透明桥(bridge)应用,这在IEEE802.1D中有明确的规定。但是一些老的网络,它们大多是低速窄带的网络,链路层协议和网络层协议都很复杂,由于它们不兼容以太网协议,形成了一个个internet上的孤岛。为充分利用已有的投资,各种解决这些孤岛间互连的技术发展起来。解决这种问题有两种思路:协议转换和透传。网络隧道技术(tunneling)就是一种透传方案,利用一种网络协议来传输另一种网络协议。
现有的采用隧道技术实现多点间透传的方法如图1所示:A1,A2是两个需要互连的网络孤岛上要进行通讯的设备,称为被接入设备。A1,A2所在的网络是同类型的,它们直接相连可以进行通讯。B1,B3,C2,C3也是对等的要进行通讯的被接入设备。其中A1和A2进行通讯,B1和B3进行通讯,C2和C3进行通讯。被接入设备为了通过骨干网进行通讯,必须通过接入设备和骨干网相连,R1,R2,R3就是三个接入设备。被接入设备和接入设备之间通过接口相连,S11是R1连接A1的接口,S12是R1连接B1的接口,S21是R2连接B2的接口,S22是R2连接C2的接口,S31是R3连接B3的接口,S32是R3连接C3的接口。由于被接入设备处在不兼容IP的网络孤岛上,它们和接入设备之间的接口都不是ethernet接口。为实现被接入设备之间的通讯,利用接入设备来建立网络隧道,把被接入设备的数据封装在隧道中,然后通过骨干网发送到对方的接入设备,由对方的接入设备来去掉封装头,还原出原始数据,再发给对方的被接入设备。通过建立多条网络隧道,来实现多点间透传。A1和A2进行通讯,就要建立Tunnel1,B1和B3进行通讯,就要建立Tunnel2,C2和C3进行通讯,就要建立Tunnel3。
这种方案的缺点是,为了实现多点间透传,每一对设备之间的通讯,都要建立一个隧道,这样,随着接入设备的增多,网络管理的复杂性就迅速增加,可维护性不好,效率也比较低。另外,现在采用的隧道透传技术主要是GRE技术或串行隧道STUN技术。GRE实现的是一种三层网络协议承载在另外一种三层网络协议之上,用GRE作为隧道,承载的开销比较大。串行隧道技术就是在两个设备之间建立TCP隧道,把一个接口(通常是串行口)上的数据发送到这个TCP隧道上,再从TCP隧道的另一侧还原出来,发送到相应的接口上。维护这样一个TCP隧道的开销自然比较大。
发明内容
有鉴于此,本发明的主要目的在于提供一种简单,通用的多点间透传的方法,易于维护,高效,开销小。
为达到上述目的,本发明采用MAC地址进行转发,来实现被接入设备之间的透传,该技术方案主要分以下几个步骤:
A、在与骨干网连接的每一接入设备上对应各接口设置Local MAC地址和Remote MAC地址,其中Local MAC地址是与本端接入设备连接被接入设备的接口的虚MAC地址,Remote MAC地址是与本端被接入设备通讯的对端被接入设备上与其接入设备相连的接口的虚MAC地址;
B、发端接入设备对被接入设备输入其接口的负载报文封装一个ethernet报文头,在ethernet报文头的目的MAC地址和源MAC地址上分别填上接入报文接口的Remote MAC地址和Local MAC地址,形成新的ethernet报文;
C、发端接入设备将封装好的ethernet报文根据MAC地址经骨干网转发到接收端的接入设备;
D、接收端接入设备检验已接收到的ethernet报文的报文头,当报文头中的已填上的Remote MAC地址和Local MAC地址与该接入设备连接一个被接入设备的接口的Local MAC地址和Remote MAC地址相同时,去掉ethernet报文头,将负载报文从相应的接口发送到接收端被接入设备,否则,丢弃该报文。
上述方法中所述的接口是指提供数据收发的通道,可以是同步/异步这样的物理接口,也可以是逻辑接口。
为了利用MAC地址转发来实现透传,要求和两个进行通讯的被接入设备相连的接入设备在功能上是对等的,并且它们之间的骨干网可以支持MAC转发。各接入设备和骨干网之间的接口是Ethernet连接,或者是支持bridge协议的接口。由于和被接入设备所连的接口不是Ethernet接口,没有MAC地址,为了利用MAC地址进行转发,我们要事先为这些接口指定虚MAC地址。我们就可以为它指定一个全局唯一的MAC地址,即Local MAC地址。为了能够和对方通讯,还要配置一个对方的MAC地址,即RemoteMAC地址。同时,也要给对方的MAC地址进行相应的配置,并保证双方的Local Mac地址分别等于对方的Remote MAC地址,双方的Remote MAC地址分别等于对方的Local MAC地址。当有多个被接入设备之间要进行通讯时,和这些被接入设备相连的接口的虚MAC地址都要事先设置好。本端接入设备连接被接入设备的接口的虚MAC地址,与本端被接入设备通讯的对端被接入设备上与其接入设备相连接口的虚MAC地址,Local MAC地址,Remote MAC地址按与接口一一对应关系建立关联表,这个关联表由接入设备来维护。
从被接入设备发到所连接的接口的报文为负载报文(payload packet)。为了实现利用MAC地址转发,我们在与被接入设备所连的接口收到的负载报文(payload packet)前面封装一个ethernet报文头,形成新的ethernet报文。增加了ethernet报文头的新的报文由两部分组成,一部分是Ethernet Header,另一部分是payload packet。Ethernet Header中至少要包括目的MAC地址(Dest MAC Address)和源MAC地址(Source MAC Address)。我们根据接入设备所维护的和被接入设备相连的接口的Local MAC地址和RemoteMAC地址来填写Ethernet Header,在目的MAC地址(Dest MAC Address)里填上Remote MAC地址,在源MAC地址(Source MAC Address)里填上Local MAC地址。
封装了Ethernet Header的新的ethernet报文,在接入设备中,通过MAC地址转发,发到接入设备和骨干网相连的接口,再通过这个接口,在骨干网上通过MAC地址转发,发给对端的接入设备。接入设备把收到ethernet报文按MAC地址转发,当发现转发的出接口是相应的非Ethernet接口时,检验ethernet报文中的已填上的Remote MAC地址是否等于接入设备维护的接口的Local MAC地址,已填上的Local MAC地址是否等于接入设备维护的接口的Remote MAC地址。如果匹配成功,把ethernet报文的ethernet报文头去掉,把有效负载报文(payload packet)从相应的接口发到被接入设备,否则,就丢弃此报文。全部的转发过程遵循IEEE802.1D的标准。
通过以上的方法,就实现了两个被接入设备之间的无隧道透传。用同样的方法,可以其它两个被接入设备之间的无隧道透传,这样就实现了多点间的无隧道透传。接入设备需要维护的数据很少,只需维护一个关联表,此外他们还都维护着一个MAC地址转发表,这部分是IEEE802.1D规定的内容。
因此,本发明提出的基于MAC地址转发来实现多点间无隧道透传的方法,跟现有技术相比,在接入设备之间不必建立隧道,直接利用MAC转发表进行转发,降低了网络管理的复杂性,减少了开销,提高了效率。对于骨干网由以太网交换机构成的情况下尤其适用,可以大大提高转发的效率,同时提高了有效负载带宽的利用率。
附图说明
图1为现有技术中利用隧道技术进行透传的组网图;
图2为实现本发明技术方案的网络拓补图;
图3为本发明实施例中增加了ethernet报文头封装的负载报文格式;
图4为本发明实施例中增加了Ethernet Header的一种具体字段格式;
图5为本发明的实施例的操作流程图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
用隧道来实现多点间透传的方法,每一对设备之间的通讯,都要建立一个隧道,这样,随着接入设备的增多,网络管理的复杂性就迅速增加,可维护性不好,效率也比较低,而且建立网络隧道的开销也比较大。因此本发明采用MAC地址转发来实现透传,无需建立隧道。
参见图2,U1,U2,U3是接入设备R1,R2,R3和骨干网的接口,它们是Ethernet接口或者是支持bridge协议的接口。其中,A1和A2进行通讯,B1和B3进行通讯,C2和C3进行通讯。图2中A1和A2进行通讯的具体流程如图5所示:
步骤501:当A1要发数据给A2时,设置R1连接A1的接口S11的LocalMAC地址=MAC_A1,Remote MAC地址=MAC_A2,设置R2连接A2的接口S21的Local MAC地址=MAC_A2,Remote MAC地址=MAC_A1。
步骤502:A1经端口S11发负载报文(payload packet)发给R1。
步骤503:R1为负载报文加上Ethernet Header,形成新的ethernet报文,新的ethernet报文的格式如图3所示。其中Ethernet Header的格式可以按照EthernetII的格式来定义,其具体格式如图4所示。其中Dest MAC地址和Source MAC地址分别是48bit的MAC地址,Type是Ethernet上的报文类型,如IP报文使用0x0800。我们定义类型为管道负载报文--Pipe,建议使用0x0880。根据预先设置的S11的Local MAC地址和Remote MAC地址来填写Ethernet Header中的Dest MAC地址和Source MAC地址。在Dest MAC地址上填上MAC_A2,在Source MAC地址上填上MAC_A1,并填上Type,形成ethernet报文。
步骤504:在R1中将ethernet报文经过MAC地址转发,发送到U1。
步骤505:在骨干网上将ethernet报文经过MAC地址转发,发送到U2。
步骤506:在R2中根据MAC地址转发,发现出接口是S21,判断ethernet报文中的Dest MAC地址是否等于预先设置的S21的Local MAC地址,Source MAC地址是否等于Remote MAC地址。如果不相等,丢弃此报文,如果相等,在R2中去掉ethernet报文的Ethernet Header,得到负载报文(payload packet)。
步骤507:经过S21将负载报文(payload packet)发给A2。
图5仅给出了从A1发数据给A2的过程,同样的方法可以完成A2从S21接收负载报文(payload packet),封装ethernet报文头,转发到R1,最后去掉ethernet头,再从S11上发出,到达A1。这样就实现了被接入设备A1和A2的互连。
当其他设备B1和B3,C2和C3需要互连时,同样在与它们相对应的物理接口S12,S31,S22,S32上设置好相应的Local MAC地址和Remote MAC地址,并保证一方的Local MAC地址等于另外一方的Remote MAC地址,然后也按照上述过程进行操作,同样可以完成透传过程。这样就实现了多点间的无隧道透传。整个多点透传的过程中,接入设备R1,R2,R3所要维护的数据很少,除了需要维护IEEE802.1D中所规定的MAC转发表的内容,只需再维护一个指定和它们相连的各个被接入设备接口的Local MAC地址和Remote MAC地址的关联表。R1只需维护关联表1所示的数据,R2只需维护关联表2所示数据,R3只需维护关联表3所示的数据,开销很小。关联表1
接入接口 |
Local MAC |
Remote MAC |
S11 |
MAC_A1 |
MAC_A2 |
S12 |
MAC_B1 |
MAC_B3 |
关联表2
接入接口 |
Local MAC |
Remote MAC |
S21 |
MAC_A2 |
MAC_A1 |
S22 |
MAC_C2 |
MAC_C3 |
关联表3
接入接口 |
Local MAC |
Remote MAC |
S31 |
MAC_B3 |
MAC_B1 |
S32 |
MAC_C3 |
MAC_C2 |