由于工作需要,最近在学习SDN相关知识,首先把网络基础补习了一下,学习过程中发现一些有用的学习视频,讲解细致且深入,今天把视频链接分享给大家,网络基础薄弱的读者可以学习参阅。
- 1、网络基础知识详细讲解
- 2、详解TCP IP参考模型
- 3、详解IP子网划分原理
- 4、详解网络设备管理
- 5、路由基础之OSPF原理
- 6、路由基础之RIP原理
- 7、IP路由选择原理
- 8、VLAN间路由互通
- 9、交换基础之端口镜像与链路聚合
- 10、二层交换原理详解
- 11、路由基础之路由重发布
- 12、路由基础之路由策略
- 13、交换基础STP原理
- 14、路由基础之BGP基本原理
- 15、BGP路由基础之路由策略
- 16、BGP路由基础之选路规则
- 17、BGP路由基础之路径属性
- 18、数据中心大二层网络和VxLAN技术解析
在数据网络中,如果交换机之间存在环路,泛洪数据帧将在环路中循环交换转发产生广播风暴,占用所有网络资源,以致整个网络没有资源传送其他有效数据帧而瘫痪。
环路的由来
二层交换网络的核心问题就是环路问题以及由此产生的广播风暴问题,如果是一个单设备和单链路组成的树型二层网络,它是没有任何环路和因环路引起的广播风暴问题。
但是这种网络的可靠性是非常差,因为它没有任何的备份设备和备份链路,一旦某个设备或者链路发生故障,那么故障点下的所有主机就连不上网络了。
为了提高网络可靠性,通常会采用冗余设备和冗余链路,这样就不可避免的形成环路。红色链路构成一个环路,蓝色链路也构成一个环路,事实上,在相对复杂的二层网络中,物理上的环路几乎无处不在。
二层网络虽然隔离了冲突域,但是处于同一个广播域下,广播数据帧在环路中会反复持续传送转发,而且二层数据帧转发没有TTL机制限制,一个数据帧可以无限循环下去就会形成广播风暴,瞬间即可导致端口阻塞和设备瘫痪。
环路如何解决
为了解决泛洪和广播风暴问题,二层网络中所采取的技术主要有以下两方面。
通过划分VLAN来缩小广播域
VLAN技术可以把一个大的物理二层域划分成许多小的逻辑二层域,这种逻辑二层域被称为VLAN。同一个VLAN内可以进行二层通信,不同VLAN之间是二层隔离的,这样广播的范围就被局限在一个VLAN内,不会扩散到整个物理二层域。
通过破环协议来防止环路
这种方法则是从广播风暴形成的根本原因入手防止环路出现,将冗余设备和冗余链路变成备份设备和备份链路。即冗余的设备端口和链路在正常情况下被阻塞掉,不参与数据报文的转发。只有当前转发的设备、端口、链路出现故障,导致网络不通的时候,冗余的设备端口和链路才会被打开,使得网络能够恢复正常。
实现这些自动控制功能的协议就被称为破环协议,其中最常用的就是STP(Spanning Tree Protocol,生成树协议)以及升级版的RSTP和MSTP等,我们统称为xSTP协议。也有其他一些破环协议,比如SEP、RRPP等等,其本质思想和xSTP协议是一致的。
传统的数据中心网络架构
传统的数据中心通常都是二层+三层网络架构,接入层工作在二层、汇聚层向上提供路由能力、向下提供交换能力,核心路由层提供三层路由能力。
这种网络架构是目前非常成熟的架构,相关的二层VLAN+xSTP、三层路由都是成熟的技术,可以很容易的进行部署,也符合数据中心分区分模块的业务特点。但是,由于VLAN个数限制、xSTP对性能影响等原因,这并不是云计算业务架构下要求的大二层网络。
云计算大二层网络
为了满足云计算业务弹性要求,大二层网络技术得到了迅速的发展,如VxLAN、Trill、M-Lag、SVF、CSS等技术,今天,我们聚焦讨论下Trill技术。
TRILL(Transparent Interconnection of Lots of Links)中文名为多链接透明互联,是一种在二层网络上基于链路状态计算的路由协议,它通过扩展IS-IS协议来实现,使用最短路径优先算法进行路由计算。
- TRILL Campus :通过运行TRILL 协议构建的二层交换机网络云。
- RB(Router Bridge ):TRILL Campus 里的一台交换机,也可称其为路由交换机
- DRB (Designated Router Bridge ) :广播网中一种特殊的RB,一个广播网中只存在一个。DRB负责与网络中每台设备进行通信,并负责发送CSNP实现LSDB的同步。
- Nickname:RB的IS-IS ID,用来唯一标识一台RB。
在TRILL中,原来的网桥由Rbridges(路由桥)替换。在Rbridges之间运行链路状态协议(ISIS TRILL),获得足够信息来计算单播最优路径,以及组播生成树,用于帧的转发。同时为了减轻临时环路的问题,Rbridges帧头中增加跃点计数来避免。
由RB组成的区域称为TRILL区域,当以太网帧进入TRILL区域,原始的以太网帧碰到的第一个RBridge - RB1,它把收到的帧打上一个TRILL头,并指定最后一个RBridge—RB3,该帧在该RB上解封装。RB1被称为“入口RBridge”,RB3称为“出口RBridge”。
如上图所示,RB1和 RB2同时互相发送IIH给对方,当各自收到对方的IIH时,都会将对方创建为邻居,此时的状态为detect,各自只检测到邻居存在,但是还没有握手成功,然后又互相发送IIH并将各自的mac地址放入在IIH中,当各自再次收到IIH时,解析IIH发现报文中包含自己的MAC地址,于是将各自的邻居状态置为2-way。然后只要其中一边发送MTU探测,各自都会收到都会收到MTU-ack,则MTU协商成功,此时各自的状态为report,然后周期性发送IIH。
- 1、邻居状态达到Report之后,将通知LSDB组件发布NBR link信息,协商成功的MTU值将作为nbr的一个属性一起发布在lsp中
- 2、如果发送了N次(默认3次,可配置)MTU-probe之后没有收到MTU-ack,则认为MTU协商失败,如果此前邻居已经Report,则需要将邻居状态置位2-way,同时通知LSDB组件删除NBR link。
- 3、接口只要UP,就会周期性的(默认10秒)发送IIH,如果在Holding time(默认30秒)内收不到邻居发来的IIH,则将邻居置down,同时通知LSDB组件删除NBR link。
下面以单播报文转发说明下报文转发流程。在入口RB1上,对于从客户Host-A接收到的已知目的地址单播帧,通过查找本地MAC地址表,确定该MAC在TRILL网络中的出口是RB3。
入口RB1将客户接收到MAC帧打上TRILL头,指定TRILL头中的入口RB(ingress Rbridge)为RB1,出口RB(EgressRbridge)为RB3。
同时查询nickname列表(TRILL路由表)知道到达RB3的下一跳为RB2,于是将TRILL报文的外层目的地址(Outer.MacDA)设置为RB2的MAC地址,外层源MAC地址(Outer.MacSA)设置为RB1自己的MAC地址。封装好的TRILL报文经过与RB2相邻的出接口发送。
中间RBridge转发TRILL帧式,外层L2报头在每一跳被替换,携带适合于下一跳的L2头,同时跳计数也递减,同时保持原始的客户数据帧以及VLAN标签不变。RB2作为中间RB,接收到RB1发送的TRILL报文,根据TRILL路由表查找到RB3的下一跳出口,并修改Outer MacDA为RB3的MAC地址,Outer.MacSA为RB2自己的MAC地址,同时将HopCount计数减1,通过与RB3相邻的接口发送。
当TRILL报文到达出口RB3时,通过检查TRILL报文中Egress Rbridge字段,它发现自己就是该TRILL帧目的地,因此将报文解封装,在本地的二层MAC地址转发表中查询原始MAC帧的目的MAC地址的出端口,将解封装的MAC帧转发到对应的出端口。这样客户数据帧内容保持不变,被转发到目的网络。在转发过程中,会逐跳校验TRILL帧中的TTL字段,当其为0时会被丢弃,避免临时环路时出现广播风暴。