BGP

  • 分公有AS号和私有AS号

  • 使用目的端口179(TCP协议)

  • BGP邻居建立:1、直连可达           2、路由可达           3、TCP 179端口不能过滤

 

二、 BGP 报文头部

  •  

  • Marker(标记):16字节 Length(长度):2字节,表示消息的全长,包括头部。

    • 用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1

    • BGP的认证信息是通过TCP携带的,头部里面只是一个认证标识

  • Type(类型):1字节  报文类型

    • 1-open     2-update     3-Notification     4-keepalived     5-route-refresh

 

三、 五种报文类型

  1. open :

    1. 用于建立BGP对等体连接
    2. BGP version:版本如果不一致,高版本兼容低版本
    3. Ms As:要和邻居指定的AS号一致
    4. hold timer:如果不一致则使用小的hold timer
    5. BGP router-id:不能冲突,否则邻居无法建立,默认使用全局roter-id
    6. BGP option(能力选项):至少匹配一种地址簇能力才能建立起邻居关系
      1. IPv4地址簇能力
      2. router refresh 能力
      3. 4字节的AS号
  2. update:

    1. 用于在对等体之间交换路由信息

    2. 触发式更新
  3. notification

    1. 用于中断BGP连接
  4. keepalived

    1. 用于保持GBP连接
    2. 默认60s更新一次,180s超时
    3. 如果两个BGP邻居hold timer时间不一致,则选择hold timer时间小的,周期发送时间为hold timer的1/3
  5. route-refresh

    1. 用于在改变路由策略后请求对等体重新发送路由信息。
    2. 只有支持路由刷新能力的BGP设备会发送和响应此报文

 

四、 BGP状态机

  • Idle、Actice、Connect、OpenSent、OpenConfirm、Established

  • Idle 状态:初始化状态,BGP拒绝邻居发送的连接请求
    • 处于Idle状态:1、没有去往目的路由        2、没有指定邻居地址或者指定邻居地址不对
  • Connect 状态:

    • 如果TCP连接成功,进入OpenSent装填,发送Open报文

    • 如果连接失败,进入active状态
    • 如果连接重传定时器超时,BGP扔没有收到BGP对等体的响应,那么BGP继续尝试连接,停留在connect状态
  • Active状态:BGP试图建立TCP连接

    • 如果TCP建立成功进入OpenSent状态;

    • 如果建立失败,BGP停留在active状态;

    • 重传定时器超时仍然没有建立成功则进入Connect状态

  • OpenSent:发送opent报文

    • 如果收到Open报文正确,那么BGP发送keepalived报文,进入OpenConfirm状态
    • 如果收到错误的Open报文,发送notification报文,进入IDLE状态
  • OpenConfirm:发送keepalived报文

  • Established:update报文

    • BGP可以交换updata、keepalive、route-refresh、notification报文

 

五、 BGP 通告原则

  • 向邻居只通告最优的路由(>:代表最优路由)(最优的路由才会存在IP路由表中)

  • 从EBGP获得的路由通告给所有BGP邻居(IBGP和EBGP)

  • 从IBGP收到路由只通告给EBGP邻居

  • 路由更新时,BGP设备只发送更新的BGP路由
  • 华为设备不要通告更新源路由(connect-interface lo 0),会变成无效的路由

  •  IBGP与IGP 同步(华为不支持,默认关闭)

  • BGP 路由如何产生的:

    •  Network 直连、静态、IGP路由、起源属性IGP

    • 从其他路由协议引入路由

    • 聚合路由

  • BGP路由引入IGP时,默认只能引入从EBGP学到的路由,将IBGP学到路由引入的话后面加参数:permit-ibgp

 

六、BGP属性

公认必遵

1、Origin

2、AS_PATH

3、Next_hop

公认任意

1、Local_pref

2、Atomic_aggregate

可选过渡

1、Aggregate

2、Community

可选非过渡

1、Med

2、Originator id

3、cluster list

 

常用属性值介绍:

1、origin

  • 起源属性,主要不是人为修改,该属性保持不变,描述该路由如何成为BGP路由

  • i:通过network生成BGP路由

  • E:通过EGP得到的路由信息

  • ?:通过import-route引入进来的路由

  • i>E>?

  • 如何修改origin属性

    • 对自身产生的BGP路由时修改

    • 对发送给BGP邻居的路由做origin的修改

    • 对从BGP邻居接收到的BGP路由做修改

