一种通信方法和网卡与流程

文档序号:16513566发布日期:2019-01-05 09:29阅读:407来源:国知局
一种通信方法和网卡与流程

本申请涉及通信技术领域,尤其涉及一种通信方法和网卡。



背景技术:

目前,x86服务器可以包括bmc(baseboardmanagementcontroller,基板管理控制器)系统和主操作系统,其中:

bmc系统由bmc芯片、外围电路以及运行在内部的嵌入式系统组成,bmc芯片是x86服务器上独立于主cpu(centralprocessingunit,中央处理器)之外的一个控制芯片。bmc系统具有提供电源管理、ipmi(intelligentplatformmanagementinterface,智能平台管理接口)访问通道、kvm(keyboardvideomouse)等功能。

主操作系统即运行在x86服务器主cpu上的操作系统,比如x86服务器上安装的windows、linux等系统都是主操作系统。为了区别于bmc系统,还可以将主操作系统称之为x86系统。

使用ncsi(networkcontrollersidebandinterface,边带接口网络控制器)技术,可以使bmc系统和主操作系统共用x86服务器上的一个物理上的网络端口,可以将此网络端口称为共享网络端口。由于共享网络端口,使得只需要连接一根网线就能同时把bmc系统和主操作系统都接入网络,既减少了物理连线又减少了对外部设备的端口占用,在大型数据中心的管理中具有优势。



技术实现要素:

有鉴于此,本申请提供一种通信方法和网卡,实现了网络设备内部多个系统之间的二层通信。

具体地,本申请是通过如下技术方案实现的:

本申请第一方面,提供了一种通信方法,应用于网络设备中的网卡,所述网络设备中运行第一系统和第二系统,所述第一系统和第二系统共用所述网络设备中网卡的共享网络端口,所述方法包括:

所述网卡接收所述第一系统发送的第一报文,所述第一报文的目的mac地址为所述第二系统的mac地址;

当所述网卡确定所述网卡的phy层使能环回功能时,根据所述第一报文的目的mac地址,所述网卡将所述第一报文转发给所述第二系统。

结合第一方面,在第一种可能的实现方式中,所述网卡接收所述第一系统发送的第一报文,包括:

所述网卡的mac层接收所述第一系统发送的第一报文,并向所述网卡的phy层转发所述第一报文;

所述当所述网卡确定本网卡的phy层使能环回功能时,根据所述第一报文的mac地址将所述第一报文转发给所述第二系统,包括:

所述网卡的phy层接收所述第一报文;

当所述网卡的phy层确定所述网卡的phy层使能环回功能时,所述网卡的phy层将所述第一报文环回至所述网卡的mac层;

所述网卡的mac层接收来自所述网卡的phy层环回的第一报文;

根据所述第一报文的目的mac地址,所述网卡的mac层将所述第一报文转发给所述第二系统。

结合第一方面,在第二种可能的实现方式中,所述方法还包括:

当所述网卡确定所述网卡的phy层未使能环回功能时,所述网卡将所述第一报文通过所述共享网络端口发出。

结合第一方面,在第三种可能的实现方式中,所述第一系统为所述网络设备中的主操作系统,所述第二系统为基板管理控制器bmc系统;

所述网卡接收所述第一系统发送的第一报文之前,还包括:

所述网卡接受所述主操作系统为所述网卡的phy层设置环回功能。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一报文包括所述主操作系统的系统日志,所述第一报文用于所述bmc系统读取并存储所述系统日志。

结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一报文用于所述主操作系统请求从所述bmc系统处下载固件;

所述网卡根据所述第一报文的mac地址将所述第一报文转发给所述第二系统之后,所述方法还包括:

所述网卡接收所述bmc系统发送的第二报文,所述第二报文包括所述bmc系统存储的固件,且所述第二报文的目的mac地址为所述主操作系统的mac地址;

当所述网卡确定所述网卡的phy层使能环回功能时,根据所述主操作系统的mac地址,所述网卡将所述第二报文转发给所述主操作系统,用于使所述主操作系统根据所述固件进行系统升级。

本申请第二方面,提供了一种网卡,所述网卡位于网络设备中,所述网络设备中运行第一系统和第二系统,所述第一系统和第二系统共用所述网卡的共享网络端口,所述网卡包括:

mac模块,用于接收所述第一系统发送的第一报文,所述第一报文的目的mac地址为所述第二系统的mac地址;

phy模块,用于确定所述网卡的phy层是否使能环回功能;

所述mac模块,还用于当所述phy模块确定所述网卡的phy层使能环回功能时,根据所述第一报文的目的mac地址,将所述第一报文转发给所述第二系统。

