metric,自己决定去哪个EBGP邻居
local-pre,影响AS内部IBGP邻居的路由决策
med,影响AS外部EBGP邻居的路由决策
 
1,BGP属性
    公认传递(well-known mandatory ):必须支持,而且必须包含,包括as-path,next-hop,origin
    公认非传递(well-known discretionary):必须支持,但是可以不包含,包括local-preference
    可选传递(optional transitive ):可以不支持,但是必须往下传,包括community
    可选非传递(optional nontransitive ):可以不支持,也可以不往下传,包括med,weight(思科私有)
 
2,Origin属性
   查看路由的origin属性,可以用show ip bgp,在最后一列的path列中。
    明确了路由的来源,有三种:
    IGP:i,通过BGP network命令得来,即起源于IGP,因为BGP network必须是路由表中有的
    EGP:e,由老的EGP协议重发布来,现在没了
    incomplete:?,从其他渠道学来,重发布路由都是这个标记
    IGP>EGP>incomplete
 
    可以将origin改成E,用route-map做,eg:    
    (config)# ip prefix-list 10 permit 192.168.1.0/24    
    (config)# route-map ABC permit 10
    (config-route-map)# match ip address prefix-list 10
    (config-route-map)# set orign egp 30   /改成egp,AS号30
    (config)# route-map ABC permit 20
    (config)# router bgp 20
    (config-router)# neighbor x.x.x.x route-map ABC in
    备注:BGP中要改属性的值,基本都要用到route-map,route-map可以用prefix-list或者ACL,需要考虑"方向",是不是要打"空语句"
 
3,AS_PATH
    经过的AS号,防环。
    仅当路由被发往其他AS时(EBGP peer),BGP路由器才会将AS号追加至AS_PATH中。也就是说,如果想修改AS_PATH属性,必须在AS边界路由器上执行,对IBGP邻居执行修改AS_PATH是无效的。
 
1)AS_PATH路径属性的四种类型
    AS_SEQUENCE:有序AS号集合
    AS_SET:无序AS号集合
    AS_CONFED_SEQUENCE:联邦有序AS号集合
    AS_CONFED_SET:联邦无序AS号集合
   
2)AS_SEQUENCE
    途径AS号的集合,例如300,100。即去往该目的地址需要途径300、100。
    

3)AS_SET
    为了防环,加入了明细路由AS号的集合,但是明细AS号集合是无序的。
    例如300,{200,100},R3汇总时使用了AS_SET命令继承了明细路由的AS_PATH
   

 
4)使用route-map修改AS_PATH
   

通过更改AS_PATH影响选路。R2做如下变更:

    (config)# ip prefix-list 10 1.1.1.0/24
    (config)# route-map ABC permit 10
    (config-route-map)# match ip add pre 10
    (config-route-map)# set as-path prepend 666
    (config)# neighbor 3.3.3.3 route-map ABC out  /对邻居R3出方向挂route-map ABC,影响的是控制层面
    备注:
    R3收到的路由AS-PATH是200,666,i。如果是R3的in方向挂route-map ABC,则是666,200,i。
    插入不存在的AS号有风险,万一真的遇到AS666会被拒收,所以可以插入自己的AS号,即200。
 
5)AS_PATH的几个命令
    neighbor 路由来源邻居 allowas-in 几个我的as号    /允许接收包含自己AS号的路由
    bgp bestpath as-path ignore /让思科路由器决策过程中忽略AS-path属性
 
4,NEXT-HOP
next-hop结合同步,决定了路由能否打上大于号,即最优。该地址要能访问。  
1)来自EBGP邻居R1的路由,自己是R2
    R1(AS100)--------R2(AS200)
    next-hop即为EBGP邻居R1的更新源地址
2)来自IBGP邻居R2的路由,并且是AS外的路由,自己是R3
    R1(AS100)--------R2(AS200)--------R3(AS200)
    next-hop还是EBGP邻居R1的更新源地址,不会发生改变
3)来自IBGP邻居R2的路由,并由AS内BGP路由器引入
    如果通过aggregate-address引入,则next-hop等于执行汇总路由器的更新源地址
    如果通过network或者重发布引入,那么注入前的IGP下一跳称为BGP的next-hop
    如果本地BGP宣告者成了下一跳地址,那么在本地BGP RIB表中下一跳字段就是0.0.0.0。(备注:这段话的意思应该是如果本地产生的即本地network或者aggregate的,那么下一跳就是0.0.0.0,选路原则第三条就是优选本地产生的。但是李桃梅视频中不是很理解这一条,称:优选next-hop为0.0.0.0的路由,实际上不会遇到?因为本地产生又从其他地方传来,意味着环路?)
