美文网首页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