分布式通信设备及板间通信方法
技术领域
本发明涉及数据通信技术,特别涉及一种分布式通信设备及板间通信方法。
背景技术
分布式通信设备一般由主控卡和业务线卡组成。主控卡和业务板卡之间需要大量的信息交互,包括:主控卡发往业务线卡的信息如协议报文、各种配置下发信息等,业务线卡发往主控卡的信息如协议报文、告警消息等。
各个板卡之间连接方式,最广泛使用的是通过以太网交换芯片的端口连接各个板卡,一张板卡至少连接在一个交换口上。在某些情况下,主控卡需要把同一个信息下发到多张线卡如组播协议报文发送、全局表项(如路由表)下发等,对于同一个信息下发到多张业务线卡的情况,在不考虑效率的情况下,主控卡可以将此信息复制多份然后发送到多张业务线卡;也可以使用交换芯片的组播特性让交换芯片将此信息复制后发送到对应的业务线卡,这样需要对交换芯片进行组播配置,而交换芯片组播特性的配置使用比较复杂。
申请号为200610067084.6,名称为《实现分布式系统板间通信的系统和方法》的发明专利申请中提供了一种依靠交换芯片实现点对多点的板间通信方案:
方案一、构造端口和VLAN的关系,填写VLAN表的端口位图,将所述VLAN加入对应端口。例如,VLAN1对应的端口位图为000000000001,则VLAN1需要加入端口1,VLAN2对应的端口位图为000000000010,则VLAN需要加入端口2,VLAN3对应的端口位图为000000000011,则VLAN3需要同时加入端口1和端口2,以此类推。
方案二、根据报文所发目的线卡构成位图,该位图作为组播地址后8位。如报文发送的目的板卡为1、2、3,则组播MAC地址的后8位是00000111。
上述方案一强依赖于交换芯片硬件特性,导致扩展性差,其组播最多支持11张线卡;在方案二中,需要对交换芯片进行组播设置,而组播设置比较复杂,导致整个配置方案也复杂。
发明内容
本发明所要解决的技术问题是:提供一种分布式通信设备及板间通信方法,解决传统方案扩展性差,组播支持的线卡数量很有限,以及板间通信需要对交换芯片进行复杂的组播设置的问题。
一方面,本发明实施例提供一种分布式通信设备,其包括:
主控卡、以太网交换芯片及多个线卡;所述主控卡及所述多个线卡均与以太网交换芯片相连;
所述主控卡用于构造发送至目的线卡的以太网报文时,在所述以太网报文的保存所有线卡的位图,所述位图中的各个位与各个线卡的槽位一一关联对应;所主控卡还用于设置位图中对应各个线卡槽位的位值;
所述以太网交换芯片用于根据收到的报文的目的MAC地址,将所述报文发送至主控卡或者相应的线卡;
所述线卡用于在收到报文时,根据位图中对应本卡槽位的位值来决定是否丢弃所述报文。
作为进一步优化,所述报文的目的MAC地址为目的卡连接以太网交换芯片的以太网口的地址,其根据目的卡的槽位号按照一定算法生成。
作为进一步优化,所述报文的自定义字段中还包括源卡槽位号。
作为进一步优化,所述主控卡发送至线卡的以太网报文为发送至某个目的线卡的单播报文或发送至某几个目的线卡的组播报文;若为单播报文,则报文中的目的MAC地址为对应目的线卡的MAC地址,所述以太网交换芯片在收到报文后,根据所述目的MAC地址将报文转发至对应目的线卡;若为组播报文,则报文中的目的MAC地址为广播地址,所述以太网交换芯片在收到报文后,将报文广播至所有线卡。
作为进一步优化,所主控卡设置位图中对应各个线卡槽位的位值,具体包括:
主控卡将位图中对应本次发送的目的线卡的槽位的位值设置为1,将其它位值设置为0;
所述线卡在收到报文时,根据位图中对应本卡槽位的位值来决定是否丢弃所述报文,具体包括:
线卡在收到报文时,判断位图中对应本卡槽位的位值是否为1,若不为1,则丢弃所述报文。
作为进一步优化,所述以太网交换芯片还用于在收到主控卡发送至线卡的单播报文时,若报文中的目的MAC地址不在交换芯片的地址列表中,则将该单播报文泛洪至所有线卡。
另一方面,本发明实施例提供一种分布式通信设备板间通信方法,其包括以下步骤:
a.主控卡在构造发送至目的线卡的以太网报文时,在报文的自定义字段中开辟一个字段保存所有线卡的位图,所述位图中的各个位与各个线卡的槽位一一关联对应;主控卡设置位图中对应各个线卡槽位的位值;
b.以太网交换芯片收到来自于主控卡的报文后,根据报文中的目的MAC地址将所述报文发送至相应目的线卡;
c.线卡在收到以太网交换芯片转发的报文后,根据位图中对应本卡槽位的位值来决定是否丢弃所述报文。
作为进一步优化,步骤a中,主控卡设置位图中对应各个线卡槽位的位值,具体包括:主控卡将位图中对应本次发送的目的线卡的槽位的位值设置为1,将其它位值设置为0;步骤c中,线卡根据位图中对应本卡槽位的位值来决定是否丢弃所述报文,具体包括:线卡在收到报文时,判断位图中对应本卡槽位的位值是否为1,若不为1,则丢弃所述报文。
作为进一步优化,步骤a中,所述主控卡发送至目的线卡的以太网报文为发送至某个目的线卡的单播报文或发送至某几个目的线卡的组播报文;若为单播报文,则报文中的目的MAC地址为对应目的线卡的MAC地址;若为组播报文,则报文中的目的MAC地址为广播地址;
步骤b中以太网交换芯片在收到报文后,根据报文中的目的MAC地址将报文转发至对应目的线卡,具体包括;若报文为单播报文,则以太网交换芯片根据报文的目的MAC地址将所述报文发送至对应目的线卡;若报文为组播报文,则以太网交换芯片将报文广播至所有线卡。
作为进一步优化,步骤b中,以太网交换芯片在收到主控卡发送至线卡的单播报文时,若报文中的目的MAC地址不在交换芯片的地址列表中,则将该单播报文泛洪至所有线卡。
本发明的有益效果是:
主控到线卡的组播报文不依赖于交换芯片硬件组播特性,交换芯片配置简单,低端的交换芯片甚至集线器即可满足需求;
此外,由于在报文中开辟字段以位图的形式关联各个线卡的槽位,所支持线卡数量不受限制,可以根据实际需求任意扩充。
附图说明
图1为本发明实施例中的分布式通信设备结构框图;
图2为本发明实施例中的板间通信方法流程图;
图3为构造的以太网报文格式;
图4为报文中自定义字段包含内容。
具体实施方式
本发明旨在提供一种分布式通信设备及板间通信方法,解决传统方案扩展性差,组播支持的线卡数量很有限,以及板间通信需要对交换芯片进行复杂的组播设置的问题。
如图1所示,本实施例中的分布式通信设备包括:
主控卡、以太网交换芯片及多个线卡;所述主控卡及所述多个线卡均与以太网交换芯片相连;
所述以太网交换芯片用于根据收到的报文的目的MAC地址,将所述报文发送至主控卡或者相应的线卡;
所述主控卡用于构造发送至目的线卡的以太网报文时,在所述以太网报文报文中保存所有线卡的位图,所述位图中的各个位与各个线卡的槽位一一关联对应;所主控卡还用于设置位图中对应各个线卡槽位的位值;
所述线卡用于在收到报文时,根据位图中对应本卡槽位的位值来决定是否丢弃所述报文。
需要说明的是,本发明中所述“多个”指两个或两个以上。
基于上述分布式通信设备,本实施例实现的分布式通信设备板间通信方法,如图2所示,其包括以下实现步骤:
a.主控卡在构造发送至目的线卡的以太网报文时,在所述以太网报文的自定义字段中开辟一个字段保存所有线卡的位图,所述位图中的各个位与各个线卡的槽位一一关联对应;主控卡设置位图中对应各个线卡槽位的位值;
在本步骤中,采用的以太网报文格式为基本以太网报文格式,如图3所示,其包括6字节的目的MAC地址,6字节的源MAC地址,2字节的类型,自定义字段,载荷及4字节的帧校验;这里所述的目的MAC地址是目的卡连接交换芯片的接口MAC地址,源MAC地址是源卡连接交换芯片的接口MAC地址,在具体实现上,板卡(主控卡或者线卡)连接交换芯片的接口的MAC地址根据板卡的槽位号按照一定算法生成(例如:MAC基地址+槽位号)。
本实施例在自定义字段中开辟了两个关键字段:源槽位号和线卡位图,如图4所示;对于线卡位图,其各个位与各个线卡的槽位一一关联对应;主控卡设置位图中对应各个线卡槽位的位值:将位图中对应的本次要发送的目的线卡槽位的位的值(简称位值)设置为1,其余设置为0;例如:发往3号线卡的单播报文的位图为00000000:00000000:00000000:00000100;发往1、2、5、6线卡的组播报文的位图为:00000000:00000000:00000000:00110011;发往所有线卡的广播报文的位图为:11111111:11111111:11111111:11111111。
b.以太网交换芯片收到来自于主控卡的报文后,根据报文中的目的MAC地址将所述报文发送至相应目的线卡;
在本步骤中,若来自主控卡的报文为发至某一个目的线卡的单播报文,则以太网交换芯片根据报文的目的MAC地址将所述报文发送至对应目的线卡;若来自主控卡的报文为发送至某几个目的线卡的组播报文,则以太网交换芯片将报文广播至所有线卡,即本实施例中以广播的形式模拟组播,所有的线卡均可接收到报文。
此外,对于单播报文来说,若报文的目的MAC地址在以太网交换芯片的地址转发列表中没有(交换芯片有可能没有学习到该MAC地址),则交换芯片需要将该报文泛洪至所有的线卡。
c.线卡在收到以太网交换芯片转发的报文后,根据位图中对应本卡槽位的位值来决定是否丢弃所述报文。
在本步骤中,线卡在收到报文时,判断位图中对应本卡槽位的位值是否为1,若为1则正常处理该报文,若不为1,则丢弃所述报文。对于单播报文来说,可能存在单播泛洪的情况,因此由线卡自身根据位图中的对应本槽位的位值来判定该报文是否发给本卡的,如果状态值为0,则说明该报文并非主控卡想要发送给本卡的,因而作丢弃处理。
对于组播报文来说,由于采用广播的方式将报文发送给所有的线卡,因此,各个线卡也需要根据位图中的对应本槽位的位值来判定该报文是否发给本卡的,如果状态值为0,则说明该报文并非主控卡想要发送给本卡的,因而作丢弃处理。