4)通过next-hop-self可以更改next-hop属性
5)MA网络上的next-hop,如果R1、R2、R3是EBGP邻居关系,来自三个不同的AS,但是他们是连到同一MA网络,则R1传R2,R2传R3后,next-hop仍然为R1。
6)NBMA网络上的next-hop,同MA网络,所以需要注意R3至R1的PVC是通的。
    
5,LOCAL-PREFERENCE
    优先选择local-preference值大的。默认值:100。
    local-preference只在AS内部IBGP邻居间传递,影响出AS流量。用来通告给IBGP邻居,怎么离开本AS。
    去往同一目的地可以经过不同AS时,由2条路由的local-preference决定。
    如果EBGP peer间收到的路由路径属性中携带local-preference,会触发notification报文,造成会话中断。
    收到EBGP peer发来的路由更新时,local-preference的值是空的,会赋上默认值100。
    本地network的路由、重发布的路由,默认local-preference值也是100。
 
    举例
   

    在R1或者R4上做,告诉R3怎么离开本AS去往AS2                                                                   
    方法1:改所有
    (config-router)# bgp default local-preference 111                                  
    备注:比另一个大就行,改动后show ip bgp有些能显示/有些不能显示,在进程中做不用指定邻居。看不到local preference的可以"show ip bgp 地址/掩码"看到是否起效。                             
    扩展,该命令对下列获取的路由是否起效:a,network;b,EBGP:起效;  c,IBGP;d,聚合的路由                        
    方法2:改部分路由
    要求R3访问某些网段从R1走,同weight,用map,在R1上做   
    ip prefix-list 101 permit 2.2.2.0/24
    route-map ABC permit 10
        match ip add prefix-list 101
        set local-preference 111
    route-map ABC permit 20
    neighbor 3.3.3.3 route-map ABC out
 
6,COMMUNITY
1)基本概念
    可选:路由器有可能不识别该属性              
    默认不认识,需要打一条命令:neighbor X.X.X.X send-community(让对方认识)         
    传递性:社团属性只在neighbor的邻居有效,不会继续往下传,要继续往下传还是通过上面的命令              
 
2)route-map中设置属性值    
    主要包括:              
        no-advertise:携带此属性的路由不会通告给任何BGP邻居         
        no-export:携带此属性的路由不会传出大AS(联邦之间仍然会传递,联邦内部也会传递)
        local-AS:携带此属性的路由不会传出小AS(联邦之间也不会传递,联邦内部也会传递,没有联邦即只在本AS传递)      
    备注:没有做联邦的话no-export和local-as效果是一样的    
     
   配置实例:
   ip prefix-list 11 permit 11.11.11.0/24
   route-map test permit 10
       match ip add prefix-list 11
       set community 100:11
   router bgp 100
       network 11.11.11.0 mask 255.255.255.0
       neighbor 2.2.2.2 remote-as as 200
       neighbor 2.2.2.2 send-community
       neighbor 2.2.2.2 route-map test out
 
3)使用ip community-list匹配community值
4)在community-list中删除特定的community值
5)COST community
    参考红茶三杯笔记
 
7,MED
   MED值越小越优先,思科默认MED为0。
    用于AS之间影响路由,两条路由来自同一相邻AS才会比较,即AS_SEQUENCE中的第一个AS号相同才会比较。不会跨AS传递。
  

1)MED值设置方法
    IGP引入BGP时关联route-map进行设置
    对BGP peer应用in/out方向的route-map进行设置
    非route-map(自动)方式:使用network或者redistribute引入IGP时,MED继承IGP的metric;使用aggregate方式引入时,MED为空。
2)MED值的传递
    MED值在IBGP之间传递没有问题。
    MED值在EBGP之间传递要看路由是否起源自己,如果起源自己则传递,不是起源自己不传递。
3)MED继承IGP的metric
    network本地IGP,MED继承该IGP的metric
    network本地直连网段,network本地静态路由,MED值都是0
    redistribute本地IGP,MED继承该IGP的metric
    redistribute本地直连网段,redistribute本地静态路由,MED值都是0
4)其他配置命令
    bgp always-compared-med:默认只比较来自同一AS的MED,如果想对所有路径都比较,则开启此命令,要做建议整个AS都做,避免环路。
    bgp bestpath med missing-as-worst:默认收到MED属性丢失的配置为0,配此命令则配置为最大值。
    set metric-type internal
    bgp bestpath med confed
    bgp deterministic-med
    default metric x
5)举例
   
    R1和R4都把8.8.8.0/24通告给了R2,不做任何策略的话,会比较到第十条,优选routerID较小的R1。                             
    要控制AS2怎么进入AS1访问8.8.8.0/24时,通过修改R1/R4向R2通告路由的MED值。                             
    方法一:所有路由设置med,可控的只有AS1,AS2是看不到的。(待实验,貌似没有方法二?)                        
    1)写MAP:
    route-map MED                        
    set metric X                        
    2)调用:neighbor 12.1.1.2 route-map MED out                        
    验证方法:带源地址的ping,debug ip bgp updates         
    
