PBR、前缀列表、BGP

**

PBR

**
PBR 策略路由
通过流量策略来执行选路的一种转发手段。
传统的路由表转发只能通过数据的目标在地址做决策;策略路由可以根据源地址、目的地址、源端口、目的端口、协议、TOS等流量的特征来做抉策提供路由,灵活性高。

路由表与策略路由的关系:
策略路由是先于路由表执行的,策略路由没有捕获的流量依然会去执行路由表

两种配置:
1.接口下配置
只能捕获该接口的入接口流量做策略(不能处理本路由器产生的流量)
注:流量的捕获使用route-map来获取
R5(config)#access-list 100 permit ip host 1.1.1.1 any//用ACL捕获流量
R5(config)#router-map pbr permit 10//定义route-map
R5(config-route-map)#match ip address 100//调拥被ACL捕获的流量
R5(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
R5(config)#int e0/0
R5(config-if)#ip policy route-map pbr//在接口下调用
2.全局配置
能够捕获所有接口入接口流量以及本路由器产生的流量(源地址是本路由器地址)
R5(config)#access-list 100 permit ip host 1.1.1.1 any//用ACL捕获流量
R5(config)#router-map pbr permit 10//定义route-map
R5(config-route-map)#match ip address 100//调用被ACL捕获的流量
R5(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
R5(config)#ip local policy route-map pbr

策略路由的冗余设置:
route-map pbr permit 10
match ip address 1
set ip next-hop verify-availabillity 10.1.24.2 1 track 1//设置track监控如果监控成功则执行该语句,如果不成功则转为执行下一条set语句
set ip next-hop 10.1.34.3
track 1 ip sla 1//定义一个track监控监控sla的探测结果
ip sla 1//定义一个sla
icmp-echo 10.1.1.2 source-ip 10.4.4.4//设置其探测针
ip sla schedule 1 life forever start-time now//设置sla 1 的执行时间

default语句
在route-map的set ip default这个位置输入,定义为被捕获的流量的先查路由表如果精确匹配(如果抓的10.5.5.5,路由表中有10.5.5.0/24这就不叫精确匹配,如果10.5.5.5/32则叫精确匹配)就执行路由表,如果不能则执行策略路由。
R5(config)#access-list 100 permit ip host 1.1.1.1 any//用ACL捕获流量
R5(config)#router-map pbr permit 10//定义route-map
R5(config-route-map)#match ip address 100//调用被ACL捕获的流量
R5(config-route-map)#set ip default next-hop 10.1.1.1 //设置下一跳
R5(config)#int e0/0
R5(config-if)#ip policy route-map pbr//在接口下调用

策略路由在转发层面不如路由表,原因是匹配的东西过多,底层芯片处理支持有限。使用原则是能不用就不用,如果出现非目的地址的转发策略果断用。

策略路由的其他功能——为流量打tos标记
R5(config)#route-map pbr permit 10
R5(config-route-map)#match ip address 1
R1(config-route-map)#set ip precedence priority //设置队列优先级(优先出接口)

策略路由和路由策略的区别:
路由策略是根据一些规则,使用某种策略改变规则中影响路由发布、接收或路由选择的参数而改变路由发现的结果,最终改变的是路由表的内容。是在路由发现的时候产生作用。
策略路由是尽管当前存在最优路由,但是针对某些特别的主机(或应用、协议)不使用当前路由表中的转发路径而单独使用别的转发路径。在数据包转发的时候发生作用、不改变路由表中任何内容
优缺点:
通信的规则是先有路由才有转发。路由策略仅仅在路由发现的时候产生作用,路由表稳定后通常不会变化,这时路由策略没有应用就不会占用资源。而策略路由(转发策略)是在转发的时候发生作用,路由器在初始产生路由表后,基本工作量都在数据包转发上,如果策略路由(转发策略)过于复杂,就会导致一直占用大量的资源。
建议一般不用策略路由(PBR)

**

前缀列表

**
前缀列表---------路由策略的一种——在路由匹配上尽量用前缀列表,安全
10.0.0.0/24
10.0.0.0/8
10.0.0.0/16
acess-lisy 1 permit 10.0.0.0 0.0.255.255
若使用反码匹配10.0.0.0 0.0.255.255则将三个路由都包含在内了
前缀列表摒弃了反码匹配的问题
R1(config)#ip prefix-list K Seq 5 permit 10.0.0.0/24//只匹配24
什么都不写相当于等于,实际是用掩码匹配,用le、ge固定范围,直接回车固定所有位置
R1(config)#ip prefix-list K Seq 5 permit 10.0.0.0/8 ge 8//以10开头大于8位的都匹配进去
R1(config)#ip prefix-list K Seq 5 permit 10.0.0.0/16 le 24//从16到24的都捕获了
R1(config)#ip prefix-list K Seq 5 permit 0.0.0.0/0 ge 0//匹配所有

**

BGP

**
BGP是EGP协议,管理AS之间的路由传递问题。
BGP是距离矢量型协议,分布式计算。
BGP(BGP这个协议没考虑安全问题以减轻负担)直接用TCP来传递路由信息(端口179),保证可靠性但丧失邻居自动发现(协议出于安全问题也不需要),只能单播建立邻居,并且可以非直连建邻 。

BGP设计用来处理AS之间的路由所以该协议重点处理AS之间路由,AS之内的路由不作为重点。

BGP使用AS号作为识别不同AS路由的标识,该AS号需要具有唯一性。1-65535(后来不够用),可以使用扩展32位65536-4294967295(解决AS不够用的情况)

BGP的最新使用单位是一个路由器所以每个路由器只能使用一个BGP的进程。

由于BGP管理的路由信息非常庞大,不能使用周期更新,只能触发更新,并且BGP会认为一条路由时间越久越稳定。在这种情况下BGP必然不会使用复杂的算法来处理BGP收到的路由信息,又由于每个AS情况不一致,管理范围也有限,它必然需要丰富的管理参数(不能只以赖metric)。综上所述BGP必然需要多种参数共同来决定路由的选择,并且不能依赖某种特定的全局算法,只能单独去计算某一条路由不能全盘考虑,并且需要依赖所属AS管理员手动设置。BGP路径优先协议,通过给每一个路由设置大量的属性参数来进行灵活的管理或者选路,并且这些属性参数大量的都需要人为操控。

BGP的数据包:
1.初始(Open):TCP三次握手之后,双方路由器发出初始报文
用于BGP邻居关系建立,仅仅发送一次
PBR、前缀列表、BGP
2.存活(Keeplive):BGP路由器收到初始消息后发出的确认
PBR、前缀列表、BGP
3.更新(Update):一条更新消息中只包含一条路径信息,如果需要更新多条路径信息,就需要多个更新消息
PBR、前缀列表、BGP
4.通知(Notification):BGP路由器在检测到错误时发送通知消息
PBR、前缀列表、BGP
5.reflush 刷新BGP路由

邻居状态机:
BGP事件:
PBR、前缀列表、BGP
1)down——未开始
2)idle——进行三次握手
PBR、前缀列表、BGP
3)connect——失败active成功发open
PBR、前缀列表、BGP
4)active——再次建立连接
PBR、前缀列表、BGP
5)open send——发送open,收到open没错则发送keeplive,并进入下一状态
PBR、前缀列表、BGP
6)open confire——收到keeplive,进入下一状态
PBR、前缀列表、BGP
7)establish——邻居建立
PBR、前缀列表、BGP

