- 京东大促的另一个战场:揭秘亿级流量背后的技术基石
- 京东智联云&InfoQ
- 2963字
- 2021-01-20 10:05:34
京东智联云自研交换机应对海量访问请求
京东11.11全球热爱季累计下单金额超2715亿元,再次突破历史最高下单金额,实现完美收官!要应对不断增长的网络带宽增长及海量访问请求,网络稳定性显得尤其重要。京东智联云作为京东11.11坚实的技术基石,经过长期的积累在2020年推出自主研发的白盒交换机,并在2020年下半年逐步开始线上部署,在11.11大促期间稳定运行,提高了网络的可运维及可监控性,有力地保障了大促期间网络的稳定性。
一、为什么自研交换机?
交换机是数据中心必不可少的网络设备,过去京东数据中心往往会采购多个品牌的交换机。传统的交换机是一台封闭的设备,无论软硬件对用户来说都是封闭的领域。各厂商产品从硬件到软件,从配置到监控,从部署到管理,没有统一的技术标准,运维、监控平台需要分别适配各种产品。
相比传统商业交换机封闭式的黑盒模式,京东自研交换机做到软硬件解耦,直接从硬件厂商订制硬件,芯片厂商选择交换芯片,根据自己的需求来设计软件系统,对外提供统一的接口。京东自研交换机系统JDNOS,基于开源SONiC,专注于京东网络需求,为各应用场景提供网络解决方案,与网络平台无缝对接,提供统一的自动化部署及管理,高效精细化的监控。
二、自动化部署及管理
数据中心网络管理周期从网络建设开始,到设备交付,部署,变更,一直到下线。为了能够提高全周期效率,提供高可靠管理服务,京东自研交换机与网络管理平台一起,实现了网络设备上电以后自动远程获取并安装版本,加载配置,系统自检,并上报平台;针对网络设备的日常变更,网络管理平台通过自研交换机提供的统一接口,自动完成网络割接;为了版本的快速迭代并实施应用,自研交换机实现了热重启功能,进程级、docker级以及整个系统级的版本升级都可以做到转发面的流量不中断。
1、统一的管理平台
除了提供传统的CLI配置方式,京东自研交换机提供了GRPC接口,定义了yang配置模型,管理平台可以通过GRPC,对网络设备进行批量配置变更。
传统的网络变更时,运维人员需要通过SSH登陆到设备的CLI,进行命令行的逐条配置,效率很是低下,即使通过程序进行自动化配置,但面对大规模数据中心超量级设备,效率上也无法很好的满足。京东自研交换机通过GRPC接口,接受yang模型对应的json格式的配置,并使其生效,提高了网络变更的效率,并最大程度保证正确性。
2、ZTP
ZTP(Zero Touch Provisioning)功能提供了网络设备的自动化部署服务,省去了设备上架以后,人工手动安装系统版本,导入配置的繁琐重复操作,节省了人力成本,大大提高网络部署工作效率。京东自研交换机设备上电以后,自动通过管理网络,访问管理平台,下载系统版本并安装,下载配置文件并加载,并对网络状态进行自检,确保部署完成并上报平台。
3、版本升级
自研交换机的灵活可控,可以大大缩短数据中心网络新业务落地实施的周期。面对网络功能新的需求,自研交换机可以快速给出解决方案并上线。JDNOS提供warm reboot即热重启功能,能够做到转发平面状态保持不变的情况下,对控制平面的系统进行重启。无论是进程级、docker级、系统级的重启都可以在流量不中断的情况下进行。通过warm reboot功能,京东自研交换机可以在业务不感知情况下,进行版本的迭代升级。
京东数据中心使用BGP路由协议,设备版本升级并warm reboot时,控制面会中断,BGP session也会down掉。但此时转发层面是工作正常的,所以对端设备不需要撤销路由,这样流量还可以经由正在重启的设备转发。所以BGP两端设备需要开启GR特性,这样即使对端设备BGP session down掉,路由也会一直保持,流量正常转发。
但开启了BGP GR功能之后,会导致某些异常情况(比如链路单通)下,路由不能快速收敛,即使BGP session已经变down,但在GR timer超时前,路由会一直保持,从而导致路由不能快速切换,引起网络丢包。针对于此,京东自研交换机给出了BGP+BFD的解决方案,BFD功能保证了在发生一些异常情况时,可以绕过BGP GR路由保持特性,做到低于秒级的路由快速收敛。
三、高效精细化监控
传统的网络监控方式有snmp get,CLI以及syslog,这些也是京东网络之前一直在使用的监控手段。但snmp get和CLI都是主动去get的方式,即一问一答的交互方式,效率低下。为了达到更低的时间精度,只能加大查询频率,这样又会导致设备CPU利用率变高,网络负载增大。JDNOS通过Telemetry的方式进行网络监控,支持通过推送模式主动向监控平台上送设备数据。监控平台可以订阅监控内容,包括接口流量统计、CPU或内存数据、电源、风扇、光模块等信息,设置推送的周期,等等。相对传统的拉模式,提供了更实时高效的数据采集功能,尤其是网络规模不断增大的情况下。
1、状态监控
JDNOS系统架构是基于database的,监控平台可以通过telemetry订阅监控database中的任何数据,因此可以自定义更多的监控内容,包括光模块各属性(收发光功率,温度,电压等),BGP邻居状态,交换机buffer的状态(使用率,阈值)等等,监控平台可以实时得获取到网络设备的状态。
流量统计是网络监控很重要的一项监控内容,传统的流量监控是粗粒度的,基于分级的监控,对于瞬间突发性的流量可能无法感知。尤其是对于京东商城每年618或者双11的大促活动,这种粗粒度的统计,监控平台无法监控到某一时间点的瞬时流量波动。JDNOS开发了基于毫秒级的流量监控,在监控数据的颗粒度上,从分钟级提升到秒级甚至到毫秒级,可以看到任何一秒的流量数据,使监控进入了毫秒级时代。JDNOS以毫秒级的粒度获取ASIC的端口流量统计,并存入da-tabase中。为了减小网络负载,减轻监控平台压力,使用Telemetry的方式以秒级的频率向监控平台推送统计数据。这样监控平台可以得到基于毫秒级粒度的流量波动图。
2、关键事件监控
网络异常状态的监控是一项重要的监控内容,运维人员需要实时看到网络到底发生了什么事情,会对业务流量产生什么样的影响。JDNOS实现了对网络丢包,队列拥塞,转发时延等的监控,并能够跟踪流量路径,尽可能的提供流量的可视化。针对芯片级一些异常,比如IO总线问题、寄存器访问出错、DDoS攻击、表项出错等能够及时上报,给出报警。
3、故障预测及修复
网络运维中,如果能够及早发现潜在隐患,进行排除修复,将大大减少网络故障,减少对业务层面的影响。
光模块作为25G/100G网络中的重要一环,与交换机有较强的耦合性,光模块的可靠性将很大程度上影响整个网络的稳定程度。JDNOS通过对光模块的实时监控,对电压、电流、收发光功率、温度等参数进行分析,预测光模块是否存则故障风险,并给出预警。运维人员可以尽早采取措施,以减小对业务的影响。链路的抖动也是网络中常见的问题,JDNOS对此也做了监控,并结合模块参数分析,给出预警。
为了保证交换机系统软硬件状态的一致性,JDNOS定期对接口状态、vlan、ARP、路由、ACL等进行匹配性检查,如果发现问题,及时给出告警。针对进程级的监控,及时发现出错的进程,在不影响系统运行的情况下,自动进行进程修复。
传统交换机作为一个黑盒产品,只能对流量及协议方面进行监控。自研设备可以做到系统层面的监控,对设备的运行状态进行全方位的监控,及时发现设备运行中的问题及隐患。通过更精细化的监控,对设备及链路的预警,自研交换机稳定性得到了很大提高,至今保持着0故障的记录。
四、总结
区别于传统的通用型交换机,京东智联云自研交换机结合京东数据中心网络需求,聚焦于自身业务场景,把运维经验与设备系统结合,提供高可靠灵活可扩展的网络服务。未来京东智联云将继续丰富自研交换机功能,拓展应用场景,提供更加高效智能化的网络管理及监控方案,满足京东集团及京东智联云用户带宽日益增长、功能愈加复杂的网络需求。