返回顶部
扩大
缩小
Fork me on CSDN
大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。

欢迎来到肉肉的博客

【计算机网络】-边界网关协议(BGP)

前言
本文作者:肉肉
本文链接:https://blog.csdn.net/Arouroua/article/details/106093877
更多源代码请参考我的GitHub

bgp

  • 边界网关协议( Border Gateway Protocol,BGP)是互联网上一个核心的去中心化自治路由协议

  • bgp本身就是一个多地址的协议簇(mp-bgp,多协议bgp)–地址族(ipv4)

  • bgp刷新很慢,需要手工刷新,加快收敛

  • AS,自治性系统域(16位的号码空间—>会扩展到32位)

1、bgp基本概述

bgp作用

  • AS内部使用IGP来计算和发现路由,如OSPF,ISIS,RIP等。
  • AS之间使用BGP来传递和控制路由。

bgp特点

  • 更新可靠,在tcp --179运行
  • 仅增量是、触发更新
  • 定期提供存活消息以验证tcp连接性
  • 丰富的度量标准(称为路径矢量或属性)
  • 专门为大型互联网络设计
  • 优于距离矢量

bgp的理由

  • 大量路由需要承载,能容纳上万条

  • 支持mpls\vpn的应用,传递客户vpn路由

  • 策略能力强,可以很好的实现路由策略与数据控制

2、bgp邻居关系建立与配置

bgp邻居概述

  • bgp speakers :运行bgp的路由器

  • bgp peers=bgp neighbor=bgp对等体\邻居

  • 邻居关系建立在tcp连接基础上,因此邻居不一定需要直连,可以通过igp(keepalive,60s)或静态路由提供tcp连接的可靠性(区别于其他igp)

  • 邻居必须手动指定,而非自动建立(区别于其他igp),所有的包都是单播

  • 一台bgp路由器只能运行在一个as内(区别于其他igp)

邻居类型

  • ibgp:内部bgp邻居,位于相同as
  • ebgp:外部bgp邻居,位于不同as

bgp报文

  • open:类似hello,只发一次,建立邻居关系
  • keeplive:类似hello,维护邻居关系
  • update:路由更新,包含属性
  • notification:当检测到错误,发送后关闭bgp连接
  • route-refresh:当路由策略发生变化时,触发请求邻居重新通告路由

bgp状态机

  • idle:初始,路由器查找路由表,是否有到达邻居的路由
  • connect:发起tcp连接,等待tcp连接完成
  • active:tcp连接失败继续尝试tcp连接
  • open sent:tcp连接成功,已发送open包
  • open confirm:已收到对方正确的open包,如果没有收到就会进入active
  • established:邻居建立完成,开始传递

活跃状态验证

active:路由器已经发送一个open包,正在等待响应

  • 状态可能会在活跃与空闲之间不断循环
  • 原因,邻居可能不知道如何返还到该路由器
    • 不存在只想bgp“打开”数据包源ip地址的路由
    • 邻居与错误的地址建立对等关系
    • 不存在路由器的邻居声明
    • as配置错误

邻居建立过程
邻居建立
bgp邻居建立的条件

  • 邻居地址可达
  • 自身配置中的邻居as号=邻居配置中的声明所在as号
  • 数据包源ip=对方配置的邻居ip(这个源ip也叫更新源,也称作路由的下一跳ip)

bgp邻居建立配置命令

bgp 123  //声明所在as号(创建进程)
router-id  1.1.1.1   //和ospf一样,必须唯一
peer  12.0.0.2  asnumber   123  //配置邻居的ip地址和所在as号
display bgp   peer  //查看邻居

bgp邻居优化

  • 建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址
router id 3.3.3.3
bgp 100
peer 10.1.35.5 as-number 300
peer 2.2.2.2 as-number 100
Peer 2.2.2.2 connect-interface loopback 0

  • 使用环回口建立bgp邻居:为了增强稳定性,通常建议使用环回口来建立邻居

  • 更新源:建立邻居和邻居所学习都的路由下一跳

  • 多跳:ebgp邻居建立默认需要直连,因为TTL=1,如果非直连必须修改TTL(经过一个路由TTL会减一)

peer  x.x.x.x  connect-intterface   lo  1  //配置更新源
peer  xxxxx  ebgp-max-hop[2]  //配置TTL
  • ebgp邻居建立一般采用直连接口建立邻居