BGP建立邻居失败的场景:
1.参数与配置:
1)neighbor 10.1.1.1//代表向该地址发送tcp端口为179的数据,并且自己也需要在 发出地址上打开tcp 179的监听。该配置可以指定源地址也可以不指定源地址,不指定就是出接口地址。(意味着得打开该出接口关于tcp 179 的监听)
本端指的地址需要是对方的源地址,对方指的地址需要是本端的源地址。
2)neighbor 10.1.1.1 remote-as XX
对端建立邻居的AS号必须和本端remote-as XX号一致。
3)建立双方保障tcp 179能够发送,不丢失,不被拦截。

邻居之间路由传递规则
BGP两种邻居关系:
IBGP邻居关系//相同AS的路由器建立的邻居关系
EBGP邻居关系//不相同AS的路由器建立的邻居关系

1.BGP不管什么邻居关系只传递最优路由(不优不传,优的标志是>,也就是不带>的路由不会被BGP传递)
2.EBGP邻居关系路由传递:只要不违背环路原则或人工策略EBGP邻居传递无限制的(前提必须优),EBGP之间传递路由会更新next-hop为自己的更新地址。
3.IBGP邻居关系路由传递:IBGP自己产生的路由(自己宣告的、自己重发布进来的)和EBGP邻居传递的都可以传递给它的IBGP邻居,但不可以在IBGP之间中转(也就是不能传递到邻居的邻居)。
IBGP之间传递路由不会更新next-hop(只有next-hop为零的情况才会更新,或者建立邻居的时候输入neighbor X.X.X.X next-hop-self更新为自己的更新源地址)。
这个设定的好处:IBGP之间拥有水平分割从而避免了IBGP环路的产生,BGP也不必设置防环算法。
这个设定的坏处:IBGP之间路由传递必须直接建立邻居,导致IBGP邻居关系是一种全互联状态。

