ccie service priovider 学习笔记-3 MPLS
2023-01-29 15:49
Video27
标签转发并不是用于替代ip转发的,有些场景必须用到标签转发,如vpn场景,因为isp的中间设备不存在私网路由 ,用ip转发无法实现。当前ip转发和标签转发的转发效率已经差不多,原因是现在存在fib表项。
最早期cisco产品的转发机制是进程转发:报文来了,依靠cpu进行分析,通过查表找到出接口、nh,封装报文转发。此方法效率太低,每个报文过来都需要cpu去查询。
解决方案:快速转发-一次查表,多次转发,本地会存在一个缓存表。一个流的第一个报文过来后,缓存表会缓存这条流的信息,是通过五元组的(s/d port/ip ,protocol)方式来唯一的匹配一条流。 如果根据一个报文的五元组在我缓存表里找不到对应的条目,就需要将这个报文交给cpu去查表转发,然后cpu会将查找后的信息缓存到cache里(5元组+出接口+nh+arp做绑定),后续流量过来会先去查cache。这种方式的弊端是针对每条流的第一个包,因其不存在于cache中,都需要由cpu处理,另外cache是有大小的,如果cache满了,应该有老化机制。但如果满了后续又有新的报文,那针对后续的报文仍会使用进程转发。
方案3,fib表项(接口板上,路由信息+nh信息+出接口信息+arp+标签信息),报文来了之后直接查找接口板的fib表项转发。这样可以节约时间,提高转发性能。正是因为fib表项的存在,ip转发和标签转发的速度都很快,通过查一张表就可以转发了
Ip/标签转发都是per hop行为。

B发送给A的数据包,被中间的C丢弃,B是可以感知的。不考虑trace,通过icmp的差错应答就可以实现。
一个单播报文在转发过程中被丢弃(指中间的转发设备),这台丢弃的设备会向报文的发起者发送icmp的差错应答(协议硬性规定的,而广播和组播即使被丢弃也不会回复差错报文),通过差错应答告知因为什么丢包的。被目标设备丢弃的话不会回复差错报文(只有在协议层丢包时才会回复,而在应用层丢包不会回复)
icmp可以通过信息报文来检测网络的连通性,同时可以通过差错报文来反应网络的问题。通过type(包含网络不可达,如3)+code(包含因为什么原因导致网络不可达,如3-目标地址不可达)来反应问题
cisco中可以在ping时根据回显…, uuu(nh设备是因为不可达而导致丢包的), mmm(nh设备因为策略问题导致丢包) ,!!! ,就能直接分析出是什么原因丢包的。不同的icmp差错报文,在cisco设备分析后的回显信息不同,华为就不行,只能抓包看。

igp只能告诉你链路是否最优(igp只看度量值),但无法告诉你是否拥塞,只能你到达那才能发现。而te可以动态获取路径信息,然后针对路径进行重规划。同时te可以指定s-d经过的路径,不完全依赖于igp(类似tp里的指定节点和路径)
atm就开始使用标签交换,帧中继也是一种标签交换技术(交换的是dlci号(数据链路连接标识符)-最早期的l2vpn),之后才出现mpls。
mpls有两种标签分配方式:基于平台的(以太和帧中继是基于这种方式);基于接口的(ATM采用这种,从该设备上不同接口上发出去,会采用不同的label)
前缀在mpls称为fec 转发等价类,需要针对每一个前缀都生成一个label

分配方式基于平台的,A就会针对1.1.1.1/32生成1个label,然后传递给2和3;而基于接口的,A就会生成2个label。
目前ATM使用,主要是基于低速卡的,客户想买个专线,通过arm或帧中继来接入,这种接入方式一般都是E1(2.048M)或T1的带宽(1.544M),只是用来传递重要数据,带宽已够用,不需要带宽大,只重视私密性,但专线费用会贵。so当前低速专线还是有用处的。主要还是看客户需求。(atm主要是在接入侧被限速了?check)

设备接收到标签报文,就去查lfib表,接收到ip报文,就去查fib表。
设备间互相通告标签并将标签放入lib中,然后计算一条到达目标前缀的路径,即lsp。开启mpls之后,设备才具备转发标签报文的能力。但想要具备生成和通告标签能力,需要启用以下标签分发协议或静态:

Lu针对单播路由通告bgp的标签;mpbgp分配的标签并不用于流量转发,而是为了区分客户流量;想要IGP来分配标签,需要开启SR功能。LDP的选路时依赖于IGP的,IGP的计算结果是啥,就用啥.
LDP默认会为以下3类路由分配标签(哪个厂商都是,只不过为哪些具体路由分配存在差异)

某些厂商可以开启ldp为bgp分配标签的功能,但很少用,因bgp可以自己分配标签。华为是针对这三类里/32的路由分配标签,而cisco是针对这三类里所有路由分标签。
要区分路由类型和具体路由

通过流量/路由方向来判断上下游设备
LDP


标签顺序,如上1,2,3
分配方式为有序(只有接收到下游设备为该fec分配的标签后,本端才可以为该fec分配标签):则2只有在1为1.1.1.1/32分配标签后,才会为1.1.1.1/32分配标签。如果1没有分配标签,2和3均不会为该fec分配标签,则3因为没有收到标签,无法建立到达前缀的lsp-通过控制层面来影响转发层面。有序的分配方式可以保证端到端完整的lsp。
独立(每台设备都可以独立为前缀分配标签,而不需要等待下游设备分标签后再分配标签):很可能只有中间设备分配标签了,终端接收到标签后,会判断lsp正常,但实际lsp是不完整的。(check 2和3都配置了ldp而1没配的场景?check)
Cisco rs中有一个叫标签分错的场景,因其采用的是独立的分配方式

cisco中将loop接口宣告进ospf中,其网络类型就是loop,通告ospf路由时就通告的32位的主机路由。(check下华为,华为也应该是这样)
1为/24位路由分配标签,而2和3为32位路由分配标签,导致标签在2上关联不起来(关联标签的时候会看前缀,本地是32位的,而接收到的是为24位前缀分配的标签)。解法:1将loop接口掩码改为32位;2将loop接口的网络类型改为ptp/broadcast
标签分错的原因:在转发路径上的前缀不一致。这种问题还会出现在路由聚合上

比如在ABR上进行聚合,造成源到宿转发路径上的前缀不一致,导致lsp建立不起来(so 聚合在lsp的网络中是很大的问题,不能聚合)
----------------------------------------
2023-01-30 12:37
Video 28
mpls转发的最大用途在于vpn的网络+bgp的网络。路由条目不是每台设备上都存在的,需要用到mpls,穿过去
bgp的路由黑洞问题,使用非直连设备建立bgp peer 并将bgp路由通告过去,但i因为中间设备没有开启bgp,导致p转发过不去。
fec:将具有相同行为的流称为一组转发等价类。可简单理解为每一条路由前缀为一个fec

利用bgp-lu将两端独立的ldp lsp进行关联,rr间需要建立mp-bgp peer关系

在seamless场景中,如果配置的是同一个路由协议的不同区域,abr/level-1-2设备会自动进行区域间路由的互通(没有减轻设备的压力,协议自身的多区域,会自动实现多区域的关联)。so需要在isp的网络中划分为多个不同的igp的区域,如下。而使用进程进行分割,默认不会进行关联,想关联就做路由重分发


seamless场景下的3层标签
iso开启lu功能,在ipv4地址簇下敲send label,Iso xr上存在独立的label unicast地址簇。如果一端为unicast,另一端为label unicast,是无法建立邻居关系的。
------------------------------------------------
2023-01-31 9:04
Video 29
有了标签之后会生成转发层面/lfib,其作用fib类似,只不过针对的是标签报文.
在ios上开启ldp只需要在if下开启mpls ip (cisco这个操作会有两个功能:1在接口开启mpls的功能;2.开启标签分发协议-默认使用TDP。即cisco没有把mpld和标签分发协议分割开)

地址族:ldp可以为ipv4和v6分配标签
mpls ldp下的router id :1.唯一标识一台设备;2.ldp下存在一个transport address,在不指定的情况下会使用router-id(需要保证这个地址是真实存在的,否则会造成ldp的会话建立不起来)
Ldp建立过程分为两个步骤(基于udp和tcp) 1.建立邻居,通过组播方式来发现邻居建立邻居关系的;2.建立会话,基于tcp的(前提是到达邻接的地址是通的-transport address,tcp不通会话必然建立不起来),需要用到transport address。

hello报文是发到组播地址224.0.0.2-所有开启组播功能的路由器。接口开启mpls ip就完成建立邻居了。

在ldp中,是由transport地址大的一方发起会话。源端口号随机,但目标端口号为646(ldp使用的端口号)//看tcp connection项,左侧即为tcp会话的发起方
Peer id中的:0代表标签空间(标签的两种分配方式)。0表示每平台每标签(一台设备为1个fec只分配1个标签,无论从哪个接口发出去);非0代表每接口每标签,只用于atm。现网的radio接入、专线业务-不需高带宽,但需要端到端的链路可以使用atm或帧中继。atm使用标签来转发数据的话,是每接口每标签的。
state:即为会话的状态(只有ldp的会话是oper,才能去交互标签信息,建立lsp。只建立邻居关系是不够的)


非最优路由会被标记为inactive存放在rib中,但rib只会将最优路由下发到fib中。转发表项才是真正用于转发报文的。ldp会将某条fec的in out标签进行关联,生成lsp,将lsp的信息下发到lfib中。



fib用于将接收到的ip报文迭代下一跳lsp tunnel转发。
Show mpls forwarding 查看lfib表
通过ldp交换的标签,被放在LIB中,可以知道邻居为前缀分配的标签。最后通过ldp将标签关联生成lsp,存放于lfib
Ldp 标签的分发和lsp的关联都依赖于igp(ldp不存在任何的选路机制)


Mpls 标签和标签栈



通过nh地址去查找arp表项,找到mac地址做关联。因为转发标签报文时,也需要将2层重写,有一个mac。

(以太网类型肯定这样,但ptp类型就没有mac地址。ptp类型的通信,check ppp直接成帧。因为点到点链路上无需知道对方的数据链路层地址,就使用全1的地址)

------------------------------------------------------------------------------------------
2023-01-31 13:08
Video 30

报文进入不同网络,需要打上不同的优先级(本质就是标记)。


加一层标签,报文会增加4B。加多层标签后就需要考虑报文分片的问题,就需要调整mtu值。