结合第二方面,在第一种可能的实现方式中,所述mac模块,用于接收所述第一系统发送的第一报文,并向所述phy模块转发所述第一报文;

所述phy模块,用于接收所述第一报文;当确定所述网卡的phy层使能环回功能时,将所述第一报文环回至所述mac模块;

所述mac模块,用于接收来自所述phy模块环回的第一报文;根据所述第一报文的目的mac地址,将所述第一报文转发给所述第二系统。

结合第二方面,在第二种可能的实现方式中,所述phy模块,还用于当确定所述网卡的phy层未使能环回功能时,将所述第一报文通过所述共享网络端口发出。

结合第二方面,在第三种可能的实现方式中,所述第一系统为所述网络设备中的主操作系统,所述第二系统为基板管理控制器bmc系统;

所述phy模块,还用于接受所述主操作系统为所述网卡的phy层设置环回功能。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一报文包括所述主操作系统的系统日志,所述第一报文用于所述bmc系统读取并存储所述系统日志。

结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一报文用于所述主操作系统请求从所述bmc系统处下载固件;

所述mac模块,用于接收所述bmc系统发送的第二报文,所述第二报文包括所述bmc系统存储的固件,且所述第二报文的目的mac地址为所述主操作系统的mac地址;

当所述phy模块确定所述网卡的phy层使能环回功能时,根据所述主操作系统的mac地址,将所述第二报文转发给所述主操作系统,用于使所述主操作系统根据所述固件进行系统升级。

因此,本申请可以通过设置网卡phy环回,来实现网络设备内部多个系统之间的二层通信。

附图说明

图1是一种x86服务器与外部设备的连接示意图;

图2是本申请实施例提供的一种网络设备的内部结构示意图;

图3a是本申请实施例提供的图2所示网络设备内的报文发送示意图;

图3b是本申请实施例提供的图2所示网络设备内的报文接收示意图;

图4是本申请实施例提供的方法流程图;

图5a、图5b是本申请实施例提供的第一系统和第二系统通信的示意图;

图6是本申请提供的网卡的结构图。

具体实施方式

ncsi是一个由分布式管理任务组(distributedmanagementtaskforce,dmtf)定义的用于支持服务器带外管理的边带接口网络控制器的工业标准。使用ncsi技术可以使x86服务器上的bmc系统和主操作系统共用一个物理上的共享网络端口,如图1所示,x86服务器上的bmc系统和主操作系统可以通过共享网络端口连接同一个外部设备。目前很多厂商的x86服务器上都提供这样一个共享网络端口。

在bmc系统和主操作系统共用一个物理上的网络端口的场景下,bmc系统和主操作系统一般是无法通过数据链路层(二层)进行网络通信的。例如图1中,如果不做vlan(virtuallocalareanetwork,虚拟局域网)配置,则bmc系统和主操作系统一般会处于同一vlan,此时bmc系统的ip地址和主操作系统的ip地址之间是互相ping不通的,这有两方面的原因:

第一,如果该外部设备使能了stp(spanningtreeprotocol,生成树协议),则由于bmc系统和主操作系统同属一个vlan,stp会误认为有环路而down(无效)掉该外部设备上负责连接x86服务器的端口(即图1中的端口1),导致该外部设备和x86服务器之间无法通信,进而bmc系统和主操作系统也无法通过该外部设备中转报文;

第二,即使该外部设备没有使能stp,在同一个vlan下,外部设备上有源端口过滤的功能,不管是广播报文还是单播报文进入交换机之后都不会再从源端口返回,因此x86服务器上的bmc系统和主操作系统之间还是无法通信的。

为了实现bmc系统和主操作系统的通信,一种方法是在该外部设备上做vlan配置,例如可以将该外部设备上负责连接x86服务器的端口(即图1中的端口1)设置为hybrid(混杂模式)口,再通过mac(mediaaccesscontrol,介质访问控制)-vlan的功能把bmc系统和主操作系统分别划分到不同的vlan中,最后通过三层转发实现bmc系统和主操作系统的网络互通。

这种方法的缺点是,第一,需要在外部设备上做复杂的vlan配置;第二,只能让bmc系统和主操作系统通过ip层(三层)进行网络通信,而无法让bmc系统和主操作系统进行数据链路层(二层)的通信。

为实现一个网络设备上的多个系统在数据链路层的互通,本申请实施例提出了一种通信方法。下面通过图2,首先对本申请实施例提供的方法所应用的网络设备进行描述:

参见图2,图2为本申请实施例提供的一种网络设备的内部结构图,该网络设备可包括多个系统(如第一系统、第二系统等)和一个具有共享网络端口的网卡,这多个系统共用该网卡的共享网络端口;当使用一根网线将该共享网络端口与另一网络设备的一个端口连接后,这多个系统都可以与该另一网络设备通信。

