美文网首页BGP协议
【HCIP】3BGP协议-1原理与配置

【HCIP】3BGP协议-1原理与配置

作者: 周山 | 来源:发表于2021-07-21 00:05 被阅读0次

定义

BGP叫做边界(AS的边界)网关协议
AS:AS是指由同一个技术管理机构管理(企业,ISP运营商),使用统一选路策略的一些路由器的集合。
IGP:AS内部网关协议,实现AS内部的互联互通
EGP:AS互联互通的一种路由协议
AS号:取值范围 1-65535
64512-65535 是私有AS号,用大型企业内部进行AS的复制
1-64511 是公有AS号,需要为用户/企业提供互联网介入服务时分配的

AS号 老的长度2个字节,16bit
AS号 新的长度4个字节,32bit
IGP 直连邻居之间传递路由信息,逐跳(逐路由)的传递路由
BGP是一种工作在应用层的协议,只要BGP邻居能够建立,BGP可以跨越多跳路由器建立邻居关系
BGP的路由属性是人为设计的,BGP的路由属性是对BGP路由进一步的描述
作用:实现BGP路由的控制,防环,选路,管理

BGP邻居发现

1、BGP是一种基于TCP协议的应用层路由协议,所以邻居不会自动建立,需要手动配置。
2、BGP是一种单播通信,DIP要事先知道
3、BGP使用TCP的179端口进行工作
4、BGP建立邻居的地址要保证连通性(两个地址之间的路由要通)

图片.png

BGP发现邻居时需要先启动BGP的一端,先发起TCP连接,RTB先启动BGP协议,RTB 使用随机端口号向RTA的179端口发起TCP连接。

BGP邻居类型

EBGP:运行在不同AS之间的BGP路由器建立的邻居关系为EBGP邻居关系
IBGP:运行在同一个AS之间的BGP路由器建立的邻居关系为IBGP邻居关系


图片.png

EBGP的配置步骤

1、直连物理接口配置EBGP

实验拓扑

图片.png

ip配置不再赘述
配置BGP的AS

[R1]BGP 1
[R1-bgp]peer 10.1.12.2 as-number 2

源地址默认情况下为去往邻居地址路由的出接口IP

[R2]bgp 2
[R2-bgp]peer    10.1.12.1 as-number 1

我们在进行BGP配置的时候需要注意指定的邻居地址为本端向该邻居发送BGP报文的目的地址,源地址默认情况下为去往邻居地址路由的出接口IP

我们继续实验:

<R1>dis bgp peer
 BGP local router ID : 10.1.12.1##继承全局的router id
   Local AS number : 1 ##用来描述自己所在的AS号
 Total number of peers : 1  #用来描述邻居的数量    Peers in established state : 1#用来描述能正常建立邻居关系的数量

  Peer(邻居ip)    V (协议版本号)AS(邻居bgpAS号)  MsgRcvd (从邻居那边收到的BGP报文的数量) MsgSent(发送给邻居BGP报文的数量) OutQ(在发送给邻居的BGP出接口队列上有多少BGP,不为0,说明BGP相关的链路有拥塞)  Up/Down (状态)      State PrefRcv(表示从邻居那边收到BGP路由的数量)

  10.1.12.2       4           2       19       19     0 00:17:47(邻居建立起来的时间) Established(只有这种的状态才是best,其他的都有问题)  
   0(表示从邻居那边收到路由的数量为0)
<R1>dis     
<R1>display rou 
<R1>display router i    
<R1>display router id 
RouterID:10.1.12.1
继承全局的router id

2、用lookback接口配置EBGP

背景:

继续实验:
为了解决单条BGP线路不稳定,我们新建一条物理链路作为备选路线,并配置如下


图片.png

ip配置完成之后,我们将其配置入BGP进程中。

[R1]bgp 1
[R1-bgp]peer 10.1.21.2 as 2

R2操作相同
此时我们查询bgp 邻居


图片.png

这种i情况看似稳定,但是我们继续实验就会发现问题
我们在R1引入一条静态路由,

[R1]ip route-static 192.168.1.0 24 NULL 0
[R1]bgp 1
[R1-bgp]import-route st 
[R1-bgp]import-route static 
[R1-bgp]q
[R1]dis bgp rou 
[R1]dis bgp routing-table 
 BGP Local router ID is 10.1.12.1 
 Status codes: * - valid, > - best, d - damped,
           h - history,  i - internal, s - suppressed, S - Stale
             Origin : i - IGP, e - EGP, ? - incomplete
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   192.168.1.0        0.0.0.0         0                     0      ?