8,Atomic_Aggregate及aggregator
    Atomic_Aggregate是公认自决属性;aggregator是可选可传递。
    用于提示做了汇总路由的始发AS和始发路由器。
    如果加上了as_set则路由已经包含明细路由的AS号,这2个属性就没有了。
 
9,Originator_ID和Cluster_list
    是RR使用的可选非传递属性,用来防止环路。
    Originator_ID:本AS中路由发起方的IBGP RouterID。
    Cliuster_list:RR在反射路由的时候会创建或更新Cluster_list,下面几种情况,RR不会创建该属性:RR始发的路由;向EBGP邻居发送路由时清除该属性;从EBGP邻居收到反射给client/非client时不会创建。
1)取值示例
   
    注意,originator_id是R2,cluster_list是R3
2)cluster_id可以影响BGP选路,优选经过cluster_id少的路径。
 
10,Weight
    思科私有,作用范围是本路由器(不传递),不会被包含在update消息中,不会传递给任何BGP邻居。
1)weight的值
    weight值越大越优先。
    从其他邻居学来的默认为0
    本地network的是32768
    本地重发布直连、重发布静态的是32768
    本地汇总的BGP路由是32768
    总结:从邻居学来0,自己的32768
2)举例
  
    如上图,R2上有路由,传播至R3,在R3做,设置路由的weight值,决定是通过R1/R4访问R2
    方法一:改所有
    (config-router)# neighbor 地址A weight X     /这里地址A是R1或R3的更新源地址吗?待确认    
    方法二:改部分路由
    要求R3访问某些网段从R1走,用map(ACL,prefix-list)         
     eg:    
     ip prefix-list 2 permit 2.2.2.0/24    
     route-map ABC permit 10    
        match ip address prefix-list 2    
        set weight 3    
     route-map ABC permit 20     
     neighbor 1.1.1.1 route-map ABC in  /提供了weight值,优先从R1走
 
11,BGP选路原则
     前提条件:1)同步,2)下一跳。即有2条最优路(大于号)时才会涉及到选路。此外如果被入方向BGP策略拒绝+soft reset,或者damped,也不会涉及选路。
     研究BGP属性需要着重分析点:传播范围,默认值,越大越好/越小越好
11.1,概述
     BGP路由信息库RIB,包含三个部分:
     Adj-RIBs-IN:来自对端的,未经处理的消息
     Loc-RIB:经过本地策略后使用的路由
     Adj-RIBs-OUT:传递给对端的路由
     BGP的决策过程,即对Adj-RIBs-IN中的路由使用本地策略,并将选定或修改的路由放到Loc-RIB和Adj-RIBs-out中。
11.2,选路原则 
     1)weight(越大越好):本路由器上的路由优先级
     2)local-preference(越大越好):发给IBGP邻居,怎么离开本AS
     3)起源于本地(如network或aggregate的,即下一跳是0.0.0.0,以下依次递减:default-originate,default-information-originate,network,redistribute,aggregate-address)
     4)AS-PATH(越短越好)
     5)origin属性(i>e>?)    
     6)MED(相当于IGP的metric,越小越好):告知EBGP邻居,怎么进入本AS
     7)EBGP邻居优于IBGP邻居(联邦中也是) 
          这条指的是同一条路由从BGP学到,可以是IBGP也可以是EBGP,不会根据AD值优选EBGP,而是要根据选路原则逐条判断,比到这一步时还会优选EBGP。
          AD值只用于同时从不同协议,IGP和BGP比。
     8)优选最近的IBGP邻居
     9)基本用不到(优选最老EBGP邻居传来的路由)
     10)比较route-id(越小越好)
     特殊情况:
     11)有RR时,优选Cluster-id最短的
     12)如果还是比较不出   ,即同一个邻居建了多条链路,优选ip地址最小的
     常用的只有weight,local-preference,med这3个属性。
11.3,BGP的负载均衡
1)等价负载均衡
     如果选路原则1~8相同,并且在BGP进程下面配置了maximum-paths {ibgp} n,n取2~6,可以配置对EBGP邻居、IBGP邻居执行负载均衡。
     BGP表中只会优选一条,但放入路由表有2条。
     EBGP等价负载均衡只有对来自对一AS的不同EBGP邻居的路由才有效,来自不同EBGP邻居的路由无效。
2)非等价负载均衡(待修订补充)
     neighbor 2.2.2.2 dmzlink-bw
     send-community
     
12,BGP选路环路问题案例

1267属于AS123,345属于AS456,23和56分别建立EBGP邻居关系,26向AS456注入默认路由,R4向AS123宣告一条4.4.4.4的路由,26分别执行双向重分布,且ospf外部路由也重分布到BGP,正常情况下:
R2的BGP表:最后比到第7条,EBGP邻居优于IBGP邻居
R6的BGP表:最后比到第7条,EBGP邻居优于IBGP邻居
工作正常
 