Ldp over TE也会使用到3层标签,使用te来传输ldp。ldp不是连续的,在下图两端使用ldp,而中间使用te。设备两端接口配置te tunnel后,在te接口下开启ldp,相当于用te的tunnel来建立远程的ldp会话。

Te frr也会用到3层标签,frr需要使用2层te标签,内层还需要1个vpn的标签。可以使用te而不使用ldp来分配标签建立lsp,穿越isp的网络,在这种场景中开启te frr就会产生3层标签。这时如果使用option c,就会存在4层标签。

Ldp over te的场景

通过S栈底位判断是否为最底层的标签
由于mpls插入在帧头后面,so需要在帧头里去标识后面封装的类型。以太 type(2B:用于标识后面封装的协议类型):0x0800 代表ipv4;0x86dd代表ipv6。0x8847代表单播,0x8848代表组播。

pop动作只能弹一层标签
两种模式,帧模式和信源模式(只用于ATM):pop动作只能弹一层标签。帧模式封装是直接在报文的二层头部和三层头部之间增加一个MPLS标签头,以太网、ppp采用这种模式


pim不能为组播路由分配标签,组播路由表项还是基于ip进行转发的。
现在多了一个mldp表项(多点ldp),可以实现ptp以及mptmp的互通。如何实现ptp以及mptmp的标签转发?前提是针对目标需要建立条lsp。如在一个节点上,会存在不同的lsp-不同的lsp对应到达不同的pe端,流量到达该设备后会同时转发给多台pe设备。通过该方式实现ptmp的通信。该功能的实现依赖于mldp来生成多条lsp。这种方式只存在于组播vpn或mldp的场景。
在二层vpn和evpn中针对bum报文,接收后要进行泛洪,做法:进行本地复制然后发给所有人,达到组播的效果。这种方式更简单,如果使用mldp,就需要所有设备都支持mldp才行,现网用的少,二层vpn和evpn也不会采用这种方式进行bum流量的转发。
Mpls te依赖于ospf或isis来通告链路信息的,通告出去后通过cspf算法,计算选择出一条约束的到达目标前缀的路径,针对该前缀通过rsvp做反向的资源预留和标签的分配,这样tunnel才会起来。te的好处:1.可以实现针对某些流量指定路径转发,igp就无法实现指定路径转发,更改cost值会影响全部路由;2.可以实现frr,ip frr是针对前缀来说的,而 te frr是针对te的隧道来说的(在ip frr出现后te frr的作用越来越小,目前主要用到指定路径转发)。现在sr出来后,te就不用了,因为sr存在te的功能。sr存在srbe和srte两个功能。
Constrained Shortest Path First 是带有约束条件的SPF算法。其约束条件: Cost(IGP本身具有)、带宽、链路属性 。CSPF算法路径计算的过程不是为了发现到所有目的地的路由器最佳路径而设计的,而是仅仅为了到达LSP隧道的终点。
想学好sr,就需要先掌握ldp和te的功能和缺陷,在sr中怎么实现相同的功能,和避免相应的缺陷。
qos是指针对标签实现端到端的qos。
mpls的php 目标就是为了优化转发(php是mpls的概念)

末端设备需要查两次表项,依次查lfib和fib,效率低。假如在倒数第二跳设备上将所有标签弹掉,将ip报文转发给最后一跳设备,则末段设备只需要查一张表项,减轻设备压力。

Implicit 隐式空标签3(是mpls的概念,而不是标签分发协议的概念。0-15的保留标签是mpls来管理的,和标签分发协议没有关系,so bgp以及rsvp-te都能分配3。V4和v6都是3)。0代表ipv4的显示空标签,2代表ipv6的显示空标签,1代表路由的告警标签。显示空标签用于qos,是因为在标签转发网络中需要实现端到端的qos-保证端到端优先级不改变。
标签空间在0-220

php是自动开启的,标签值为3,代表需要弹出顶层标签。上图如果配置的是ldp,则站点1只会为直连路由分配3的标签(只为本地始发的路由分配3的标签,我是最后一台。igp和静态的,会分配>16的常规标签)

显示空。下游设备在接收到标签值为0的标签,就知道这是显示空,会直接弹掉该标签,避免查lfib,直接去查fib表项。
0标签用于end to end 的qos

isp通过vpn的方式给客户提供了专线,那客户流量在isp网络中传递需要能保证带宽和安全。isp和客户签订sla,有带宽和延迟指标。
两端开电话会议,需要保证视频和语音流量的低延时传输。首先在bj的客户网络中将这部分流量标识出来并优先转发。流量进入isp的网络,标签的优先级肯定会被改写。
一台设备在收到报文和发送报文时默认都会进行qos的处理。如ip报文进来后会根据ip报文的优先级去映射本地内部的qos优先级别-每个厂家这个叫法不同。cisco称为qos group,其他厂家会叫pb qos(华为的本地优先级?PHB ?check)。转换的目的是为了方便处理。后续在代码进行处理时可以根据这个内部优先级设置统一的策略。出去的时候,还需要将qos group映射为出方向报文的优先级。

CE1在发送报文时设置ip dscp为5,PE1没设置策略时,在接收到dscp=5时,会映射为qos group 5,PE1在将报文发出去时会变为标签报文,需压入两层标签。标签里的exp值应该填充为5-因为没有配置策略,在出去时会根据qos group值去映射标签的exp。由于在封装报文时加了多层标签,可以选择性的进行修改,比如可以针对顶层标签来映射qos group,而vpn标签直接映射ip的或者采用uniform方式,不管几层标签,设置统一的标签exp值。
假如现在出去时设置策略,根据qos group映射顶层标签的优先级,比如将顶层标签优先级改为4,那从pe1发出时的顶层标签优先级就变为4了(ldp为4,vpn为5,根据策略将顶层标签的优先级改了)。p节点(也可以设置策略,可以配置哪层标签来映射qos group ,默认情况下只会将顶层标签映射qos group),ldp标签为4,而vpn标签的5。在报文出p节点时,针对顶层标签swap。swap之后的外层标签exp还是4(p没做策略的情况下,通过qos group来进行的映射) 。报文到达PE2(4), 使用顶层标签的优先级来进行映射,然后弹两层标签,转成ip报文时会根据qos group的值来映射ip的dscp ,由于是根据顶层标签的exp来映射的qos group,在PE2出去时也会将ip dscp改为4。进来时5,最后出来是4。(check 在isp网络中,只需要在两个端点pe处取做策略,调整qos group,中间的p节点不配置策略,直接映射透传走了?)
so需要一些策略来进行映射。正常情况下在P上,针对标签的动作是php,报文就是带一个vpn标签出去,弹一层标签不修改标签的exp值(check视频 可以指定在弹出标签时是否向下映射?)。这里会根据vpn标签的exp值来映射qos group 5,发出去时映射为ip dscp 5。这种场景下可以实现端到端qos的一致性。但下述场景就不行

在pe1的出方向接口上做策略将顶层标签的优先级值设置为4。Pe2上在入口做策略,抓取顶层标签优先级为4的所有报文,将这些报文的qos group映射为5,其他报文全部映射为2。
这样报文到达pe2(经过P节点时php后),因为不能匹配no 1策略,匹配上no2策略了,映射为qos group 2,在发出给ce时映射为ip dscp 2。这种场景不能让p1提前弹标签,引出显示空(就是为了携带exp值),p1发出报文时不弹标签,仍保持三层标签,最外层为0,但优先级还是4. 标签报文到达pe2就正确匹配上策略。在pe2上发出报文时,将qos group 映射为ip dscp为5。
即在isp网络中,存在针对exp/dscp值策略的情况下,就可能导致客户端到端qos不一致。isp网络中的qos不止用于限速,还要转换报文中的dscp或exp值,因为需要转化为自己的内部值-优势为,可以针对流量进行统一的管理。ex,同时针对多个客户针对提供低延时的流量,不同客户的流量到达isp处,都将其标识同一的标记,优先转发-不可能为每一个客户都生成一个策略。
需要在次末跳配置no explict label,配置为显示空。在存在策略的情况下,需要用到0标签,实现端到端qos的一致性。
----------------------------------------------------------------
2023-02-01 11:28
Video 31
Ios if下开启ldp:在if下敲mpls ip。默认使用TDP,可以使用命令mpls protocol改为ldp
mpls和ldp的关系:
Mpls-多协议标签交换,如果设备只开启mpls,不配置标签分发协议呢?check
TDP:cisco私有的,T代表tag
配置端到端的qos时,就不能使用php,需要保证标签在最后一层被弹掉
explict label是显示空,已确认
出方向标签为untag,会弹出所有标签

在isp的网络中,尽量不要用聚合,因为会造成标签对应的前缀不一致,导致标签无法关联生成lsp。要使用,也只能用在边界设备上。
MPLS的防环和TTL的处理

Ipv6中类似ttl功能的字段,是hop count,也是8 bit


PE上将ip封装为标签报文后,标签的ttl值,方式1 .可以直接复制ip的ttl(ttl propagation) ;方式2,直接将label 的ttl设置为255

设置255可以避免泄露isp内部网络设备

在传统的ip转发中,ce1上发起tracert,ttl设置为1,报文到达A,ttl-1=0丢弃,然后通过icmp差错报文回复ce1,告知其为什么丢包了(这个报文应该是继续转发的,因为dip不是我),然后ce1就将ttl设置为2,重复进行上述流程。
在mpls转发中,由于核心设备并没有客户的路由,就会将icmp差错应答继续向下传,直到边界d。边界设备在收到icmp差错应答后,能帮忙转发给ce1,so在ce1上tracert时可以看到核心网设备的ip地址(逐设备都是这样干的?check,广电现网的状态)

核心网设备泄露后,可以根据tcp和udp的port号进行ddos攻击//攻击者要攻击某一个端口,继而影响上层的业务
上图这样C上的标签的ttl大于ip头部的ttl,是不往ip头部复制的。只有当标签的ttl小于ip头部的ttl才复制

ldp协议
Igp+ldp,igp用于路由收敛,选路;ldp是基于igp的选路生成lsp,实现标签转发
sr阶段,一个协议完成上述两个协议的工作。选路和标签分配都是igp一个协议独立完成的,网络更加简单和稳定(在之前的场景中,因为ldp和igp不同步,需要考虑联动性,会存在问题)

ldp的算法是依赖于igp的,他自己是没有独立选路的算法的


---------------------------------------------------------------------------
2023-02-01 14:27
Video 32

会将所有宣告进ldp的接口地址通告出去,会在两个nei之间通告互联的接口地址(上图address),这样做的原因:

A-B之间存在多条链路,没有配置为lug,在A-B之间的多条链路上都开启ldp的功能,两者间可以建立1个ldp的邻居和1个ldp的会话。对方可以判断链路属于一个设备,因为在ldp里也存在r-id,华为里称为lsr-id,该id通过hello报文传递。B在3条链路中都收到hello报文,但其通告的r-id都是1个,说明报文来自同一台设备,就只和对端建立1个ldp的nei,会话也只建立1个。建立tcp会话的地址是transport address,如果不配置,默认使用router-id。transport address是通过hello报文发送的。r-id选举和ospf类似,会先优选逻辑地址大的为r-id,如果没有逻辑接口就选择物理接口地址大的作为r-id。

在上图,每个接口上都指定接口地址为transport address。hello报文在不同接口发出去时,都会使用这个接口的地址作为transport address。B收到的3个hello报文中r-id相同,但hello报文中通告了不同的transport address地址,TA1/2/3,会使用TA地址大的来建立会话。那两台设备之间通过多链路互联,使用loop接口地址还是接口地址作为transport address好呢?用loop好-可以提高稳定性,后续只要保证到达对端loop可达就行。由于A-B间只建立了一个邻居关系,当A-B间有一个链路端口,并不会影响双方的邻居关系。因为使用了address报文-将我用于和邻居互联的所有接口地址通过该方式通告给peer,B就能知道和A通过3条链路互联,就算其中一条链路断了,并不会影响双方的邻居关系。(check,那所有互联接口的发送的address报文,都会包含所有互联接口的地址)。通告邻居间由几条链路互联,通过address消息。
在接口下no mpls ip,这个if不在开启mpls和ldp功能,这样该if就会被withdraw
邻居的发现和建立是基于udp的,而会话的建立是基于tcp的。Session message是建立在会话之上的,需要tcp会话建立成功(在tcp之上建立的ldp session),再去发送session message。AB通过3条链路互联,肯定是在不同的网段。用于建立ldp会话的地址就是transport address
在DOD的标签模式下,会发送label request 报文


ldp的hello报文可以使用单播和组播两种方式发送。组播主要用于发现直连链路上的邻居关系(和ospf类似),非直连的邻居关系就需要采用单播的方式发送hello报文。

:1 代表每if没标签,只有atm的网络能看到每接口每标签

tcp会话由两端所通告的transport address 地址大的一方主动发起

copp:cpu的policy,在cpu的控制层面做acl,控制哪些报文不交给cpu处理。check copp怎么配置?

ldp的peer,只要收到hello就能建立;而会话需要看通告的transport address是否可达。上图情况,A上没有配置r-id,系统会默认选择ip地址大的 loop2,但该地址未宣告进igp。导致B无法和A建立ldp会话。force参数,强制r-id立即生效,否则需要等重启进程



cisco的ldp是可以为ipv6分配标签的,so这里有ipv4选项
Local binding:label -本地分配的标签。55通告的是显式空

targeted ldp就是remote ldp
在l2vpn为客户分配标签可以用ldp(matini-all厂商支持)和bgp(conpela-仅华为、cisco、Juniper支持)
frr对企业没啥用,但适用于isp,因为其对客户提供的sla业务,要求50ms内的故障收敛。
Auto frr,lfa继而引出remote lfa
在设备的一个接口上开启lfa,就会为该接口上所有前缀,计算备份下一跳

转发ip报文时,1-2之间链路故障,1会压入到达4的标签,将报文通过lsp转发给4,4分析ip报文的dip然后将报文转发给2。
但此方式在转发标签报文时就有问题,1-2之间链路故障,1内层是2分配的到达2.2.2.2/32的标签,外层标签为到达4的标签,报文到达4后,因为内层标签不是4分配的,被丢弃。这种方案的问题点在于内层标签不是4分配的。
解决方法:让4为2.2.2.2/32分配标签并告知1-通过remote ldp。ldp邻居只能直连邻居通告标签,即ldp只是一跳一跳的。然后1就会将4通告的到达2.2.2.2/32的标签作为内层标签压入,外层再压入到达4的标签,完美解决之前的问题。
Remote ldp nei需要手动指定
Vxlan+evpn(dc只是用到evpn的一小部分),只是使用evpn作为分布式网关(在vxlan总最重要的作用,通过evpn通告mac地址条目才能实现互通),以及通过evpn保证vxlan的保活,因vxlan没有保活机制,因vtep在建立完成后没有保活机制。Vtep tunnel都是手动配置的,需要通过evpn实现tunnel保活和检测tunnel连通性。
而evpn最重要是用于evpn+mpls场景中(isp),用于代替传统的2层vpn。Vpws/vpls/hvpls(Hierarchical Virtual Private LAN Service),即分层VPLS,是一种实现VPLS网络层次化的一种技术。)
isp当前主推的现网架构 为sr+evpn,之前的igp+ldp以及igp+rsvp(这是te的底层部署?,check)底层部署全都不需要了,全部换成sr



这里ldp的nei和session是分开维护的
Ldp nei:利用hello报文;session:通过keepalive报文维护

所有被宣告进igp的接口都会开启ldp的功能


---------------------------------------------
2023-02-02 21:30
Video 33
vpn是isp的增值业务。帧中继是最早期的2层vpn,isp可以通过帧中继的方式实现端到端的业务。在帧中继出来前使用的都是专线-一条物理线连接两个点,只能给一个客户使用,无法复用。帧中继出现后才实现了链路的复用,对isp来说得到了增值。vpn就是这种增值业务,
客户购买vpn的需求是买专线,如何提供安全性和隐私性(vpn和专线的区别,check)

客户端边界设备称为ce,为何广电的ce在自己这?check
3层利用vrf进行路由表的分割
在2层中,vlan的目的是分割mac地址表,可以将某些接口放到独立的vlan里,sw在收到数据帧只会查相应的vlan的mac地址表项,实现了2层数据的隔离

pe会为连接的每一台CE(分别针对一个客户),分配一个vrf,从而实现路由的分割
isp核心网underlay网络部署采用isis:简单、适用于扁平化部署,扩展性强,便于区域的分割和合并。
在核心网上通过bgp传递客户的路由,称客户的路由为vpn路由-只有ce和pe设备上能看到这些路由条目,isp上的中间p节点看不到这些条目。

在vpn场景下,由于p节点不存在vpn/客户的路由,所以不能使用ip转发,只能使用标签转发

配置ldp,在两端pe间建立端到端的lsp,使用这个lsp tunnel来承载vpn流量
配置bgp的目标是在pe间为客户传递私网路由
Ce-pe之间互联如果使用bgp的话,只能使用ebgp,cisco没有ibgp的解决方案。华为里可以选择用ibgp在ce-pe之间做互通,但需要使用伪as no:为防止ce和pe交互路由环路
的问题。
未来的趋势就是evpn+sr

Ios xr 配置宽度量开启后不仅字段会变长,还会支持更多的功能,如ipv6,给路由打tag,te都需要打开宽度量



需求:isp需要实现客户的vpn接入,需要新增vpn地址簇的bgp来传递vpn的路由条目
没有使用bgp前,如图的解决方案为使用igp的方式传递客户的路由。在isp核心网内为每一个客户创建一个独立的igp进程,中间链路采用子接口的形式互联,一个子接口代表一个客户,将子接口宣告进igp的进程中,实现通过igp的方式传递客户的路由条目。缺点:在客户量很大的情况下,isp的每台设备都需要维护客户的路由,会耗尽isp设备的资源;配置量大,扩展性大。

一跳一跳传递vpn路由条目,但p不需要知道vpn路由(ip转发就需要,因ip是逐跳转发的)

Now
利用IGp的路由建立lsp,用lsp tunnel来承载客户流量,而 tunnel的转发是利用igp转发的。
使用bgp来承载大量路由的原因:
igp主要是用于直连设备建立邻居关系的,非直连也可以建立邻居关系,但少见,如ospf的shamlink,isis肯定不行-没有shamlink。可以在两台设备间配置gre tunnel,通过gre tunnel来运行igp的协议;igp承载的路由量是有限的。
bgp因为是基于tcp的,可以在非直连设备间建立peer关系;基于tcp,更好的保证数据传递的可靠性;触发更新,节约带宽;bgp协议没有路由上限,上限只是你设备性能的上限;bgp是基于tlv的,可以增加扩展内容,传递更多的属性。




rd的作用:实现地址复用,解决地址重叠的问题,只要保证客户配置的rd值不同就行。假如a和b通告相同的前缀,就必须加rd以示区分。否则pe2上就会收到一样的前缀,pe1也是有两个一样的前缀,但其可以通过vrf知道这俩前缀来自不同的客户,但pe2就不知道了。Pe2会认为是一模一样的前缀,进行优选1条,会造成A和B之间只有一个客户能收到路由。
RD+ipv4形成vpnv4路由后,pe2就会对整体进行比对
------------------------------------------------------------
2023-02-03 12:29
Video 34

rd目的是实现地址复用,是基于前缀的,在每通告一个vpn前缀,都会通告一个rd值,但rd不能作为vpn的唯一标识来使用。
pe在传递客户ABC的路由到对端pe后,如何区分是哪个客户的。rd是能区分用户,但是仅限于本地(只在一台设备上是唯一的),对端pe可能不受你控制。so引出rt,来唯一标识客户。


Bgp-4 NLRI属性来通告前缀;bgp 4+使用MP-NLRI属性来通告。都会会同时通告rd+前缀信息。
RT通过扩展团体属性传递。
团体属性就类似于igp的tag



将bgp引入rip要指定跳数


接收时pe先区分路由条目,再判断路由应该分配给哪个客户
在ip转发网络中,有路由就能通;但在标签转发网络中,尤其是vpn,有路由并不一定能通。
一层标签方式:ce要访问1.1.1.1/32,将报文转发给pe2,pe2查对应的vrf表,nh为pe1,确定是走隧道lsp(ldp标签)到达pe1。压一层标签给pe1,pe1查全局路由表,找不到对应的条目,就会丢包。这种方式适用于普通的mpls网络。
而三层vpn场景需要两层标签,引出vpn标签-由pe设备来分配,流量互访压两层标签。这样报文会携带vpn标签+data,到达pe1,pe1就能根据vpn标签,找到对应的vrf表。而普通mpls场景只需要用到一层标签

ospf和isis为前缀分标签-这就是sr中用igp为前缀分配标签



配置多宿主接入会用到soo属性(eigrp有,bgp也有该属性),为保证可靠性,一台ce连多台pe。pe连接多台ce的场景有么?check

