什么是MPLS MPLS(Multi-Protocol Label Switching , 多协议标签交换)。传统的IP转发采用的是逐跳转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程, 所以转发性能低。
与传统IP路由方式相比,MPLS在数据转发时,只在网络边缘分析IP报文头, 在网络内部采用更为离效的标签( Label ) 转发, 节约了处理时间。
MPLS位于TCP/IP协议栈中的数据链路层和网络层之间, 可以向所有网络层提供服务。 通过在数据链路层和网络层之间墙加额外的MPLS头部,基于MPLS头部实现数据快速转发。 MPLS相关名词 LSR 支持MPLS的路由器,称为LSR(Label Switching Router),位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER (Label Edge Router) ,区域内部的LSR称为核心LSR(Core LSR)。
除了根据位置对LSR进行分类,还可以根据LSR对数据处理的方式进行分类:
入站LSR (Ingress LSR) :通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR 。 中转LSR (Transit LSR) :通常是将MPLS报文进行例如标签置换操作, 并将报文继续在MPLS域中转发的LSR 。 出站LSR (Egress LSR) :通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR 。 FEC FEC(Forwarding Equivalence Class,转发等价类)是—组具有某些共性的数据流的集合, 这些数据流在转发过程中被网络节点以相同方式处理。
在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。 数据属于哪—个LSP,由数据进入MPLS域时的Ingress LSR决定。 MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。 在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。 在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。 LSP LSP ( Label Switched Path , 标签交换路径)是标签报文穿越MPLS网络到达目的地所走的路径。...
在VXLAN中提到,除了手工配置VXLAN隧道,还可以使用EVPN作为VXLAN的控制平面,从而避免网路中存在大量的泛洪流量。
BGP-EVPN地址族 EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的网络层可达信息NLRI(Network Layer Reachability Information)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。
MP-BGP 传统的BGP-4使用Update报文在对等体之间交换路由信息。一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中。因为BGP-4只能管理IPv4单播路由信息,为了提供对多种网络层协议的支持(例如IPv6、组播),发展出了MP-BGP。MP-BGP在BGP-4基础上对NLRI作了新扩展。玄机就在于新扩展的NLRI上,扩展之后的NLRI增加了地址族的描述,可以用来区分不同的网络层协议,例如IPv6单播地址族、VPN实例地址族等。
类似的,EVPN也是借用了MP-BGP的机制,在L2VPN地址族下定义了新的子地址族——EVPN地址族,在这个地址族下又新增了一种NLRI,即EVPN NLRI。EVPN NLRI定义了几种BGP EVPN路由类型,这些路由可以携带主机IP、MAC、VNI、VRF等信息。这样,当一个VTEP学习到下挂的主机的IP、MAC地址信息后,就可以通过MP-BGP路由将这些信息发送给其他的VTEP,从而在控制平面实现主机IP、MAC地址的学习,抑制了数据平面的泛洪。
采用EVPN作为VXLAN的控制平面具有以下优势:
可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度。
EVPN可以同时发布二层MAC信息和三层路由信息。
可以减少网络中的泛洪流量。
EVPN NLRI定义了五种EVPN路由类型
路由类型 路由描述 Type1 Ethernet auto-discovery (AD) route,以太自动发现路由 Type2 MAC/IP advertisement route,MAC/IP路由 Type3 Inclusive multicast Ethernet tag route,Inclusive Multicast路由 Type4 Ethernet segment route,以太网段路由 Type5 IP prefix route,IP前缀路由 其中,Type1和Type4是用于EVPN ESI(Ethernet Segment Identifier)多活场景,该场景主要是为了提高VXLAN接入侧的可靠性。主要重点介绍Type2、3、5...
SR&SR-MPLS SR(segment routing,段路由),其核心思想是将网络报文转发路径切割为不同的分段,并在路径起始点往报文中插入分段信息指导报文转发。目前,Segment Routing支持MPLS和IPv6两种数据平面,对应着两种技术方案:基于MPLS数据平面的Segment Routing称为SR-MPLS;基于IPv6数据平面的Segment Routing称为SRv6。本文主要介绍SR-MPLS。
为什么需要SR? IP承载网的孤岛问题。MPLS统一了承载网,但是IP骨干网、城域网、移动承载网之间是独立的MPLS域,是相互分离的,需要使用跨域VPN等复杂的技术来互联,导致端到端业务的部署非常复杂。 而且在L2VPN、L3VPN多种业务并存的情况下,设备中可能同时存在LDP、RSVP、IGP、BGP等协议,管理复杂,不适合大规模业务部署。 IPv4与MPLS的可编程空间有限。当前很多新业务需要在转发平面加入更多的转发信息,但IETF已经发表声明,停止为IPv4制定更新的标准,另外MPLS只有20bit的标签空间,且标签字段固定、长度固定,缺乏可扩展性,导致很难满足未来业务的网络编程需求。 应用与承载网隔离。目前应用与承载网的解耦,导致网络自身的优化困难,难以提升网络的价值。当前运营商普遍面临被管道化的挑战,无法从增值应用中获得相应的收益;而应用信息的缺失,也使得运营商只能采用粗放的方式进行网络调度和优化,造成资源的浪费。MPLS也曾试图更靠近主机和应用,但因为其本身网络边界多、管理复杂度大等多方面的原因,均以失败告终。 传统MPLS的瓶颈? 虽然MPLS因其标签交换的思想使其转发平面广受好评,但是MPLS控制平面却因为协议复杂、扩展性差、部署维护困难等问题受到诟病。 LDP是基于IGP算路结果完成标签分发,LDP存在的主要问题是: 依赖IGP,但是LDP与IGP实际是两个独立的协议,会存在不同步问题,导致流量黑洞。 只能通过最短路径转发,不支持流量工程,缺乏路径规划能力。 RSVP-TE虽然实现了流量工程,可以根据业务需要灵活地选择转发路径,但是也存在明显问题: 配置、维护复杂,RSVP-TE协议状态复杂,设备需要交互大量报文来维持隧道状态,使得该协议难以规模部署。 不支持负载分担,难以充分利用网络资源。 SR-MPLS的使命就是既需要保留传统MPLS网络的优点,还需要解决传统网络的困局。
SR-MPLS伴随着SDN思潮应运而生,SR-MPLS技术能够使网络更加简化,并具有良好的可扩展能力,主要体现在以下方面:
更简单的控制平面:无需部署LDP/RSVP-TE协议,只需要设备通过IGP/BGP协议扩展来实现标签分发或同步,或者由控制器统一负责SR标签的分配,并下发和同步给设备。 易扩展的转发平面:SR-MPLS复用了已有的MPLS转发平面,网络设备不做改动或者进行简单升级就可以支持SR的转发,在SR-MPLS中,Segment可以映射为MPLS标签,路径就是标签栈。 SR-MPLS以其简单、高效、易扩展的特点,使其具有很多优势:
具备网络路径可编程能力:SR-MPLS具备源路由优势,仅在源节点对报文进行标签操作即可任意控制业务路径,且中间节点不需要维护路径信息,设备控制平面压力小。 简化设备控制平面,减少路由协议数量,简化运维成本;标签转发表简单,标签占用少,设备资源占用率低。 更好的向SDN网络平滑演进:面向SDN架构设计的协议,融合了设备自主转发和集中编程控制的优势,能够更好地实现应用驱动网络。同时,支持传统网络和SDN网络,兼容现有设备,保障现有网络平滑演进到SDN网络。 SR-MPLS基本概念 segment
Segment表示网络指令,用来指引报文去哪,怎么去。根据生成方式不同,Segment分为3类,分别是Prefix Segment、Node Segment、Adjacency Segment。
SID(Segment ID)
用于标识唯一的段,对应segment的三类,分为Prefix SID、Node SID、Adjacency SID
Prefix SID,也可称之为前缀标签,是针对目的IP地址映射的标签。 Node SID,也可称之为节点标签,是针对设备Loopback口IP地址映射的标签,可以看作是特殊的Prefix SID。 Adjacency SID,也可称之为邻接标签,是每台设备针对自己的接口邻居发布的,用来显示指定数据包的外发链路,且具有方向性,例如P2分配的16024邻接标签,代表需要从本地Interface1接口外发给P4。 Prefix SID/Node SID和Adjacency SID可以分别类比于传统IP转发中的目的地址和出接口。...
VXLAN是什么 VXLAN即虚拟扩展局域网,在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道,采用MAC in UDP(User Datagram Protocol)封装方式,即,将虚拟机发出的原始以太报文完整的封装在UDP报文中,然后在外层使用物理网络的IP报文头和以太报文头封装,这样,封装后的报文就像普通IP报文一样,可以通过路由网络转发。
VXLAN 产生背景 1、虚拟机迁移 虚拟机动态迁移,就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。该过程对于最终用户来说是无感知的,从而使得管理员能够在不影响用户正常使用的情况下,灵活调配服务器资源,或者对物理服务器进行维修和升级。
在服务器虚拟化后,虚拟机动态迁移变得常态化,为了保证迁移时业务不中断,就要求在虚拟机迁移时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移。
为什么一定要同二层迁移 因为如果跨二层域进行迁移,但要保持IP地址不变的话,是无法进行通信的。如下图,S1和S2下是两个不同的广播域,但S1和S2具有相同的网段,在传统的二三层网络是无法实现通信的。因为10.10.11.3跟10.10.11.2处于同一网段,报文不会发送到网关那里,而是发送ARP报文查询MAC地址,准备进行二层通信,但R1作为三层设备,是不会透传ARP报文的,因此无法学习到MAC地址,无法进行报文传输。
在传统的二三层网络中,限制了虚拟机迁移的范围
而VXLAN为何能解决这个问题呢?那就是把这个二层域“扩大”!用VXLAN技术将三层网络变成一个“大型交换机”,这样数据中心的所有VM都处于一个二层域下了。
众所周知,同一台二层交换机可以实现下挂服务器之间的二层通信,而且服务器从该二层交换机的一个端口迁移到另一个端口时,IP地址是可以保持不变的。这样就可以满足虚拟机动态迁移的需求了。VXLAN的设计理念和目标正是由此而来的。
前面提到,VXLAN本质上是一种隧道技术,当源和目的之间有通信需求时,便在数据中心IP网络之上创建一条虚拟的隧道,透明转发用户数据。而数据中心内相互通信的需求众多,这种隧道的建立方式几乎是全互联形态才能满足通信需求。
VXLAN可以提供一套方法论,在数据中心IP网络基础上,构建一张全互联的二层隧道虚拟网络,保证任意两点之间都能通过VXLAN隧道来通信,并忽略底层网络的结构和细节。从服务器的角度看,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心。
而VXLAN的精髓就在于,将二层的报文,“藏”在了跨越三层网络的UDP报文中,在IP网络中,表明传输的是UDP报文,实际上传输的各个VM的二层报文,对于VM来说,就在三层IP网络之上,构建了一个“大二层”网络,只要目的IP可达,它就能将二层报文发送到指定设备。
那么这里就有问题了,为什么不直接将整个数据中心搞成一个真正意义上的二层域呢?
2、虚拟机规模受网络设备表项规格的限制 对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。
前面的疑问便可以解决了,直接搞成一个二层域,庞大的VM数量,会使得二层设备的MAC表项大大增加,而且在二层域中,还会存在环路问题,需要使用STP进行链路阻塞,而数据中心的链路,都是10G、40G的链路,阻塞后会大大浪费链路资源,而使用VXLAN,将三层网络转为一个大型交换机,利用三层网络协议本身的防环机制,不需要额外阻塞链路,提高资源利用率,何乐而不为?
VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。
如果服务器作为VTEP,那从服务器发送到接入设备的报文便是经过封装后的报文,这样,接入设备就不需要学习VM的MAC地址了,它只需要根据外层封装的报文头负责基本的三层转发就可以了。因此,虚拟机规模就不会受网络设备表项规格的限制了。
当然,如果网络设备作为VTEP,它还是需要学习VM的MAC地址。但是,从对报文进行封装的角度来说,网络设备的性能还是要比服务器强很多。
使用VXLAN形成一个“大交换机”后,还面临一个问题,那就是隔离问题。类似于VLAN,这个大交换机,需要将VM进行批量隔离,保证数据的安全性,因此又还要再划分隔离域,分成一个个的“广播域”,那VXLAN怎么解决这个问题呢?
3、网络的隔离能力有限 VLAN作为主流的网络隔离技术,在标准定义中只有12比特,也就是说可用的VLAN数量只有4000个左右。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力显然已经力不从心。
VXLAN中引入了类似VLAN ID的VNI,一个VNI对应一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VTEP(VXLAN隧道的起点和终点,可以是网络设备,也可以是虚拟机,后文会详解)在对报文进行VXLAN封装时,给VNI分配了24比特的空间,这就意味着VXLAN网络理论上支持多达16M(即:$2^{24}-1$)的租户隔离。相比VLAN,VNI的隔离能力得到了巨大的提升,有效得解决了云计算中海量租户隔离的问题。
VXLAN 原理 报文格式 前文提到在VXLAN中,使用了UDP来封装了原始的以太网帧,并且使用物理的IP和MAC作为外层头,那么实际上VXLAN报文长什么样呢?
VXLAN Header
增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。
UDP Header
VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
Outer IP Header...
STelnet 是什么 其实就是SSH(Secure Shell),一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录或文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患,SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。
SSH 工作原理 SSH 是由SSH Serve和SSH Client组成的。在华为的STelnet中,整个通信过程如下:
1. 连接建立 SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。
2. 版本协商 SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号。
3. 算法协商 SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。
4. 密钥交换 服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。
以DH为例,密钥交换思路如下: 协商得到共享密钥K,后续的通信(包括用户认证)数据,都使用该密钥K进行加解密,即下文中的通信过程都经过了加密。
一些问题 在密钥交换过程中,可能会出现中间人攻击的情况。即无法验证对方的身份,例如有个中间人C拦截了A发送给B的报文,该中间人C冒充B与A进行密钥交换,而A仍然认为自己是与B进行密钥交换,那么后续的通信数据就会被B所拦截并破解。因此一般在第一次连接时,会弹出一个提醒,询问客户端是否信任对端(服务端),继续进行密钥交换?信任后该Server会加入到known_hosts名单中,下次连接便不再询问,进入密钥交换。
当然,上面这种情况发生的原因主要是生成的公私密钥对未经过认证,除了上面的解决方案,还可以使用CA提供可信的数字签名秘钥
5. 用户认证 SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。SSH支持以下几种认证方式:
密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。 在密码认证中,还有一种非对称加密的方案,即在原本的加密基础(使用密钥协商阶段的加密算法)上,再使用非对称加密算法进行认证。即Server发送公钥,Client用该公钥加密用户名和密码,Server使用私钥解密得到用户名和密码,再进行比对,实际上就是再加了一层密。
密钥(publickey)认证:客户端通过用户名,公钥以及公钥算法等信息来与服务器进行认证。 password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
all认证:只要满足密码认证和密钥认证其中一种即可。
6. 会话请求 认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。
7. 会话交互 会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互。
SSH 配置 配置步骤:
配置VTY用户界面的支持协议类型、认证方式和用户级别。 命令 [HUAWEI] user-interface vty 0 4 [HUAWEI-ui-vty0-4] authentication-mode aaa //配置VTY用户界面认证方式为AAA认证 [HUAWEI-ui-vty0-4] protocol inbound ssh //配置VTY用户界面支持的协议为SSH,默认情况下即SSH [HUAWEI-ui-vty0-4] user privilege level 15 //配置VTY用户界面的级别为15 [HUAWEI-ui-vty0-4] quit 通过STelnet登录设备需配置用户界面支持的协议是SSH,必须设置VTY用户界面认证方式为AAA认证。...