R2和R3之间的链路断开后
R2从EBGP邻居学不到该路由了,但R6的BGP学到了该路由,然后重发布到OSPF
R6从OSPF学到该路由,优选了该路由?

又重发布回OSPF....

R2又变为

R6又变为:

最后路由出现了环路,造成R1 trace R4的报文在R2和R6之间环路,所以重发布时带上OSPF外部路由可能会出问题。

 
 
 

BGP - 5,BGP属性的更多相关文章

  1. huawei 通过BGP的团体属性进行路由控制

    网络拓扑 XRV1的配置: =========================================================================== # sysname ...

  2. BGP路由控制属性

    控制BGP路由概述: BGP与IGP不同,其着跟点主要在于不同的AS之间控制路由的传播和选择最佳路由 通过修改BGP基本属性可以实现基本的BGP路由控制和最佳路由的选择 引入其他路由协议发现的路由时. ...

  3. BGP与BGP机房 国内网络运营商的主流网关解决方案

    边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议. BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议. BGP 构建在 EGP ...

  4. BGP属性+13条选路原则(转载)

    原文:http://blog.sina.com.cn/s/blog_be409c2f0102x6sg.html BGP(Border Gateway Protocol)边界网关协议 BGP(Borde ...

  5. BGP路由属性详解

    Weight属性:cisco私有的BGP属性参数,它只适用于一台路由器中的路由,也就是不会传递给任何其他的路由器.他的取值范围为<0-65535>,这个数越大优先级越高,默认从邻居学到的路 ...

  6. BGP属性控制实验

    目录 实验拓扑 实验需求 实验步骤 个人小结: 实验拓扑 实验需求 更改BGP路由的属性让R4访问R1优先选R2这条路 实验步骤 1. 按照图示配置IP地址及环回口地址 R1 [R1]int g0/0 ...

  7. BGP团体属性的应用案例

    XRV1 ===================================================================== version 15.5service times ...

  8. HCIP --- BGP属性

    传播范围                 默认值              大优或小优 1. Preference_Value     不传播                      0       ...

  9. HCNP Routing&Switching之BGP团体属性和团体属性过滤器

    前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...

  10. BGP路由协议详解(完整篇)

    原文链接:http://xuanbo.blog.51cto.com/499334/465596/ 2010-12-27 12:02:45 上个月我写一篇关于BGP协议的博文,曾许诺过要完善这个文档,但 ...

随机推荐

  1. 为什么说 HashMap 是非线程安全的?

    我们在学习 HashMap 的时候,都知道 HashMap 是非线程安全的,同时我们知道 HashTable 是线程安全的,因为里面的方法使用了 synchronized 进行同步. 但是 HashM ...

  2. Mac10.13 telnet不能用的解决方法

    telnet在Mac 10.13上不能用了 Restore的方法 brew install inetutils To be clear, brew install inetutils will ins ...

  3. 利用sqlmap对网站进行sql注入检测

    1.下载sqlmap github地址:https://github.com/sqlmapproject/sqlmap/zipball/master 2.sqlmap的运行环境需要python,这个网 ...

  4. topcoder srm 555 div1

    problem1 link 直接动态规划即可. problem2 link 假设有$r$行,$c$列被修改了奇数次,那么一定有$r*W+c*H-2*r*c=S$.可以枚举这样的组合$(r,c)$,然后 ...

  5. 关于link标签的用法, 不声明rel=stylesheet则无效? 在ff中必须声明rel属性!

    void 无效的, 空的; invalid: 无效的, void 和 invalid 在表示无效的时候, 是一样的, 等同的 the treaty (条约) was declared invalid ...

  6. fedora安装了phpmyadmin后, mariadb无法启动?

    参考:http://www.linuxidc.com/Linux/2015-10/123945.htm where, which, when,等不但可以用在从句中, 而且可以用在 动词不定式中, 如: ...

  7. linux网络流量实时监控工具之nload

    Install nload on a CentOS/RHEL/Red Hat/Fedora Linux First, turn on EPEL repo on a CentOS or RHEL bas ...

  8. Git 提交的正确姿势:Commit message 编写指南

    http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html Git 每次提交代码,都要写 Commit message( ...

  9. Javascript 高级程序设计(第3版) - 第02章

    2017-05-10 更新原文: http://www.cnblogs.com/daysme 在 html 中使用 js 把js代码写在 <script type="text/java ...

  10. 基因组与Python --PyVCF 好用的vcf文件处理器

    vcf文件的全称是variant call file,即突变识别文件,它是基因组工作流程中产生的一种文件,保存的是基因组上的突变信息.通过对vcf文件进行分析,可以得到个体的变异信息.嗯,总之,这是很 ...