--------------------------------
2023-02-07 9:36
Video35
Ce-pe互联,isp网络中不会使用eigrp互联


两端ce-pe互联都使用eigrp的场景:
eigrp有两种类型的路由,1区域内部路由(cisco中使用D标识,type 128),2区域外部路由(cisco中使用DEX标识,type 129)
在客户的网络中,为了保证网络的稳定性,会选择多条链路接到运营商,保证一条链路故障,不会受到影响-称为多宿主接入:CE端连接多个pe,但会带来路由环路的问题

Ce1上通告的1.1.1.1/32路由,会通告给pe1和pe3。Pe1和pe3双点双向重分发后,pe3就能通过pe2和ce3都收到该路由,根据ad值会优选通过eigrp通告的(bgp ad更大)。由于pe3还需要将eigrp重分发到bgp,又会将该路由重分发回骨干区域了,成环-路由回注。根本问题在于ce连接多个pe,但连接一个pe又存在单点故障问题。
不同路由协议中的防环机制不同,eigrp中用到soo-eigrp的扩展属性,其也支持tlv。增加soo tlv,可以理解为一个值,该soo值在pe画圈的if上配置(针对if),pe1在将路由重分发进eigrp时,会为该eigrp的路由打上soo的值,比如1:1。最终在ce3传递给pe3的eigrp的路由中也会存在1:1的soo值。如果在pe3接收eigrp的接口上也配置了soo 1:1,收到这条路由发现soo相同,判断成环,就会丢弃。eigrp的soo是基于接口来配置的。bgp的soo是基于nei来配置的。
eigrp可以提前计算备份路径,当主路径down之后,e不需要重新计算,只需将备份路径升级为主路径就ok了(这里就涉及一个写入fib的时间?check);可以实现非等价负载分担-rip,ospf,isis都做不到,这些路由协议只能在cost相同时实现等价负载。bgp也可以实现非等价负载分担。
其他路由协议现在通过ip frr实现备份路径。cisco也开始放弃eigrp,考试中 不再有了
如果两端都运行的是eigrp,isp只是用来透传数据,应该让两端的客户看成在同一个eigrp的as内,做法:1.在重分发时让bgp通告eigrp的路由属性来实现,比如通过路由类型。以及通告路由的参数。Eigrp cost的计算是通过参数公式来计算的(带宽、延迟、可靠性、负载、mtu,后三项一般为0),ospf和isis只是通过带宽来算

在将eigrp重分发进bgp后,bgp利用团体属性传递用于cost计算的参数到达对方


ce-pe互联使用ospf

ospf解决路由环路的方案

tag字段只存在于5类和7类lsa中,rfc规定死了。
ospf理论上应该看两边在同一个area0内部,如何标识两端在同一个区域内,把ospf重分发进bgp要标识ospf路由的信息(就和eigrp类似了,通过bgp传递,然后在对端将bgp重分发进ospf再还原路由属性)
Rfc4577:



ospf路由在重分发进bgp时会携带如下四组路由信息:
第一组:
Domain id:可以配置,用来标识一个域。如果不配置默认会使用进程id来标识domain id
domain type:用于标识domain的类型。两端的 domain的type应该相同
domain value:可以自定义。通过domain type和value来做客户设备的标识-每个客户都有一个独立的ospf进程
第二组:
Route type:标识lsa的类型。将ospf路由重分发进bgp时,就会标识路由的类型。针对5/7类lsa,还需要设置是oe1/2,on1/2
第三组:
本设备的router-id:ce的
第四组:
Area-id:用于标识互联的区域

针对不同类型的lsa如何防环

如果pe端接收到bgp的路由里,携带了ospf的信息,在将bgp路由重分发ospf里时,会参考这些信息,如果信息中包含lsa,并且lsa的类型是1,2,3,重分发为类型3的。前提:1.对比domain id (如果两端的domain id 不同不会参考这个值,直接重分发成lsa 5);2.如果domain id相同就去看domain type (不同也是lsa 5);3.看value值。如果要想ce收到的对端传来的是 lsa 3,就需要保证上述三条都相同。
如果一样就参考通告的lsa类型,如果是1,2,3就直接通告为类型3的。这样做不合理的地方,本来是1,2的O(域内路由),也变为3 的OIA(域间路由)了,解决办法就是shamlink,将两端连接到一起,就是在同一个区域了。
当bgp路由重分发ospf时,参考的lsa是1,2,3,通告成域间,会在3类lsa中的dn位置位(option bit位)。option字段在报文和lsa中都会携带,如hello,dd,lsa头部也会携带。如果down bit置一,就说明开启防环的机制。bgp重分发进ospf的三类lsa dn位置一,该路由由ce3再传递给pe3,pe3只会接收该dn置一的3类lsa ,但并不会用改lsa选路。可以在pe3的lsdb中看到该lsa,且dn置一,只接收并不参与路由选路,就防止了环路。在pe3上就不存在这条路由,也就不会将这条ospf重分发进bgp。
重分发只会重分发rib表中的最优路由条目;本地network这个路由协议的接口路由条目。
针对外部或nssa路由,有两种方式防环:1.将lsa的dn置一;2.在lsa里设置tag值,长度为4B(只使用了2B来匹配as,如果使用4B的as no,就需要启用全部4B),可以包含bgp的as no(2B)在里面。Pe3收到带这些tag的ospf路由,会优选,但不会重分发回bgp-ospf里,因为携带的tag和我本地的as no相同(与dn位的区别在于,在于本地会优选,但不会重分发,类似用tag做了过滤)
各厂商实现机制不同,在cisco中,只会将3类lsa将dn位置位。5 7不会置位,只会设置tag。对端pe会根据tag 来匹配自己的as no ,就优选但不会重分发回骨干区域。
将bgp重分发进ospf时,如果是域间路由,会将域间路由的dn位置位。
在pe设备上配置了基于vrf的ospf进程,那这台设备就连接到超级骨干区域,假如pe3,问题:pe3会认为自己是abr设备,即便这台设备上没有area0。Abr 来自area0的3类lsa可以接收并计算,但来自非骨干区域的3类lsa只接收不计算(那关闭dn 检测就能计算了check)。真abr只接收从骨干区域传来的三类,非骨干区域传来的三类就证明有环路。pe设备即便配置的不是area0,照样是abr设备-因为配置了基于vrf的 ospf
之前的概念是一台设备多个接口划分到多个区域,并且必须有个if在area0中,同时在area0中有活动的邻接关系,就是个abr设备,称为true abr。没有活动邻接关系就是假的abr设备。
解决方法,重新规划网络。在vpn场景下,ce端不能进行多区域部署,pe不会接收来自非骨干区域的3类lsa

3仅接收不计算lsa,就说明本地没有该路由,就不会转换3类再传递到其他区域。因为我本地就没有路由,为了避免路由黑洞问题,并不会生成新的三类

区域0的路由信息,由ce2发给pe2,以类型3的lsa通告。但pe2也是一台abr,同时从非骨干区域收到一条3类lsa,这条lsa(CE2直传的)在pe2上只接收不计算,导致在pe2上没有这些路由条目,只能通过bgp收到骨干区域的路由条目。Pe2要访问就需要绕行PE3-PE1-CE1,次优路径。
三层vpn不仅要考虑路由环路的问题,还要考虑协议实现的问题


--------------------------------
2023-02-08 12:47
Video 36
路由环路时l3vpn的一个问题,也导致l2vpn比较火

L3vpn需要在pe-ce之间部署路由协议,让pe学到客户的路由,然后再传递给其他pe

多宿主接入场景

路由回注场景
所有lsa中都可以设置dn位(download bit),dn是flag位。ospf会携带option字段,8b。option字段会在如下报文存在,协议报文:hello、dd;以及lsa。dn位是在lsa中置位。接收到的lsa中dn置位,只接收不计算。在cisco中,只会对3类lsa的dn置位,5,7不会置位。华为就是3,5,7类都会置位。//不同厂家对技术的具体实现不同。
cisco中针对5,7类会用tag的方式来防环。在将bgp路由重分发进ospf中。如果重分发路由的类型是外部路由会变为5类,如果是nssa的话会变为7类。针对5类和7类会自动生成tag,包含pe设备的as no。这是重分发时router的自动动作。可以通过命令强制dn置位。
bgp通过扩展团体属性,来传递igp的路由属性,so 将bgp路由引入到ospf不止会生成5类的,还能生成3类和7类的。通过扩展团体属性传递的igp属性如下:

将bgp重分发进ospf时会生成不同类型的lsa,判断依据为:分析bgp路由中携带的igp的value值,如ospf,先获取domain-id,如果和本地的domain-id相同,后续在重分发进ospf时会参考bgp中通告的lsa-type,如果是1,2,3类都会重分发为3类的。5类和7类重分发肯定一一对应为5类和7类。如果domain-id不同就直接重分发为5类的。
如果domain-id相同,但是domain-type或者value不同,都会导致domain-id匹配失败,只能重分发为5类
用external type 来标识oe1还是oe2/on。默认重分发路由为oe2

在A和B上将外部网络的1.1.1.1/32重分发进ospf。在A和B上重分发时不指定cost值时,就使用默认值-种子度量值20。如图的cost,C会优选从A走。如果A的cost也是20,就是负载。在oe2里虽然不会累加链路的cost,但在oe2的metric值一样,会计算到达asbr的距离,C比较到达A和B两个ASBR的距离,然后优选。不会关注链路的cost值(不像oe1累加cost),但会考虑到达asbr的距离,如果到达asbr距离相同就负载,否则优选到达asbr小的
针对oe2路由条目,有两种类型的cost值:1.外部度量值-重分发时指定的cost;2.内部度量值-到达asbr的距离
论述:


这样改完,C就会优选走B

这样就优选A,只有在路由类型一样的情况下才会比较cost值

这种情况就会优选A

这种情况,就会走B。因为走A,需要计算到达fa的距离,10+10(流量出口的cost值)=20

次优路径拓扑

1-2运行rip,2-3运行ospf
cisco中 静态路由管理距离1,ospf是110 。如果在3上配置了到达1.1.1.1/32的静态,则show ospf route/show route ospf也可以就看不到2通告的ospf路由(就是只接收不计算)。虽然有fa地址-不为0,但没有到达fa地址的域内或域间路由就导致问题。
7类会默认填充fa地址(+防环的作用),5类只有满足上图3个条件才会填充fa地址。
----------------------------------------
2023-02-08 22:31
Video37


