HCIP学习--BGP1

目录

BGP是什么

AS

EGP协议

IGP协议

EGP和IGP的区别

IGP协议追求

EGP协议的追求

BGP协议

BGP的特性

可靠性

可控性强

AS-BY-AS

具有丰富的属性来取代IGP中度量进行选路

默认不被用于负载均衡

不需要周期更新

无类别路径矢量

BGP数据包

Open

Keeplive

Update

Notification

BGP的工作过程

EBPG和IBGP

 BGP路由黑洞

解决方法

BGP的防环机制

水平分割

EBGP水平分割-针对AS之间的环路

IBGP水平分割-针对AS内部的环路

配置 

建立直连的EBGP邻居关系

建IBGP邻居

多条物理链路时建立EBGP邻居

BGP宣告


BGP是什么

无类别路径矢量型EGP协议、边界网关路由协议

BGP 是唯一一个用来处理像英特网大小的网络的协议,也是唯一能够妥善处理好不相关协议间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策

AS

在互联网中,有一个个自治系统,然后这个自治系统有唯一标识得编号AS

AS标准编号16位二进制 0-65535

1-64511 公有

64512-65535私有

还有扩展编号同样是32位2进制

每一个互联网用户都在AS内,比如说你使用电信,那你就在电信的AS中,然后要和其他运营商的网络通讯那样就会用到BGP

CIDR Report可以查看AS号的网站

EGP协议

EGP被称为外部网关路由协议 只有两种协议EGP、BGP,BGP 构建在 EGP 的经验之上。

IGP协议

IGP被称为内部网管路由协议 rip ospf之类的

EGP和IGP的区别

IGP协议追求

无环(选路佳)

收敛快

占用资源少

EGP协议的追求

可控性强

可靠性

AS-BY-AS  

BGP协议

在中国每个运营商都有自己的AS号,那么他们之间要相互沟通,他们之间肯定需要设备保证通讯,这台设备单独属于那个运营商,另外一个运营商都会不满。所以需要解决这个设备的归属问题
这就需要中间放两个设备,一个设备在电信一个设备在联通然后两个设备之间用BGP然后靠BGP传输路由。BGP就可以在两台设备上运行传输相应的路由,注意BGP没有算法,而是转发本地路由表中来自其他协议生成的路由条目;AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;

BGP的特性

可靠性

BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系,也就是单播邻居。BGP基于TCP工作,这样可以保证BGP的可靠性,tcp只能单播,基于TCP 179端口工作

可控性强

 BGP协议主要负责搬运IGP协议产生的路由,类似多点双向重发布,对选路不做计算所以需要管理员大量手工的干涉选路。所以需要可控性强。BGP承载于IGP上。

AS-BY-AS

BGP里面是一个AS到一个AS。可以类比RIP协议以路由作为一跳,一跳到一跳

具有丰富的属性来取代IGP中度量进行选路

多个参数控制协议(ospf等协议选路考的是度量,BGP没有度量选路靠的是各种属性,不计算路由,是比一些值,直接选)

默认不被用于负载均衡

通过各种选路规则仅仅产生一.条最佳路径(BGP每一个圈都是一个as传输路由对每个as内部的路由有多复杂不知道,所以负载均衡不可取,和ospf和rip不一样他们之间的那个圈都是路由复杂不复杂一下就能看出来,人为可以负载均衡但是要确定路是一样长的)

不需要周期更新

BGP之间不是周期更新,BGP传输的AS之间的路由动辄好多条,次次周期更新太麻烦了,占用资源也高

无类别路径矢量

距离矢量的升级版--AS--BY--AS(共享路由带掩码,公网汇总会汇出超网)

BGP数据包

BGP基于TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp会话建立后

BGP通过TCP的会话来进行传输及可靠性的保障

首先通过TCP的三次握手来寻找到邻居

Open

仅负责邻居关系的建立,正常进收发一次即可;携带route-id;这个rid可以各两个一样,但是还是建议rid全网唯一,他们之间不传拓扑只穿路由

Keeplive

保活

邻居刚建好的时候会很快的发几个,然后才是一分钟一个

周期1min查询邻居关系是否存在;实际保活TCP会话;holdtime默认3min,死亡时间3分种,三分钟没有发数据,会话就断了,邻居也就断了,tcp会话在邻居关系就在

Update

携带路由条目

目标网络号+各种属性

tcp会保证所有包的可靠性

Notification

出现错误数据时收发

(对比一下ospf协议,BGP没有hello包,没有hello包因为靠的是tcp,tcp可以建立就代表可以建立邻居关系,tcp三次握手相当于hello包的发现功能)

