BGP详解

BGP:算法

BGP是创建在TCP之上的  端口号为179服务器

AS:(二者是区分开来的)特指被相关机构管理  运行相同路由协议的一组路由器(中国人只能和中国人说,外国人和外国人说)网络

BGP是运用在AS之间的ide

BGP的前身是EGP,EGP只能在AS之间简单的传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题,BGP通常运营在运营商的核心网oop

BGP的邻居发现:学习

wKioL1mbycPBpwz4AABChgVkIys122.png-wh_50

先启动BGP的一端先发起TCP链接,如图所示,RTB先启动BGP协议,RTB使用随机端口号向RTA的179端口发起TCP链接。优化

路由器是经过物理口去创建邻居的;Loopback也能创建,前提是必需要有路由,须要创建一个动态路由或者静态路由。spa

源是12.1.1.1 目的2.2.2.2router

源是2.2.2.2 目的 10.1.1.1blog

没有匹配,即三次握手没有成功


AS号的分类:

1-64511 由IANA统一分配

64512-65535 私有企业或者自行分配

特色:BGP能够跨越多跳路由器创建邻居关系,很是吊

邻居关系:

EBGP(外部网关边界协议):运行在不一样AS之间的BGP路由器创建的邻居关系,默认的优先级是225,默认的TTL是1

IBGP(内部BGP协议):运行在相同AS之间BGP路由器创建的邻居关系,默认的优先级是225,默认的TTL是255

[R1]router id 1.1.1.1   (标识路由器)

[R1]bgp 100 (配置邻居关系)

[R1-bgp]peer 2.2.2.2 as-number 100 (peer后面是对端邻居的接口地址,as-number后面是邻居路由器所在的AS号,AS号相同,就是IBGP邻居关系,AS号不一样,就是EBGP邻居关系)

PS:创建IBGP邻居关系是时,通常使用loopback接口的IP地址,由于loopback接口开启后一直处于UP状态,只要保证路由可达,邻居关系就会处于稳定状态。而创建EBGP邻居关系时,通常使用直接接口的IP地址,由于EBGP是跨AS创建邻居关系,邻居关系创建以前非直链接口之间的路由不可达

BGP邻居关系配置的优化

在路由器上敲

[R1]router id 1.1.1.1   (标识路由器)

[R1]bgp 100 (配置邻居关系)

[R1-bgp]peer 2.2.2.2 as-number 100

