专栏首页虚拟化笔记datacenter network architecture

datacenter network architecture

想写两篇文章,一是《数据中心网络体系结构》,二是《交换机体系结构和pipeline》,写这主要是为总结和回顾,好帮我们解决云计算碰到的问题,比如云计算环境overlay和underlay网络怎么设计,软件交换机可以借鉴那些硬件交换机的特性,软件的转发流程怎么设计等等。

这篇算是《数据中心网络体系结构》,主要回顾二三层转发原理,分析一下数据中心网络结构从access-aggregation-core到spine-leaf的演进原因。

方案级别的演进包含着很多配套技术,而且这些技术是相互交织在一起的,技术之间互相促进,实现了螺旋式发展,最终发展到一个成熟可落地的程度就是一种方案了。当然不管多么高大上的技术都是由基本的技术发展而来的,大卸八块之后都是一些基础的技术,所以基础技术一定要扎实。

二层转发

根据MAC来查MAC表转发,MAC表是学习来的,报文来了学习源MAC,后续如果有目的MAC是这个源MAC的报文来那么就从学习到的这个端口发送出去,这点很不安全,一个终端想接收别人的报文,那么冒充别人发送一个报文就能把别人的报文引过来。

广播,报文来了如果还没有学习到这个目的MAC或者是广播MAC,那么就从所有端口发送出去,如果有终端干坏事,一直发送广播MAC的报文把交换机都能搞瘫痪。

STP防环路和阻断,每一跳包头是不变的,如果出现了环路那么报文就真正的一直环下去了,除非有高端的环路检测方法。

二层转发,MAC学习来说不安全,广播和防环路方面来说故障影响比较大,用vlan隔离一下是不是能好很多,把相同安全级别的设备放一个vlan下,同时能减少广播和环路的影响范围,如果要跨vlan转发就用三层转发。二层转发还存在的问题就是为了防环路,交换机把一些端口shutdown了,导致链路利用率比较低,STP全局只有一根树,首先选举一个交换机为树根,其它交换机都以这个交换机为树根进行计算,如果一条链路DOWN了,STP收敛很慢。但二层是一种非常高效和省事的转发技术,不修改报文头,接入时不需要进行MAC配置和规则,迁移也不需要改变MAC地址。

三层转发

根据目的IP来查路由表来转发,路由表是路由协议配置,路由器之间建立邻居关系,同步路由,所有路由器都以自己为根进行SPT最短路径生成树计算,只站在自己的角度考虑问题,同时支持ECMP等价路由,路由协议就安全很多,邻居之间要互相进行认证,认证通过了才能进行协议报文交互和路由通告。

三层报文头有个TTL,进行三层转发时TTL要减一,即使三层出现了环路,有TTL在报文也并不会一直环下去。

做完三层转发还要做二层转发,三层的下一跳其实是二层转发到达的,所以三层转发时每一跳都要修改二层头,修改二层头时用ARP获取下一跳IP对应的目的MAC,源IP和目的IP保持不变,源MAC修改成自己,目的MAC修改成下一跳的MAC。

三层转发的问题就是要规划IP地址,IP有ABCD类,公网和私网地址,有网段和掩码,规划复杂,相比二层转发效率也低。

二三层转发

如果一台设备同时支持二层和三层转发,一个报文来了怎么决定是进行二层转发还是三层转发呢,这个设备也有自己的MAC地址和IP地址,如果报文的目的MAC地址是自己的,那么它就再看IP地址,如果不是自己的就进行三层转发,如果是自己的就自己把这个报文消化了,如果报文的目的MAC不是自己的,那么就进行二层转发。

access-aggregation-core

借用cisco的这张图,用我自己的话说一上,可以看原文《Cisco Data Center Spine-and-Leaf Architecture: Design Overview》,写的特别多,大厂技术积累厚理解深。

广播域不能太大,二三层分界放在aggregation上,一个pod一个子网。

南北流量大,每一层向下和向上接口转发能力是不一样的,firewall和lb在agrregation上。

为了高可用性,aggregation两台交换机IRF堆叠,主机双上行跨交换机聚合。

spine-leaf

计算虚拟化来了,迁移要求是二层,网络就是大二层,不能用access-aggregation-core按pod划分,否则虚拟机迁移不让另一个pod了。虚拟机太多了,mac太多,aggregation的mac表承受不住。虚拟机出现了,业务分布式化了,流量模型发生了变化,虚拟机之间流量占了大头,东西流量大于南北流量了。

大二层要求三层上移,网络就能这样了,问题是同一aggregation下的两台物理机通信只要经过一个交换机,不同aggregation下的两台物理机通信要经过三台交换机,而且core承受的流量太大,干脆变两层得了。

二层网络就spine-leaf结构,东西向流量大,Clos network,接口转发能力都一样了,容易扩展,路径等长时延可控制,结构简单容易大规模扩张。N-1节点同时给第N个节点发流量,搞N-1个spine节点,ECMP技术要成熟。

