【8点20】深入了解Facebook 的Altoona数据中心网络

2018-04-04 15:49:18 浏览数 (1)

Facebook最近秀了一下Altoona数据中心网络的高度模块化和可扩展性。这个社交网络巨头高调公布了数据中心网络解决方案,因为Facebook想围绕开放计算项目展开行动,在网络设备和软件生态系统方面分一杯羹。Facebook的目标是推行软硬件独立的数据中心交换机,通过降低成本、简化操作开辟出一片市场。Facebook推出一个典型的交换机Wedge以及一个基于Linux的网络操作系统FBOSS。

尽管Wedge和开放计算都没有在Altoona数据中心发挥直接作用,但是可以想象它们将来能发挥的作用。Facebook的Altoona网络采用一个简单、新颖的架构方案实现可拓展性和模块化。该架构方案与设备商无关,仅仅利用BGP和Equal Cost Multi-Path (ECMP) 路由协议实现简单的拓扑,并且以主干-分支的网络结构实现各层独立拓展的功能。

Facebook可以利用横向插槽和架顶式交换机横向拓展分支层,该网络的中心交换机有多个、独立、可并行操作的“层”,并且引入“edge pod”拓展外部的连接,每个边缘插槽携带高带宽的交换机机架,实现中心层和外网的连接。Facebook的设计初衷是根据需求独立拓展中心带宽、服务器访问带宽以及边缘带宽。

此外,Altoona网络有一个自产的BGP控制器,当某个应用和服务需要占用网络通道时就覆盖标准的BGP路由。此外,Altoona网络利用一个大型管理服务器抽象的定义网络配置并且动态的将配置下发到每个交换机。最后,该公司开发出一个管理平台,用于动态诊断并修正网络问题。

我对Altoona数据中心网络的设计思路很感兴趣,因此特意专访了参与Altoona设计的Facebook工程师Alexey Andreyev。

请问Altoona网络的设计目标是什么? Andreyev:我们试图解决网络拓展性差的问题并且解除超额网络的限制,换句话说就是,在数据中心内提供任何额度的带宽,在不同规模的网络中用简单、统一的架构进行拓展。如果我们需要拓展转发能力就增加中心交换机,如果需要外部连接就增加边缘插槽。我们需要基于这个结构化、可预测的框架朝着无限带宽的方向努力。我们希望这个网络简单易处理,不受拓扑或者复杂度增长的约束。

你们是怎样简化操作的? Andreyev:一个关键的方面就是软件(定义)方式,创建一个完成自动化管理的结构。我们配置数据中心而不是单独配置组件,组件配置主要是由系统进行高级设置实现的。我们定义数据中心并且指定某个结构拓扑的物理参数。所有必要的细节,例如单个设备的配置,组件的配置,需要连接的设备的端口映射,处理路由的策略,都通过高级设置产生并解释成具体的平台设置。

你们是怎样将高级设置解释成具体的平台设置的? Andreyev:我们定义了一个简单的解释机制,可以解释任何可应用的设备。我们着眼于整个网络服务,什么是理想路由状态,什么是理想的拓扑以及拓扑属性,根据这些我们为每个组件创建一个完全抽象的、与供应商无关的逻辑视图。然后,我们将设置解释成具体的实现方法。这种逻辑图非常通用,我们只需要解释成真正的组件。

你们用什么将高级策略下发给交换机? Andreyev:这取决于特定的组件。我们根据元件库中的组件部署配置,在大量的组件上安排这些操作,我们的理论目标是:越简单越好。自动化和转发层高度分离,保证我们可以按需替换任何元件,并且不需要改变软件。此外我们可以快速接受任何新元件。

很多数据中心运营商也采用与设备商无关的方案,尤其是开放网络用户组的成员。那么你们怎么在数据中心领域推广你们的方案? Andreyev:关键要点就是保持简单,要求最低数量的功能,用最低限度的动作部署功能、操作组件。例如,我们为每个组件定义了一个动作,优雅的将它从服务中提取出来或者投入服务,或者部署配置等等。我们在很多不同类型的东西中发现了共同的特性,共同点越多就越简单,这就是我们为什么要谈论这个话题。我们的方案相对而言比较简单,相信所有人都能从中获益。

你刚刚说除了ECMP,BGP是Altoona数据中心使用的唯一路由协议,那么这个例子是不是你们保持网络简单性的一个证明? Andreyev:是的,而且我们使用最少的一组功能操作拓扑。BGP遍布整个网络,从机架交换机上行线路到边缘。

Altoona的BGP控制器是怎么工作的? Andreyev:每个交换机都有能力与控制器使用BGP通信,能够获取交换机的BGP路由信息,支持注入路由以便在设备之间、端到端之间创建链路。我们设计路由的宗旨就是绝大多数流,包括BGP和ECMP可以工作的很好。但是如果我们需要一个与BGP决策无关的自定义路由,可以使用控制器功能逐跳部署,并且我们可以快速实现部署。很大程度上是软件决策决定我们怎么做。

BGP控制器是自动做决策还是由工程师做决策? Andreyev:两者都可以,因为我们的结构拓扑和所有结构配置都是软件定义的。我们了解跨域路由应该是什么样的,哪个组件应该有哪个软件信息,而且有办法快速、灵活地调节指定的路由。我们像控制器一样知道每个组件的信息,像控制器一样有能力把具体的路由推送到网络中的不同点,去编译任何我们所需的通道。

你们是否会将BGP控制器划归为SDN控制器? Andreyev:BGP控制器是基于软件策略的,所以可以划归为SDN控制器。整个结构都是软件驱动的,不需要登录去进行定义和配置,不需要为每个设备创建配置。当我们定义网络时,从高层次上配置整个网络,而其他的都是由软件驱动的,我们可以定义很多方式去执行。

操作、监控和故障排除也是一样的,因为大部分问题都是机器解决的,我们很少处理某个设备。当添加新设备时,我们有机制可以发现新设备在拓扑中的角色并且根据元件库部署配置。

所以你们为网络创建了一个自动化的故障排除平台? Andreyev:是的,当我们检测到问题,系统就会查看问题,确认是已知问题,然后修正问题并通知操作者。因为我们采用自动发现机制,所以修正后可能再次发现新问题。当再次发现问题后就会迅速进入自动修正并且修正问题。这和我们管理服务器的方式很像,我们使用FBAR(Facebook动态修正,服务器操作),我们试图采用服务器的管理方法和理念管理网络。无论什么问题,解决这个问题所需要的动作都取决于问题本身。大体而言这个框架就是检测问题,然后采取相应的动作解决问题,确认动作的正确性并报告问题。

事实上我们推崇的并不只是这个工具,而是这种理念,通过各种途径了解问题,简化操作。无论是通过SNMP查询还是系统日志或是其他途径了解问题,并且可以对问题做出反应,可以添加更多的修正动作,可以通知用户问题解决的进程。最重要的是我们怎么实现这个总框架,怎么让一个大规模分布式网络更方便管理。

0 人点赞