一种独立保存BMCMAC地址的系统及其实现方法与流程

    专利查询2025-04-03  42


    本发明涉及存储bmc mac地址的,具体涉及一种独立保存bmc mac地址的系统及其实现方法。


    背景技术:

    1、众所周知,服务器中的mac地址和bmc(baseboard management controller,主板管理控制器)在服务器系统中扮演着重要的角色,它们各自具有独特的功能,并在服务器的运行和管理中相互关联。

    2、其中,mac地址是服务器网卡的物理地址,全称为媒体访问控制地址(mediaaccess control address),用于唯一标识网络设备。它由12个十六进制数组成,通常以冒号或破折号分隔mac地址在网络通信中起着关键作用,它用于确定数据包在局域网中的传递路径,以及进行数据包的目的地和源地址的匹配。服务器通过mac地址与局域网中的其他设备进行通信。管理员可以通过验证mac地址来限制网络访问,只允许具有特定mac地址的设备与服务器通信,从而提高网络的安全性。

    3、bmc是服务器的核心固件,主要是监控整个服务器。这种固件里面运行了小型的linux系统,既然是linux系统,所以有自己的mac地址。通过bmc的mac地址所分配或者设定的ip,客户就可以远程访问bmc的所有功能。bmc在某些情况下,可能会存在丢失mac地址的情况。常见的有:当服务器的ac电源意外中断时,bmc的mac地址有时可能会丢失。这种情况在特定的服务器型号(如think server rs160)及其固件版本中更为常见。例如,bmc v1.00及更早版本可能会受到此问题的影响;如果服务器的bios或固件未能正确备份或恢复bmc的mac地址,也可能导致地址丢失。

    4、为了解决以上的问题现有技术中是通过重写bmc mac地址以后,系统需要更新bmc的整个网络,无形中增加了工作量,不仅如此当重写bmc的mac存在人工写错的风险。因此,需对现有技术加以改进来克服bmc mac地址丢失的麻烦。


    技术实现思路

    1、为克服现有技术所存在的缺陷,本申请提供一种独立保存bmc mac地址的系统及其实现方法,利用bmc周边的eeprom存储bmc mac地址,以替代在bmc自身的flash中存储的bmc mac的方案,能避免bmc mac地址在更新bmc固件时丢失的问题。

    2、为实现上述目的,本发明提供了一种独立保存bmc mac地址的系统,包括:服务器以及服务器内设有的bmc单元,服务器的核心构架包括:bmc单元、bios单元、os单元,bmc单元独立通过连接单元进入业务程序单元进行访问;

    3、bmc单元内包括bmc flash模块、eeprom模块,bmc flash模块内设有bmc mac固件地址模块,eeprom模块内设有eeprom储存单元、fru储存单元、bmc mac地址储存单元;

    4、bmc mac固件地址模块与bmc mac地址储存单元之间交互联通。

    5、进一步地,所述eeprom模块的储存量大小为64kb;

    6、所述eeprom储存单元占用32kb、fru储存单元占用8kb、bmc mac地址储存单元占用24kb。

    7、本发明还提供了一种独立保存bmc mac地址的实现方法,服务器主板上设有所述bmc单元,所述bmc单元通过spi启动bmcflash模块,bmc flash模块通过i2c访问eeprom模块,其具体的写入与读取流程如下:

    8、s1:服务器接通后,bmc单元启动至kernel后,启动完成,主进程下面所有的线程均已工作起来;

    9、s2:用户使用在cpu操作系统上通过ipmi命令对bmc mac固件地址模块进行设定mac地址的;

    10、s3:在bmc flash模块的主进程main函数中增加一个线程函数pthread_setmac来处理写mac地址的事件;

    11、s4:pthread_setmac中调用标准的i2c_master_write函数,将收到的bmcmac固件地址模块中的mac地址,写入到对应i2c链路的eeprom模块的bmc mac地址储存单元中;

    12、s5:读取bmc flash模块中的mac地址时,当bmc mac固件地址模块启动后,在进入kernel的时,通过调用系统libnetwork库中的i2c_master_read的函数从既定的i2c链路中eeprom模块的所述bmc mac地址储存单元读取所有的mac地址;

    13、s6:然后调用libnetwork库中ioctcl对应的系统驱动将读到的mac地址写入到bmc的网络文件系统里面;

    14、s7:进入linuxos,bmc启动完成。

    15、进一步地,所述mac地址的长度为6kb,所述bmc mac地址储存单元可存储4个mac地址;所述mac地址只存于eeprom模块的最后24个字节中。

    16、进一步地,bmc单元通常有2个mac地址,一个mac地址长度是6个字节。

    17、进一步地,在步骤s2中,用户可在cpu操作系统上安装开源ipmitool或者远程使用ipmitool写bmc mac固件地址模块的mac地址。

    18、进一步地,写bmc mac固件地址模块的mac地址的过程是用ipmi命令ipmitool lanset index macaddr bmc_mac进行设定mac地址。

    19、进一步地,在步骤s3中,pthread_setmac线程通过监听的方式实时响应ipmi的消息。

    20、本发明由于使用以上技术方案,使其具有的有益效果是:

    21、本发明利用现成的硬件架构,只需要在bmc单元启动到kernel的时候,通过调用系统network管理库中的i2c_master_read的函数从既定的i2c链路中eeprom模块的特定的位置读取bmcmac地址,fru的eeprom模块是独立于bmc的一颗flash,bmc升级的时候只会刷新自己的flash,不会涉及到bmc以外的flash,因此bmc mac地址不会被破坏,就能避免bmcmac地址在更新bmc固件时丢失的问题,不需要重新设计硬件,从而有效降低硬件成本,避免软件的风险。



    技术特征:

    1.一种独立保存bmc mac地址的系统,包括:服务器以及服务器内设有的bmc单元,其特征在于,服务器的核心构架包括:bmc单元、bios单元、os单元,bmc单元独立通过连接单元进入业务程序单元进行访问;

    2.根据权利要求1所述独立保存bmc mac地址的系统,其特征在于:所述eeprom模块的储存量大小为64kb;

    3.根据权利要求1所述的独立保存bmc mac地址的实现方法,其特征在于:服务器主板上设有所述bmc单元,所述bmc单元通过spi启动bmc flash模块,bmc flash模块通过i2c访问eeprom模块,其具体的写入与读取流程如下:

    4.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:mac地址的长度为6kb,所述bmc mac地址储存单元可存储4个mac地址;

    5.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:bmc单元通常有2个mac地址,一个mac地址长度是6个字节。

    6.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:在步骤s2中,用户可在cpu操作系统上安装开源ipmitool或者远程使用ipmitool写bmc mac固件地址模块的mac地址。

    7.根据权利要求6所述的独立保存bmc mac地址的实现方法,其特征在于:写bmc mac固件地址模块的mac地址的过程是用ipmi命令ipmitool lan set index macaddr bmc_mac进行设定mac地址。

    8.根据权利要求3所述的独立保存bmc mac地址的实现方法,其特征在于:在步骤s3中,pthread_setmac线程通过监听的方式实时响应ipmi的消息。


    技术总结
    本发明提供一种独立保存BMCMAC地址的系统及其实现方法,BMC启动后,主进程下面所有的线程均工作起来;用户设定MAC地址;在bmc的主进程中增加一个线程函数来处理写MAC的事件;线程函数中调用标准的写入函数,将MAC地址写入到对应的epprom特定位置中;读取MAC地址时,通过调用系统libnetwork库中的读取函数从既定的eeprom特定位置读取所有的MAC地址;再调用库中ioctcl对应的系统驱动将读到的MAC地址写入到BMC的网络文件系统里面。本发明的BMC升级的时候只会刷新自己的Flash,不会涉及到BMC以外的flash,就能避免BMC MAC地址在更新BMC固件时丢失的问题。

    技术研发人员:刘洋,孙骥,庞艳艳
    受保护的技术使用者:上海飞斯信息科技有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-27140.html

    最新回复(0)