SFP/SFP+/SFP28/QSFP+/QSFP28光模块固件升级通用指导文件
SFP/SFP+/SFP28/QSFP+/QSFP28光模块固件升级通用指导文件
光模固件存在的意义?
在使用有源网络设备(交换机、路由器、光纤转换器等)时,用户会遇到光模块在一种品牌设备中工作而在另一种品牌设备中不工作的问题。例如,默认情况下,HP交换机的10km 1310nm的 SFP 模块无法在 Cisco 交换机中工作。而不是命令行上的“端口状态:UP”,用户在控制台看到的端口信息上就会显示Unsupport或Unknown。日志显示以下情况中一种或几种:%PM_SCP-SP-3-TRANSCEIVER_UNSUPPORTED:Unsupported transceiver in LAN port */* %PHY-4-CHECK_SUM_FAILED:SFP EEPROM data check sum failed for SFP interface Gi1/0/25 %GBIC_SECURITY_CRYPT-4-VN_DATA_CRC_ERROR:GBIC in port Gi1/0/25 has bad crc %PM-4-ERR_DISABLE:gbic-invalid error detected on Gi1/0/25,putting Gi1/0/25 in err-disable state
Cisco的GLC-LH-SMD和HP的J4859C 光模块在硬件规格上完全没有区别,不能替换使用的问题在于模块内部软件与交换机所要求的预置软件不兼容。
同样的,一个华为品牌的SFP-GE-LX-SM1310光模块与一个H3C品牌的SFP-GE-LX-SM1310-A光模块在硬件规格上也没有区别,但是如果你将华为品牌的光模块插入H3C品牌的网络设备上,会得到无法查看序列号,无法查看光模块诊断信息的错误,这会极大的增加运维人员在日常故障排查工作中的难度。在某些高端网络设备中,甚至会出现无法识别,无法正常工作的错误。
既然不同品牌的相同功能的光模块在硬件规格上没有区别,为什么设备制造商要人为的设置各种不同的兼容性加密信息呢?究其原因,无外乎巨大的商业利益。一块原装的CISCO GLC-LH-SMD或一块原装HP J4859C在销售价格上要成几倍甚至十几倍于第三方光模块制造商。设备制造商当然希望最终用户购买和使用自己的原装模块,而设备制造商并不生产光模块,其原装光模块都由第三方光模块制造商代加工。市面上很多第三方光模块制造商,包括BRO-WAY在内,其光模块的性能和使用寿命均达到甚至超过设备制造商的原装模块。
要解决兼容性的问题,需要更改光模块的固件或者说内部软件,以兼容特定品牌和型号的网络设备。要更改内部软件(模块固件),您需要:
1、光模块;
2、固件文件;
3、编程器及上位机软件;
需要注意的是,通常每个制造商都使用自己的编程器来编写自己设计开发的模块,但市场上也有“通用光模块编程器”。
集齐以上全部之后,就可以编写模块的固件了,改固件的流程如下:
1、光模块安装在编程器的端口;
2、固件文件被选中;
3、代码被写入光模块内存;
乍一看,刷机过程很简单,但其中有细微差别,下面我们将尝试详细说明如何刷机模块。
光模块的内部软件位于何处?
光模块的内部软件-模块固件存储在非易失性存储器 - EEPROM 中,一般是指24cXX系列EEPROM或者由单片机模拟出来的仿真EEPROM空间。
SFP和SFP+模块的内存总量一般为512字节,它们被有条件地分为4个区域,如下图所示:
A0 0-127 – 基础信息(类型、厂家信息、型号信息、序列号、波长等);
A0 128-255 - 此区域为制造商保留区域,极少使用;
A2 0-127 - 包含光模块的DDM阈值和校准参数值;
A2 128-255 - 为制造商保留区域。通常用于存储兼容性信息。
您需要分别使用每个光模块的内存区域。兼容性需要的信息包含在区域 A0 0-127 中,其中包含基础信息。对于每个 SFP 或 SFP+ 模块,此区域将有所不同,至少在序列号上是这样。一些制造商的设备需要参考区域 A2 128-255 来确定兼容性。
XFP模块的内存总量为768字节,可以有条件地分为5个区域,每个区域128字节,如下图所示:
Table00h - 为将来可能开发的诊断功能 (DDM) 保留;
Table01h - 基础信息(类型、厂家信息、型号信息、序列号、波长等);
Table02h – 为用户保留的可读写区域,包含一些特定性的兼容信息;
表03h-7Fh - 专门用于描述特定功能的信息;
Table80h-FFh - 保留用于进一步开发外形尺寸功能。
与SFP和SFP+模块一样,XFP中的A0 0-127 - 主存区为Table01h,里面包含一些基础信息。而有一些厂商的网络设备需访问Table02h区域以获得兼容性信息。
在QSFP+/QSFP28等高速型号中,内部存储设备更加复杂,但保留了通用逻辑:一个区域有通用信息,一个区域有制造商信息,一个区域有DDM值。有兴趣的可参照下图,在本文中,不再赘述。
什么是光模块固件?
光模块的固件文件是一个二进制文件,扩展名为.bin,一个区域刷写大小为128字节,多个区域刷写大小为256字节。
定义模块地址空间的国际标准:
MSA SFF-8472 规范定义了 SFP 和 SFP+ 收发器的地址空间;
MSA INF-8077 规范定义了 XFP 收发器的地址空间;
MSA INF-8438 规范定义了 QSFP 收发器的地址空间;
CFP MSA 管理接口规范定义了 CFP 收发器的地址空间。
MSA协议明确定义了每种类型模块的地址空间,这允许网络设备制造商将兼容信息添加到固件中,在检查之后,交换机将对特定设备的兼容性做出判断。
什么是光模块编程器?
如果你想要刷写光模块的内部固件,你需要一个特殊的设备 - 一个光模块编程器。光模块编程器是一种专门用于处理各种规格的光模块内部存储器的设备,它是一个具有:
1、一个或多个插槽,用于各种外形尺寸的模块,
2、连接电脑的端口,常用USB接口,
3、电源端口。
通常,每个光模块制造商都使用自己设计的编程器,但由于光模块内部存储器布局的标准化,拥有一个制造商的编程器,您就可以用来编程不同品牌的光模块。
重要的是要了解每个编程器都有自己的软件,没有它就无法使用编程器。
软件的功能和能力是不同的。一些制造商提供带有大量设置的便捷程序。这使它们成为一个实用的选择,但需要更多的员工培训。还有一些编程器提供的选项较少,可以帮助简化用户界面,这会避免操作员出错,但会大大限制编程器的功能。
市场上还有通用的第三方设备,可让您用来编程来自不同制造商的光模块。这样的解决方案有更多的设置和更广泛的可能性。一些 OEM 光模块制造商提供云编程器。此类设备配备了用于常见外形尺寸(SFP、XFP、QSFP、CFP)收发器的端口,并且需要互联网连接。它们的主要特点是在安装模块后,操作员选择设备的制造商和型号(或系列),之后软件本身生成固件并将其写入收发器的内存。然而,这样的解决方案也有其缺点 - 它们被设计为只能与来自特定制造商的光模块或者与没有写保护的光模块一起使用。
光模块编程流程
所有外形规格的光模块刷写过程看起来都一样:
1、光模块安装在编程器的相应端口;
2、编程器初始化已安装的光模块并从中读取内部软件;
3、固件文件被选中;
4、代码被写入光模块内存;
5、检查固件更新是否成功。
一些编程器设置了自动校验功能,而在没有设置自动校验功能的编程器上,为确保刷写成功并排除编程器读取错误,您需要移除光模块,重新插入并读取固件。读取固件时,必须与之前写入的一致。
最简单的方法是编程 SFP光模块,因为大部分的SFP光模块没有密码保护,并且可以由任何符合MSA标准的编程器操作。SFP光模块上的密码在极少数情况下设置,例如,它是设计用于长距离(超过100公里)工作的昂贵模块。
更改SFP+或XFP或QSFP等规格的光模块的内部代码与一个问题相关 - 写保护。 MSA 标准保留用于输入密码的字节。密码由十六进制的四个字节组成,例如:11 22 33 44或00 00 00 00。
写保护密码用于防止光模块信息被意外覆盖。大部分制造商都使用自己的密码。因此,为了编程光模块,您需要知道写保护密码。输入正确的写保护密码后,编程与上述过程一致。另一小部分制造商除了有写保护密码外,还有保存密码。只有输入正确的保存密码后,固件才会被正确地存储,否则断电重插后,信息又会恢复至编程前状态。
在哪里可以下载光模块固件?
固件可由以下人员提供:编程器供应商或光模块制造商,经销商较少。当然,固件也可以在互联网上找到,因为工程师们也会在论坛上交换它们并尝试编译固件数据库。有时您可以通过在所需的固件字段中输入必要的信息来自行实现兼容性。
如有任何问题,可随时联系BRO-WAY。
文档编号:BD-2023-01