选路:1.目标路由的精确度----汇总/明细
2.是否为相同协议
(1)相同,则比较cost值,域内>域间>域外
(2)不同,比较AD值
BGP:
高级距离矢量型协议,用于解决AS间路由信息的传输,采用TCP连接传输,端口179。基于TCP本身的可靠性保证安全
注:BGP不能自动发现邻居,只能手动建立;可以传输多种网络层协议;通过keeplive包维持邻居关系
状态机:
- Idle state:
初始化计时器,初始化邻居的TCP连接,接听来自邻居初始化消息并将它的状态转到connect状态 - Connect state :
BGP等到TCP连接完成以后再决定后续的动作
1.如果tcp同步成功,BGP将connectRetry 清零,完成初始化并发送一个open消息给邻居并把状态置为open
2.如果失败,BGP继续监听邻居发出的连接,重置connectRetry计时器并转移到active状态
3.如果connectRetry时间超时,计时器重新开始,在试图与邻居建立TCP连接,bgp保持connect状态,出现其他事件转 入idle状态。 - Active state :
BGP试图与邻居建立一个TCP的连接
1.如果TCP连接成功,BGP将connectRetry计时器清零,完成初始化,给邻居发送Open消息并将状态置为open,hold时 间置为4mins
2.如果在active状态,connectRetry计时器超时回到connect状态并重置connectRetry计时器
3.如果试图与一个未知IP建立TCP会话,同时connectRetry计时器重置,连接拒绝并保持active状态
4.任何一个事件都会导致重回idle - Open send state:
在此状态,已经发送了open消息,BGP等待邻居发送的open消息
1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
2.如果收到open消息没错,将发送keeplive给邻居,并建立IBGP或者EBGP状态置为open confire state
3.如果收到TCP断开消息则断开BGP连接重置connectRetry计时器,状态置为active - Open confire state:
在此状态下BGP会等待一个keeplive消息或notification消息
1.如果后搜到一个keeplive消息状态置为establish
2.如果收到notification消息状态置为idle断开tcp连接
3.如果hold计时器超时,检测到一个差错或者stop事件,bgp将给邻居发送一个notification并断开连接,状态置为idle - Establish state:
此状态,BGP对等体间的连接已经完全建立,可以交换update, keeplive和notification消息,收到notification状态置为idle 中断连接。
传路由时,传给ibgp不修改下一跳,传给ebgp修改下一跳
BGP主要研究AS之间路由传递
不为ibgp设置算法做处理(易出环,所以不会中转,不会修改下一跳)
问题1:下一跳不可达
解决1:手动修改域内下一跳
问题2:全互联建邻
解决2: 反射,联邦
BGP属性
特点:
1.公认必尊
所有BGP路由器必须识别遵守的原则有origin,as_path ,next_hop
2.公认可尊
所有路由器都能识别但是不一定要遵守,local_pref,atomic_aggregate
3.可选传递
不是所有BGP路由器都能识别,但是所有BGP都能传递,aggregator和community
4.可选非传递
不是所有路由器都被识别,不能识别的BGP路由器就丢弃它,MED,originator_id和cluster_id,weight
选路原则:
-
weight
cisco私有属性,对于离开AS的路由在路由器选择那一条最优,本台路由器产生为32768,学习的为0.不能传递,适用于一台路由去 往别的AS有多个出口。 -
Origin
起源,0表示自己宣告,1表示EGP学到,3表示其他手段得到,越低越好
功能:识别路由来源 -
AS path
记录一条路由在传输过程中经历了那些AS(不算自己),可用来放环。越短越好 -
Local_pref
不能传输到其他AS,值越高越优,用于本AS选择离开AS的出口路由器默认为100 -
Next_hop
到达路由的下一跳路由器IP地址
通告路由器和接受路由器不在一个AS,next_hop为通告路由器的更新地址
通告路由器和接受路由器在一个AS内,next_hop为通告邻居的更新地址
通告路由器和接受路由器在一个AS内且为邻居关系更新地址为不同AS,则为外部更新地址 -
MED
用于选择流入AS的入口路由器,可以在俩个AS之间传递,越低越好默认0
让别人选择,影响别人;可以给ebgp邻居传递影响其他AS,但只限于一个AS范围 -
Aggregator
用来通告汇总路由的汇聚路由器 BGP_ID(cisco) -
团体属性
4个子属性:1.internet 默认属性,可以给任何bgp发送
2.no_export 只能在一个AS内传递,可以在联盟内传递。
3.no_advertise 不在IBGP邻居间传递
4.local-as 不向任何EBGP邻居发送包括联盟的EBGP邻居
Show ip bgp community 查看打标记的BGP -
Originator_id
反射时,该值是本地路由发起者的RID,防止出现环路 -
Cluster_list
记录进入过的反射器ID,当再次遇到有自己ID的簇ID列表时,则丢弃,防止出现环路 -
Atomic_aggregate
用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由可以选择多种方式
1.明细和粗略的都公布
2.只公布明细
3.只公布没有重叠的
4.聚合后公布聚合后的路由
5.明细和粗略都不公布
BGP选路原则:
在第八条之后且最大负载均衡条目数量从一条变为多条后,则不再比较,实施负载均衡
BGP路由惩罚:
针对EBGP邻居传寄的路由有效
目的:抑制路由摆动
被惩罚的路由不能参与选路,不能传递,惩罚是针对该路由的路径,
惩罚值: 默认是0,路由每翻滚一次,惩罚值增加1000,路由属性每改变一次,惩罚值增加500
惩罚门限:开始进行惩罚的惩罚值,默认2000(大于2000时开始惩罚)
重用门限:当惩罚值降低到该值恢复路由,默认750 当惩罚值降低到重用门限一半时,清除惩罚的记录
半衰期:经过一个半衰期,惩罚值减半,默认15分钟
最大惩罚时间:最大惩罚路由时间,默认60分钟
最大惩罚值:重用门限*2^(最大惩罚时间/半衰期),默认12000.
中间4个可以修改
过滤:
1.neighbor x.x.x.x route-map xx in/out 可以根据前缀、属性、更新地址进行路由过滤或者更改路由属性
2.distribute-list x in/out 可以根据前缀、更新地址进行路由过滤
3.neighbor x.x.x.x prefix-list xx in/out 只能根据前缀进行路由过滤
4.过滤下一跳为x.x.x.x的路由:
利用route-map
匹配下一跳Match ip next-hop
预留出一定的空间