00:01
大家好,呃,我是瑞哥。然后今天由我给大家讲一下BGP相关的知识点,因为之前在公众号里面写了一篇文章,就是关于BGP,嗯,一些核心的知识点,大家都表示,呃,说BGBGP这一块知识点太多了。然后。看一篇文章可能效果不太好,然后我今天就把它做成做成了思维导图的模式。然后通过思维导图。给大家梳理一下这方面的知识点,然后呃,希望大家能够。对此知识点没有形成一种体系,就是说不要很乱,因因为BBGP这一块说实话确实在路由这一块应该属于知识点最多的,然后难度的话也相对来说比其他几个动态路由都相对难一些,所以一定要形成一个知识体系。
01:07
然后今天主要就从这几个大方面来讲嘛,一个就是基本的一些概念,然后工作原理,凝聚关系。呃,交互路由,然后选路规则。呃,路由。应该从发布与传递防还机制。Bgb安全路由汇总。反射器,然后联盟的区别。由衰减还有可靠性机制。比如还有一个就是优化bgb的性能,然后再者就是说现在呃,BGB44加这这块比较慢慢的兴起来了,然后现在看一下他的基本概念。然后基本概念这一块,其实。就记住几个点就行了,不需要他,你不需要记住他什么什么,就是很多杂的那些背景什么的,也可以去了解了解一下一些背景,但是说我们记知识点嘛,就是说不管去面试还是说跟。
02:14
别人去讲这一块知识点,你最起码先抓住核心内容,就是把核心内容讲给别人听,比如说基本概念里面有一个资质系统as。然后BBGP的分类,它可能它有几两大分类,然后BGP的报文交互的角色。它的路由器号,然后自制的系统呢,就是其实你可以。把它理解为就是有相同选路策略的IP网络。然后它的BGP网络中就是每一个号都是唯一的,它不能重复,一旦重复的话,它会报错的。然后它有两个两字节和四四字节的as号两字节,它的范围就是一到6O35,这个6O35。
03:03
嗯,数字特很特很特很特别啊,就是在很多的嗯网络专业,它的网络专业字节当中,六五三五经常会出现的。然后四个字写的,就是说一到42.9亿的。它是兼容四个四个字节,它是兼容两个字节的。然后BGP的分类呢,它可以分为两大类,一个就是呃内内部内部BGP,一个就外部BGP。然后内部BGP其实就是运行在同一个as号当中的,就是内部的BGP。然后呃,11BGP就是外部BGP,它是。呃,不同的as号里面的BGP,然后BGP报文交互的角色呢,就是主要有两个角色,一个就是发演者,一个就是对等体。
04:00
然后发言者就是发送这个BGP报文的设备就是。嗯。一个就是发送这个报文的设备,一个就是接收或者产生新的报文。这个这个就是说要。嗯,怎么理解呢?你就把它发言者,发言者就是发送报文嘛,那么就B既然是BGP路由,那就是发送BGP报文的设备,它就是BGP的发言者。然后对等体就是嗯,比如说我们在配置一个BGP路由的时候。都都是要辟谣什么什么什么,然后这两个PL的设备呢,就是。它的BBGP对等体就是相互交换豹纹的。他的设备。然后路由器号呢,就是一般情况下BGP它都要给他设置一个root ID。啊,这个就是一个标识,BGP的一个设,BGP设备的一个标志,它是一个32位的值,然后基本概念我们。
05:04
大概你就知道四个方面就可以了。啊,工作原理这一块,就是说涉及到原理这一部分还是。嗯,需要好好去理解的。它其实包含的点比较多。给大家先缩略一下。嗯,主要就是它的豹纹类型状态机,然后它的路由交互原则,它有五个原则的。然后豹纹类型的。波纹类型其实就五五大波纹类型嘛,一个open波纹,Keep拉波纹,二部的波纹。Notification boy u refresh boy。然后其实这些报文都是在BGP爆头里面的,BG爆头里面,其实BG爆头我们在学习的时候。
06:05
嗯,最好去把它仔细的去看一看。啊,主要你就记住三个方面性的,一个就是标记它的长度,它的类型。然后。它的类型里面就包含了这个五五大类型嘛。然后就是说这个欧豹纹就是说用于BGP的连接。啊,它里面有版本的,它的root root ID root ID这边是不能从不能不能,嗯相同。因为相同它会呃导致冲突。然后这边就大概大概简单看一下,它里面报文里面有哪些参数,大概看一下就行了。哎,这个图片。放大一下给他看一下。Open message,它主要的就这几个人。
07:01
部分嘛,五五个部分。大概抓包的时候大概看一下。然后这个饱和饱和报纹呢,就keep豹纹一般情况下都是饱和用的,用于BGP的连接。也给大家放大看一下keep love。都是非常简单的,就是你只要知道它里面有哪些豹纹,然后分别报文有哪些作用就行了,不一定非要每个每个参数你都要记住,那个技术也没没太大用,抓抓包的时候能够,嗯,就是说遇到问题的时候进行抓包,然后能够从工工具书中能够查阅到。这个报文当中每个参数的中文意思就行了。这个这样就行了,不然你记得太多的话,根本记不住的。然后阿阿布列的报文就是交换路由信息嘛,它里面有一些很多的参数。大家看一下,过一下这个参数。
08:03
也没有什么太多的那种特别重要的东西。就是。嗯,有些人看到抓包的时候这些英文意思。不怎么认识,你就去来看一看,看看这方面的东西就行了。不需要全部记住。然而。Notification报文就是通知报文,用于中断中断BB的连接。这个也没什么,Root refresh报文就是看这个英文意思也知道,路由刷新报文就是告知邻居需要进行路由刷新的。也没有什么。再来看一下中奶机,它其实有六种,六种状态的。分别为ii的状态、connect状态、状态、open状态。Open状态。
09:00
Establish状态,六种状态特别重要,一般情况下面试或者说我们在判断嗯,BBGP,呃,路由这一块的时候,就是你做实验或者放,甚至就是做项目的时候,呃。嗯,他的不管从他的日志还是说嗯,从他的控控制台,你都要去时刻关注他的状态的每一个状态,你都要知道他状态包含有哪些意思,然后你才能够从中嗯知道你。嗯,所做的每每步步到哪些到哪一个状态了啊,比如说I的状态其实就是。嗯,BGP邻居拒绝连接请求,配置BGP邻居时,BGP发起TCP连接。状态转为connect状态,嗯。也也也就是说什么呢?就是说其实他是一个。拒绝状态。
10:00
怎么理解这个拒绝状态的?呃,就是说呃,从从我呃个人理解来来说,就是他的网络网络当中就是有些故障了,或者说。嗯,收到,比如说这边提到了收到notification报文,或者说TCB确定通知。其实后面有个等I事件,就是其实说到底就是它出现故障了,就会把这个状态置为I的状态。它是一个固态,嗯,叫故障状态的,故障的状态,然后connect就是一个呃,TCB完成连接的时候。它就会显示连接状态。然后这个呃,连接状态,其实我们在做BGPBGP这个。嗯,实验的时候,比如说呃,这个实验当中有OSPF,有BGP。
11:02
嗯。它混合的那种实验,其实我们都知道,需要先将OSPF把它切起来,然后再做,呃,T那个BBGB相关的实验,就是一定要一定要。先保证它的TCP连接它是好的,然后它才能转为connect状态。然后active状态呢,就是。嗯,TCP连接失败,PP状态停留在active状态,Active状态就是。嗯。嗯,所谓的活,就是通过这个英文单词,你能知道它是活着的。那么呃活呃这边呢,活着的并不是代表是。呃,就是说所有的所有的那种元素,它是活着的,它是代表这个BGP路由它是活着的,它只是在等待,等待去连接。
12:04
那么,那么怎么样他才是?会到这个状态呢,就是TCP连接失败的。因为我们在connect状态的时候。我们这个TCB它已经正在连接了,只是说我们。呃,去等待其他的对等体去连接的时候。然后这个。呃,TCB。连接是因为由于各种网络方面的一些原因,他失败了,然后就会一直停留在这个active状态去等待,去连接,它还是活着的。然后open。Open其实通过这个sent就是发送的意思嘛,就是我们一定要去理解每个单词的意思啊,就是能够。知道他单词的意思,然后再去了解它每一个状态的意思,这样的话你能记住就永远不会忘记了,就是说BGP对能BGBGP等待对端的open报文对收到的open报文。
13:08
当中的as号、版本号,然后认真进行检查,就是说open报文正确发K报文状态转为open confirm就是。如果他的报文正确的,就是发饱和报文,然后状态转为下一个,下一个这个状态的。嗯,下一个这个状态,然后open报完,如果。错误呢?它就会发一个not notification报文,然后状态转为刚刚说的错误的这个状态,其实它就是一个发送报文的一个状态。然后open confirm,就是对刚刚发送报文这个状态发送的报文进行一个确认。如果发送了报文,就是说如果收到的K8,那豹文。
14:02
收到了这个饱和不。就在这个状态的话,如果能够收到这个keep,它就会变成establish,就是完完成了就是这个BGP连接。所有的状态已完成到这个状态,如果收到notification报文,又是由于某些原因。他又可以变,他又变到了这个错误的。连接错误的这个状态,然后这个establish。它就是一个就是完成状态的。它的中文意思也是已完成吗?是很很好理解的,然后在这个报文当中,在这个状态当中,它有几种,嗯,几种可能性的状态,比如说他收到的正确的update。或者说K8拉报文,就是呃,每隔多少秒它会发一个K8拉报文保和嘛,则保持这个BCP连接,如果收到错误的,那么又会发送这个not not notification报文给对答啊,状态又转为错误的状态。
15:08
如果收到这个root resh root resh报文,不改变bgb的状态,就是这边我们也看到了它是一个。告知邻居需要进行由刷新。然后如果收到notification报文,然后刚刚也收也收到了,它会转为一个错误的状态。然后如果收到这个拆除通知,它也是。呃,转为这个错误的状态,财政太多通知就是说,呃,不要被这个名词所所迷惑,它就是一个。呃,TCP我要连接断开的同时,就是又由于一些原因,它又进行一个断开,那么TCP如果断开了,那从第二个第二个状态它就要断开了,那它肯定会变为I的状态了。
16:01
其实如果你像我这样,慢慢一步一步去拆分开来理解,然后通过中文意思。再去对比它的每一个状态的意思,你很难去忘记这个六六种状态的,很多人会去背这东西,其实完全没必要。然后之间的交互原则,它有五大原则。其实现在都都不是五大原则了,只要你想罗列一些原则,它有很多的原则可以去罗列的,比如说IBGP路由只发给e b g pebg路由,路由发给所有的EBGP和BGP。让BGP只传最优路由。路由更新时,只发更新的BGP路由,所有对单体的路由BGP都会接收。然后B同步可以取消的情况,就是说本as不是过度的as。
17:00
然后本A类所有的路由器建立IBGB全连接,就是连接。这个也比较简单的。也不不要去背啊,就是你只要对基础知识特别扎实的话,他的什么交互原则。脱口而出。这个大家看一下行了。嗯,不做过深入的理解,因为这一块涉及到原理这一块,就是说嗯,他所所谓的这种。呃,图全是根据它的源码过来的,这个我们不用看。下面再来看一下它的邻居关系。然后连接关系啊,主要有IBGP跟EBGP它的。两种状态的邻居关系IBGP呢,就是说。
18:00
嗯,可跨可跨链路的,一般使用环回。还回它的地址间建立连接,只要PCPCBTCB可达就可以了。这这句话我不知道你们能不能够理解,只要TCP可达即可,能不能理解,其实你们如果能够做一下OPF跟BGP,或者说其他的路由,就算是静态路由。嗯,结合。BGP实验这句话你们是能够理解的。然后。这块EBGP,它就是可跨链路建立邻居。这个也比较,其实比较简单连接。邻居建立的条件。这个。也不能说邻居建立的条件嘛,反正就是说他怎样才能成为邻居呢。
19:01
或者说他邻邻居关系建立有哪些?呃,就是说注意点呢。啊,你就地路由,路由就必须要可打的。179。柯达。就是TCB需要连接。然后BB GP root ID不能冲突,这一块肯定是的,如果冲突了呢,会。直接报错了。然后连接as号,与本端的P配置的as号要一致一致。邻居BGP豹纹原地址和本端配置的BGP邻居有要一致。啊,双方激活的地址足有一致,你不能有一端是IIPVC,一端是IPV6,这肯定是不行的。然后BGP与IGP交互路由,这个就是IIGP就是内部网关协议嘛。
20:04
他怎么样交互呢?一般就是import import和network方式。就是在BGP当中引入I,呃,引入内部路由,比如说它的比如说OSPF路由,怎么去进行一个引入呢?通过import或者network方式,然后用策略,用路由策略进行路由过滤和路由属性设置,也可以设置密。告知邻居怎样?最优进入本as这个密的待会也会说的。然后在IGP引入引入BGP路由,就比如说在of中引入BGP路由,就是为避免大量的BGP路由对A类设备造成影响,当IGP引入BGP路由时,可以使用路由策略。
21:00
进行路由过滤和路由属性设置,这块就是要对它进行一个控制。这块也没什么难度,大概知道它怎么配型的,跟network。大概知道怎么配型。然后这边选规则这一块还是。比较有难度的。应该属于这块BGP当中最难的一部分。我当时学这一块的时候。就是这块学的时候比较困难,因为这块知识点太多了,你还得记。然后它有属性,有主要有四个属性嘛,一个公认必尊公认公认任意可选过度。可选非过渡,这两个其实你就可以简单理解为可传递,一个是不能传递。工人必准呢。
22:00
公认必争是什么意思呢?就是它的bgb设备当中必须。识别这样的属性就是。公认的,必须遵循的,你必须识识别这些属性。比如有三个属性,As pass。Next hope。Origin叫。就是记录路由经过的as号,你每个,比如说你你每呃经过三个。一呃,一条路由经过三个S区域,那你就把这个三个S区域都记录下来。通过这个中文意思嘛,As pass as路径路径,那就他这条路上的所有的as号,你把它记录下来就行了。然后就有两种情况。当发送的是本地事发的路由时。
23:00
发给EBGP时,在update报文当中创建一个携带本as号的as pass列表。发送IP时,在update报文中创建一个空的as pass列表。然后,如果当发送的是从其他BGP取来的路由时。发给EBGP会把本地的as编号添加在as pass列表的最前面,它的最前面。发给IBGP时不改变这条路由的as pass属性。就是如果是发给。内部的它是不会改变这个属性的。要好好去揣摩他的说的意思。然后。吓一跳属性。嗯,一般学学习动态路由的时候,吓一吓一跳最快。需要理解的就是记录路由的下一条信息,因为BGP的下一条属性和IBGP它是有不同的地方的,不一定就是邻居设备的IP地址,就是不一定是邻居设备的IP地址。这个一定要。
24:14
理解如果你BGP这块写的特别好的话,这一句话。应该是采购坑的点,然后他会遵循以下几个原则,一个就是说从IBGP学到的路由发给EBGP是。下一跳改变地址,就是建邻居的接口地址。从EBGP学到的路由,发给EBGP时吓一跳,也是改变的,它就是建邻居的这个地址。从EBGP学到的路由,发给IBGP时吓一跳,是不改变的。他的目的就是防止自由路径呢。什么是自由路径?
25:01
这个就是自由路径的。次优路径的一种场景。从EGBPBGP学到路由发给。IBGP10。它的next hope是不改变的,防止持有路径的,比如说R1跟R。可能会发生自由路径的持有路径,就是说你认为R1是最最优的,其实R2它是最R它是最优的,因为你是发给IBGP的。这一块自由线这一块需要大家去理解的。如果因为我这边只是抛砖引玉,不可能对每个知识点去展开。展开去讲解,如果展开去讲解,最起码两个小时甚至三个小时,因为BGP这块课程,如果专业的讲师去讲,一般是讲了两天。我这边只是抛砖引玉,就是带带着大家去梳理这方面,这方面的知识点,如果有哪些知识点你觉得还是迷迷糊糊的,比如说自学路线,它是什么样子的东西,他怎样才能产产生这种自由路径,怎么去解决,那么这一块看到这一块的时候,你如果心里面不太理解,立马就去把这这方面的知识点把它记录下来。
26:20
然后待会去查一查相相关的资料。这个才是最佳的学习方法。然后R反射路由时,呃,这个nexttop不改变,R反射路由这一块如果你不理解,一定要去看。自己始发的BGP路由。就是从自己这边发送的B路由lets ho就是会建立邻居接口的地址。还稍微有点拗,呃,稍微有点绕绕口,但是如果你学得好的话,其实这这块。嗯,你只要懂一个就行了,举一反三。
27:03
然后这个。Origin属性,它就是起始来源的意思嘛,就是定义路径信息的来源标记怎么变成BGP路由的,比如说。IGPGP。这个IGP就是network明年注入的,EBGP就是EBGP学到的,EGP就是EGP学到的。就也是引入的,可以在as内as间修改,默认不修改。公认任意。首先我们先不展开啊。我们先看一下这个意思,就是公共的就是。所有人都认,都认为。他是任意的,就是任任意。跟这个必尊必尊有点区别,他是必须遵守他,那他就是这边是任意的。
28:03
比如说本地。本地优先级属性no。Pro。值越大越优先,它是优先级越大越优先,这块跟下面要讲的一个属性它是相反的。比如说呃,它的是什么意思呢?就是说BGP设备可以识别该属性,没有强制要求。在update的部分中写来,所以它是任意的嘛,随你带不带都可以,功能就是告知本类路由器选择一个更好的出口访问。其访问其他的as。你看这边有个关键词更好的出口,所以我们要给它配置个优先级嘛,这块你一定要去联想级,也不要去认,不要去背了,公认任意里面有个那科呃,Pro属性。
29:03
那公认正义嘛,公认正义我可以去遵守,也可以去。不遵守啊,它的功能就是说要选择更好的出口嘛,那么更好的出口我怎么去实现呢?那就是用本地优先级,我优,我想要哪哪条链路优先走,那就让他优先走。其实这样记忆它是最好的啊。场景就是说BGP设会从不同的BGP得到多条相同的路由,但下一跳它是不同的。那么我们就选择一个本地优先级最高的。有有效范围内,就是说在BGBGP之间有效,不传给其他的as,确诊值就是100。原子聚合就是用于告知其他路由器。该由它是一个聚合路由可能可能出现的路由的丢失。这块。了解一下就行。
30:01
就可选过度,它就是可传递的。可传递的就是什么呢?它是一个能够传递。能够传递。这块不知道你们能不能理解,就是说能不能识别该属性,如果不能识别也能接收该。属性,并通告给其他的对等体。这块不知道能不能理解,我再读一遍啊,能不能识别该属性,如果不能识别。也能接收各类属性。并通告给其他的对等体。不知道读了两遍你们还能不能理解?就是他是。可选过度,就是说可传递。怎么理解呢?就是说如果去,如果我不能识别这个属性,就某一个属性我不能去识别,但是我也能去接收这个。之类的属性,并且通过给其他路路,其他的对对等体,就是说不能识别,但是我能去接受它,而且我能够通过给其他的对等体,就是可传递这块,我觉得我这样说你们应该能够理解。
31:13
比如说他的团体属性。那么那么就是说。我不能识别吗?不能识别肯定是出现在一个。很繁杂很多的一个元素的一个里面,那么显而易见,团体熟见嘛。弹力属性里面它就特别杂嘛。不,不管怎么弄,我不能识别,但是我要去接受,接受传传递,传递给传递当中的其他的元素啊。比如说公认团体属性限,就是限制路由传递的范围。这块我读一遍吧,Internet可以传递给任何的BP邻居的路由。No。
32:01
N什么的呢?Advertise就是广告的意思吗?不能广告,不能广告或者不能广播,那就不传递给任何的BP邻居的路由。这个no export就是不能传出本as。这个我不知道能不能理解啊,不能传出本as是什么意思呢?不能够传出本不知道你们能不能理解啊,No export。不能够去发表,就是通过通过中文意思,我们一定要理解它的中文意思,传就是说能够解释出来的这种意思,不能够去。发表。不能够去发表。那就不能传出本as,本as嘛,你只能在,你只能够在。同一个E当中,你去发表我能听得见,就就比如说你一个你一个村委村长,你在你在发发布一些通知的时候,你只能你只能够传递给本村村民嘛,你不能够传给其他的村民。
33:19
但是你可以传递给联盟中的其他as,其他比如比如说比如说你们你们这个,你们这个村子就不这个就不能以不能以村子。嗯,来来那个举例了。嗯,我们可以以什么呢。一。以打仗的时候他的那种。呃,某某士,某某士兵年,某某士兵年,这个年那个年的,但是有兄弟年嘛,这兄弟年就是个联盟嘛。你你不能够,你不能够传出,本就是说你不能够传出。呃,这个兄弟年当中的。
34:02
那些年,但是,但是你可以传递给兄弟年当中的任任何一个年。就你不能够。超出这个兄弟连的所有的范围。这样理解,不知道大家你能不能理解?然后noport sub confirmfored sub代表子子的意思嘛,一下就能理解了,不能够传出本S,也不能够传递个联盟中的其他is不能够传传出本联也不能够传出。传到那些兄弟里。啊,自定义的团体属性这些就是你可以去自定义啊,可选被过度就不能够去传递嘛,可以识别。嗯,能够识别就就传给其他的,你就不能识别,那就不能,就是说呃,你能做这件事就做,如果不能做那就不要做。看有一个有一个属性的密的属性跟上面的本地优先级是相反的,它是值越有越小越优先的就是。
35:07
嗯,告知邻居怎样进入,本也是跟上面相反的,它是。告知邻居就是说,呃。告诉比如说你去,你去跟你朋友去聚会。去新新街口去新街口去吃烧烤。嗯。你跟你的朋友,你跟你的朋友说怎么样怎么样,坐哪号线地铁就是最快的,能够到新街口是你去告诉你的朋友怎样怎样才能最快,这个不要记混了。场景就是说BGP路由从不同的EGP得到多同多条相同的路由,但上一条不同是。密的值最小,会作为最佳路由,就是说比如说从南京大学鼓楼校区到新街口,有很多很多种路可以走,比如说你可以选择公交转地铁,你选择打车,你选择骑自行车。
36:10
就是很多很很多很多种方式,比如说也有很很多条路可以走。所以那怎样才能是最佳到那边呢?这就是幂的值最小的。有效范围就是邻居as和其他IBGP,邻居可传递不能传递给第三方,As确认值就是零。确诊值不比较不同A的密度值。嗯,属性它是适合在R场景客户机收到路由做防缓,它是在。R这个场景下进行一个配置的。这一块。到时候说啊啊由的时候再说,暂时先不说了,因为。
37:03
再再说,嗓子就哑了。它也它也是它是在反射器当中访问的,它也是在R场景中,这个也后面再说。然后BGP选路的策略,它是有。13,嗯,13条选路车选路原则。这一块。建议大家以无论如何也要记住它,不管你通过什么样的办法也要记住它。然后暂时先休息一下,我也我也歇一下这块。这点太太多了,我讲的都嗓子都哑。下一期我再带大家继续的往下讲,因为BGP选择原则这一块。呃。背的话很难背啊,我需要带大家去理解,理解一遍你就永远就记住了。
我来说两句