这多个系统可以包括一个运行在网络设备主cpu上的主操作系统和至少一个嵌入式系统(如bmc系统),每个系统具有独立的ip地址和mac地址。网卡可包括mac层和phy(physical,物理)层,网卡的mac层和phy层可以集成在一个芯片上。这多个系统可以借用网卡的phy层芯片进行报文收发,具体如下:

如图3a所示,在报文发送的时候,任一个系统发送的报文,先到达所连接网卡的mac层;对于收到的来自本设备中系统的报文,网卡的mac层直接将该报文通过同一网卡的phy层发送出去。

如图3b所示,在报文接收的时候,报文先到达网卡的phy层,然后进入同一网卡的mac层;对于收到的来自本网卡phy层的报文,网卡的mac层会根据报文的目的mac地址,将该报文转发给对应的系统。

网卡的phy层一般都会提供内部环回的功能,在phy环回模式下,从网卡phy层发出去的报文可以原路返回,phy环回模式一般用于网卡的诊断。而本申请实施例可以借用网卡phy层的环回功能,实现同一设备上不同系统之间的二层通信。下面基于图2所示的网络设备结构,以网络设备中运行第一系统和第二系统为例说明本申请实施例提供的方法。

参见图4,当第一系统和第二系统共用网络设备中网卡的共享网络端口时,该共享网络端口所在的网卡可执行以下步骤:

步骤401:网卡接收第一系统发送的第一报文,第一报文的目的mac地址为第二系统的mac地址。

具体的,步骤401的过程是:网卡的mac层接收第一系统发送的第一报文,并向该网卡的phy层转发该第一报文。

步骤402:当网卡确定本网卡的phy层使能环回功能时,根据第二系统的mac地址,网卡将第一报文转发给第二系统。

具体的,步骤402的过程是:网卡的phy层接收网卡的mac转发的第一报文;当网卡的phy层确定该网卡的phy层使能环回功能时,则网卡的phy层将第一报文环回至网卡的mac层;网卡的mac层接收来自网卡的phy层环回的第一报文;根据第一报文的目的mac地址(即第二系统的mac地址),网卡的mac层将第一报文转发给第二系统。本申请实施例中,网卡phy层的环回功能可以人工设置,也可以由网络设备中的主操作系统向网卡下发指令进行设置。在一个例子中,可以通过将网卡phy层的寄存器的指定位设置成指定的值,使网卡phy层进入phy环回模式。

在网卡phy层使能了环回功能的情况下,网络设备内部的多个系统在数据链路层是互通的;例如,如图5a所示,在phy环回模式下,第一系统发送的目的mac地址为第二系统mac地址的报文也能够正确到达第二系统;以及如图5b所示,在phy环回模式下,第二系统发送的目的mac地址为第一系统mac地址的报文也能够正确到达第一系统。但需要注意的是,在phy环回模式下,网络设备内的系统和外部设备是不互通的。

在网卡phy层未使能环回功能的情况下,网络设备内部的多个系统之间是不互通的,但每个系统和外部设备是互通的;具体的,步骤402中,当该网卡收到第一报文后,确定本网卡的phy层未使能环回功能,则该网卡可以将第一报文直接通过本网卡上的共享网络端口发出,第一报文从共享网络端口发出后到达与该共享网络端口相连的外部设备。

至此,完成图4所示的流程。

通过图4所示的流程可以看出,本申请实施例可以通过设置网卡phy环回,来实现网络设备内部多个系统之间的二层通信;以及可以通过取消网卡phy环回,来实现该网络设备和外部设备的通信。

以下以第一系统和第二系统分别为主操作系统和bmc系统为例,来阐述本申请实施例的应用场景和优势。

场景一,通过利用网卡phy层的环回功能,主操作系统可以和bmc系统建立网络连接,实现日志上传功能,具体过程如下:

1)网络设备内具有共享网络端口的网卡接受本设备内主操作系统为该网卡的phy层设置环回功能;

2)主操作系统在设置环回功能完毕后,向所连接的具有共享网络端口的网卡发送第一报文,第一报文的目的mac地址为本设备中bmc系统的mac地址,第一报文中包括主操作系统的系统日志,第一报文用于bmc系统读取并存储该系统日志;

3)该网卡收到上述第一报文后,确定本网卡的物理phy层使能环回功能,从而根据bmc系统的mac地址,将第一报文转发给bmc系统;4)bmc系统从收到的第一报文中读取系统日志并存储。