我们从R2上观察bgp 的路由表


图片.png

从上图我们可以看到针对一条路由,它传递了两次,一次是上边的路由线路,一次是下边的路由线路。这样就会增加协议的负担,因为BGP的路由都是十万多条数据起步,增加资源负担,~占用。
所以这种方法是不建议的。

因此我们可以采用环回口配置EBGP邻居,因为不管两条链路中的任何一条都可以通过环回口通信。在保证可靠性的同时又可以节省资源占用。

做法

1.各自起环回口

[R1]int lo 0
[R1-LoopBack0]ip add 1.1.1.1 32

R2同

[R2]int l0
[R2-LoopBack0]ip add 2.2.2.2 32

我们测试一下连通性:


图片.png

一定是不通的
现在我们删掉R2设备上BGP相关的所有配置,(现网不要用,小心蹲号子)

[R1]undo bgp 1
Warning: All BGP configurations will be deleted. Continue? [Y/N]: y

R2同上

配置路由:

[R1]ip route-static 2.2.2.2 32 10.1.12.2
[R1]ip route-static 2.2.2.2 32 10.1.21.2

R2

[R2]ip route-static 1.1.1.1 32 10.1.12.1
[R2]ip route-static 1.1.1.1 32 10.1.21.1
图片.png

路由ping通之后我们就可以建立BGP邻居了
建立

[R1]bgp 1
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 2.2.2.2 as 
  [R1-bgp]peer 2.2.2.2 as-number 2
[R1-bgp]dis ip rout 
[R1-bgp]dis ip routing-table  2.2.2.2

[ R2]bgp 2
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as 
[R2-bgp]peer 1.1.1.1 as-number 1
[R2-bgp]
图片.png

这里需要注意一下,我们查看路由表发现,他还是会用物理口作为源地址发起连接,至于是哪个物理口,我们需要看负载分担的情况。
此时我们的目的很明显,就是通过1.1.1.1作为源地址向2.2.2.2发送BGP报文,但是此时的R1的1.1.1.1是环回口静态路由,默认用的是出接口的地址作为源地址进行通信。
因此我们需要再进行以下操作
BGP进程下

[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0

这条命令表示:向指定邻居发送BGP报文的地址为指定loopback接口的ip地址


图片.png

我们发现此时过了很久双方邻居关系还是没有建立起来。

埋雷

这是因为从环回口到路由,中间是进过一跳的,从1.1.1.1的环回口到对端路由器接口后TTL-1=0,还需要再往本路由的环回口作为下一跳继续发送,但是此时TTL=0,直接丢弃,导致邻居关系不建立。
ps: 在现实网络环境中,由于防止单一线路脆弱,路由器选路的方式有很多条,我们可以把TTL值设置的大一点,让路由经过很多条依然可以使得在到达对端BGP路由器接口时TTL>=1.


默认情况下,EBGP邻居之间发送BGP报文的TTL=1,即强制要求EBGP邻居直连。


修改BGP进程下环回口ip的TTL值

[R1]bgp 1
[R1-bgp]peer 2.2.2.2 eb 
[R1-bgp]peer 2.2.2.2 ebgp-max-hop 10

R2同
目的:当EBGP邻居之间存在多跳时,指定向EBGP邻居发送BGP报文的TTL值,仅在EBGP邻居之间使用,IBGP邻居默认TTL=255

效果图

图片.png

因为我们是在bgp引入静态路由,所以也会把2.2.2.2这条路由存入BGP路由表,现在我们直接发布路由,

[R1-bgp]undo import-route static 
[R1-bgp]network 192.168.1.0 24

此时我们再次从R2查看BGP的路由表


图片.png 图片.png

如果我们需要在同一个AS号内用loopback接口配置IBGP,我们就只需要配置两条命令

bgp 1
peer 2.2.2.2 as 1
peer 2.2.2.2  connect-interface LoopBack 0

这个时候就不需要进行TTL值的配置,因为在IBGP中邻居默认的TTL值255
bgp 1
peer 1.1.1.1 as 1
peer 1.1.1.1 connect-interface LoopBack 0

相关文章

网友评论

    本文标题:【HCIP】3BGP协议-1原理与配置

    本文链接:https://www.haomeiwen.com/subject/zobxhltx.html