由CE1将路由传递给pe1-pe2-ce1
配置完allow-as或as override之后导致路由回注问题。可以使用bgp的soo解决该场景的环路问题。
在PE1和2上针对CE1配置soo的值-通过扩展团体属性传递。比如都配置1:1,pe2在收到之后,会看本地ce邻居配置的soo值是否为1:1,是则丢弃。即 pe在将路由通告给ce时,需要看soo的值。用来防止bgp ce路由回注。路由回注导致的流量环路问题。
vpn的种类

左侧圈主要用在isp;ipsec vpn和ssl vpn主要用于个人客户和企业上,尤其是典型的site to site的ipsec vpn或者dmvpn-这种都是基于企业客户的。
isp使用一般用于接入侧,比如有一个安全网关,需要加密一些数据,这些数据要穿越公网。到达安全网关解密完再在内网传输就是透明的。厂商的设备,比如基站,后端需要连接数通的产品,就要求数通设备针对基站发来的数据在传到后面核心网时-这一段要求加密,会选用ipsec,需要和安全网关建立端到端的ipsec,把所有基站的数据加密传递到后端。sslvpn就纯是客户的,远程办公的数据加密,这种就不会使用ipsec-因为ipsec主要用于设备间的,而移动客户用的最好的是sslvpn,配置简单,基于证书的,可以基于browser访问,只需要安装客户端。
cisco早期有easyvpn,在pc上安装ipsec的客户端,然后通过客户端连到设备上,然后设备会为你分配一个内网ip,来访问内网,但现在已不用,全部使用sslvpn。
L3vpn中,PE端需要更多的参与配置:与ce之间的互联协议;维护客户的路由;在多宿主的场景中要考虑路由环路的问题(那CE只连一台pe不就没有环路的风险?为何广电的ce在自己这边?check)。导致isp需要配置的多,对PE的性能压力比较大,且l3vpn扩展性差。So PE端要选用性能好的设备。
L2vpn在isp场景中,有两种部署方式:1.ip core,本质就是l3vpn场景;2.ip ran,核心网,radio(基于ip的传输网,check),用到l2vpn场景实现。当前ip ran的方案会替代ip core的方案。
在l2vpn中,依靠mac地址转发,不需要在ce-pe部署路由协议。从客户角度看isp,就黑盒化为一台sw,l2vpn有如下两种:

Vpws 虚拟伪线转发,又称为vll

pw:是在PE之间建立一条虚拟链路。可以依靠remote ldp或bgp协议来建立,对应的解决方案分别称为matini,和堪培拉。不同解决方案中定义的信令是不一样的。
vpws数据帧交互过程: CE1-CE2数据互通时,CE1将数据帧发给PE1,PE1会通过pw将数据帧传递给PE2,中间没有任何交换过程。客户和pw关联的技术叫xc,通过xc可以将连接ce的链路和pw做桥接(1个if只能xc一次)。从客户角度中间就是一条线。但在isp内部网络中,仍会通过mpls对数据打两层标签后(外层标签穿越isp网络,内层标签来区分客户),再转发。

内层标签为ldp就是martini的方式(支持这个的厂商较多),内层标签为bgp就是kanpler的方式 (仅cisco和华为支持)
在vpls中将pe端模拟为sw,sw上有mac地址表,通过mac地址实现数据帧的转发,就会存在广播风暴的问题。原因为二层环路的问题。在传统二层网络中依靠stp协议来防环。二层数据没有ttl帧,二层环路数据帧会一直传下去。

这种vpls,isp使用生成树也可以解决二层环路问题,但收敛速度太慢,so isp会使用erps(本质就用用来防止大二层环路的?check?)协议来防止2层环路-只是针对ce接多宿主才会出现环路,为了保证可靠性需要冗余链路。pe之间也会出现环路,pe之间有水平分割的防环机制,类似于bgp的水平分割,从一个pe收到的二层流量不会再转发给其他pe。
二层vpn可以提升pe端设备性能,可以接入更多的ce端,简化pe端的配置。
L2vpn的问题:扩展性也有问题,不支持负载分担。收到数据帧后通过二层的机制来进行转发。可以实现 切换,但不能实现主备同时转发。另一台设备是热备。
evpn的原理是基于bgp的,bgp将mac地址作为路由条目来进行传递,基于路由就能实现负载,同时可以实现快速的主备切换
-------------------------------------------
2023-02-13 12:51
Video 38

环路就是指 CE 如果双规接入到isp网络,所谓的双规就是指我们同时接了多台PE。就需要考虑的一个环的问题。
在ce-pe之间使用rip,只能通过tag的方式进行防环-而只有rip v2才支持tag 。
ce-pe之间互联部署bgp,cisco只能部署ebgp,而华为可以部署ibgp,在三层 VPN的场景下面,在部署 BGP 的时候,你可以选择用IBGP。但是实际上华为会给这一类的 peer 邻居通告一个新的 as number。也就说华为在三层 VPN 下面,它可以有两个 s number,从而防止路由环路问题。

一个公司各个site都会使用一个bgp 的as no来接入isp,因为买新as no的太贵了。如果as path属性中包含自己的as,就会导致site间路由无法接收。

Ce1和ce2都是A公司的。为了让ce接收路由,1.在pe上针对peer配置as override,更改as path(通告路由条目时,把ce端的as no都更换为pe的)。
2.在ce端配置allow as,在as path中本端的as no可以出现几次,正常为0。
但使用上述两种方式会造成路由环路问题:

导致来自于客户的路由经过了 pe 以后又传回了给了客户(ce通告的路由成环),引出soo来防止环路-在pe上针对ce配置soo

跨域的解决方案

Csc-二级运营商接入

不同地点的客户接入不同的isp,如何实现客户之间的互通。每个isp都有自己的网络,实现客户接入不同的isp,互通就是跨域。



典型跨域场景

Asbr1如何将接收到的mp-ibgp路由传递给asbr2。
在跨域场景中,各isp负责各自的部分,针对vpn路由的协商,出现了不同的解决方案 option a,b,c。
Option a:在asbr上将对端asbr看成我的ce端,在两端运行igp或bgp互联。配置量大,针对每一个客户都需要创建vrf来保存客户路由-保护客户路由的安全性。asbr保存客户路由信息,浪费了asbr的资源。
Option B:单跳mp bgp,在asbr间建立mp bgp的nei,因as no不同,就需要配置为mp ebgp nei,双方就可以交互vpn的路由条目了。
vpn路由是无效的:在传递vpn路由时,不管asbr改不改nh,pe2上看到nh为pe1或asbr1都是无效的,因为跨域了,路由是个无效路由,流量肯定不通-nh不可达。这种情况就需要在asbr上配置nh self。
流量的nh是谁,标签就应该是谁分配的。

Bgp/mpbgp标签分配原则:通告路由时更改nh,说明这个流量肯定经过你,so经过你,标签应该是你分配的,如果不是这台设备分配的标签肯定会丢包。由于 ASBR 1 把 VPN 路由通告给了ASB2,并且更改了nh自我,所以它在通告的时候 VPN 的标签会变。现在,假如从 2000 变成了3000

Option B 红色路由发布,蓝色流量方向,as内两层标签,as间1层标签。
Option b解决了需要为每一个客户创建一个vrf的问题。但比A更复杂,且ASBR还会维护客户的路由,占用设备过多资源。
-----------------------------------
2023-02-13 23:03

optionc,不需要asbr设备来维护客户的vpn路由,直接在pe之间建立mp ebp的nei。称为多跳mp ebgp。
PE 设备将用于建立 m p- e b p 邻居的路由条目通告进BGP,通过 BGP 的方式通告给对方的 PE 。两端建立mp ebgp的nei之后就可以通过mp ebgp通告vpn的路由了 。这种情况,pe2上看到到达ce1的路由的nh是pe1,看到的就是pe1为ce1分配的VPN标签。这种情况使用两层标签,标签报文是无法到达pe1的,在asbr2上就被丢掉。此时控制层面没有问题-路由能通告,但是nh不可达,成为无效路由。
为实现转发层面的联通,需要用一个标签将两端的as进行关联,实现流量在as间的转发-bgp标签。需要在as间让bgp去分配标签,进行流量转发

Bgp lu :label unicast。使用bgp去分配标签,Seamless mpls场景很火,推火了bgp lu。在option c中就已经使用了bgp lu。都是通过bgp lu的标签实现as间的关联

当前要同时部署igp和ldp,而ldp完全依赖于igp的计算。故障切换时,需要实现不同协议之间的联动。主链路挂了,igp要进行切换,这叫正切,和ldp关系不大-因为标签保留方式为自由(igp计算的非优路经的标签也保留)。回切:故障链路恢复,要把流量切回,流量丢包时间会较长。igp是切回来了,但ldp还没有形成新的lsp。为解决该问题,需求使用feature来实现igp和ldp的联动。igp监听ldp的会话状态,如果新的lsp还没有建立成功,就将恢复的主路径的cost调大,避免回切。在lsp的session up后,在通告个正常的cost,流量才能实现回切。(check,比如isis和ospf配置ldp同步后,新的lsp建立完成前,都会将主路径的cost调大?)
而在环网,或口字型网络,在流量回切时由于igp和ldp的不同步,或设备间igp不同步的原因,会形成转发微环,微环会导致流量丢失几百ms或1s。在回切的时候设备之间的 IGP 不可能进行同步收敛的。因为在回切的时候,你的IGP,你的设备之间,它的 IGP 或者是 LDP 之间,你的不同步的收敛导致的问题存在。而这种问题在我们现在的网络里面都解决不了,想解决就需要通过Segment Routing。
Sr优势就是之前两个协议干的活,现在一个协议就干了 。通过igp进行选路和标签分发,不需要考虑两个协议之间的联动。
optionc是通过bgp的标签来关联两端的as,通过bgp的标签实现流量的关联。想用bgp来分发标签,就需要在设备之间建立bgp lu 的nei//解释了lab c1 as100和as200内都配置了bgp lu

xr上有label unicast地址族,在这个地址族下配置peer关系,但在9k上没找到。ios里配置send label

针对peer开启标签分发的功能,自然就支持label unicast地址族了。下图将所有igp的peer关系都变为bgp label unicast的peer关系