2、AS-path

  • BGP在选路时选择经过AS较少的路径;

  • 防环机制:

    • 当BGP路由传给EBGP时,将自身AS号加入到as-path属性中

    • 当从EBGP邻居收到路由时,发现含有自身AS号则丢弃路由

    • IBGP邻居之间不做As-path属性检测

  •  IBGP最左边是起始AS号           EBGP是最右边

  • AS-PATH在任何BGP邻居之间任何方向都可以对as-path属性做修改
    • apply as-path none overwrite :清空AS-path属性对发送和接收的BGP路由

    • apply as-path 1 2 3 additive:对发送/接收的BGP路由添加AS-PATH

    • apply as-path 1 2 3 overwrite:对发送/接收的BGP路由的as-path替换

3、Next-hop

  • 记录了路由下一跳信息

  • 遵循原则

    • 向EBGP发布路由时,路由下一跳设置为与对端建立的邻居关系的接口地址

    • 本地将始发路由器发布给IBGP对等体时,路由下一跳设置为与本端建立BGP邻居关系的接口地址

    • 向IBGP发布从EBGP学来的路由时,下一跳属性不会改变

    • origin、as_path、next-hop存放位置

4、local_pref

  • 本地优先级,仅本地有效,表明路由器的BGP优先级;

  • 越大越优
  • 用于判断出站流量

5、MED值

  • 仅在相邻的两个AS之间传递,不会传递给传递给第三个AS

  • 优先级越小越优
  • 用于判断入站流量

6、 Community(团体)属性

团体属性名称

说明

Interface

表示可以通告给任何BGP邻居;缺省情况下都属于interface

No_advertise

表示不更新给任何邻居

No_Export

表示不更新给EBGP邻居(联邦内部的EBGP会更新)

No_Expoer_subconfed

表示不更新到本AS之外去(用于联邦内部EBGP邻居不会更新)

 扩展团体属性:通过对路由设置团体属性做控制和过滤;  多协议BGP携带RT和SOO值

默认不更新团体属性;需要加命令advertise-community

 

七、  聚合路由

  • 手动聚合>自动聚合(只能聚合引入进来的路由)

  • 自动聚合

    •  summary automatic   自动聚合,汇总成标准掩码

  • 手动聚合

    • Aggregate X.X.X.X XX    将某条路由聚合成多少位的路由;后面可用加参数

  • 聚合注意事项:需要注意聚合路由的属性改变,尽量不要丢失否则会引起环

    • 参数1:detail-suppressed     仅仅通告聚合路由,明细路由本地抑制s表示

    • 参数2:suppressed-policy    控制路由聚合,通过策略抑制部分路由

    • 参数3:attribute-policy         聚合路由完毕后可用增加、修改属性

    • 参数4:as-set                        还原AS-path的起源属性,不会引起环路

    • 参数5:origin-policy             起源属性策略

  • Atomic_aggregate:原子聚合,用来通知下游设备丢失明细路由,当聚合路由时加参数detail-suppressed 抑制明细路由时,会产生此属性(公认任意)

 

八、 管理大规模BGP对等体应用

  • 对等体组、团体、路由反射器、联邦

1、RR 路由反射器

  • 修改原来IBGP 水平分割属性,将从IBGP邻居接收到的路由信息更新给IBGP邻居

  • 通告原则:非非不传;

  • 起源路由器的router-id就是originator-id

  • RR的router-id是cluster-id

  • RR客户端发射路由时给路由添加originator_id,cluster_list属性

  • 从EBGP邻居收到的路由发射给客户端和非客户端时 或者 发送路由给EBGP邻居时,不会设置这两个属性

  •  防环:

    •  Cluster list(簇 ID)

      • 经过路由发射器加入本地cluster list;防止集群之间产生路由环路

    • 起源ID(originator id)

      •  当第一次被路由反射器发射的时候,加入originator-id;等同于router id

      • 防止集群内部产生路由环路

