笔记 BGP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记 BGP相关的知识,希望对你有一定的参考价值。

在路由器之间动态的学习路由条目,形成路由表

IGP:以最快的速度,计算一个去往目标网络的最短的、无环的转发路径
-DV
RIP
IGRP
EIGRP
-LS
ISIS
OSPF
EGP:在不同的企业之间,实现大量路由的稳定可靠的传输,并且可以实现路由
的灵活控制,并且保证无环;
-BGP:border gateway protocol ,边界网关协议
用于连接不同的企业或者组织结构;

prefix/mask type priority cost next-hop , interface

数据库中 ---(priority/cost)---> 路由表中
                                    -match packet :
                                            最长匹配原则

money money home

优先级:表示的路由的稳定性,值越小越好;0-255 ;

Metric(度量值):表示的是去往一个目标网络的距离的远近,越小越好;

OSPF:
1、邻居表
2、数据库
3、路由表
-hello:是非可靠传输方式;
-DBD:隐式确认,通过DBD报文中的序列号字段进行确认;
-LSU:显式确认,每发送一个LSU,都会返回一个LSAck;
-LSR:显式确认,每发送一个LSR,都会返回一个LSAck;
-LSAck:仅仅对其他报文实现确认作用,但是本身的传输是不可靠的;

L2+L3+OSPF

BGP:
L2+L3+TCP+BGP - tcp 179
L2+L3+UDP+RIP - udp 520
L2+L3+OSFP - protocol-id : 89 , TCP/IP 路由技术卷1,2 | OSPF设计与实现 | OSPF命令手册
L2+L3+EIGRP - protocol-id:88
L2+ISIS

关于交换:
    BCMSN    chm/pdf

BGP工作原理:
1、邻居表:display bgp peer
2、数据库:display bgp routing-table
3、路由表

bgp {as} # as 分为公有和私有,[64512--65535]

peer {ip-address} as-number {对方设备的}


BGP邻居建立:
-内部邻居
R1;
bgp 64512 # 设备本地运行的 BGP AS 号;
router-id 1.1.1.1
peer 192.168.12.2 as-number 64512 #邻居路由器属于的 AS 号;

  R2;
    bgp 64512
      router-id 2.2.2.2
      peer 192.168.12.1 as-number 64512

  display bgp peer  # 查看设备上的 BGP 邻居表;
     local-as
     local-router-id 
     number of peers 

peer v as msgrcvd msgsent outq up/down state prefrvcd

R1:
  bgp 64512
    peer  10.10.2.2  as-number 64512 
       # R1 主动向 10.10.2.2 发起一个 TCP 179 的链接;
       # 10.10.2.2 必须位于 AS 64512
           or
         10.10.2.2 的回复报文,必须是属于as 64512 的; 
       # 对方回包时,所使用的源IP地址必须是 10.10.2.2 ,
          否则不接受(这就是“更新源检测机制”)

    为了解决“非直连端口建立邻居时”所面临的“更新源检测机制”,
    所以我们在发送 BGP 链接请求时候,更改报文的源IP地址:
        例如:
            bgp 64512
              peer 10.10.2.2  connect-interface loopback 0

    强烈建议:
        非直连端口建立BGP邻居关系时,两边的Peer命令,都使用
        该参数;

非直连IBGP邻居关系建立:

1、配置IP
2、配置IGP
3、配置BGP

外部BGP邻居建立时候需要考虑的机制:
1、更新源检测机制 -- 与IBGP邻居是相同的;
2、直连检测机制
#在什么时候才会检查该机制
在建立EBGP时,并且发送的BGP报文的 TTL 为 1 时,才会检查;
#该机制的定义是什么
&去往邻居地址时,使用的必须是“直连路由”,
如果不是,则表示不满足“直连检测机制”,从而无法建立EBGP邻居

面对为了链路稳定为建立的“非直连的 EBGP 邻居关系”,我们需要修改 EBGP 
报文的 TTL 值不是“1”即可。因为,一旦不是1,就不会关心该机制了。

    bgp 64513
      peere 10.10.2.2 ebgp-max-hop [255]

============================================================

IBGP邻居防环机制:
-IBGP水平分割
指的是从内部邻居路由器收到的路由,不会再次发送给其他的内部邻居;

解决方案:
   -IBGP全互连
   -BGP联盟
       大AS:在外部邻居关系之间发送的报文中,使用的是大AS;
       小AS: 在联盟内部的“内部邻居”之间肯定是用;
             在联盟内部的“联盟成员AS”之间的特殊的外部邻居之间也使用;

R1:

   bgp 64512
 confederation id 200  # BGP联盟的号码,表示的是 大AS 
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10

R2:

 bgp 64512
 confederation id 200 
confederation peer-as 64513
peer 10.10.1.1 as-number 64512  #与R1为内部邻居,所以使用小AS
peer 10.10.1.1 connect-interface loopback 0 

peer 10.10.3.3 as-number 64513  #联盟内部的特殊的外部邻居,使用小AS
peer 10.10.3.3 connect-interface loopback 0
peer 10.10.3.3 ebgp-max-hop 

peer 192.168.24.4  as-number 400  # 此时与R4建立邻居使用的是大AS

R3:

  bgp 64513
confederation id 200
confederation peer-as 64512
peer 10.10.2.2 as-number 64512
peer 10.10.2.2 connect-interface loopback 10
peer 10.10.2.2 ebgp-max-hop  

BGP (二)

