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外部路由可能会出问题。

 
 
 

最新文章

  1. 如何扩大LVM 逻辑分区的大小?
  2. NSMutableAttributedString(转)
  3. jeesite部署到Tomcat后,无法访问,cannot be resolved in either web.xml or the jar files deployed with this application
  4. Oracle SQL 优化原则(实用篇)
  5. Karma Police - Radiohead
  6. mysql查询昨天本周上周上月
  7. zoj 2723 Semi-Prime
  8. 【转】HTML5的语音输入 渐进使用HTML5语言识别, so easy!
  9. EntityFramework在root目录web.config中的配置设置
  10. WebView缓存
  11. JAVA中ClassPath妙用
  12. @JsonFormat 日期格式自动格式化
  13. python+selenium自动化软件测试(第5章):Selenium Gird
  14. JAVA读取和写入properties文件
  15. 基于Python的Webservice开发(三)-Django安装配置
  16. spring-data-jpa中save不触发数据库insert语句的问题
  17. div+css的常规使用
  18. 尚硅谷springboot学习5-主入口类说明
  19. idea在相应的包下右键创建servlet,找不到servlet选项
  20. c++builder 6 远程调试

热门文章

  1. How to use Junit Listener
  2. ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)
  3. uniGUI试用笔记(一)
  4. 三星固态硬盘ssd产品线收集
  5. 轻重搭配|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
  6. sql 指定数据库中的信息操作
  7. Android开发——去掉系统自带标题栏的几种方式
  8. hadoop的Linux操作
  9. RabbitMQ学习之延时队列
  10. 【NOIP 2016】Day2 T3 愤怒的小鸟