bgp身份验证

  • 会在所有包内运行
peer  2.2.2.2  password   cipher  xxx  //配置身份验证,md5形式

3、bgp路由生成方式

network

bgp xxx
network  xxxx  xxxx

import

bgp  xxx  
import-route xxx  route-policy import

4、bgp通告原则与路由处理

bgp数据库:

  • 邻居表:bgp邻居名单

  • bgp路由表(转发数据库):列出从邻居那里多获取的所有路由及属性

  • ip路由表:列出最佳路由

  • adj-rib-in:邻居宣告给本地的未处理的路由信息库

  • adj-rib-out:本地宣告给指定邻居的路由信息库

宣告原则

  • 缺省情况下,bgp不发布任何本地路由
  • 只有明确宣告的网络才会发送给邻居
  • 宣告的网络必须精确地在路由表中找到
  • 仅将自己最优的路由发布给邻居
  • 通过EBGP获得的最优路由发布给所有BGP邻居
  • 通过IBGP获得的最优路由不会发布给其他的IBGP邻居
  • BGP与IGP同步
#
display  bgp   routing-table
#

路由信息处理

  • IP路由表(IP_RIB):全局路由信息库,包括所有的IP路由信息。

  • BGP路由表(Local_RIB):BGP路由信息库,包括本地BGP路由器选择的路由信息,邻居表,邻居清单列表

bgp防环:

as内(ibgp):水平分割

  • 从ibgp收到的更新不会发布给备份(ibgp封信只传一跳)

  • ibgp邻居全互联 :配置开销太大

  • 路由反射器(route-reflector)

  • 联盟(confederation)

as间(ebgp):AS-PATH

  • 经过路由器的as号=本地as 号,要丢弃
  • 号码从近到远

5、bgp常用属性介绍

bgp

  • 公认必遵:所有bgp都可以识别,必须存在update中
  • 公认任意:所有bgp都可以识别,但不要求存在update中
  • 可选过渡:不能被所有bgp路由识别,如果无法识别,可以传递给邻居
  • 非可选过渡:不能被所有bgp路由识别,如果无法识别,则丢弃该属性

pre

  • 私有属性
  • 定义本地路由的优先级,本地有效
  • 不传播给邻居
  • 越大越优先

origin

  • 起源属性
  • 定义路由信息来源,标记一条路由是怎么样成为bgp路由的
  • Origin的3种属性:
    • i表明BGP路由通过network命令注入;
    • e表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e;
    • ? 即Incomplete表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
  • 3种Origin属性的优先级为:i>e>Incomplete(?)。

AS_Path

  • as路径属性

  • 定义经过的s的序列,列出此路在传递过程中经过了那些as。可以防止环路,并用于路由的过滤和选择

  • AS_Path的4种类型:

    • AS_Sequence
    • AS_Set
    • AS_Confed_Sequence
    • AS_Confed_Set

Next_hop

  • bgp在给邻居传递路由是的下一跳=更新源

  • ebgp间传递是会修改下一跳为自己的更新源

  • 在ibgp传递第不会改自己的下一跳

  • BGP路由器将本端始发路由发布给IBGP邻居时,会把该路由信息的Next_hop设为本端建立邻居关系所使用的接口IP。

  • BGP路由器在向EBGP邻居发布路由时,会把路由信息的Next_hop设置为本端与对端建立BGP邻居关系的接口IP。

  • BGP路由器在向IBGP邻居通告从EBGP学来的路由时,不改变该路由下一跳属性。

igbp间
#
peer  xxxx   next-hop-local //修改下一跳为自己的更新源
#

Local_Preference

  • 本地优先级属性
  • 用于在as内优选到达某一目的地路由。反映了bgp speaker 对每条bgp路由的偏好程度
  • 越大越优
  • Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,值越大越优。
    Local_Pref属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP邻居获得目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,其默认值为100。

MED

  • 当耨个as有多个入口时,可以用med属性来帮助其外部的as选择一个较好的入口路径

  • 越小越优先

  • MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由。