BGP的工作过程

BGP没有算法

启动配置完成后,邻居间基于tcp的179端口通过tcp三次握手建立tcp三次会话,(邻居间已知对端单播地址,地址可达,BGP承载于IGP上首先内网要通)会话建立后,所有BGP数据包全部局域TCP会话进行传递和可靠性保障,邻居间正常只收发一次open报文交互RID,相互认识,建立邻居关系,生成邻居表。邻居关系建立后:正常每一分钟发一次Keeplive包周期保活tcp邻居建立后是没有任何路由,是之后管理原根据网络实际需要,选者性将本地路由表中通过任何来源产生的路由条目。宣告到BGP协议,由BGP通过更新包UPDATE共享给所有BGP邻居然后会生成一个BGP表,这个表装载本地发出及接受到的所有BGP路由,仅将本地BGP表中最优(属性最好)路由条目加载于本地路由表中,选路不一定最优,这个选路仅仅基于BGP选路规则;默认不支持负载均衡无周期,只有keeplive保活

EBPG和IBGP

EBPG不同AS之间的BGP

IBGP同一个AS的BGP

下图有例子 

 BGP路由黑洞

 上图做为例子来解释

看C和D他们不运行BGP,F传路由给E,E传给B的时候经过D和C,但是D和C不运行BGP,所以没有去往A的路由,然后F传给A的信息就会被C和D丢掉,C和D就成了黑洞

总结

BGP可以非直连建邻;从所有运行BGP协议的路由器路由表来看,目标可达;

但当流量正在转发时,流量需要经过下一跳转发,中间只要经过未运行BGP的路由,就没有去往目标网段的路由,就会产生路由黑洞

解决方法

BGP之间连接一个物理线

缺点

成本高

B和E之间来一个tunnel

转发效率低

设备所有设备运行BGP

成本高

将BGP的路由重发布一下

也不合适

BGP的路由太多,导入到小路由将会出现问题,实验环境可以尝试,真实环境不建议

MPLS多协议标签交换

下一章内容

MPLSvpn

这个VPN和专线最想的一个

BGP的防环机制

水平分割

EBGP水平分割-针对AS之间的环路

产生环路的条件 

以上面的图片作为例子一号AS的路由传给二号AS再传给三号AS的路由再传回一号路由,这样就成环了。

解决方法水平分割

BGP的路由条目中携带者众多参数,包裹各种BGP属性;其中有一种AS-pash属性

该属性用于记录该路由条目经过过的所有AS编号,然后这个路由从那发出来的再回去是看见AS编号,就会发现这个条路由是自己发过的

该属性用于记录该路由条目经过过的所有AS编号;若BGP协议学习到一条路由,属性中包含了本地的AS号,将拒绝接收

IBGP水平分割-针对AS内部的环路

IBGP路由在AS内部传输时属性不变

本地从一个IBGP邻居处,学习到的路由,不得共享给本地的其他IBGP邻居

以下图作为例子,A传一条路由给B,B传一条路由给D,但是B不可以将这个路由传给E,想传的话B和E需要建立IBGP邻居关系,这样要想正常传输路由的话,就绪要每两个路由之间都要有IBGP邻居关系,这个样子IBGR的邻居关系数量随BGP运行设备的数量指数上升,配置量极大,后期可以有条件的打破IBGP水平分割规则:联邦路由器反射器

配置 

 以这个图作为例子

首先配置好IP,和IBGP

 然后开始配置BGP,BGP邻居关系建立,与路由条目宣告是分开的配置的

建立直连的EBGP邻居关系

R1和R2建立直连的EBGP邻居关系

[r1]bgp 1 这个1是AS号不具有本地意义

[r1-bgp]router-id 1.1.1.1手写rid,建议手写,不手写的话,会自动生成,生成方式和OSPF一样

[r1-bgp]peer 12.1.1.2 as-number 2 告诉要建的邻居接口号,再告诉AS号

要建的话双方都要建下面配置R2

