一种基于白名单实现多网口共享IP地址的冗余通信方法与流程

文档序号:11156579阅读:612来源:国知局
一种基于白名单实现多网口共享IP地址的冗余通信方法与制造工艺

本发明涉及一种基于白名单实现多网口共享IP地址的冗余通信方法。



背景技术:

在电力系统智能设备领域,经常出现一种特殊多网通讯的情况:要求一个装置网络多端口为相同IP地址和MAC地址,且多端口为热备份,实际应用的组网方式如下图1所示。

普通装置正常情况下无法提供多个相同IP地址、相同MAC地址的网卡。在操作系统支持下,可以设置双网卡绑定(bond)方式运行,这样可以提供相同IP地址和MAC地址的双网,但是要求装置在硬件上支持双网卡且操作系统支持双网绑定共组方式,这样会导致设计复杂,成本增加,而且这种方法无法实现多网口共享相同IP地址的这种模式。



技术实现要素:

针对上述问题,本发明提供一种基于白名单实现多网口共享IP地址的冗余通信方法,实现装置多网口为相同IP地址和MAC地址的情况下进行通讯。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于白名单实现多网口共享IP地址的冗余通信方法,其特征在于,包括如下步骤:

步骤1、网卡驱动检测指定网卡多个端口的链接状态,并根据多网切换逻辑选择当前网卡工作端口;

步骤2、设置当前网卡工作端口对应的白名单,所述白名单里写入当前网卡工作端口允许接收的MAC地址,同时清除其他端口对应的白名单;

步骤3、当接收数据时:当前网卡工作端口仅接收目的地址列入白名单的报文,其余数据直接丢弃,且禁止其他端口接收数据;

当发送数据时:网卡驱动指定从当前工作端口发送数据。

优选,当当前网卡工作端口发生断链时,网卡驱动根据多网切换逻辑自动切换到未发生断链的端口,同时设置该端口对应的白名单,清除其他端口的白名单。

优选,多网切换逻辑为:

1)将网卡的多个端口分别按照优先级由高到低降序排列;

2)选择连接状态为正常且优先级最高的端口为当前网卡工作端口;

3)当当前网卡工作端口的连接状态为异常时,进入步骤2)选择新的当前网卡工作端口。

优选,多网切换逻辑还包括:当优先级高于当前网卡工作端口的端口连接状态由异常恢复到正常时,则切换该端口为新的当前网卡工作端口。

本发明的有益效果是:

通过上述方法仅采用一个网卡就可以实现装置多网口为相同IP地址和MAC地址的情况下的冗余通讯,这种方案不依赖于具体的硬件,大大降低了设计的复杂程度和硬件的设计、生产成本,通信高效、灵活。

附图说明

图1是特殊多网通讯情况下的实际应用的组网方式示意图;

图2是本发明网卡、FPGA、phy的关系示意图;

图3是本发明具体实施例里A、B双网基于白名单双网切换方法的总体架构示意图;

图4是本发明具体实施例里A、B双网的切换逻辑示意图。

具体实施方式

下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

如图1所示,在电力系统智能设备领域,经常出现一种特殊多网通讯的情况:要求一个装置网络多个端口为相同IP地址和MAC地址,且多端口为热备份。一种基于白名单实现多网口共享IP地址的冗余通信方法,包括如下步骤:

步骤1、网卡驱动检测指定网卡多个端口的链接状态,并根据多网切换逻辑选择当前网卡工作端口。

步骤2、设置当前网卡工作端口对应的白名单,所述白名单里写入当前网卡工作端口允许接收的MAC地址,使能从该端口接收数据,同时清除其他端口对应的白名单。

步骤3、数据的收发:

当接收数据时:当前网卡工作端口仅接收目的地址列入白名单的报文,其余数据直接丢弃,且禁止其他端口接收数据;

当发送数据时:网卡驱动指定从当前工作端口发送数据。

以图2中的网卡、FPGA、phy(物理层接口,也即网卡的多个端口,每个端口对应一个MAC地址)的关系简图为例,网卡和多个端口之间通过FPGA进行连接,CPU的网卡驱动设置FPGA允许接收的MAC地址过滤白名单,FPGA根据网卡驱动设置的白名单选择对应的端口phy接收数据,根据网卡驱动指定的发送端口phy发送数据。

FPGA根据网卡驱动设置的白名单选择对应的端口接收数据,根据网卡驱动指定的发送端口(即当前网卡工作端口)发送数据。具体的做法为:

(1)接收数据:FPGA汇总数据根据预设的白名单进行过滤,非本设备需要接收的数据直接丢弃。

(2)发送数据:FPGA发送数据的时候,根据网卡驱动选定的端口(即当前网卡工作端口)发送数据,其中,发送数据的过程中,将本端口对应的MAC地址写入数据报文中。