IGP
EGP
BGP

    IBGP
   -IBGP的水平分割
        #IBGP全互联
        #联盟(大AS和小AS)
        #路由反射器(route-reflector)
        -当我们将一个路由器配置为BGP的“路由反射器”之后,
         该路由器就会不关心“IBGP水平分割”机制。
        -路由反射器 + 路由反射器客户端 = 路由反射 簇 (cluster)

    R5;
        bgp 64512
          peer 10.10.4.4 reflect-client     #将R4作为自己的客户端;
                                             从而自己成为了反射器;                
EBGP

BGP路由在传递过程下一跳的变化:

    1、在内部邻居之间传递的时候,下一跳是不变化的;
2、在外部邻居之间传递的时候,下一跳是会变化的;

在AS的边界路由器上,对自己的内部邻居配置“下一跳自我”:

     R7:
    bgp 64513
      peer 10.10.6.6 next-hop-local 
                # R7发送给 R6 的所有的路由的下一跳为 10.10.7.7 ; 

BGP在什么情况下使用:

 1、运营商之间使用 BGP ; 
2、当企业具有多出口网络设计的时候,可以使用 BGP ;
3、当想对路由选路进行灵活控制的时候,可以使用BGP;

BGP 13 条选路原则:

1、权重(prefered value |  weight ) ,私有属性,值越大越好;

2、local preference ,本地优先级,越大越好;

3、是否为本地起源 
   所谓本地起源,表示的是本地产生的BGP路由。
   对于BGP路由器而言,BGP路由分为两种:
          自己本地产生的
          从其他路由器学习的
        本地产生的,要优于 “从其他路由器”学习的路由

4、as-path长度 ,越短越好(属性as-path可以实现不同AS之间的路由转发环路的防护)
as-path 表示的是 BGP 路由在传递过程中,前后依次经历过的 AS 号的组成;
  当BGP路由器发现收到的BGP路由的 AS-path 属性中包含了自己的 AS号,
  则表明该路由在传递过程中,曾经穿越过自己的 AS , 
  那么,就不接收该路由条目,以防止路由环路的发生;
  as-path 的形成过程是:从右向左;

  默认情况下,as-path在 外部邻居之间发送路由的时候,才会变化;

5、origin code ,本地起源属性( i > e > ? )

6、MED,值越小越好(只有当邻居AS相同时,才会进行比较)

7、EBGP优先于IBGP

8、去往BGP路由的下一跳的 IGP Metric ,越小越好;

9、负载均衡
   如果开启的话,则将多个路由条目都放入到路由表中;
   并且将 best 路由,发送给邻居;
10、越老越好(仅仅对于EBGP)
11、RID(router-id),越小越好;
12、Cluster list 长度,越短越好;
13、peer address ,越小越好;

====================================================================

R1:更改 BGP 属性 - local preference

1、匹配感兴趣的路由;

     acl 2000
  rule 5 permit source  80.80.80.0 0.0.0.255

2、创建路由策略
 route-policy CCNA permit node 10 
  if-match acl 2000
  apply local-preference 333

3、调用路由策略
  bgp 100
  peer 10.10.3.3 route-policy CCNA import # 调用入向路由策略
4、验证
display bgp routing-table #去往80 的路由,下一跳变成 R3;
display bgp routing-table peer 10.10.3.3 received-route 

存在的问题:R1从R3收路由时,少了40和70的相关路由。

注意:

基本ACL在匹配路由条目时,只能匹配路由的前缀,不能匹配掩码;
扩展ACL是可以的;

=================================================================

R2:更改 BGP 属性 - as-path 属性

1、创建ACL,匹配感兴趣的路由(40.40.40.0/24) 
 acl 2004
   rule 5 permit source 40.40.40.0 0.0.0.0 
2、创建 route-plicy , 修改 as-path:添加一个 210,将as-path长度变为2;
 route-policy R2-R4-IN permit node 10
    if-match acl 2004
    apply as-path  210  additive
 route-policy R2-R4-IN permit node 100      
3、调用路由策略
 bgp 100
   peer 192.168.24.4  route-policy R2-R4-IN import 
4、验证、测试、保存
 R2:
   display bgp routing-table                  as-path 
       *>  40.40.40.0/24  10.10.3.3            200 
                          10.10.2.2            100 200         

==================================================================

 acl 2000
 rule 5  permit source 80.80.80.0  0.0.0.0 # 此时ACL匹配的是 prefix
 rule max   deny  source   any 
                     40.40.40.0
                     70.70.70.0

Route-policy : CCNA                             【route-map】
 permit : 10 (matched counts: 7)
Match clauses : 
  if-match acl 2000
Apply clauses : 
  apply local-preference 333

[注意:]

    route-plicy 最后有一个隐含的 deny any  ;
如果想表示 permit any ; 
    route-policy {name}  permit  {node-id}
       if-match #不写任何的匹配条件,则表示匹配所有;
       apply {路由属性} # 在不写 if-math 的情况下,可以写 apply ; 

R1:
 bgp 100
peer  10.10.3.3 route-policy CCNA import 

 display bgp routing-table

少了 40 , 70 ; 

以上是关于笔记 BGP的主要内容,如果未能解决你的问题,请参考以下文章

CCIE学习笔记 2---BGP选路(属性值)

日常笔记--BGP

CCIE学习笔记 3---BGP 团体属性 community

CCIE学习笔记 4---BGP 前缀列表;ORF;ASpath-list

学习笔记:python3,代码片段(2017)

网络层-第六节4:边界网关协议BGP的基本工作原理