[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 12.1.1.1 as-number 1

 建邻居配置完成后邻居间三次握手开始建立tcp会话

其实不止进行了三次握手,而是六次,是双方都进行了三次握手,总共六次,然后是产生了两条tcp会话,但是两条没有用,所以会断开一条,rid小的对rid大的请求的那条将会被断掉

[r2]display tcp status 查看tcp会话已经出现先了tcp会话 

 会话建立,open报文收发一次,邻居关系建立

[r2]display bgp peer查看bgp邻居

peer字段代表是那个邻居

V代表版本

AS代表这个邻居是那个AS中的

MsgRcvd我从邻居这收了几个包

MsgSent我给这个邻居发过去几个包 

OutQ策略

Up/Down连接建立多长时间

State表示现在的连接状态,只有两种状态建立,或者正在建立中

PrefRcv显示现在这个邻居给我发了几条路由

建IBGP邻居

R2和R3建立IGBP

注意在真实环境中,R2和R3之间的路径会很复杂,不会出现如此简单的一条直线路由,可能会出现很多条路,所以如果只用接口之间的路由是不是就只锁定了一条路,这条路断了就g了,其他几条路也是不是浪费了,所以建议用路由上的环回建IBGP邻居

配置 

[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2

[r3]bgp 2
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 2

 这个时候邻居关系没有建成

因为R2和R3的环回建邻,目标IP是对方的环回但是源是自己的接口IP,对方回包的时候目标是你的环回,但是源是3的接口IP,对不上,所以要改,源改成环回接口

[r2-bgp]peer  3.3.3.3 connect-interface LoopBack 0 在我和3.3.3.3建立的时候用我的环回0作为源IP

[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0 

多条物理链路时建立EBGP邻居

 同理R3和R4之间也是一样

直连的EDGP上存在多条物理链路时R4和R5之间相连

然后想要使用R4和R5之间的两根线,这个情况和R2、R3之间真实情况一样了,所以也用环回来建邻居,但是首先需要R4的环回和R5的环回是通的,所以需要先配置两条静态路由

[r4]ip route-static 5.5.5.0 24 45.1.1.2
[r4]ip route-static 5.5.5.0 24 54.1.1.2

 [r5]ip route-static 4.4.4.0 24 45.1.1.1
[r5]ip route-static 4.4.4.0 24 54.1.1.1

 然后用环回开始建邻

[r4]bgp 2 
[r4-bgp]peer 5.5.5.5 as-number 3
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0

[r5]bgp 3
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 2
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0

 这个配置配置完后它的配置还是不成功,原因是因为,当时设计的时候,这个IBGP的包的ttl是255

EBGP的ttl是1,这个是保障R4和R5之间是直连,你可以在R4和R5之间直接建邻,但是不可以用环回,因为只有1的TTL跳一下就死了。要想用环回建邻,就需要修改TTL

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2

[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2

BGP宣告

 然后就可以开始宣告问题了

运行BGP协议的路由器可以宣告本地路由表中通过任何协议获取到的路由条目—静态、IGP、直连; 而本地通过BGP协议学习到的路由,只要在本地依然优秀,将继续将向本地的其他BGP邻居传输

(注意:宣告时,宣告的条目必须同本地路由表中的记录完全一致)

宣告1.1.1.0这个网段

[r1-bgp]network 1.1.1.0 24

[r1-bgp]display bgp routing-table 查看BGP路由

状态-- * 可用     >  优秀      *>同时存在—可以加表(路由表) 代表可以传递(传递给

本地的其他BGP邻居)

状态i若出现i代表该条目是本地通过IBGP邻居学习到的

然后查看一下R2的BGP路由表

 

在查看一下3的BGP路由表,发现不优秀,原因有一个同步问题,但是第四版本的BGP已经关了,同步问题:本地通过IBGP邻居学习到的路由,必须本地同时通过IGP也学习到,才能优秀。还有一个IBGP的传递属性不变,然后到了路由R3的时候下一跳不变R3没有去往12.1.1.1的路由。

 配置

[r2-bgp]peer 3.3.3.3 next-hop-local 和2说一声传递路由给的R3的时候下一跳是本地

  然后再给2和4建邻

[r2-bgp]peer 4.4.4.4 as-number 2
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]peer 4.4.4.4 next-hop-local
[r4]bgp 2
[r4-bgp]peer 2.2.2.2 as-number 2
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0

然后宣告4和3的环回 

 然后当R5传递给R4还是会出现问题

因为写了一条去往5.5.5.5的静态,然后就是产生了一个悖论,我要和5.5.5.5建邻,所以我写了一条去往5.5.5.0的静态,然后把邻居建立起来以后你又给我传递一条5.0路由

思科解决方案,路由可以传但是不可以,本地加表

华为是不可以传

但是再实际工程中这个问题不需要解决,原因,传递的路由时用户和建邻的接口不同

要是硬想要传5.5.5.5路由那就修改静态将传递过来的路由和自己写的静态不相同

[r4]undo ip route-static 5.5.5.0 24 45.1.1.2
[r4]ip route-static 5.5.5.5 32 45.1.1.2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值