还剩下一个问题就是MAC太多,那封装MAC,MAC in Mac,spine交换机不再学习虚拟机的MAC地址,二层转发用ECMP,这样spine上的流量就能分担开,广播太多,leaf主动学习MAC,leaf之间同步MAC然后给host代答,还是靠vlan隔离,如trill技术,trill还有复杂的BUM控制。

公有云网络需求,一是隔离,二是自定义IP,三是子网互通,四是和外网互通。

首先vlan只有4094个,用vlan隔离数量不够,MAC in MAC,spine是二层转发,如果spine不用支持trill,spine用stp,spine成环了怎么办?spine链路都能利用上?如果spine支持trill,那不是浪费,spine其实不用encap/decap trill,只要leaf能encap/decap就行了,怎么看trill都不合适用于公有去上。

个人理解封装技术就是overlay/underlay技术,overlay和underlay独立演进,要求overlay二层互通,underlay只要通就,MAC in MAC就是要求underlay二层互通,MAC in IP就是要求underlay三层互通,显然underlay三层互通比较好,支持的规模大,ECMP技术成熟,甚至能达到跨DC互通,跨DC迁移或者说互通一定好吗?trill+otv和vxlan+otv有什么区别?

用的多的封装技术就是VXLAN,overlay二层互助,underlay三层互通就行了。VXLAN和VPLS有什么区别?VPLS有没有EVPN这样的控制面?可能VXLAN更适用于DC,VPLS用于运营商给企业不同站点实现二层VPN吧。

再说剩下三个需求,二是自定义IP,三是子网互通,四是和外网互通。

vxlan能地址重叠是因为三层路由表也用VRF隔离,那么vlan和trill能不能也用VRF隔离一下实现地址重叠,是可以的。传统上三层一般在上层转发能力强大的设备上,但spin-leaf结构中南北向流量小,三层可以下放到leaf,有一个leaf节点可以当作三层boader向外发布和引进路由,三层在boader上也可以多活,三层放在leaf后,spine节点就更简单了,专心干三层转发就行。因为用了Clos network,二层转发实现了non-blocking转发,三层转发还要走网关节点,租户自定义网段,不想让三层成为瓶颈,三层分布式网关。

主机overlay和网络overlay

上面说的都是网络overlay,就是把encap/decap功能放在接入交换机上,主机overlay把encap/decap功能放在物理机上。

不同交换机厂商的交换机配置接口都不同,有了netconf或者openflow能好一点,但port和vlan配置这些总觉得还是不一样,接口调用是同步还是异步,交换机连接断开后数据怎么平滑,都不好搞。

同一DC有上云和不上云的业务,再考虑到网管对地址的规划,交换机数量庞大,必须统一配置和管理,显然主机overlay更好。

主机overlay的问题就是encap/decap耗费cpu资源,网络overlay的性能更好。

总结

一个技术要成熟天时地利人和少一不可,一个技术的成败可能就在于一些细微的差异,一定要考虑到兼容升级投入产出,随便一个方面有问题可能就导致上不了生产环境,从而不成大规模推广。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • docker--docker架构

    Docker uses a client-server architecture. The Docker client talks to the Docker ...

    eadela
  • Network Architecture Search Survey

    marsggbo
  • Microsemi可编程PCIE Switch助力资源池化方案落地

    在去年的2018 ODCC峰会上,腾讯发布了T-Flex PCIE资源池化方案和产品,该产品由腾讯和浪潮联手设计制造。PCIE资源池化的关键的部件就是PCIE ...

    冬瓜哥
  • Ansible配置管理vCenter及相关虚拟机

    Ansible支持的模块: http://docs.ansible.com/ansible/latest/modules/modules_by_category...

    魏新宇
  • VMware发布两大产品预览:Bonneville和AppCatalyst

    Project Bonneville就是采用虚拟机封装容器的技术,达到安全,高隔离度的目的。该项目扩展了Docker engine创建容器的方式,把原来在Lin...

    Henry Zhang
  • 微服务Consul系列之服务部署、搭建、使用

    以上只是列举的笔者曾经遇到的几点问题,当然问题还不止于这些,下面介绍的Consul可以有效解决这些问题,当然还有一些其它的优点,让我们一起期待下文的Consul...

    五月君
  • Github项目推荐 | AutoML与轻量模型列表

    本项目旨在为自动化研究(特别是轻量级模型)提供信息。有兴趣的同学可以进行收藏或者在Github中推荐/提交项目(论文、项目仓库等)。

    AI研习社
  • 【论文推荐】最新五篇图像分割相关论文—R2U-Net、ScatterNet混合深度学习、分离卷积编解码、控制、Embedding

    【导读】专知内容组整理了最近五篇图像分割(Image Segmentation)相关文章,为大家进行介绍,欢迎查看! 1. Recurrent Residual...

    WZEARW
  • 深度学习的异构加速技术(三):互联网巨头们“心水”这些 AI 计算平台

    在本篇中,将走进工业界,看一看半导体厂商和互联网巨头在 AI 计算中的不同选择。

    腾讯技术工程官方号

扫码关注云+社区

领取腾讯云代金券