白名单为一种数据过滤手段,只有设置了白名单的端口才能够接收数据,只有目的地址加入了白名单的报文才能够被接收,否则数据会全部被过滤掉,直接进行丢弃处理。

其中,在通讯过程中,当当前网卡工作端口发生断链时,网卡驱动根据多网切换逻辑自动切换到未发生断链的端口,同时设置该端口对应的白名单,清除其他端口的白名单。

一般的,多网切换逻辑为:

1)将网卡的多个端口分别按照优先级由高到低降序排列;

2)选择连接状态(link状态)为正常且优先级最高的端口为当前网卡工作端口;

3)当当前网卡工作端口的连接状态为异常时,进入步骤2)选择新的当前网卡工作端口;

4)当优先级高于当前网卡工作端口的端口连接状态由异常恢复到正常时,则切换该端口为新的当前网卡工作端口。

下面举例说明:

(1)网卡的多个端口的优先级由A网端口到N网端口依次下降,A网端口优先级最高;

(2)当A网端口link状态正常时,选择A网端口工作;

(3)当A网端口link状态异常时,如果B网端口正常,选择B网端口工作;

(4)当A网端口link状态异常时,如果B网端口也异常,选择C网端口工作,其他端口的逻辑以此类推;

(6) 如果所有端口都出现link状态异常时,选择A网端口工作;

(6)当优先级低的端口工作过程中,优先级高的端口link状态恢复正常,则会切换到优先级高的端口工作。比如:当目前处于B网端口工作时,如果A网端口恢复正常,则切换到A网端口工作。

网卡驱动检测同一网卡的多个端口的链接状态的具体步骤如下:

A、通过命令字,设置参与多网切换的端口;

B、通过命令字,获取参与运行的多个网络端口的连接状态;

C、通过命令字,获取当前正在进行通信的端口。

检测到端口的工作状态之后,根据多网切换逻辑设置当前网卡工作端口。

如图3和4所示,假设网卡对应A和B两个端口,即A、B双网,则,基于白名单实现双网口共享IP地址的冗余通信方法,具体为:

步骤A,网卡驱动检测指定网卡双端口的链接状态,然后根据双网切换逻辑选择当前网卡工作端口,设置该工作端口FPGA允许接收MAC地址过滤白名单,使能从该端口接收数据,同时清除另一端口接收白名单,禁止另一端口接收数据。

步骤B:当当前网卡工作端口网络发生断链时,双网切换逻辑自动切换到另外一个端口,同时设置该端口FPGA接收MAC地址对应的新的白名单,清除之前的白名单。

上述中双网切换逻辑为:

1、当A网link状态正常时,选择A网工作。

2、当A网link状态异常时,如果B网正常,选择B网工作。

3、当A网link状态异常时,如果B网也异常,选择A网工作。

4、当目前处于B网工作时,如果A网恢复正常,则切换到A网工作。

步骤C,网卡驱动发送数据时指定从当前工作端口发送数据。

其中,网卡驱动检测指定网卡双端口的链接状态的步骤如下:

(1)通过命令字0x600A,设置参与双网切换的端口,具体的含义用一个字节(8位)的数据来表示,参与的端口在其位置上置1,否则置0。如phy端口A和phy端口B参与双网切换,则设置为0x03(0x00000011);如phy端口C和phy端口D参与双网切换,则设置为0x0c(0x00001100)。

(2)通过命令字0x600B,获取参与运行的两端口phy端口A或phy端口B的link状态,用bit0和bit1分别来表示phy端口A状态和phy端口B的工作状态,其中0:表示不工作,1:表示工作。

(3)通过命令字0x600C,获取参与双网切换的通信端口,即:获取当前正在进行通信的端口。具体的含义用一个字节(8位)的数据来表示。如phy端口A和phy端口B参与双网切换,此时phy端口A正在通信工作,则此时返回0,phy端口B正在通信工作,则此时返回1,phy端口C正在通信工作,则此时返回2,phy端口D正在通信工作,则此时返回3。

(4)检测到端口的工作状态之后,根据双网切换逻辑示意图(如图4所示)设置该工作端口FPGA接收的白名单,并指定该工作端口发送数据。

FPGA根据网卡驱动设置的白名单选择对应的端口接收数据,根据网卡驱动指定的发送端口发送数据。具体的做法为:

1、接收数据:FPGA汇总数据根据预设的白名单进行过滤,非本设备需要接收的数据直接丢弃。

2、发送数据:FPGA发送数据的时候,根据网卡驱动选定的端口(即当前网卡工作端口)发送数据。

采用上述方案后,可以解决一般双网模式难以实现的一种特殊状况,仅采用一个网卡就可以实现装置多网口为相同IP地址和MAC地址的情况下的通讯,通信高效、灵活。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1