[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0 (修改更新源,路由器默认是物理口创建可链接)


报文:

Open keeplive update route-refresh notification

open:邻居创建发送的第一个报文 协商参数

keeplive:周期性发送,去看链路是否正常

update:去更新路由信息

①更新路由属性相同的多个路由条目

②更新路由不可达的路由条目(删除)

route-refresh:当路由策略改变的时候会发送该报文去请求新的路由条目

notification:当邻居失效就会发送这个报文

一:Idle:BGP的初始状态,不会去接受任何邻居发来的任何请求

二:connect:若是成功了就进入OPEN SENT状态,若是失败了会根据重传计时器从新发起连接,同时切换到Active状态。也就是说,只要在Connect状态,就证实BGP正在试图创建链接,而不是等候。

①链接成功

②链接不成功

③请求超时

三:active:请求链接,向邻居去请求链接的,在OPENSENT的时候,若是BGP连接突然丢失,也会进入这个状态。

第一种 请求成功 connect

第二种  请求不成功

第三种  请求超时

四:opensent

对收来的open报文进行检查,若是有错误,系统就会发送一条出错通知消息并退回到Idle状态,若是没有错误,BGP就开始发送Keepalive 报文,并复位Keepalive 计时器,开始计时。协商成功  进入下一个状态

五:opencomfirm:若是收到了一个Keepalive 报文,就转入Established 阶段,BGP邻居关系就创建起来了。若是TCP链接中断,就退回到Idle 状态。

六:establish:BGP 邻居关系已经创建,这时,BGP将和它的邻居们交换Update 报文

TTL:通过一台路由器,而且通过解封装和从新封装之后的源地址和目标地址不变,这时候,TTL减1

BGP通告原则之一:仅将本身最优的路由发给邻居

wKioL1mbyeqj1NopAAAoGxJNue4427.png-wh_50

将10.1.1.0/24这个路由发布给邻居

下一跳自我:

看上图可知,10.1.1.0/24的下一跳是1.1.1.1,他就会把1.1.1.1发送给邻居,其余路由器也就接受到了这个1.1.1.1,可是,这些路由器并不能直接通讯,由于下一跳是直接到达1.1.1.1了,因此,不是最优的路由,没有到达直连的那个路由器,因此,须要修改下一跳,把下一跳设置为从传到他的那个路由

wKioL1mbygPyQ8mSAAAUC72Dulw324.png-wh_50

如上图所示,它的下一跳就改变了,他就能把这个最优路由发布给其余的邻居,其余的路由器经过这个直连的下一跳,也就能通讯了。

配置命令:[R2-bgp]peer 4.4.4.4 next-hop-local

BGP通告原则之二:经过EBGP得到的最优路由发布给全部BGP邻居

BGP通告原则之三:从IBGP学到的最优路由不会发给其余的IBGP邻居、(也是IBGP的水平分割)

wKioL1mbyiKzadjBAAB4d1ZahNQ311.png-wh_50

R3从R1经过EBGP学来的10.1.1.0/24的路由发送给R2,可是R2不会经过IBGP把10.1.1.0/24学来的路由发送给R4,因此,R4是不会接收到10.1.1.0/24这条路由的

BGP通告原则之四:BGP与IGP的同步

也就是把BGP的路由表和IGP的路由表同步

华为默认关闭

wKioL1mbyjqDUVqtAAAQNhaNsjk046.png-wh_50

IBGP水平分割:从IBGP学到的最优路由不会发给其余的IBGP邻居、

路由黑洞

解决:

1.全互联(TCP会话过多,资源占用就大了)

2.路由的引入,把BGP的路由引入到IGP中

前两个不是太靠谱,由于BGP有上万个路由条目,IGP只有几千个

3.MPLS

BGP路由信息处理

wKiom1mbylzyvgtdAABD89axTTk522.png-wh_50

当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,来为每一条前缀肯定最佳路径

得出的最佳路径被存储到本地BGP路由表(local_RIB)中,而后被提交给本地IP路由表

BGP的属性

wKioL1mbymrQ0qNcAAA_aqw-rJI001.png-wh_50

公认:在Update报文当中,能够支持和识别的属性

①公认必遵:在Update报文当中,必须携带的属性

②公认任意:能够不携带在update报文当中

可选:在update报文当中,能够不识别的属性

可选过渡:本BGP路由器不识别的属性,可是能够把该属性传递给邻居

可选非过渡:本BGP路由器忽略的属性,而且不传递给邻居

BGP属性-Origin

Origin属性定义路径信息的来源,标记一条路由是怎么成为BGP路由的

orgin的三种属性:

i代表BGP路由经过network命令注入

wKioL1mbypCjL8paAAAQbHNygzQ875.png

e代表BGP路由是从EGP学来的(如今EGP不用了,可是能够经过路由的策略修改成e)

?即incomplete(路由引入)代表BGP路由经过其余方式学来的路由信息

三种Origin属性的优先级为:i>e>Incomplete(?)

经过EGP学习来的   E

incomplete(路由引入)

AS-PATH:记录了路由通过的全部AS的编号

规定AS_PATH越短(记录的AS编号越少),路径越优

BGP属性-Next_hop

1.EBGP邻居之间采用直链接口创建邻居关系,EBGP邻居在相互通告路由时会修改Next-hop为本身的出接口IP;

2.IBGP邻居一般采用Loopback接口创建邻居,当路由时本路由器起源的,在发送给邻居以后Next-hop该为本身的更新源地址,这样即便网络中出现链路故障,只要Next-hop可达,一样能够访问目的网段,提升网络稳定性

MED(以小为优)

仅在相邻的两个AS之间传递,收到此属性的AS不会再通告给任何第三方AS,用于判断流量进入AS时的最佳路由 和Local_Preference同样,也是设置怎么走

Local_Preference(以大为优)

Local_Preference属性仅在IBGP邻居之间有效,不通告给其余的AS。它代表路由器的BGP优先级,用于判断流量离开AS时的最佳路由 设置怎么走,往哪里走,控制往哪里走,默认是100


BGP路由优选原则

BGP路由器将路由通告给邻居后,每一个BGP邻居都会进行路由选择,路由选择有三种状况

1.该路由到达目的地惟一的路由,直接优选

2,对到达同一目的地的路由多条路由,优选优先级最高的

3.对到达同一目的地具备相同优先级的多条路由,必须用更细的原则去选择一条最优的

通常来讲,BGP计算路由优先级的规则以下

1.丢弃下一跳不可达的路由

2.优选Preference_Value值最高的路由(私有属性,进本地有效)

3.优选本地优先级最高的路由

4.优选手动聚合>自动聚合>network>import>从对等体学到的

5.优选AS_Path最短的路由

6.起源类型IGP>EGP>Incomplete

7.对于来自同一AS的路由,优选MED值最小

8.优选从EBGP学来的路由(EBGP>IBGP)

9.优选AS内部IGP的Metric最小的路由

若是前九条都是同样的话,就会出现负载分担

可是,BGP不会让他出现负载分担的

10.优选Cluster_List最短的路由

11.优选Orginator_ID最小的路由

12.优选Router_ID最小的路由器发布的路由

13.优选具备较小的IP地址的邻居学来的路由


Preference_Value是BGP的私有属性(华为的私有属性),Preference_Value至关于BGP选路规则的Weight值,仅在本地路由器生效,Preference_Value值越大,越优先


引入一个默认路由

第一种方式

[R1]bgp 100

[R1-bgp]peer 2.2.2.2 default-route-advertise

第二种方式

[R1]ip route-static 0.0.0.0 0.0.0.0 NULL 0(目的是让默认路由出如今igp路由表里)

[R1-bgp]network 0.0.0.0 0


手工汇总:

第一种:

[R1]ip route-static 123.0.0.0 8 NULL 0

[R1-bgp]network 123.0.0.0 8

第二种:

aggregate 123.0.0.0 8

收到的是明细路由和汇总路由



路由反射器(RR)

1.客户机

2.服务器

3.非客户机

至关于一面镜子,经过这面镜子进行反射

[R2-bgp]peer 3.3.3.3 reflect-client

怎么改最优

①从EBGP学来的路由会发给全部的客户机和非客户机

②从非客户机学来的路由会发给全部的客户机

③从客户机学来的路由会发给除了该客户机之外的全部客户机和非客

相关文章
相关标签/搜索