Community

  • Community属性分为两类:一类是公认团体属性,另一类是扩展的团体属性。
  • 公认团体属性分为4类:
    • Internet:缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP邻居;
    • No_Export:收到此属性的路由后,不将该路由发布到其他AS。如图,RTB上希望10.1.11.0/24的路由发布给AS 12之后,不再发布给其他AS,则可将10.1.11.0/24的Community属性设置为No_Export;
    • No_Advertise:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居。如图,RTB上希望只将10.1.11.0/24的路由发布给RTC,并且不再通告给任何其他的BGP邻居,则可将10.1.11.0/24的Community属性设置为No_Advertise;
    • No_Export_Subconfed:在联盟中使用,这里不做介绍。
      扩展的团体属性用一组4字节为单位的列表来表示,路由器中扩展的团体属性格式为aa:nn或团体号:
      aa:nn中,aa通常为AS编号,nn是管理员定义的团体属性标识;
      团体号范围为0-4294967295,在RFC1997中,0-65535与4294901760-4294967295为预留值。

6、bgp选路原则

  • BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:

    • 该路由是到达目的地的唯一路由,直接优选。
    • 对到达同一目的地的多条路由,优选优先级最高的。
  • 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。一般来说,BGP计算路由优先

    级的规则如下:

    • 丢弃下一跳不可达的路由。
    • 优选Preference_Value值最高的路由(私有属性,仅本地有效)。
    • 优选本地优先级(Local_Preference)最高的路由。
      优选手动聚合>自动聚合>network>import>从对等体学到的。
    • 优选AS_Path的路由。
    • 起源类型IGP>EGP>Incomplete。
    • 对于来自同一AS的路由,优选MED值的。
    • 优选从EBGP学来的路由(EBGP>IBGP)。
    • 优选AS内部IGP的Metric最小的路由。
    • 优选Cluster_List最短的路由。
    • 优选Orginator_ID最小的路由。
    • 优选Router_ID最小的路由器发布的路由。
    • 优选具有较小IP地址的邻居学来的路由。

7、bgp路由聚合

静态聚合

  • 静态路由汇总用network
#
ip   route-s  xxxx xxxx   null o
#
bgp  xx
net   xxxxx   xxxx
#

自动聚合

  • 引入的igp,主类掩码的聚合
  • 原先路由表上的最优路由不会被显示
  • 自动聚合只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居
#
bgp  xx
summary  automaticl   //开自动,缺省关了
#

手动聚合

  • 手动聚合对BGP本地路由表里存在的路由进行聚合,并且能指定聚合路由的掩码。
  • 手动聚合>自动聚合
  • 命令可选项
    • detail-supperssed:抑制明细
    • as-set:保留as-path属性,可以防环
#
bgp  xxx
  aggregate xxxx xxxx detail-suppressed 
   aggregate xxxx xxxx  as-path
#

8、实验演示

bgp实验

实验要求

1、所有设备配置基本的ip地址(略)

2、在AS12中配置igp

3、在AS间和AS内配置bgp,使得不同的AS间可以通信

r1
#
ospf  1   router-id  1.1.1.1
a 0
net  10.1.1.0   0.0.0.255
net  1.1.1.1   0.0.0.0
#
ip router-s  3.3.3.3   32    20.1.1.1 
#
bgp  12
route-id   1.1.1.1
peer   2.2.2.2  as  12
peer   2.2.2.2   con  loop  0
peer   3.3.3.3   as  3
peer    3.3.3.3   con   loop  0
#
r2
#
ospf  1  route-id  2.2.2.2
a  0
net   10.1.1.0  0.0.0.255
net   30.1.1.0   0.0.0.255
net    2.2.2.2   0.0.0.0
#
bgp  12
route-id    2.2.2.2
peer    1.1.1.1   as   12
peer    1.1.1.1   con  lo  0
peer   4.4.4.4   as   12
peer   4.4.4.4   con  lo   0
#


r3
#
bgp  3
route-id   3.3.3.3
peer    1.1.1.1   as   12
peer    1.1.1.1   con  lo  0
#
r4
#
ospf  1  route-id  4.4.4.4
a  0
net   30.1.1.0   0.0.0.255
net   4.4.4.4   0.0.0.0
#
bgp  12
route-id    4.4.4.4
peer    2.2.2.2  as   12
peer    2.2.2.2   con  lo  0
#

本文均属肉肉原创,阅读过程中如有错误欢迎指出!


往期文章
最最最能测出你数通hcia基础扎不扎实的实验
stp始终学不会?这份思维导图,猛男必点,猛女必看!
华为交换机中hybrid、access、trunk的区别
数通HCIP-ospf知识点

posted @ 2020-05-13 11:34  吃一口肉肉  阅读(783)  评论(0编辑  收藏  举报