PBR策略路由:
通过流量策略来执行选路的一种转发手段
传统的路由表只能通过数据的目标地址,做策略提供路由策略。
策略路由可以根据源地址,源端口,目的端口,协议 ,tos等流量特征来做策略提供路由,灵活性高。
路由表与策略路由的关系:
策略路由是优先于路由表执行的,策略路由没有捕获的流量依然去执行路由路由表
配置:
1.接口下配置:
只能捕获该接口入接口能量做策略(不能做本地路由)
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip policy router-map pbr //接口调用
2.全局配置
捕获所有接口的入接口已基本路由器的产生的流量(源地址是本路由器地址)
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip local policy router-map pbr //接口调用
3.策略路由的冗余
#routr-map PBR permit 10
#match ip address
#set IP next-hope verify-availability 10.1.24.2 1 track 1//设置track检测如果监测成功,执行该语句,如果不成功,执行下一个set语句
#set ip next-hop10.1.34.3
#track 1 IP sla//定义一个track监控sla的探测结果
#ip sla 1//定义一个sla
#icmp-echo 10.1.12.1 source-ip 10.4.4.4//设置其探针
#ip sla schedule 1 life forver start-time now //设置sla1的执行时间
*不含default语句,是不查询路由表就转发数据包到下一跳的ip或者接口,有default的语句是先查询路由表,找不到精确匹配的路由条目,才会转发数据包到default语句指定的下一跳ip或接口。
4.default语句
在router-map的set ip default的这个位置输入,定义为被捕获的流量先查路由表如果能精确匹配(如果抓的是10.5.5.5,路由表中有10.5.5.5/24,这就不是精确匹配,如果10.5.5.5,就是精确匹配)就执行路由表,如果不能就执行路由策略。
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip local policy router-map pbr //接口调用
策略路由在转发层不如路由表,原因是匹配的东西过多,底层芯片处理支持有限
原则:能不用就不用,如果出现非目的地址转发策略断用
策略路由其他功能–为流量打tos标记
#router-map PBR permit10
#atch ip address 1
#set ip precedence priority //设置队列优先级
10.0.0.0/24
10.0.0.0/8
10.0.0.0/16
#ip prefix-list k seq 5 10.0.0.0/24 ge 24 le 32 前缀列表
BGP边界网关协议:
概述:
Bgp EGP协议管理AS之间路由传递
Bgp 距离矢量,分布式计算
Bgp 靠tcp来传递路由信息(端口号179)保证了可靠性,丧失邻居自动发现,单播建邻,可以非直连建邻。
Bgp设计用来处理AS之间,所以该协议重点处理as之间的路由,as之外的不作为重点
Bgp使用as号,作为使用识别不同as路由的标识,as号需要具有唯一性
1-65535,可以使用扩展32位65535-4294967295(解决不够用的情况)
Bgp最小使用单位是一个路由器,每个路由器只能使用一个BGP的进程
Bgp管理的路由信息量过大,不能使用周期更新,只能触发更新,并且bgp认为一条路由时间越久越稳定。在这种情况下bgp必然不会使用复杂的算法来处理bgp收到的路由信息,又由于每个as情况不一致,管理范围有限,它必然需要丰富的管理参数(不能只依赖metric来判断),综上所述,bgp必然需要多种参数来共同决定路由的选择,并且不能依赖某种特定的全局算法,只能单独去计算某一条路由不能全盘去考虑,并且需要依赖所属管理员自己的手动配置。Bgp路径优先协议,通过给每个路由设置属性和参数来进行灵活的管理和选路。,并且这些属性参数大量的都需要人为才操控。
邻居建邻:
数据包
Open //
Keeplive //
Update //
Notification //
Reflush //刷新bgp路由
邻居状态机:
初始时down状态
Idle state //为了做三次握手,
Connect state //表示三次握手成功
Active state //握手失败进入active状态,
Open state //相互发送信息,比对信息(版本,识别对方的AS号-为了判断建立什么样的邻居关系)
Open confire state //协商邻居的保活,保活时间设为相同的,保活时间以时间小的为准
Established state //bgp连接已经完全建立连接。
idle state
配置了neighbor或重置了邻居,BGP初始化所有资源打开connectRety计时器,初始化邻居的TCP的连接,监听来自初始化消息,并将他的状态转发到connect状态。
为了防止差错的持续出现造成BGP邻居的摆动,connectRety会呈现数量级的增加第一次60s,第二次120s,第三次240s
Connect state
BGP等到TCP连接完成后再决定后续的动作
1.如果TCP同步成功,BGP将connectRety清零,完成初始化并发送opeb消息给邻居,并把状态设为open
2.如果失败,BGP继续监听邻居发出的连接,重置connectRety计时器并转移到actiev转态
3.如果connectRety时间超时,计时器重新开始,在试图与邻居建立TCP连接,BGP保持connect状态,出现其他事件转入idle状态
Actiev state
BGP试图与邻居建立一个TCP连接
1.如果tcp连接成功,BGP将connectRety计时器清零,完成初始化,给邻居发送open消息,并将状态设为open,hold时间为4min
2.如果在active状态,connectRety超时回到connect状态并重置connectRety计时器
3.如果试图在与一个未知的ip建立TCP会话,同时connectRety计时器重置,连接拒绝并保持active状态
4.任何一个事件都会导致重回idle
Open send state
在此状态下,已经发送了open消息,BGP等待邻居发送的open消息
1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
2.如果收到open消息没错,将发送keeplive给邻居,并将IBGP或者EBGP重置为open confire state状态。
3.如果收到TCP断开消息则断开bgp连接重置connectRety计时器,状态置为active
PBR策略路由:
通过流量策略来执行选路的一种转发手段
传统的路由表只能通过数据的目标地址,做策略提供路由策略。
策略路由可以根据源地址,源端口,目的端口,协议 ,tos等流量特征来做策略提供路由,灵活性高。
路由表与策略路由的关系:
策略路由是优先于路由表执行的,策略路由没有捕获的流量依然去执行路由路由表
配置:
1.接口下配置:
只能捕获该接口入接口能量做策略(不能做本地路由)
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip policy router-map pbr //接口调用
2.全局配置
捕获所有接口的入接口已基本路由器的产生的流量(源地址是本路由器地址)
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip local policy router-map pbr //接口调用
3.策略路由的冗余
#routr-map PBR permit 10
#match ip address
#set IP next-hope verify-availability 10.1.24.2 1 track 1//设置track检测如果监测成功,执行该语句,如果不成功,执行下一个set语句
#set ip next-hop10.1.34.3
#track 1 IP sla//定义一个track监控sla的探测结果
#ip sla 1//定义一个sla
#icmp-echo 10.1.12.1 source-ip 10.4.4.4//设置其探针
#ip sla schedule 1 life forver start-time now //设置sla1的执行时间
*不含default语句,是不查询路由表就转发数据包到下一跳的ip或者接口,有default的语句是先查询路由表,找不到精确匹配的路由条目,才会转发数据包到default语句指定的下一跳ip或接口。
4.default语句
在router-map的set ip default的这个位置输入,定义为被捕获的流量先查路由表如果能精确匹配(如果抓的是10.5.5.5,路由表中有10.5.5.5/24,这就不是精确匹配,如果10.5.5.5,就是精确匹配)就执行路由表,如果不能就执行路由策略。
#access-list 100 permit ip host 1.1.1.1 any //捕获流量
#router-map pbr permit 10 //定义router-map
#match ip address 100 //调用捕获的流量
#set ip next-hop 10.1.1.1 //设置下一跳
#ints1/0
#ip local policy router-map pbr //接口调用
策略路由在转发层不如路由表,原因是匹配的东西过多,底层芯片处理支持有限
原则:能不用就不用,如果出现非目的地址转发策略断用
策略路由其他功能–为流量打tos标记
#router-map PBR permit10
#atch ip address 1
#set ip precedence priority //设置队列优先级
10.0.0.0/24
10.0.0.0/8
10.0.0.0/16
#ip prefix-list k seq 5 10.0.0.0/24 ge 24 le 32 前缀列表
BGP边界网关协议:
概述:
Bgp EGP协议管理AS之间路由传递
Bgp 距离矢量,分布式计算
Bgp 靠tcp来传递路由信息(端口号179)保证了可靠性,丧失邻居自动发现,单播建邻,可以非直连建邻。
Bgp设计用来处理AS之间,所以该协议重点处理as之间的路由,as之外的不作为重点
Bgp使用as号,作为使用识别不同as路由的标识,as号需要具有唯一性
1-65535,可以使用扩展32位65535-4294967295(解决不够用的情况)
Bgp最小使用单位是一个路由器,每个路由器只能使用一个BGP的进程
Bgp管理的路由信息量过大,不能使用周期更新,只能触发更新,并且bgp认为一条路由时间越久越稳定。在这种情况下bgp必然不会使用复杂的算法来处理bgp收到的路由信息,又由于每个as情况不一致,管理范围有限,它必然需要丰富的管理参数(不能只依赖metric来判断),综上所述,bgp必然需要多种参数来共同决定路由的选择,并且不能依赖某种特定的全局算法,只能单独去计算某一条路由不能全盘去考虑,并且需要依赖所属管理员自己的手动配置。Bgp路径优先协议,通过给每个路由设置属性和参数来进行灵活的管理和选路。,并且这些属性参数大量的都需要人为才操控。
邻居建邻:
数据包
Open //
Keeplive //
Update //
Notification //
Reflush //刷新bgp路由
邻居状态机:
初始时down状态
Idle state //为了做三次握手,
Connect state //表示三次握手成功
Active state //握手失败进入active状态,
Open state //相互发送信息,比对信息(版本,识别对方的AS号-为了判断建立什么样的邻居关系)
Open confire state //协商邻居的保活,保活时间设为相同的,保活时间以时间小的为准
Established state //bgp连接已经完全建立连接。
idle state
配置了neighbor或重置了邻居,BGP初始化所有资源打开connectRety计时器,初始化邻居的TCP的连接,监听来自初始化消息,并将他的状态转发到connect状态。
为了防止差错的持续出现造成BGP邻居的摆动,connectRety会呈现数量级的增加第一次60s,第二次120s,第三次240s
Connect state
BGP等到TCP连接完成后再决定后续的动作
1.如果TCP同步成功,BGP将connectRety清零,完成初始化并发送opeb消息给邻居,并把状态设为open
2.如果失败,BGP继续监听邻居发出的连接,重置connectRety计时器并转移到actiev转态
3.如果connectRety时间超时,计时器重新开始,在试图与邻居建立TCP连接,BGP保持connect状态,出现其他事件转入idle状态
Actiev state
BGP试图与邻居建立一个TCP连接
1.如果tcp连接成功,BGP将connectRety计时器清零,完成初始化,给邻居发送open消息,并将状态设为open,hold时间为4min
2.如果在active状态,connectRety超时回到connect状态并重置connectRety计时器
3.如果试图在与一个未知的ip建立TCP会话,同时connectRety计时器重置,连接拒绝并保持active状态
4.任何一个事件都会导致重回idle
Open send state
在此状态下,已经发送了open消息,BGP等待邻居发送的open消息
1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
2.如果收到open消息没错,将发送keeplive给邻居,并将IBGP或者EBGP重置为open confire state状态。
3.如果收到TCP断开消息则断开bgp连接重置connectRety计时器,状态置为active
BGP事件有以下几种:
1.BGP开始 2.BGP结束 3.BGP传输连接打开 4BGP传输连接终止 5BGP传输连接打开失败 6.BGP传输致命差错 7重试连接计时器超时 8.持续事件终止 9.keeplive计时器终止 10收到open消息 11.收到keeplive消息 12收到update消息 13收到notificatior消息
Bgp建邻失败的情况
参数配置:
1.neighber 10.1.1.1 //代表向该地址发送tcp数据,包括tcp端口号为179的数据,并且自己也需要在发出的地址上打开tcp179的监听,该配置可以指定源地址,也可以不指定出接口。(意味着的打开该接口的关于tcp179的监听)。本端指的地址需要指的是对方的源地址,对方指的地址是本端的源地址
2.neighber 10.1.1.1 remote-as xx
对端建邻的as号必须与本端remote-as xx号一致
建邻双方保证tcp179能发送,不丢失,不被拦截
邻居间路由传递规则
1.bgp邻居关系 //相同的as路由建立邻居关系
2.Ebgp邻居关系 //不同的as路由建立邻居关系
BGP不管什么邻居关系只能传递最优路径,不优不传,优的标志是>,也就是不带>的路由不会被bgp传递.
EBGP邻居关系路由传递:只要不违背环路原则或者人工策略。EBGP邻居传递无限制(前提必须优),EBGP之间传递路由会更新next_hope为自己的更新原地址。
IBGP邻居关系路由传递:IBGP自己产生的路由(自己宣告的,重发布进来的)和EBGP邻居传递的都可以传递给它的IBGP邻居,但不可以在ibgp之间中转(也就是不能传递到邻居的邻居)
IBGP之间传递路由不会更新next_hope(只有next_hope为0.0.0.0地情况下才会更新,或者建邻的时输入neighbor x.x.x.x next_hope self更新为自己的更新源地址。
设定的好处:IBGP之间拥有了水平分割从而避免了IBGP环路的产生,IBGP不必设置环路算法。
设定的患处:IBGP之间传递路由必须直接建邻那个,导致IBGP邻居关系一直是全空互联状态。
Path-attribute
11条属性,weight,orign,as_path,next_hop,local_pref,atomic_aggregate,aggregator,community,MED,orignator_id,cluster_list
1公认必遵
所有的BGP路由器必须识别遵守的原则:origin,as_path,next_hop
2.公认可遵
所有路由器都能识别但是不一定要遵守,local_pref,atmoic_aggregate
3.可选传递
不是所有BGP路由器都能识别,但是所有BGP都能传递,aggregator和community
4.可选非传递
不是所有路由器都能被识别,不能识别的bgp路由就丢弃它,MED,originator_id和cluster_id,weight
Weight
Ciscoo私有属性,对于离开AS路由器选择那一条最优,本台路由器产生32768,学习为0的不能传递,适用于一台路由器去往别的As有多个出口。
Origin
起源,0表示宣告(i),1表示EGP学到(E),3表示其他方式得到(重发布),越低越好。
AS path
一条路由在传输过程中经历了哪些AS(不算自己的),可用来防环,越短越好
#neighbor xxx allows-in //允许和自己相同的as路由进入本as
#neighbor xxx as-ovrride //把具有和其他as相同as号的路由放入这个AS
Local _pref
不能传输到其他AS,值越高越优,用于本AS选择离开AS的出口路由默认为100
MED
用于选择流入AS的入口路由器,可以在两个AS之间传递,越低越好默认为0
Atomic_aggregate
用来警告下游路由聚合后产生的路由路径丢失。
BGP支持BGP邻居传递重叠路由可以选择多种方式
1.明细路由和粗略的都公布 //aggregate-address 10.0.0.0 255.0.0.0
2.只公布明细 //aggregate-address 10.0.0.0 255.0.0.0 suppress-map
3.只公布没有重叠的as-path //aggregate-address 10.0.0.0 255.0.0.0 summary-only as-set
4.聚合后公布聚合后的路由 //aggregate-address 10.0.0.0 255.0.0.0 summary-only
5.明细和粗略都不发布
Aggregator
用来通告汇总路由的汇聚路由器BGP_ID(cisco)