BGP的10条属性(Cisco11种):
1)weight:只有cisco设备才有的属性,而且只能针对本路由器生效,传到其他设备就不生效。当本路由器有多个到达目标的邻居时选择weigth值大的一方到达(默认为空,约大越好)。并且weigth的选路只影响本路由器,其他路由器不识别该属性会丢弃该属性。负载分担基于不同目标,使用不同路径访问
PBR、前缀列表、BGP
2)origin:起源者,可以识别并标记路由起源,network宣告的路由起源标识i,重发布的路由起源标识为 ? ebgp给的路由的路由起源为 e。
规则: i>e>?
PBR、前缀列表、BGP
3)as-path:经过的路由器会记录as号,防环(水平分割),选路
用于EBGP水平分割:接收到的条目中若存在本地AS号,将拒绝;可以人为的在路由信息中添加AS编号;但只能在EBGP邻居关系间操作;但也可用于干涉IBGP邻居关系下选路
注:调用时,控制层面的出或入接口都可以,但必须是EBGP邻居关系
入向调用—3 4 5 x,X为真实经过过的编号
出向调用—X 3 4 5 ; 最前端AS为最新经过的编号;
又因为AS-PASH属性还用于防止EBGP环路,故添加的属性中若存在后方AS号,将导致这些路由无法进入这些AS;故可重复使用已经经过的AS号
PBR、前缀列表、BGP
4)next-hop(优选本地下一跳)用于提供可达性。
IBGP 传递的next-hop不会被修改
EBGP 传递的next-hop会被修改
PBR、前缀列表、BGP
5)local-pref:本地优先级,不能传输到其他as,最常用于干涉IBGP选路(越大越好,用于在俩个或者俩个以上AS出口的选择)。只能在IBGP之间传递,默认值100。
PBR、前缀列表、BGP
6)MED:metric,用于选路,一般用于as有俩个或者俩个以上入口时,其他AS选择哪个入口进入本AS。
注意:med只能用于俩个AS之间的选路,超过俩个AS该参数无效。可以打开多AS的med比较 always-compare-med。
PBR、前缀列表、BGP
7)atomic-aggregate:用来警告下游路由器路由聚合后产生的路由路径丢失。
PBR、前缀列表、BGP
8)aggregator:用来通告汇总路由的汇聚路由器BGP_ID(Cisco)和聚合路由的路由器的AS号。
PBR、前缀列表、BGP
9)community:社团属性
标准community (Standard community)做路由标示
扩展community(extended community)用于MPLS ×××
PBR、前缀列表、BGP
10)originator-id 由自己发出的路由不会反射回自己,自己发出的路由携带originator-id(默认为自己的rid),回程的时候检测路由是否和自己的originator-id一致。——在反射器的时候用来防环
PBR、前缀列表、BGP
11)cluster-list:cluser-list 由反射器自己反射出去的路由不会反射回本发射器。当一条路由被反射器反射的时候反射器会把自己的cluster-id(默认为rid)添加在cluster-list中,每经过一个反射器该反射器都会添加自己cluster-id到cluster-list中当一条路由需要被反射器接收时反射器会查看该路由的cluster-list,如果发现有自己的cluster-id则不接收该路由。——在反射器的时候用来防环
PBR、前缀列表、BGP

四大类属性:
1.公认必尊 //所有bgp路由器必须识别、遵守
2.公认可尊 //所有路由器识别但不一定遵守
3.可选传递 //不是所有bgp路由都能识别,但所有bgp都能传递(遵守与否看实际情况)
4.可选非传递 //不是所有路由器都能识别,不识别的bgp路由器就丢弃它
PBR、前缀列表、BGP