精华内容
下载资源
问答
  • BGP

    2011-06-25 00:57:33
    BGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGPBGP BGP BGP BGP
  • bgp

    2020-11-15 20:50:51
    bgp一、BGP概念1、自治系统AS2、BGP路由协议的特点3、BGP分类4、BGP的路由器号(Router-ID)5、BGP工作原理1)BGP的5种报文2)BGP的6种状态机3)BGP对等体之间的9个交互原则6、建立对等体注意点7、配置ibgp配置8、BGP...

    一、BGP概念

    1、自治系统AS

    AS是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。
    BGP网络中的每个As都被分配一个唯一的AS号,用于区分不同的AS。
    AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,其中1-64511是互联网上注册公有AS号,类似公网IP地址:64512-65535是私有AS号,类似私网IP地址。4字节AS号的范围为1至4294967295,支持4字节AS号的设备能够与支持2字节AS号的设备兼容。IANA(互联网数字分配机构)负责AS号的分发。
    中国电信163 AS号: 4134
    中国电信CN2 AS号:4809
    中国网通AS号:9929

    2、BGP路由协议的特点

    1)BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性。
    2)BGP是外部路由协议,用来在AS之间传递数据,对稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。
    3)BGP的对等体之间必须逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
    4)BGP对等体和IGP对等体不同,BGP对等体(Peer)是指使用TCP建立连接的两端,而非与IGP同概念的直连邻居,只要TCP能够建立连接并不一定需要直连。
    5)BGP本身只负责控制路由,数据转发依然靠静态或IGP路由。
    6)BGP支持无类别域间路由CIDR。
    7)路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
    8)BGP是一种增强的距离矢量路由协议,从设计上避免了环路的发生。
    9)AS之间: BGP通过携带AS_Path信息标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
    10)AS内部: BGP在AS内学到的路由不会再通告给AS内的BGP邻居,避免了AS内产生环路。
    11)BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
    12)BGP提供了防止路由振荡的机制(路由衰减),有效提高了Internet网络的稳定性。
    13)BGP易于扩展,能够适应网络新的发展(ipv4单/组播、vpv4单/组播)。主要是通过TLV进行扩展。

    3、BGP分类

    BGP按照运行方式分为EBGP (External/Exterior BGP)和IBGP (Internal/Interior BGP)
    EBGP:运行于不同AS之间的BGP称为EBGP。
    为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
    IBGP:运行于同一AS内部的BGP称为IBGP。
    为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。

    4、BGP的路由器号(Router-ID)

    BGP的Router-ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式,在BGP会话建立时发送的Open报文中携带。对等体之间建立BGR会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接。
    BGP的Router-ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP选择设备上的Loopback接口的IPv4地址作为BGP的Router-ID。如果设备上没有配置Loopback接口,系统会选择接口中最大的IPv4地址作为BGP的Router-ID。
    一旦选出Router-ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router-ID。

    5、BGP工作原理

    BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和9个原则。

    1)BGP的5种报文

    BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送Open报文:用于协商BGP对等体的各项参数,主要包括BGP版本(V4)、AS号等信息,建立BGP对等体连接。
    Open是TCP连接建立后发送的第一个报文Update报文:用于在对等体之间交换路由信息。
    连接建立后,有路由需要发送或者路由变化时,发送Update通告对端可达或者撤销路由信息及路径属性。
    Notification报文:用于中断BGP连接。
    当BGP在运行中发现错误时,发送Notification报文通告BGP对端,随后与之相关的邻居关系将被关闭。
    Keepalive报文:用于保持BGP连接。(保活)
    定时发送Keepalive报文以保持BGP对等体关系的有效性;响应收到的正确的open报文。
    Route-refresh报文:用于在改变路由策略后软复位BGP路由表请求对等体重新发送路由信息。
    只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

    2)BGP的6种状态机

    BGP对等体的交互过程中存在6种状态机:
    空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。
    在BGP对等体建立的过程中,通常可见的3个状态是: Idle、Active和Established。
    (1)Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
    (2)在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。如果TCP连接成功,那么BGP向对等体发送open报文,并转至OpenSent状态。如果TCP连接失败,那么BGP转至Active状态,反复尝试连接。如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
    (3)在Active状态下,BGP总是在试图建立TCP连接。如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。如果TCP连接失败,那么BGP停留在Active状态。如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
    (4)在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
    (5)在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
    (6)在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。如果收到Notification报文,那么BGP转至Idle状态。如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。Route-refresh报文不会改变BGP状态。

    3)BGP对等体之间的9个交互原则

    BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则
    ·从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体
    ·从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体
    ·当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体
    ·路由更新时,BGP设备只发送更新的BGP
    ·路由所有对等体发送的路由,BGP设备都会接收
    ·所有EBGP对等体在传递过程中下一跳改变
    · 所有IBGP对等体在传递过程中下一跳不变
    ·默认EBGP传递时TTL值为1默认IBGP传递时TTL值为255

    6、建立对等体注意点

    直连建立对等体需要注意的点
    建立IBGP对等体时要让下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体
    用回环口建立邻居需要注意的点
    需要修改更新源,默认更新源是物理口,需要修改成回环口。建立IBGP对等体时要保障下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体

    建立EBGP对等体时因为EBGP只能传一跳,因而,在建立EBGP对等体时,需要修改EBGP多跳的跳数为2以上(自己回环到对端回环是两跳,默认一跳)
    关于为什么要用回环口建邻居
    原因是回环口稳定,只要路由器启动着,回环口就不Down,而物理链路可能会受线路或者接口等因素的影响导致对等体关系有问题,因而一般BGP建立对等体都是回环口来建

    7、配置

    ibgp配置

    [ ]bgp (bgp编号)
    [ -bgp]router-id (router-id)
    [ -bgp]peer (同一个AS中其他对等体的回环口IP地址) as-number (所属的AS编程)
    [ -bgp]peer (同一个AS中其他对等体的回环口IP地址) connect-interface LoopBack0(配置的回环口)
    更新发送bgp报文的接口为loopback0接口ebgp配置
    [ ]bgp (bgp编号)
    [ -bgp]router-id (router-id)
    [ -bgp]peer (另一个AS的EBGP的回环口IP地址) as-number (ebgp邻居所属的AS编程)
    [ -bgp]peer (另一个AS的EBGP的回环口IP地址) connect-interface LoopBack0(配置的回环口)
    [ -bgp]peer (另一个AS的EBGP的回环口IP地址) ebgp-max-hop (最大跳数)
    ebgp报文允许的最大跳数最小应改为2(默认为1),因不是直连loopback0接口[ -bgp]peer (同一个AS中其他对等体的回环口IP地址)next-hop-local
    ASBR从ebgp邻居学习到的路由传递给ibgp邻居时,路由下一跳改为自己
    [ -bgp]network (自己的回环接口IP地址)
    ebpg用于配置静态路由或IGP路由的回环网口IP需要在两端ebgp都宣告
    [ -bgp]network (学习到的邻居路由)
    宣告指定的从本区域ibgp邻居学到的路由给ebgp邻居[ ]ip route-static (ebgp邻居的回环口IP地址) (ebgp邻居的回环口子网掩码) (对面路由器的接口)
    两个AS间运行静态路由

    8、BGP选路

    1)路径属性

    (1)定义

    路径属性:path attributes,作用类似于metric(度量标准),用于度量BGP的路由优劣(用来进行选路)

    (2)分类

    公认强制属性:所有的BGP的update消息都要包含该属性
    AS路径(AS-path)
    下一跳(next-hop)
    起源(Origin)公认自由属性:该属性是可选可不选的,但是所有的BGP进程都能识别
    本地优先级(local preferent)可选传递属性:即使BGP进程不能识别该属性,也会继续传递下去
    团体属性(community)可选非传递属性:如果BGP进程不能识别该属性,可以忽略这条update,并且不传递下去
    MED

    2)BGP选路原则

    (1)如果此路由的下一跳不可达,忽略此路由
    (2)Preferred-Value值数值越高越优先,华为私有属性,仅本地有意义
    (3)Local-Preference值最高的路由优先
    (4)聚合路由优先于非聚合路由
    (5)本地手动聚合路由的优先级高于本地自动聚合的路由
    (6)本地通过Network命令引入的路由的优先级高于本地通过Import-route命令引入的路由
    (7)As-path的长度最短的路径优先
    (8)比较Origin属性,IGP优于EGP,EGP优于Incomplete
    (9)选择MED较小的路由
    (10)EBGP路由优于IBGP路由
    (11)BGP优先选择到BGP下一跳的IGP度量值最低的路径当以上全部相同,则为等价路由,可以负载分担(注意:AS_Path必须一致,当负载分担时,以下3条原则无效)
    (12)比较Cluster_list长度,短者优先
    (13)比较Originator_ID(如果没有Originator_ID,则用Router_ID比较),选择数值较小的路径。
    (14)比较对等体的IP地址,选择IP地址数值最小的路径。

    3)BGP属性选路

    配置BGP属性选路配置共12种方法,这里只提3种常用方法

    (1)根据local-prefernce控制选路(越大越优)

    · 为公认自决属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径
    ·Local_Preference属性只能在IBGP对等体间传递(除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失),而不能在EBGP对等体间传递,如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会触发Notifacation报文,造成会话中断;
    ·但是可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后,在本地为路由赋予Local_Preference。[R3]route-policy lop permit node 10
    创建名为lop的路由策略
    [R3-route-policy]apply local-prefernce 222
    设置本地优先级为222
    [R3-route-policy]quit
    [R3]bgp 200
    [R3-bgp]peer 4.4.4.4 route-policy lop export
    在R3上对R1执行出站export方向的路由策略,使得其在收到对方通告的路由后,在路由的local-prefernce的属性值改为222,使得R4优选R3通告的路由;如果此路由策略在R4配置则方向为入站import
    <R3>reset bgp all
    重启BGP
    <R3>refresh bgp all export

    2)使用AS-PATH属性控制选路(越少越优)

    为公认必遵属性,是前往目标网络的路由经过的AS号列表
    作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一;
    路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等体时,AS-path不会发生改变
    使用route-policy修改BGP路由的AS_Path:
    apply as-path xxx additive 在已有AS_Path基础上追加xxx
    apply as-path xxx overwrite 将已有AS_Path值替换(覆盖)成xxx
    apply as-path none overwrite 清空路由的AS_Path属性使用route-policy修改BGP路由的AS_Path时,可以在EBGP对等体之间改变EBGP路由的AS_Path属性,从而影响BGP路由的优选。在华为路由器上,在IBGP对等体之间,也可以使用route-policy修改BGP路由的AS_Path。无论何种场景,改变BGP路由的AS_Path都必须十分谨慎,建议跟上一个经过的AS号保持一直。Bestroute as-path-ignore命令 用来配置BGP在选择最优路由时忽略AS路径属性。配置该命令后,BGP将不比较AS路径的长度。缺省情况下,长度更小者优。
    [R2]route-policy as permit node 10
    [R2-route-policy]apply as-path 123 123 123 additive
    在已有AS_Path基础上追加
    [R2-route-policy]quit
    [R2]bgp 200
    [R2-bgp]peer 1.1.1.1 route-policy as export
    <R2>reset bgp all
    <R2>refresh bgp all export

    (3)通过MED属性控制选路(越小越优)

    为可选非传递属性,是一种度量值一般情况下,BGP设备只比较来自同一AS(不同对等体)的路由的MED属性值。可以通过配置命令来允许BGP比较来自不同AS的路由的MED属性值。执行compare-different-as-med命令后,系统将比较来自不同AS中的对等体的路由的MED值。
    [R2]route-policy med permit node 10
    [R2-route-policy]apply cost + 500
    [R2-route-policy]quit
    [R2]bgp 200
    [R2-bgp]peer 1.1.1.1 route-policy med export
    <R2>reset bgp all
    <R2>refresh bgp all exportdisplay bgp routing-table
    查BGP的路由表
    display bgp routing-table 目标网段
    查看详细信息

    (4)多网段情况下只匹配某一网段

    选路Origin属于公有,用来定义路径信息的来源,其作用是标记一条路由是怎么成为BGP路由的,EBGP邻居之间起作用,它有三种属性:
    IGP(i):优先级最高--------- EGP
    (e): 优先级次之--------- lncomplete
    (?):优先级最低
    ip ip-prefix 1 permit 100.0.1.0 24
    route-policy RP permit node 10
    if-match ip-prefix 1
    apply origin incomplete
    route-policy RP permit node 20
    bgp 100
    network 100.0.1.0 24
    peer 10.1.13.3 as-number 345
    peer 10.1.13.3 route-policy RP export

    (5)BGP路由聚合(汇总)

    建议使用第二种方案,能起到防环的作用方案一
    创建静态汇总路由
    [R7-bgp]network 192.168.0.0 255.255.252.0
    将这个聚合的路由通告出去
    [R7]ip route-static 192.168.0.0 255.255.252.0 NULL0
    将聚合的路由通告出去,因为在手动汇总的这个192.168.0.0在路由表中是不存在的的,要把它加入到NULL0里才能在bgp进程里用上面的network来通告这条路由方案二
    [R7-bgp]aggregate 192.168.0.0 255.255.252.0 detail-suppressed as-set
    配置手动路由聚合用aggregate,detail-suppressed是抑制明细路由的通告,增加as-set关键字后,该汇总路由将继承明细路由的路径属性,其中对明细路由AS_Path属性可以起到汇总路由防环作用

    展开全文
  • BGP

    千次阅读 2019-03-07 21:30:20
    bgp;边界网关路由协议 工作在AS之间;是标准的EGP协议; AS:自治系统 0-65535 其中 1-64511 公有 64512 —65535 私有 EGP协议的特征: 1,可控性 2,可靠性 3,AS-BY-AS BGP的特点 1)无类别路径矢量 -----距离的...

    bgp;边界网关路由协议
    工作在AS之间;是标准的EGP协议;
    AS:自治系统 0-65535 其中 1-64511 公有 64512 —65535 私有

    EGP协议的特征:
    1,可控性
    2,可靠性
    3,AS-BY-AS

    BGP的特点

    1)无类别路径矢量 -----距离的升级版—AS-BY–AS
    2)使用单播更新来发送所有信息;基于TCP 179端口工作
    3)触发、增量更新
    4)具有丰富的属性来取代IGP中度量进行选路
    5)可以在进项和出项对流量实施强大的策略
    6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
    BGP支持认证和聚合(汇总)

    BGP的数据包类型

    所有的数据包均基于TCP会话传递
    1、open报文—用于建立邻居关系,默认仅发送一次,存在RID–规则同OSPF一样
    2、Keepalive–用于保活邻居关系,60s周期 180s hold time 实际保活TCP会话
    3、Update -----目标网络号+属性
    4、Notification—报错信息

    BGP的工作过程

    1,IP可达
    2,建立TCP会话
    3,使用OPEN报文建立邻居关系----生成邻居表
    4,使用UOPDATE传输路由信息,生成BGP表,之后将BGP中最优路径加载与路由表中
    5,之后收敛完全,仅keeplive周期保活
    6,若出现结构变化,进行触发更新,就变化信息发送update即可

    BGP的防环机制——水平分割

    1,EIGRP水平分割----条目在传递过程中1、将记录所有经过的AS号,若接收到条目中,存在本地AS号,将拒绝接收

    2,IBGP水平分割-----从一个IBGP邻居处学习到的条目不能传递给下一个IBGP邻居;
    解决方法:全连邻居关系 或者使用 联邦和路由反射器来解决;

    BGP的路由黑洞问题:

    由于BGP协议可以非直连建邻,故可能出现控制层面可达,数据层面不可达的情况;
    解决方法:
    1、物理全连
    2、邻居关系全连
    3、将BGP路由重发布IGP(LAB)
    4、MPLS (推荐)

    配置:

    r1(config)#router bgp 1  启动协议时,使用真实AS号,不存在多进程概念
    r1(config-router)#
    r1(config-router)#bgp router-id 1.1.1.1  建议配置RID 
    

    建立邻居关系:
    1)直连EBGP邻居,直接使用物理接口建立

     r1(config-router)#neighbor 12.1.1.2 remote-as 2  对端物理接口ip地址及所在AS号
    

    2)建立IBGP邻居关系—使用环回建立邻居关系,链路备份和负载均衡等效果

     r2(config)#router bgp 2 
    r2(config-router)#neighbor 3.3.3.3 remote-as 2
    r2(config-router)#neighbor 3.3.3.3 update-source loopback 0  一旦使用环回建立邻居关系,就必须修改更新源地址
    
    

    3)EBGP邻居关系存在多条路径时,也建议使用环回建立邻居关系
    【1】ip可达问题

    r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2
    r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2 
    

    【2】建立BGP邻居关系

     r4(config)#router bgp 2 
    r4(config-router)#neighbor 5.5.5.5 remote-as 3
    r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
    默认IBGP邻居间TTL值设定为255,EBGP邻居为1;
    r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ? 
      <1-255>  maximum hop count
      <cr>     255
    r4(config-router)#neighbor 5.5.5.5 ebgp-multihop 
    

    当建立邻居配置完成后,邻居间将先建立TCP会话:
    当会话建立后,邻居间使用open报文建立邻居关系,生成邻居表:

     r1#show ip bgp neighbors   查看邻居关系,但该表过大不易查看
    r1#show ip bgp summary 
    BGP router identifier 1.1.1.1, local AS number 1
    BGP table version is 1, main routing table version 1
    

    路由宣告:

    无论本地路由表中的条目是通过何种方式获取,均可宣告到BGP协议中;
    BGP协议可以宣告本地路由表中任何条目,但宣告时必须同本地路由表中的记录完全一致;

    r1(config)#router bgp 1 
    r1(config-router)#network 1.1.1.0 mask 255.255.255.0
    

    宣告完成,将生成BGP表;用于装载所有本地发出和接收到的条目

    标示可用—可以加表(路由表)

    • 不可用----*被r取代—不装载–本地通过其他更好的协议已经学习到了该条目
      被s取代—被人为的抑制–不得传递
       >标示优—可以加表,可以传递
      优的条件:1、同步问题—一条条目需要本地通过IGP和BGP同时学习到,为避免路由黑洞;该限制可以关闭,且IOS版本12.2(8)T 以上系列路由器默认关闭该功能
      2、下一跳可达问题—当一条条目传递给EBGP邻居时将自动修改下一跳地
      址为本地,但若传递给IBGP邻居,将不修改任何参数
      BGP的MA网路下一跳问题

    BGP的MA网路下一跳问题
    在MA网络由于ICMP重定向,故BGP可以寻找到最佳下一跳地址;

    r1#debug ip bgp updates   查看BGP更新包
    r2#clear ip bgp *  硬重启 断开所有邻居间的TCP会话,让后再重新建立
    r2#clear ip bgp * soft   软重启,重新收发所有路由信息,不断开邻居关系
    r1#clear ip bgp 123.1.1.2  和某个邻居进行硬重启
    r1#clear ip bgp 123.1.1.2 soft ?   和某个邻居进行软重启,可选择方向
      in   Soft reconfig inbound update
      out  Soft reconfig outbound update
      <cr>
    
     r1#show ip bgp neighbors 123.1.1.2 advertised-routes   查看BGP表中本地发送给邻居的条目
    r1#show ip bgp neighbors 123.1.1.2 received-routes 查看BGP表中从该邻居处接收到的条目
    % Inbound soft reconfiguration not enabled on 123.1.1.2 但默认没有专门的内存用于存在信息
    r1(config)#router bgp 1 
    r1(config-router)#neighbor 123.1.1.2 soft-reconfiguration inbound  创建专门的空间,建议查看后删除
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,803
精华内容 15,921
关键字:

BGP