前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >交换机分布缓存_述说数据中心交换机的重要性能指标——缓存

交换机分布缓存_述说数据中心交换机的重要性能指标——缓存

原创
作者头像
武汉海翎光电
发布2023-05-24 16:26:32
9410
发布2023-05-24 16:26:32
举报
文章被收录于专栏:全国产化交换机

    交换机是数据中心不可缺少的网络设备,在数据中心里发挥着重要作用。在平时使用和采购时,大多数都关注交换机的背板带宽、端口密度、单端口速度、协议特性等方面的性能指标,很少有人去关注缓存指标,这是一个常常被人所忽略的指标。

    其实,缓存是数据中心交换机的重要性能参数,是衡量一款交换机设备性能高低的重要指标。交换机的缓存和通常的缓存概念不同,通常缓存指的是当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话再从内存中找,显然缓存中的数据查找速度比内存中要快得多,这是一个处于CPU内部的一块内存地址空间。

    而在交换机上,缓存就是数据交换的缓冲区,有时又叫做包缓冲区大小,是一种队列结构,被交换机用来协调不同网络设备之间的速度匹配问题。突发数据可以存储在缓冲区内,直到被慢速设备处理为止。

交换机有三种转发模式:直通转发、存储转发和无碎片转发,用的最广泛的是存储转发模式。其实不管是哪种转发模式,都要用到缓存,只不过直通转发只解析报文的前几个字节就进行转发,存到缓存里的数据量小,转发速度快,但因没有对整体数据做校验,容易转发错误报文。大部分交换机的片上缓存都不大,一般都是几MB到几十MB,虽然单端口带宽在不到十年的时间里从1G发展到了100G,但缓存并没有很大提升,如果一个100G端口出现突发流量,十几MB就会出现丢包,显然在实际应用中会有限制,除非明确应用流量上不要有突发流量。

那么有人会有疑问,既然缓存这么重要,那为何不做的大一些?

    其实以现有的芯片集成技术应该不难实现。的确,缓存理论上可以通过芯片工艺设计放大,但是过大的缓存会影响正常通信状态下数据包的转发速度,因为过大的缓冲空间需要相对多一点的寻址时间,并增加设备的成本,在一些对延迟要求比较高的应用场景中,缓存过大反而会起反作用,所以不能简单地去扩大缓存,要在缓存和延迟两个方面做取舍,“鱼和熊掌不可得兼”。

    当然,随着技术的进步,在尽量不增加延迟的情况下,也可以不断提升交换机的缓存能力。受制于时钟、总线带宽的能力,缓存性能难以大幅提升,考虑到功耗、成本的平衡,缓存容量也不会大幅增加。

    有的交换机还在交换芯片外部挂了一个DRAM缓存,用来提升交换机的缓存能力,这样延迟可能会更大,但缓存可以做得很大,达到1G以上。

缓存十分重要,但我们究竟需要多大的缓存,却没有正确答案。巨大的缓存意味着网络不会丢弃任何流量,同时也意味着网络延迟的增加,具体要根据数据中心的业务来选择。比如在搜索业务中,一次搜索要在海量数据库里寻找结果,容易产生网络突发流量,甚至造成网络拥塞,在这样的网络业务中就需要部署缓存大的交换机设备;在金融领域,尤其是股票证券交易网络中,差一个纳秒都可以带来巨大收益或者损失,这样的领域对网络延迟要求非常高,不允许出现拥塞,也就不需要多少缓存,有的金融数据中心还要求使用低延迟交换机,转发延迟控制在纳秒级。

    缓存通常都是因为网络接口速率不同造成的,流量突然爆发或者多对一的流量传输。最常见的问题是多对一的流量突然变化。例如,某个应用程序搭建在多个服务器集群结点上。如果其中某个结点同时请求来自其他所有结点的数据,那么所有答复应该在同一时间到达。这种情况发生时,所有网络流量洪水会涌向请求者的交换机端口。如果交换机没有足够的出口缓冲区,那么它可能会抛弃一些流量,或者增加应用程序延迟。足够的网络缓冲区可以防止因为低级别协议造成的丢包或网络延迟。

    缓存对交换机来说是一个整体的概念,整个交换芯片共享缓存,每个端口分多少都是可以调整的,交换机上对这些缓存是有管理的,于是就出现了两种模式:QOS模式和FC模式。硬件上对每个报文都要存储后,处理完再转发,但存储空间都是有限的,因此当缓存不足时,就会出现丢包。

  QOS模式下,发生拥塞时不会发出流控帧,但可以对端口上不同优先级的流量进行调度,一定要丢包,优先丢掉优先级低的包,通过设置相关配置,可以做到选择性丢包。而在FC模式下,发生拥塞时会发出流控帧(需要手工配置,默认一般设备都不开启,若开启对端设备拥塞也会发流控帧,设备要响应处理流控帧,这将极大消耗设备端口的缓存)。

  QOS模式所有缓存被所有端口共享,FC模式缓存被均匀固定的分配给每个端口,因此QOS模式单个端口可能会获得更多的存储能力,减少了丢包,但带来的影响是可影响其它端口低优先级报文的传输。

  现在的交换机基本采用的是两种模式的结合,即为每个端口固定分配一些缓存,保证一定的转发带宽,同时再留一部分缓存作为公共部分,当有端口固定分配的部分不够用时,就可以使用公共部分,为防止一个端口拥塞将所有共享缓存占光,每个端口还可以设定一个最大允许占用的缓存,以此保证多端口拥塞时,公共缓存部分依然有剩余,所以缓存容量虽然不大,但是管理上是比较灵活的。不过,由于缓存管理是交换机非常底层的东西,调整不大对设备的转发影响很大,所以这部分调整一般都是在设备出厂之前调好,默认是最为通用的方式,有特殊应用的场景,再根据实际情况由专业技术人员来调整。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档