2、 联邦

  • 属于同一联盟必须配置confederation id 和 confederation peer-as

  • 联邦外部路由next-hop 属性在整个联盟中被保留

  • 被宣告到联盟之内的MED属性在整个联盟中都被保留

  • 路由的local_pref 属性在整个联盟中都被保留,而不仅仅是在为他们赋值的成员AS之内

  • 联盟内部成员之间AS号加入到as-path路径中,但是不能宣告到联盟之外;as-confed-sequence  as-confed-set

  • AS_PATH 中的联盟AS号用户实现环路避免功能,但是在联盟中选择最短AD_path

  • BGP选路相同情况下EBGP路由优于联盟内部EBGP路由,联盟内部EBGP优于IGBP

 

九、 BGP选路原则

  • 选路原则前提,丢弃下一跳不可达路由

  1. Preference_value 华为私有协议,本地有效,值越大越优先

  2. Local_preference 本地优先级;默认100

  3. 本地起源;手动聚合>自动聚合>network>import>从对等体学到的

    1. 手动聚合可以聚合任何路由;自动聚合只能聚合import(引入)进来的路由

  4. 选择As_Path路径最短的

  5. Origin 属性;i>e>?;i:network通告    E:通过EGP协议      ?:引入路由

  6. 对于同一AS选择med 值较小的

  7. 选择从EBGP学来的路由

  8. 选择BGP路由下一跳IGP的度量值较小的

    1.  前8条选择不出来,可以实现负责,默认不开启需要手动开启max load-balancing mun

  9. 优选Cluster-list 最小的路由

  10. 优选Originator-id最小的路由

  11. 优选router_id最小邻居发布的路由

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

 

十、路由过滤

  • 出方向:route-policy>filter-policy>ip-prefix

  • 入方向:filter-policy>ip-prefix>route-policy

 

十一、BGP防环机制

  • 从IBGP邻居学来的路由不会传递给其他IBGP邻居(IBGP 水平分割原则)

  • As_Path 用于EBGP之间防环;收到含有自己的AS_Path丢弃路由

  • RR(路由反射器):Cluster list:防止集群之间环路     Originator:防止集群内部环路

  • MPLS vpn:通过设置soo防环

 

十二、BGP增强属性

  • 基于本地入口策略构建对端的出口策略,实现BGP的按需发布路由,包括基于前缀和VPN的ORF

    • orf 后面参数,有思科兼容模式

  • Active-Route-Advertise:只有当BGP路由被成功加入到路由表,该路由才发布给邻居

  • BGP按组打包组4字节AS号:

    • 将所有相同出口策略的BGP邻居看作是一个打包组,发布的路由一次发布给组内所以邻居
    • 具体查看手册

  • 按策略进行下一跳迭代

    • 通过配置路由策略来限制迭代到的路由,如果路由不能通过路由策略,则该路由迭代失败
    • 案例:

    • 1.1.1.和2.2.2.2建立邻居关系,当与2.2.2.2.接口down或者其他原因链路故障;

    • 此时1.1.1.1路由上有一条24位掩码的2.2.2.0的路由指向R16

    • 即使R16路由器设备本身无法到达2.2.2.2 但是由于BGP 超时时间为180s,在此期间路由回全部指向到R16
    • 配置迭代路由,当与2.2.2.2之间故障时,迭代到配置的路由策略中匹配到的路由;配置如下

    •  

 十三、BGP安全特性

  • 认证

    • MD5认证
    • keychain认证
  • GTSM

    • peer 10.0.45.4 valid-ttl-hops N 向邻居开启此功能 

    • @在向邻居10.0.45.4 发送BGP报文时,TTL为255

    • @在接收邻居10.0.45.4发来的BGP报文时,要求报文的TTL大于等于255-N+1

十四、BGP4+

  •  BGP4的扩展版本

  • 支持传递多种地址簇地址

  • 新增属性用以支持多地址簇传递

新增两个可选非过渡属性:

  • MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。

  • MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。

 

 MP_REACH_NLRI 携带的信息

  • 重要的信息

  • AFI:地址簇标识符

  • SAFI:1是单播   2是组播

  • Next Hop:

    • 路由下一跳信息是放在MP_reach_nlri属性下的
    • 不同的地址簇在不同的MP_reach_nlri属性下的携带更精准
  • NLRI

    • 网络层可达信息,描述该链路的前缀长度和掩码信息

十五、解决BGP路由黑洞

  1.  使用全互联

    1. RR路由发射器

    2. 联盟

  2. 通过GRE隧道

  3. 通过MPLS LSP

  4. IGP与BGP路由进行同步

posted @ 2021-09-23 17:35  大韩小白  阅读(735)  评论(0)    收藏  举报