当前位置: 首页 > 科技观察

数据中心网络设备软件自动化升级之路

时间:2023-03-19 09:57:37 科技观察

随着数据中心网络规模的不断扩大,应用协议越来越复杂,使得网络设备的软件实现规模巨大。这些软件代码都是人写的,难免有考虑不周或错误的地方。一旦程序进入错误的分支,就会出现问题,严重的会造成网络中断。我们常用千行代码缺陷率来衡量一个软件的好坏:CMM1级为11.95‰,CMM2级为5.52‰,CMM3级为2.39‰,CMM4级为0.92‰,CMM5级为0.32‰,即使达到最高的1000行代码的缺陷率也是0.32‰,也就是说10000行代码中可能至少有3行BUG。现在的网络设备操作系统基本上都有几千万行,隐藏的软件BUG之多可想而知,所以难免会出现这样那样的软件问题。问题当然要解决,但数据中心业务必须一年365天不间断运行。全年业务中断时间的长短,直接决定了数据中心的水平。在解决网络设备软件bug时,尽量不要中断业务。因此,从网络设备在数据中心的大规模部署开始,设备厂商不断改进软件漏洞修复的方法。下面就来详细说说吧。升级版可以追溯到十年前。那时候还不叫数据中心,而是数据机房。由于互联网业务本身还不够发达,人们对业务中断并不敏感。这时候重启设备,断开连接十几分钟是可以接受的。那个时候网络就可以用了,对速度和中断不敏感。网络在人们的生活中是可有可无的。如果网络设备有问题,有软件bug,直接提供修改后的软件版本,设备加载解决问题的新版本,重启解决问题。人们从来没有像现在这样对网络如此依赖,所以一旦出现问题,直接更换新的软件版本来解决问题是更彻底、更快速的方法。很少有人想到其他方法来解决问题。但是,随着网络业务的蓬勃发展,人们对网络的要求也在不断提高,尤其是24小时在线访问的要求,因此重启设备更换新版本的操作对于很多数据中心客户来说是无法接受的。此方法仅用作解决软件错误的最后手段。这样,其他更好的解决软件错误的方法就出现了。加载补丁、打补丁解决现有网络设备软件版本问题是目前最常用的方法。对于正在运行的网络设备,直接打一个热补丁,将有问题的程序功能替换成新功能即可解决问题。这种方法既可以解决软件中的BUG,又不影响设备的运行,被广泛接受。但是,patch方法并不能解决所有问题,是有条件的。首先,补丁解决的问题是有限的。如果补丁修改的功能过多,会导致补丁规模过大无法制作或引入更多问题;其次,有些软件的bug涉及到软件初始化或者宏定义这些地方,必须重启设备,软件重新初始化才能转移。这样就无法通过热补丁解决问题,只能通过冷补丁解决,即打补丁后需要重启设备,补丁才会生效。冷补丁虽然可以解决问题,但是还是需要重启设备;第三,补丁增加了系统风险。该补丁使用了很多钩子函数,直接调用原软件版本补丁中的新函数。如果加载的补丁太多,补丁将被打补丁,需要考虑补丁之间的影响,以及对软件版本的影响。当一个软件版本的补丁数量超过十个时,不宜再添加。太多的补丁会降低整个设备的运行可靠性。不间断服务升级版本显然,补丁不是万能的,很多软件的BUG并不能通过补丁完全修复。这个时候还需要考虑如何在不中断业务的情况下升级版本,于是就有了不中断业务升级技术。这种升级软件版本的方式是有条件的,即设备必须处于堆叠环境或主备环境,且运行该软件版本的设备业务有备份。当对整机的部分单板或功能模块进行升级时,业务切换到其他部分。继续跑。版本升级完成后业务切回,再升级备用板或功能模块,最终完成整机软件版本升级。另外,解决问题的软件版本与原版本之间的差异不能太大,否则两个版本无法进行兼容性升级,不兼容版本的升级仍然会中断业务,所以两者之间的区别解决问题的版本和原来的版本不要太大。自动补丁升级目前,补丁或版本需要手动操作。例如,在运营商庞大的网络中,一个城域网可能有数千台设备。一个一个地升级补丁,工作量巨大,工作内容重复。无聊的。在我们平时使用的PC操作系统中,我们可以看到经常会提示加载补丁。只要PC联网,就可以自动下载到PC上,然后PC重启时,会自动加载补丁,解决原有系统的软件BUG。这种方式在数据中心网络中也可以沿用,只是有所不同。我们使用的PC在重启的时候会加载补丁,但是数据中心网络不能随便重启,所以加载的时候会自动打补丁,自动生效。在数据中心部署服务器。如果有网络设备补丁需要打,在服务器上打补丁。服务器会自动同步网络中的所有设备,然后判断是否满足加载补丁的要求。如果没有问题,它会自动上传补丁。对于设备来说,设备收到补丁后,会自动加载,可以大大节省打补丁的工作量。这种方式应该是我们以后追求的方式。同时,未来的网络设备应该在软件版本上将各个功能模块隔离开来,尽量做到相互之间没有关联和影响。如果这样一个功能模块出现问题,基本上只给这个功能模块打补丁就可以解决。这个补丁甚至可以是正确的。整个功能模块的修改。这样补丁加载的时候,就可以不影响其他功能模块的业务了。只是这个功能模块可能需要重新初始化,这样对业务的影响就小很多,甚至可以忽略不计。数据中心网络设备软件一直在寻找更好的软件漏洞解决方案。相信这个方法会越来越好,在不影响业务的情况下,自动修复网络设备的软件bug。