看紫色, 变为三层标签,中间为bgp lu标签
方案1.到达对端as后,先打pe1通告的bgp标签100,再打到达pe1的ldp标签。这种方式会在pe1上进行两次查表转发(1.弹bgp标签,2弹vpn标签
方案2.在asbr1上将bgp标签直接替换为ldp标签,到达pe1。因为asbr1和pe1是igp可达的,就不需要转换为bgp标签。节省了一次查表的过程。
cisco的默认方式,就是把收对端的bgp标签转换为ldp标签。而不是再转一次bgp,然后再叠加一次层ldp标签。其他厂商这种方式是可以改的,cisco不行。
即,流量进入对端as后,转2层或3层标签都是可以的。
使用bgp lu的目标是通过bgp lu标签来关联两个as,实现as之间的流量转发。没有它的话,两层标签都出不来as。
Option c解决了asbr配置量的问题,以及asbr需要维护客户路由的问题。对isp来说只需要配完pe端,也保证了安全性。
现网部署,客户量不大,option a用的多;但现在的跨域基本都是option c
见cisco mpls 文档chapter7 option1,2,3,4

Option c的rr场景
两端rr都需要配置nh unchanged(不配置默认就是nh self),不改nh pe2上是没有到达对端rr1的路由,下一跳不可达,是无效路由。Nh 为rr1流量就会经过rr,不符合旁挂式部署rr的要求 。最终目标是让pe2看到到达vpn路由的nh为pe1,流量就不会绕行rr

方案4:没有vpn的方式来提供传输,ce-pe之间完全通过bgp来进行部署,受客户数量限制,如果只有一个客户就没必要配置vpn。

A,如果客户流量较大,如带宽超出了链路的带宽,就还需要区分链路



关闭dn位检查。Vrf-lite就是多vrf ce//vrf的配置不依赖mpls
场景2和3都是option b的解决方案


option b中vpn标签会变化,因为在vpn路由通告过程中,更改了nh。

场景3就是asbr之间并不是直连,想通过中间的设备,需要有ldp标签,这样区域内和区域间都会是两层标签。非直连就需要运行igp和ldp进行互通。因为中间的设备不支持vpn标签,就需要ldp标签来穿越中间的网络。通过ldp的方式将两个as进行关联(就涉及igp协议的重分发)。


而Option c使用bgp的方式来将两个as进行关联



Option 4 不通过 VRF 的方式实现一个客户的 AS 跨域就是通过全部署BGP的这种方案来实现的
-------------------------------------------
2023-02-15 13:16
Video 40
跨域解决方案

Option b,asbr间的单跳mp-ebgp:在asbr间建立mp-ebgp的目标是传递vpnv4/6的路由,因 asbr间建立的是mp-ebgp的nei,会自动将路由的nh更改为self。在对端asbr2将bgp路由在自己as内传递时-传给pe2时,仍需修改nh为self,这样pe2接收到的vpn路由nh为asbr2,是有效路由,否则就是nh就为asbr1,为无效路由。Option b为了让asbr可以接收vpn路由,需要配置undo policy vpn target(feature为关闭rt检查)。本来收到vpn路由是否接收要看rt的值,如果匹配才会接收并引入该vpn路由。
asbr间交换vpn的标签,原因为asbr会更改nh,从控制层面就需要重新分配标签,否则转发层面不通。
mpbgp为vpn路由分配的标签方式有两种:用哪种,要看需求场景

vpn标签并不是用于数据转发,而是标识上层服务,只会在pe设备识别,和弹出。
针对同一个客户vrf,配置一个标签,节省标签空间,范围在2的24次方:为每一个可以分配标签的协议都划分了一段的范围。
qos中用到每前缀每标签。想要同一个客户不同前缀区分流量,从而实现不同的端到端qos。

Option c 让asbr只负责数据转发,路由在pe之间直接交互。pe将用于建立mp-ebgp的路由通过bgp通告给另一个as(pe1和asbr1间建立普通的ipv4 bgp邻居关系,来传递用于建立mp-ebgp的路由)。bgp是基于tcp建立peer关系。
在开启为bgp分配标签功能后,在交换bgp路由同时就会为bgp路由去通告标签。如,pe1把前缀通告为asbr1时,会为自己用于建立mp-ebgp nei的loop口的bgp前缀分配标签,然后给asbr1,asbr1再发给asbr2,由于修改了nh,会重新分配标签。
通过bgp标签来连接两个as,ldp只能在as内部连接。

Rr1和rr2在传递路由时,需要配置不更改nh,这样pe2看到vpn路由的nh 为pe1,流量就不会绕行rr,避免次优路径问题。
--------------------------------------------------------------------
2023-02-15 15:53
Video 41

Option 4 :穿越不提供vpn的as(中间经过isp的网络不支持),用不提供vpn的网络来转发vpn流量,cisco自己的解决方案


As2为不支持vpn的骨干区域。需要在as1和as3的rr间建立mp bgp nei来传递vpn路由,在pe间传递流量,但流量转发需经过非vpn的骨干区域。
解决方案:中间区域不支持vpn,相当于不支持创建mp-bgp的nei,但可以用bgp的nei来做。相当于要用bgp lu的nei来关联3个as,中间存在一个不支持vpn的as,这个解决方案的本质就是通过bgp lu标签来关联as。
下面的流程总结:1.as内配置ibgp lu nei,as间配置ebgp lu nei//vpn网络,必须用标签来穿越中间的网络。利用bgp来传递rr1和rr2的路由。2.as间配置ebgp-lu nei。3.在rr间配置mp-ebgp nei,在as内建立mp-ibgp nei。然后就可以传递vpn路由。传递vpn路由时不更改nh,so在pe1和pe2上看vpn路由的nh就是对方(加最内层标签)。
流量转发过程:ce3访问ce2。ip报文交给pe2(本端3层标签),pe2收到报文后,因为是一条vpn路由,看到vpn路由的nh为pe1-加最内层vpn标签。然后是pe2查如何到达pe1,到达pe1是通过bgp路由,nh为asbr4-因asbr4在将路由转发给本as内的rr时更改nh为self,so在封装一个asbr4分配的bgp标签(参考option c 一段为三层标签,另一端为两层)。而到达asbr4是igp可达的,再封装ldp标签(即tunnel标签),三层标签。三层标签在as内转发时,外层标签在次末跳被弹出,asbr4就会收到两层标签,即bgp+vpn标签。asbr4到达pe1路由的nh是asbr3-因asbr3和4之间配置了ebgp-lu nei,并且ebgp默认就更改nh,so asbr4需要将bgp标签更换为asbr3分配的。还是两层标签,不过外层bgp标签是asbr3分配的。asbr3收到报文后,通过bgp标签查到pe1的nh为asbr2 。假如asbr3和asbr2之间还有其他设备,asbr3会把bgp标签置换为asbr2分配的bgp标签,同时由于到达asbr2不是直连,需要再增加一层ldp标签-ldp标签的作用就是穿越黄色区域的网络。外层标签会被次末跳弹出。asbr2就会收到两层标签,bgp+vpn。asbr2会在将bgp标签进行swap,swap为asbr1分配的bgp标签-因为在asbr2上看到pe1的nh是asbr1-是bgp路由。到达asbr1,查看到达pe1是igp可达的,就可以直接将bgp标签置换为ldp标签,内层标签不动。将两层标签的报文转发给p设备。p设备进行次末跳弹出,再交给pe1。最终pe1会收到一层vpn标签。在转发过程中最内层vpn标签始终没动过。
在pe和rr间建立ibgp lu(图上都简写为ibgp)的nei-用bgp来分配标签。在rr和asbr间也是建立ibgp-lu nei。在asbr间建立ebgp-lu 的nei 。在asbr3和4之间建立ibgp-lu的nei。相当于用bgp lu的nei来关联每一个as,在每一个as的边界设备上都建立ebgp lu的nei。as3内,asbr4和rr以及rr和本端pe都是建立ibgp lu的nei。通过bgp来通告pe1和2的路由,同时通告rr的路由。之后用rr通过bgp通告的路由来建立mp ebgp nei。
在pe1和rr间建立mp-ibgp peer,在rr间建立mp-ebgp,在rr2和pe2之间建立mp-ibgp peer。通过mp bgp来传递vpn路由。传递vpn路由是不更改nh,这样在pe1和2上看到vpn 路由的nh就为对端。至此,控制层面就ok了

流量转发过程:ce3访问ce2
ldp标签的作用是为了穿越as,更改nh时就需要重新生成bgp标签
跨域不止两个as,多个as需要通过bgp lu的标签来进行关联

控制层面,as100不支持vpn

现网针对外层标签,同一叫做tunnel 标签,因为就是隧道。以前使用ldp来分配tunnel标签,未来会使用sr或rsvp-te来分配tunnel标签。这三种都可以作为tunnel标签的分配协议来用的.check 这就是论述中的tunnel label?另一种就是fec标签。 16m50


通过route-map的方式,在传递路由时把rt值做重写,上图删除rt,再做一个追加。使用extcommunity-list来match 100:100的rt值。这样就可以实现在传递过程中更改rt的值。
应用于提供vpn场景的安全性,对路由进行过滤,更好的保护isp场景内rt的值。因为vpn路由的引入是跟rt相关的,但在跨域场景中,isp之间没有协商rt。不同isp为同一客户分配的rt也不一定相同。如果两端配置的rt值不同,则对端会拒绝接收vpn路由。解决方案:在vpn路由的交换设备上更改rt,如rr上,或者在rr上通告给pe时做修改-匹配上一个rt值就全部更改为另一个rt值。

配置qos,为识别客户流量,需要为流量打标记,这个标记在转发过程中不能被重写,保证客户端到端qos标记的一致性。
Tunnel 标签,一般都用ldp来分发。
在传统2/3层vpn里,客户流量在穿越isp时,需要打两层标签,tunnel标签和vpn标签,标签中存在一个exp字段,3bit,用来标识流量的优先级,范围0-7,默认是0.
客户的ip报文打dscp 是cs5,报文经过pe时,需要封装2层标签,针对标签中的exp字段可以这样设置:1.通过ip报文中的ip dscp来映射标签中的excp值。

在ipv4报文中通过tos字段来标识报文到达优先级,共8b,前6b标识dscp,后2b标识拥塞-ecn。so可以为ipv4报文分为64类,每一类打上不同的标记。在这些标记中有一些公认的标记,包括,cs,default,af、ef。cs对应0-7,ef就是0,af 确保转发101112-3030132,ef快速转发就是111110。这就类似于community属性里有一些公认的属性,node support internal,打上公认的属性之后,在经过每一台设备时,行为都是一致的。qos也是同样的。这种方式就叫做phb,在qos中执行的方式就是phb。
针对标签里的exp的设置有两种方案:uniform和pipe
ex:将ipv4打上cs5的标记,报文被路由器收到后,在r内部还会存在一个标记,可以理解为内部标记-cisco中成为qos-group,范围为0-7。报文在接收到会先根据报文中的dscp值去映射本地的qos-group,在出去的时候再将qos-group映射为出方向的报文优先级。假如出去时需要打两层标签,ldp标签+vpn标签,在封装标签时,会根据报文中映射的qos-group再去映射出方向的标签里的esp值。如果收到的入方向报文是5,则映射的qos-group也是5,打标签时也会打上5,两层标签的esp值都为5。打几层标签,这几层标签的exp值都是一样的,该方式称为uniform:出报文,不管打几层标签,所有标签中的exp值都是一样的.
模式2:管道模式,pipe mode。可以根据策略来进行定义。ex:只针对内部标签做qos-group到vpn标签的映射,但外部标签不映射。
这两种方式针对入方向的标签报文,映射也是不一样。ex:入方向收到标签报文,需要根据标签报文中的exp的值来映射qos-group的。假如现在接收到有两层标签ldp+vpn标签, 如果是pipe模式,只会通过你service label,即最底层标签所带的esp去映射qos-group;而如果是uniform模式,就根据顶层标签,top标签的优先级来映射qos-group。
现在每个厂商都会支持这两种方案,默认都是uniform-出方向发标签时,把所有标签的exp值打成一样的,而针对入方向报文,根据顶层标签的exp来映射qos-group。针对标签报文,需要保证行为的一致性,如果不一致,则会导致端到端qos出现问题。check,用户流量在进入isp网络时,要trust,那在中间的p设备,怎么设置,比如设置成针对ef,af执行怎样的操作么?端到端的qos中间的配置。
针对标签报文,还是需要保证端到端行为的一致性,如果模式不同,则可能导致端到端qos出现问题。
Csc-二级运营商接入,可理解为分层的3层vpn,h-l3vpn

没分层前,是骨干区域的pe来连接ce,对骨干区域的pe设备压力较大。为了避免骨干区域的压力,将ce的接入下放给二级运营商。
分层:骨干区域只是用来承载流量,就是骨干网。而接入客户下放给二级或三级运营商。相当于把isp网络做了分层,上层为骨干区域,下面是非骨干区域,也是pe设备,但主要负责的是接入客户的骨干区域。

现网:所有客户的接入都是由二级运营商做的,以及运营商只是做流量的承载。

csc的实现(由两段l3vpn组成,1.1级和2级之间的vpn,2级和客户之间的vpn):二级运营商也是通过vpn的方式接入的一级运营商。针对一级运营商,二级运营商就是他的ce;一级是二级的pe设备。
分层处理:第一层,实现两个二级运营商ce之间的互通。第二次,实现客户ce之间的互通。
csc的方案:
普通的vpn,第一段在ce和pe之间的l3vpn,部署路由协议,如果部署bgp,只能选用ebgp 。如果部署igp的话,需要在两端的pe上做重分发。Ce-pe间发送的是ip报文。第二段中,二级isp的pe和ce之间也可以部署igp 或bgp,之间跑的也是ip报文。但传统的两段这样在csc场景中是不通的。

在csc场景中,需要先在二级isp的pe间建立mp-ebgp nei,因为真正的ce是在二级isp的pe接入的,so应该在二级isp的pe间传递vpn路由-前提就是建立了mp-ebpg的nei关系。这个nei的建立使用igp,在二级isp中部署igp,来通告asbr-pe1的路由,到达ce1后,在和PE1建立igp,同时将asbr-pe1的路由通告给pe1,pe1重分发后再传递给pe2。这就相当于利用igp的进程将pe1和二级isp的pe打通,之后就可以传递igp路由。需要在pe1上配置一个子接口,开启一个属于vrf的igp进程。在ce1上也需要配置一个子接口,同时需要把该ce配置为多vrfce-用于区分客户路由,为每一个客户创建一个igp进程,属于独立的vrf,来进行路由的 区分。对端asbr-pe1也一样,需要为客户创建vrf,把属于不同vrf的接口宣告进对应的igp进程。如果ASBR-PE1要接入100个客户,就需要在ASBR-pe1,ce1,pe1上为每一个客户都配置vrf,每一个vrf都去绑定一个独立的igp进程才行。同时这三台设备之间要开启ldp分配标签。这样pe1就能收到ce1:R1的路由条目,最终pe1可以收到ce1的路由,重分发后发送给pe2。错,这里只是在asbr-pe间建立mp-ebgp nei,其路由是通过igp的方式通告的。在通过mp-ebgp的nei来通告ce的vpn路由条目,因为ce是vpn路由和igp没有关系

csc接入方案
左右均为二级isp,step1,通告两边二级isp的pe设备的loop,通过loop建立mp-ebgp nei。loop接口的通告,可以采用全程igp打通,然后在as100的pe1和pe2上做双向重分发,两端就可以收到对方loop接口的路由了,可以建立mp-ebgp nei,然后通告vpn路由。
ex:as300的pe2收到ce1的vpn路由,其nh应该为as200的pe2,到达pe2的nh为一级isp的pe2(vpn路由的nh?为啥是as100的pe2?下面的流量转发过程bg标签也是到达一级isp的pe2)。发流量时,as300的pe2会为流量打上两层标签,内层为vpn标签,外层为ldp标签-用来到达as100的pe2的。so需要在1级和2级isp互联的接口上也配置ldp,标签报文到达as300的pe1会因php将外层标签弹掉,只剩下一层vpn标签发给as100的pe2
常规,收到vpn标签后,应该查vpn转发表项,没有标签就丢掉。但在csc场景中,一级isp的pe2会认为从一个ce设备接收到带标签的报文,不去查标签转发表项,而是将报文直接封装。封装方法:到达该vpn路由nh为as100的pe1,so在接收到标签报文的基础上再封装两层标签,内层为vpn标签,顶层为ldp标签-到达as100 pe1。即到达1级isp有两层vpn标签。最底层的vpn标签是二级isp pe分配的,上一级的vpn标签是1级isp pe分配的。因为是两段vpn,so流量在穿越一级isp时会打两层vpn标签。中间的vpn标签来自于一级isp的标签,在一级isp中也需要标识流量来自于哪个客户,二级isp针对一级isp也是客户。外层ldp标签经过pho后,最终一级isp的pe1会收到两层vpn标签,通过外层vpn标签就可以知道来自哪个客户。Pe1再把外层标签swap为ldp的标签,把报文交给as200的pe1,pe1再将外层标签弹掉,只剩下一个vpn标签交给pe2,pe2最后再弹掉vpn标签将报文交给ce1
csc的难点在于需要理解是由两段l3vpn组合到一起的 。在穿越2级isp时需要打两层标签,而流量到达一级isp时,还会再原有vpn标签基础上封装一层vpn标签+ldp标签。用于穿越一级isp的骨干as以及标识二级运营商客户
一级和二级isp之间可以部署igp,也可以部署bgp。之前说的一级和二级都要为每一个客户创建vrf,错的,只需要建立一个igp就可以了。因为最终的用户是接入到二级isp的pe,而一级isp是不会维护客户的路由条目的,就不会在一级isp上创建vrf。so只需要在一级pe和二级pe之间部署igp互联就好。这些设备不参与vpn路由的传递,没有vrf的概念。vpn的概念只存在于二级isp的pe设备,跟其他设备没有关系

ce-pe之间部署bgp时,就需要配置send labe,因为中间需要bgp标签来关联

Pe2会将52改为两层标签。图上pe2并不存在php的动作,因为pe2上做了重分发,针对重分发进igp的前缀,不会通告空标签。空标签只是通告的用于直连路由,才能通告空标签(可以是显示空or隐式空)。但现在是重分发的路由,肯定是非空标签(重分发的igp路由,会存在非空标签?还是指边界设备)。Ce2将报文交给pe2,就没有弹掉标签,只是swap。而p1会有php动作。Pe1会把51换成50的ldp标签。报文到达ce1也存在php。
为何在右端没有php,而在左边和中间都有php?因pe2看到到达vpn路由的nh是pe1,其和我在同一个igp区域内,这个路由是pe1自己通告的,就可以通告一个隐式空标签,所以p1就能进行php 。而asbr1,ce1和pe1也是通过igp进行互通的,asbr1通告loop口的路由,也会分配个3的隐式空,则ce1就会存在php的动作。这边虽然有重分发,但是你在接收区域,你到达设备的前缀都是在同一个igp区域。
右侧因为到达目标前缀是重分发过去的,so会存在非空标签。
这种方案现网用的少,基本都用的是seamless来实现,可以针对igp来进行分层
csc的目的就是为了避免骨干区域pe设备的压力,为pe做分流,需要将ce连接到二级isp
此方案用来实现两层vpn的互通

L2vpn比l3vpn更灵活。L3vpn扩展性差,客户在购买l3vpn时,isp的pe设备肯定要增加配置。而l2vpn针对isp来说只需要为客户提供一条链路,不需要增加配置。另l3vpn中,pe需要维护大量客户vpn路由的,对pe设备压力较大,且扩展性差。另l3vpn还需要pe和ce间部署路由协议-引出安全性,然后很容易出现路由环路问题。

evpn才是isp网络的未来

如图部署igp和bgp
在流量转发时,如asbr pe1-asbr pe2,pe1看到到达pe2的nh是pe1,因ce1上要进行双向重分发。Asbr-pe1到达pe1是通过igp到达的,因为是重分发进igp的,so ldp标签是非空标签,报文到达ce1会将ldp标签swap为bgp标签,再交给pe1,pe1收到后会将bgp标签改为ldp标签+vpn标签,会有标签关联再发给pe2,pe2最终会收到两层vpn标签,pe2将外层vpn标签swap为bgp标签,ce2再将bgp标签swap为ldp标签,在这些关联的设备上存在标签的关联性。
-----------------------------------------------
2023-02-19 21:03
Video42
跨域,流量的转发行为和标签,是面试的重点。
Seamless 并没有使用新的技术,但只是解决了isp网络问题。
optionc在as间交互一层bgp的标签,而optiona和b不存在bgp标签。因为option c是在pe间建立一个mp-ebgp nei,而并不是在asbr之间去建立。so需要bgp 的label来关联不同的as。
Optionc 在路由始发as内有三层标签,顶层标签为tunnel标签,可以是ldp,rsvp-te,sr或静态。
vpn标签肯定是端到端的,即要保证vpn标签不能被提前弹出,如果提前被弹出,会因为中间设备不认识vpn标签而导致流量丢包。
csc场景中,最内层vpn标签是由二级pe来分配的,一级pe不能识别

L2 ce和l1的pe互联可以部署igp和bgp(再配置bgp的send label,通过bgp标签进行置换),如果部署igp,需要开启ldp(这两种方式的本质,都是在一级pe1和二级pe1之间形成端到端的lsp)。相当于在一级和二级pe之间打一个tunnel隧道来承载vpn标签。Pe1收到一个ce通告的带标签的流量后,会直接在上面封装标签(需要特殊的配置么?check?),而不会通过该标签检查标签表-这点的行为不太一样。
seamless:通过igp区域的分割来缩小as内设备和链路的数量。划分多少个区域需要看网络。比如isis,最快的收敛时一个区域内20台设备 ,30条链路。

传统运营商网络:如果在同一个as内部署l3vpn,需要在两端的pe上建立mp-ibgp peer ,通过mp-ibgp nei 来通告路由。而在同一个as内,会部署同一种igp协议。部署的问题:区域内设备和链路的数量大。如果设备数量大,且还都在一个区域内,当出现链路or节点故障时,会导致所有设备都重新进行spf算法计算,导致收敛时间不可控,同时由于每台设备的 igp收敛不同步,会导致临时环路。问题本质是,在一个as内包含大量设备和链路会影响igp的计算。
解决思路:把大的as,从一个igp的区域划分为多个igp区域,通过区域划分的方式隔离设备和链路的数量。就是区域的分层。ospf可以分层,但问题是各区域是互通的。isp更多的是使用isis。
所谓的区域分割,是通过部署多进程的方式来实现的。

以p2为中心,在左右分别创建一个isis进程,这样就分割成两个isis区域。这样就将大的as通过多进程的方式划分为多个区域,且区域间不能相通。同一种协议不同进程间是不通的,想通需要重分发。在区域间不重分发路由的前提下(如果重分发了,就会导致两个igp区域是互通了,既然做了隔离,就需要保证独立性),那这种情况如何在两端pe间建立mp-bgp nei?p2为abr设备(在该设备上进行了区域的划分)。由于igp的区域被分割了,同样ldp的范围也会受到限制。so在当前情况存在pe2-p2和p2-pe1两段lsp。

解决方案:利用bgp。如图蓝色建立igbp peer,p2就成为rr的角色,将pe的路由互反,pe就可以通告自身loo路由,两端收到对方的loop路由后,就可以建立mp-ibgp peer,然后通过mp-ibgp通告vpn路由,控制层面ok。看转发层面:

假如 ce1访问ce2,ce1发送ip报文到达pe1,pe1查询vrf路由表,nh为pe2,先封装一层vpn标签。Pe2是通过bgp路由可达的,so需要封装一层bgp标签。这就存在问题 了,由于rr在反射路由是不会更改nh的(rr自己看这条路由是可达的,但是反射给其他as时,路由就不可达了), 正常情况下rr反射给pe1的路由nh为pe2,但实际上pe2路由不可达。为解决该问题,就需要在rr上配置nh self(在seamless场景中,rr必须要更改nh为self。否则两端pe收到的对端pe的路由就是无效路由/非优路由)
到达pe2的nh是p2(rr),so再封装一个到达p2的bgp标签。由于abr(p2)和pe1在同一个区域内,igp可达,再封装一层ldp标签。
报文到达 p3所在的igp区域,可以封装2层(bgp标签swap为ldp标签,cisco默认使用这种,转发行为最优,避免pe2查两层标签表)或3层标签(把bgp标签置换为bgp标签然后再压入ldp标签)
Seamless 场景2(存在rr)

Pe1将路由发送rr1,Rr1将路由反射给abr时不需要nh self,因为pe1和abr在同一个igp区域,可以直达,不需要配置nh self。只需要在abr上转发bgp路由时设置nh self。
通过bgp标签来关联两个分割开的igp区域。两段独立的lsp,是不能通过分段的 lsp来实现标签流量转发的。so需要bgp标签将两段lsp进行关联。这就喝option c很像,c是在不同的isp,这里只是把as换成区域的概念。
Seamless 方案也存在问题。
在运营商的网络,也存在分层,接入层-isp称为metro side;核心-即为core side。
isp目前推广的扁平化的设计,只存在metro+core。core只负责转发流量,metro侧负责客户的接入。因metro侧设备连接的用户,so性能较差。而core侧由于需要大量转发,性能会好。
如果在core侧pe灌入100w条vpn路,转发给metro侧pe,但core 侧pe性能较差,如果全部接收100w vpn路由,设备挂了。解决方案,mhvpn-多跳vpn,不是端到端的流量互通,需要借助中间设备转发流量。
Seamless 是在pe间之间建立mp-ibgp nei,vpn路由传递只需要一跳,端到端的。多跳就是为了解决metro侧pe会接收大量vpn路由的问题。

如图黄色,在pe和abr之间也建立mp-ibgp nei,这样pe间就不是直接交互vpn路由了,需要先交给abr,再由abr交给对端pe。abr针对转发的vpn路由,也需要修改nh为self。此时pe端看到vpn路由nh就不是对端pe,而是abr设备。这样的好处是,abr在接收到core侧100w条路由时,先利用route-policy/route-map过滤vpn路由,只向metro侧转发一条默认路由-nh指向self,明细全部过滤掉(类似isis level1-2,只不过这里是通过策略实现的)
metro侧pe只能收到默认路由,通过默认访问core 侧的vpn路由,而core侧可以收到metro侧所有明细。Core-metro两侧互访,第一跳都是abr设备。
通过该方案就实现了在abr上针对反射的路由进行过滤,从而保证metro侧 pe的性能-这种转发行为就是多跳vpn。转发行为,看ce1的橙色

Ce1访问ce2,pe1收到流量后打vpn标签,因为要走默认路由-由abr来通告的,abr会为该默认路由分配一个vpn标签,然后再打上到达abr的tunnel标签-ldp。标签报文到达abr,会将vpn标签弹出。但存在问题,是通过vpn标签来识别客户的。
ex:pe接入了100个vpn客户,pe把路由转发给abr,要求abr也建立100个vrf。不能向option b上关闭asbr上的rt filter(如果关闭rt检测,那种只是负责转发。但这里要求abr还作为标签的分配者,我在更改nh时需要分片标签)在abr上也需要创建100个vpn的客户,创建完之后需要为每一个客户的每一条路由条目分配标签-因为在转发路由条目时,更改了nh,需要重新分配标签。可以基于vrf或前缀分配标签。假入选择基于vrf,则abr需要为每一个vrf都分配一个标签。So abr在收到报文后,会将vpn标签弹出,变为ip报文。由于abr上存在这些vrf,同时也维护这些vrf的vpn路由,可以通过vpn标签知道流量属于哪个vrf,现在需要检查对应vrf的ip路由表,fib标签,找到nh-pe2设备。到达pe2由于是一条vpn路由,需要封装2层标签,内层vpn标签是pe2分配的,外层标签是到达pe2的ldp标签。
seamless和多跳vpn转发行为的不同:seamless,在abr设备上会做一个bgp标签的swap,直接ldp标签或bgp+ldp;而多跳vpn,则在abr设备上,直接将vpn标签弹出,变成ip报文,查对应vrf的ip路由表,找到nh后再重新封装2层标签转发出去,这里abr是通过ip查表转发,和标签没有关系。由于需要通过ip转发,so需要在abr上维护客户的路由。
Metro pe通过默认路由访问core 侧的vpn路由,针对流量走向就是多跳的,需先由pe交给abr,abr再通过ip查表转发,进行封装在交给对方的pe,这就是多跳vpn。
Lab seamless场景

这里部署不同的igp协议的好处就是在abr上只需创建一个loop if。cisco中,一个if不能宣告进同一个路由协议,不同的进程和区域的。但是可以宣告进不同的igp协议
csr,abr设备使用xr,p节点使用ios。core使用xr

部署rr,再由rr传递给abr,可以简化配置量,同时减少路由传递。为保证rr的可靠性,会部署两台rr
这就像协议里ospf/isis里广播网的场景,其他设备只是和dr建立 full邻居关系,发送路由条目,由dr进行转发。
-------------------------------------------------------------------
2023-02-20 16:31
Video43 seamless 实验
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1# show mpls ldp neighbor
Mon Feb 20 16:54:42.652 GMT
Peer LDP Identifier: 172.29.255.108:0
TCP connection: 172.29.255.108:55026 - 172.29.255.29:646
Graceful Restart: No
Session Holdtime: 45 sec
State: Oper; Msgs sent/rcvd: 2862788/2614883; Downstream-Unsolicited
Up time: 1y08w
LDP Discovery Sources:
IPv4: (1)
Bundle-Ether2
IPv6: (0)
Addresses bound to this peer:
IPv4: (11)
172.29.1.94 172.29.7.17 172.29.7.21 172.29.7.25
172.29.7.29 172.29.7.33 172.29.7.57 172.29.10.238
172.29.20.30 172.29.20.70 172.29.255.108
session状态为oper就说明会话已正常建立

简化配置
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config)#show running-config router bgp
Mon Feb 20 17:09:43.697 GMT
router bgp 65450
bgp router-id 172.29.255.29
bgp log neighbor changes detail
address-family ipv4 unicast //这是开启ipv4 uni地址簇
redistribute connected
redistribute static
!
address-family ipv4 multicast
!
address-family vpnv4 unicast
!
address-family l2vpn vpls-vpws
!
neighbor 172.29.255.3
remote-as 65450
update-source Loopback0
address-family ipv4 unicast //在peer下开启ipv4 uni地址簇
juniper是run show

在abr的bgp配置下没有针对nei配置nh self,对端rr接收到abr反射的另一个区域的路由,就会认为是无效路由,因为nh不可达。
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config)#router bgp 65450
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp)#neighbor100.100.100.200
% Invalid input detected at '^' marker.
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp)#neighbor 100.100.100.200
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp-nbr)#address-family ipv4 ?
flowspec Address Family modifier
labeled-unicast Address Family modifier
mdt Address Family modifier
multicast Address Family modifier
mvpn Address Family modifier
rt-filter Address Family modifier
tunnel Address Family modifier
unicast Address Family modifier
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp-nbr)#address-family ipv4 unicast
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp-nbr-af)#next-hop-
next-hop-self next-hop-unchanged
RP/0/RSP1/CPU0:B-DongL.FGS-9k.1(config-bgp-nbr-af)#
xr的配置逻辑,是在邻居的,ipv4 unicast地址簇下,配置

强制修改ibgp的nh,只配置nh self是不行的



![]()
![]()
Lsp ping
------------------------------------------------------------
浙公网安备 33010602011771号