实际应用中,主操作系统可以在初始化之前便为本设备网卡的phy层设置环回功能,之后将初始化过程中生成的日志陆续发送给bmc系统进行保存。当主操作系统在初始化过程遇到故障而无法成功开机时,由于bmc系统是独立于主操作系统的操作系统,其运行状态不受主操作系统的影响,因此管理人员可以登录bmc系统获取主操作系统初始化过程中生成的日志,进而根据日志的缺失情况分析主操作系统的故障原因。例如,假设主操作系统的初始化顺序为:cpu初始化、内存初始化、外接插卡显卡初始化……,如果bmc系统上只保存了有关cpu初始化的日志,其它日志有所缺失,则说明主操作系统无法开机的原因可能是内存故障。

场景二,通过利用网卡phy层的环回功能,主操作系统可以和bmc系统建立网络连接,实现固件下载功能,具体过程如下:

1)网络设备内具有共享网络端口的网卡接受本设备内主操作系统为该网卡的phy层设置环回功能;

2)主操作系统在设置环回功能完毕后,向所连接的具有共享网络端口的网卡发送第一报文,第一报文的目的mac地址为本设备中bmc系统的mac地址,第一报文用于请求从bmc系统处下载固件,固件是指设备内部保存的设备“驱动程序”;

3)该网卡收到上述第一报文后,确定本网卡的物理phy层使能环回功能,从而根据bmc系统的mac地址,将第一报文转发给bmc系统;

4)bmc系统收到第一报文后,检查本地是否保存了固件;如果有则响应该第一报文,向该网卡发送第二报文,第二报文的目的mac地址为第一报文的源mac地址,即主操作系统的mac地址,第二报文中包括bmc系统存储的固件;

5)网卡接收bmc系统发送的第二报文,确定本网卡的phy层使能环回功能,则根据第二报文的目的mac地址(即主操作系统的mac地址),将第二报文转发给主操作系统;

6)主操作系统从收到的第二报文中读取固件并根据该固件进行系统升级。

实际应用中,只要x86服务器接上电bmc系统就处于通电状态,而主操作系统还需要bmc系统控制才能通电。因此将主操作系统升级所需的固件(如bios(basicinputoutputsystem,基本输入输出系统))保存到bmc系统,比之将固件保存到主操作系统上更为方便。因此,可以预先将固件上传到bmc系统,届时主操作系统可以在初始化之后为本设备网卡的phy层设置环回功能,然后基于该环回功能与bmc系统通信,向bmc系统下载固件执行系统升级,主操作系统无需再搭建网络连接从外部设备下载固件。

以上对本申请实施例提供的方法进行了描述。下面对本申请实施例提供的装置进行描述。

参见图6,为本申请实施例提供的一种网卡的结构图,该网卡位于网络设备中,该网络设备中运行第一系统和第二系统,第一系统和第二系统共用该网卡的共享网络端口,该网卡包括:

mac模块601,用于接收所述第一系统发送的第一报文,所述第一报文的目的mac地址为所述第二系统的mac地址;

phy模块602,用于确定所述网卡的phy层是否使能环回功能;

所述mac模块601,还用于当所述phy模块602确定所述网卡的phy层使能环回功能时,根据所述第二系统的mac地址,将所述第一报文转发给所述第二系统。

在其中一种实施方式中,所述mac模块601,用于接收所述第一系统发送的第一报文,并向所述phy模块602转发所述第一报文;

所述phy模块602,用于接收所述第一报文;当确定所述网卡的phy层使能环回功能时,将所述第一报文环回至所述mac模块601;

所述mac模块601,用于接收来自所述phy模块602环回的第一报文;根据所述第一报文的目的mac地址,将所述第一报文转发给所述第二系统。

在其中一种实施方式中,所述phy模块602,还用于当确定所述网卡的phy层未使能环回功能时,将所述第一报文通过所述共享网络端口发出。

在其中一种实施方式中,所述第一系统为所述网络设备中的主操作系统,所述第二系统为bmc系统;所述phy模块602,还用于接受所述主操作系统为所述网卡的phy层设置环回功能。

在其中一种实施方式中,所述第一报文包括所述主操作系统的系统日志,所述第一报文用于所述bmc系统读取并存储所述系统日志。

在其中一种实施方式中,所述第一报文用于所述主操作系统请求从所述bmc系统处下载固件;

所述mac模块601,用于接收所述bmc系统发送的第二报文,所述第二报文包括所述bmc系统存储的固件,且所述第二报文的目的mac地址为所述主操作系统的mac地址;

当所述phy模块602确定所述网卡的phy层使能环回功能时,根据所述主操作系统的mac地址,将所述第二报文转发给所述主操作系统,用于使所述主操作系统根据所述固件进行系统升级。

至此,完成图6所述网卡的结构描述。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请实施例保护的范围之内。

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