一、PBR——策略路由
1,PBR概念
可以根据源地址、目的地址、源端口、目的端口、协议、TOS等流量特征来做决策提供路由,灵活性高。基于数据转发层面,不会影响路由表的表项缺点:实施困难、速度快不了(没路由表快)
2,与路由策略的区别:
路由策略只能基于目标地址进行策略制定,基于控制层面,会影响路由表的表项,而策略路由的优先级比路由策略高,当路由器接收到数据包,并进行转发的时候,会优先根据策略路由的规则进行匹配,如果能匹配上,则根据策略路由来转发,否则按照路由表中转发路径来进行转发。
策略路由是先于路由表执行的,策略路由没有捕获的流量才会去执行路由表转发表是由路由表映射过来的,策略路由直接作用于转发表,路由策略直接作用于路由表。
3,配置
1)下配置使用命令
ip policy route-map 可以定义策略路由选择 只能捕获该接口的入接口流量做策略(不能处理本路由器产生流量)
2)令:
Router(config)#access-list 100 permit ip host 1.1.1.1 any //用acl捕获流量Router
Router(config)#route-map pbr permit 10 //定义route-map
Router(config-route-map)#match ip address 100 //调用被acl捕获的流量
Router(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
Router(config-route-map)#exit
Router(config)#int e0/1
Router(config-if)#ip policy route-map pbr 接口下调用
4,全局配置
1)命令ip local policy route-map可以使这些数据包按策略进行路由。 能够捕获所有接口入接口流量以及本路由器产生的流量(源地址是本路由器地址)
命令:
Router(config)#access-list 100 permit ip host 1.1.1.1 any //用acl捕获流量
Router(config)#route-map pbr permit 10 //定义route-map
Router(config-route-map)#match ip address 100 //调用被acl捕获的流量
Router(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
Router(config)#ip local policy route-map pbr
能够捕获所有接口入接口流量以及本路由器产生的流量(源地址是本路由器地址)
5,路由的冗余设置
因为在路由映射中数据包一旦匹配成功,即使指定的下一跳接口失效,也不会再次进行匹配,而且数据包也不能按常规被路由。在转发数据包之前为了强制路由器验证下一跳地址是否可用,可以使用命令 set ip next-hop verify-availability。路由器将搜索CDP 邻居表来验证下一跳地址是否在列表中;如果不在,则策略路由被拒绝,数据包将按常规被转发。
命令:
route-map PBR permit 10 match ip address 1 set ip next-hop verify-availability 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.12.1 source-ip 10.4.4.4 //设置其探针
ip sla schedule 1 life forever start-time now //设置sla的执行时间
6,default语句
在route-map的set ip default 这个位置输入,定义为被捕获的流量的先查路由表如果能精确匹配(如果抓的10.5.5.5,路由表中有10.5.5.0/24这就不叫精确匹配,如果10.5.5.5/32则较精确匹配)就执行路由表,如果不能则执行策略路由。
命令:
Router(config)#access-list 100 permit ip host 1.1.1.1 any //用acl捕获流量Router
Router(config)#route-map pbr permit 10 //定义route-map
Router(config-route-map)#match ip address 100 //调用被acl捕获的流量
Router(config-route-map)#set ip next-hop 10.1.1.1 //设置下一跳
Router(config-route-map)#exit
Router(config)#int e0/1
Router(config-if)#ip policy route-map pbr 接口下调用
注:策略再转发层面不如路由表,原因是匹配的东西过多,底层芯片处理支持有限。使用原则是能不用就不用,如果出现非目的地址的转发策略果断用。
7,路由的其他功能–为流量打tos标记
route-map PBR permit 10 match ip address 1 set ip precedence priority //设施队列优先级(优先出接口)
二、BGP–边界网关路由协议
1、概述
P协议,工作于AS(自制系统)之间,BGP使用AS号作为不同AS路由的标识,重点处理AS之间的路由,AS之内的路由不作为重点考虑;该AS号需要具有唯一性范围一般是:1-65535,其中1-64511公有,64512-65535私有,可以扩展32位65536-4294967295)用来解决AS不够用的问题;
2、特点
由于BGP管理的路由信息非常庞大,不能够使用周期更新,只能进行触发更新;并且BG会认为一条路由时间越久越稳定。在该情况下BGP必然不会使用复杂的算法来处理BGP收到路由信息;又由于每个AS情况不一致,管理范围有限,它必然需要丰富的管理参数(不能只依赖metric),综上所述,BGP必然需要多种参数共同来决定路由的选择。并且不能依赖某种特定的全局算法,只能单独去计算某一条路由不能全盘考虑,不能全盘考虑。并且需要依赖所属AS管理员自己的手动设置。
总结如下:
1)属于无类别路径矢量型路由协议(高级的距离是矢量型协议),采用分布式计算;
2)安全性:基于TCP:179端口传递路由信息,实现单播建立邻居,保证了可靠性但丧失邻居的自动发现;
3)BGP的最小使用单位是一个路由器,所以每个路由器只能使用一个BGP 的进程
4)更新方式:采用触发更新(由于BGP管理的路由信息非常庞大,不能采用周期更新)
5)丰富的属性:BGP又被路径优先协议,通过给每一个路由设置大量的属性参数来进行灵活的路径管理,并且这些属性参数大多需要人来操控,不能依赖某种特定的全局算法。
6)默认不支持负载均衡——通过各种属性选出一条最佳路径;
7)支持汇总和认证;
8)防环机制——无固定的防环算法,为IBGP和EBGP邻居的设置一种传递规则进行防环;
3,建立过程
1、数据包(所有数据包均基于TCP会话传递)
Open报文:类似于hello包,用于邻居关系建立,默认仅发送一次,同样存在route-id(规则与OSPF一致);
Keepalive报文:用于保活邻居关系(60s周期,180sholdtime),实际保活TCP会话; Updata报文:用于更新路由(目标网络号+属性)
Notication报文:错信息 Reflush报文(刷新报文)——新版IOS存在该报文
2、状态机Idle(空闲)——配置了邻居或重置了邻居,启动 ConnectRety(连接重试)定时器、初始 化去往邻居的 TCP 连接(进行TCP三次握手)、侦听来自邻居的 TCP ,并将状态转到下一状态;为了防止差错的持续出现造成BGP邻居的摆动,Cinnectrety计时器会呈现级数的增加:第一次60s,下一次为前一次的2倍;
Connect(连接)——等待TCP三次握手完成以后再决定下一状态;
(1)若成功,向邻居发送open报文,进入Open sent状态;
(2) 若失败,BGP进程将继续侦听由邻居初始化的连接,重置connect Rety定时器,进入Active状态,重新进行三次握手;
(3)如果时间超时,计时器重新启动,在试图与邻居建立TCP连接,BGP保持connect状态,出现其他事件转至idle状态;
Active(激活)——BGP尝试与邻居初始化TCP连接
(1)如果TCP连接建立成功,BGP进程会清除定时器,完成初始化状态,向邻居发送open报文,转至opensent状态;
(2)如果定时器到时后仍处于该状态,那么将返回connect状态并重置定时器,
(3)如果试图与一个未知IP建立TCP会话,同时 ConnectRetry 计时器重置,连接拒绝big保持active状态;
(4)其他事件将导致BGP进程重回idle状态;
Open sent(打开发送)——此时已经发送了open报文,等待接收对方的open包,收到open报文后对照版本及AS号;
(1) 如果出错,将发送Notification,转至Idle状态;
(2) 如果没有错误,则发送keepalive报文给邻居,并建立邻居关系设置计时器进入下一状态;(3) 如果收到TCP断开信息则断开BGP连接,重置计时器,状态转至active;
Open confirm(打开确认)——等待Keepalive或Notification,协商相同的保活时间,默认60s,若时间不一致,以时间短的为主;如果收到keepalive则进入下一状态;Established state——BGP邻居建立,邻居间可以交换各种报文,一旦收到Notification 报文,则转至idle状态;收到keepalive,则重新启动定时器;
4,邻居的条件:
1)双方指定的地址路由可达;
2)指定正确的AS;
3)BGP认证一致;
4)Router-id不一致;
5)在EBGP非直连建邻,关闭直连检测
5、BGP两种邻居关系:
1)IBGP邻居关系——相同AS内的路由器建立的邻居关系,管理距离为200;
2)EBGP邻居关系——不同AS路由器建立的邻居关系,管理距离为20;
6、邻居之间路由传递规则:
1)BGP不管什么邻居关系只传递最优路由(不优不传,优的标志是>,也就是不带>的路由不会被BGP传递)
2)EBGP邻居关系路由传递:
【1】只要不违背环路原则或人工策略EBGP邻居传递无限制(前提必须优);
【2】EBGP邻居间传递路由会更新next-hop为自己的更新源地址;路由条目在传递过程中会记录所经过的AS号(AS path),若接收到一条路由条目包含本地的AS号,将拒绝接收——EBGP水平分割,避免了EBGP环路的产生;
3)IBGP邻居关系路由传递:
【1】IBGP邻居之间不会中转路由(从一个IBGP邻居学到的路由不会传到下一个IBGP邻居),IBGP自己产生的路由(自己宣告的、自己重发布进来的)和EBGP邻居传递的都可以传递给自己的IBGP邻居;
【2】IBGP邻居间传递路由不会更新下一跳;始终为更新源(只有为0.0.0.0的情况下才会更新),但是建立邻居的时候可以修改本地为下一跳: Neighbor x.x.x.x next-hop-self //传递路由到该邻居时,下一跳修改为本地 优点:IBGP邻居间拥有了水平分割,从而避免了IBGP环路的产生,iBGP也不必设置防环算法; 缺点:IBGP之间路由传递必须直接建立邻居关系,导致IBGP邻居关系是一种全互连状态;