EGP协议 管理as之间路由传递的问题 距离矢量型 分布式计算
用tcp来传递路由信息(端口179) 保证可靠性丧失邻居自动发现,只能单播建立邻居
设计用来处理AS之间的路由所以该协议重点处理的AS之间路由,AS之内的路由不作为重点
BGP使用AS号作为识别不同AS路由的标识,该AS号需要具有唯一性
BGP的最小使用单位是一个路由器所以每个路由器只能使用一个BGP的进程
由于BGP管理的路由信息非常庞大,不能使用周期更新,只能使用触发更新,并且会认定一条路由时间越久越稳定,在这种情况下bgp必然不会使用复杂的算法来处理bgp收到的路由信息,又由于每个AS情况不一致,管理范围也有限,它必然需要丰富的管理参数(不能只依赖metric)宗上所述BGP必然需要多种参数共同决定路由的选择,并且不能依赖某种特定的全局算法,只能单独去计算某一条路由不能全盘考虑,并且需要依赖所属AS管理员手动设置。 BGP 路径优先协议,通过给每个路由设置大量的属性参数来进行灵活的管理或者选路,并且这些属性参数大量的都需要人为的操控
1.初始(Open):TCP三次握手之后,双方路由器发出初始报文
2.存活(Keeplive):BGP路由器收到初始消息后发出的确认
3.更新(Update):一条更新消息中只包含一条路径信息,如果需要更新多条路径信息,就需要多个更新消息
4.通知(Notification):BGP路由器在检测到错误时发送通知消息
5.reflush 刷新BGP路由
1、可靠性–不能周期更新,增量更新;-TCP
2、可控性–该协议的真正意义,在于AS间共享路由条目时更加方便快捷的干涉选路
3、AS-BY-AS 以一个AS为单位进行计数 IGP -hop-by-hop 一个路由器为一个单位
BGP是怎样收集并存储路由信息的?
IBGP 邻居关系 //相同as的路由器建立的邻居关系
EBGP 邻居关系 //不同as路由器建立的邻居关系
1.neighbor 10.1.1.1. //代表向该地址发送TCP端口位179的数据。并且自己也需要在发出地址上打开TCP 179 的监听。该配置可以指定源地址也可以不指定源地址,不指定就是出接口地址(意味着打开该出接口关于tcp 179的监听)
本端指的地址需要是对方的源地址,对方指的地址需要是本段的源地址
2.neighbor 10.1.1.1remote route-as xx
对端建立邻居的AS号必须和本端remote-as xx号一致
双方建邻保障数据tcp 179能够发送,不丢失,不被拦截、
一共10条,Cisco有11条,weight是Cisco私有属性
1、公认必遵:Origin,AS-path,Next-hop
2、公认可遵:local-pref,auto-aggregate
3、可选传递:aggregator,community
4、可选非传递:MED,Originator-ID,cluster-list,weight
1.weigth cisco私有属性,对于离开AS的路由在路由器选择那一条最优,本台路由器产生为32768,学习的为0 不能传递,适用于一台路由器在多条路径下的选路,无视邻居属性
Weight值的修改只能影响本路由器,不能影响其他路由器,意味着AS只有一个出口weight选路是适用的,但是有多个出口路由器的情况下weight就不太适用
1.Router BGP 2
Neighbor 10.1.34.3 weight 1 修改该邻居所有传递过来的路由weight为1
2.使用前缀列表抓取路由
Neighbor 10.4.34.3route-map a in 只针对某一个路由修改weight 只能用in方向
Route-map a permit 10
Match ip address prefix-list a
Set weight 1
Route-map a permit 20
Ip prefix-list a permit 10.1.1.1/32
2.origin
起源属性,标识改路由的来源方式,0表示宣告(i) 1表示EGP学到(E)3表示其他手段得到(重发布?) 用i > E > ? 选路
该属性可以选路,但一般不用于选路
R(config)#Router bgp 2
R(config)#Neighbor 10.1.24.2 route-map org in 用in和out方向都行,适用于任何邻居之间
R(config)#Route-map org permit 10
R(config-route-map)#match ip address prefix-list a
R(config-route-map)#Set origin ?
Igp local IGP
Incomplete unknown heritage
R(config-route-map)#Set origin incomplete
3.next-hop
到达路由的下一跳路由器IP地址,IBGP之间传路由next_hop不变,为0的时候会修改更新源地址,EBGP之间传路由next_hop修改为更新源地址
选路:下一跳为0的优于其他路径
修改:
Router bgp 2
Neighbor 10.1.24.2 route-map 1
Route-map K permit 10
Match ip address prefix-list a
Set ip next-hop 1.1.1.1
方向无所谓,邻居无所谓,都可以
4.AS-PATH
一条路由在传输过程中经历了哪些AS(不算自己)顺序是最近经过的as排前面,一个AS的路由器拒绝接受携带有自己AS号的路由,可用来防环,越短越好 也可用于选路
Route-map org permit 10
Match ip address prefix-list a
Set origin incomplete
Set as-path prepend 2 3 4
Route-map org permit 20
Router bgp 2
Neighbor 10.1.24.2 route-map org in
allowas-in 允许和具有自己相同AS的路由进入本AS 打破防环 本路由器使用
as-override 把具有和其他AS相同AS号的路由放入这个AS 邻居路由器使用
一般在选路当中添加AS会重复添加已经历的as,一般不会添加没有经历的AS,适用于任何邻居之间,in 和 out方向都行。
**注:**调用时,控制层面的出或入接口都可以,但必须是EBGP邻居关系
入向调用—3 4 5 x,X为真实经过过的编号
出向调用—X 3 4 5 ; 最前端AS为最新经过的编号;
又因为AS-PASH属性还用于防止EBGP环路,故添加的属性中若存在后方AS号,将导致这些路由无法进入这些AS;故可重复使用已经经过的AS号
5.local-pref
与weight一样也是选路属性
不能在EBGP邻居之间传递,可以在IBGP邻居之间传递,值越高越优(默认100),常用于当本AS有多个出口路由器时,选择拥有local值大的路由器作为出口路由器,也可以是到达一个网段有多个出口路径时,选择local值大的路径
修改方式:
1.修改路由器的默认local_pref值,该路由器通告给IBGP邻居的路由都会携带local_pref值
Router bgp 1
Bgp default local-preference 120 修改默认值
2.通过route_map修改路由某路由的local_pre值,EBP只能在in方向,IBGP可以是in也可以是out方向
Route-map k permit 10
Match ip address prefix-list k
Set local-preference 120
Route-map k permit 20
Router bgp 1
Neighbor 10.1.34.4 route-map k in
6.MED
选路属性 本质就是metric 默认为0,一般只能用于自同一个AS发出路由的不同路径med值比较
用于选择流入AS的入口路由器,只能在俩个AS之间传递,不能传递给其他的AS
一般用于影响对方AS(out),如果在本AS使用(in),和local-pre等同(注意med不能在路由器上修改默认值)
Route-map k permit 10
Match ip address prefix-list k
Set local-preference 120
Route-map k permit 20
Router bgp 1
Neighbor 10.1.34.4 route-map k in
Bgp always-compare-med 开启比较不同as的med
注意:med只能用于俩个AS之间的选路,超过俩个AS该参数无效。可以打开多AS的med比较 always-compare-med
Bgp always-compare-med 开启比较不同as的med
7.auto-aggregate
用来警告下游路由器聚合产生的路由器路径丢失
As-set 命令会使得该属性消失
BGP支持向BGP邻居传递重叠路由可以选择多种方式
1.明细和粗略的都公布 aggregate-address 10.0.0.0 255.0.0.0
2.只公布明细 aggregate-adress 10.0.0.0 255.0.0.0 suppress-map
3.只公布没有重叠的as-path agregate-address 10.0.0.0 255.0.0.0 summary-only as-set
4.聚合后公布聚合后的路由 agregate-address 10.0.0.0 255.0.0.0 summary-only
8.aggregator:
用来通告汇总路由的汇聚路由器BGP_ID(cisco),方便寻找
9.community:
团体属性 为了更好的标识BGP路由,标识格式为X:Y
团体值的设置不能在EBGP之间(ibgp之间可以),它的传递可以在IBGP之间也可以在EBGP之间
设置:
Route-map p permit 10
Match ip address prefix-list p
Set community 111
Route-map p permit 20
Router bgp 1
Neighbor KKK route-map p out
设置必须在IBGP之间可以用in也可以用out
传递设置:
Neighbor 10.1.24.4 send-community both/standard/extended 团体属性需要传递必须开启该指令
匹配设置:
IP bgp-community new-format 开启扩展工具匹配
用community-list匹配完成之后route-map调用即可
查看:
R# show ip bgp community 该指令可以查看所有具有团体值的路由
R#show ip bgp community 111 查看某团体值的所有路由
Standard(做路由标识) extended (MPLS VPN ) 可读性好
子属性
1.Internet 默认属性,可以给任何BGP发送,不对携带团体值的路由做任何限制
2.No_export 只能在一个AS内传递,可以在联盟内传递,该属性就是限制携带团体值的路由传递给EBGP邻居,联盟的EBGP除外
3.No_advertise 不在IBGP,EBGP邻居间传递,禁止传递给任何邻居
4.Local-as 不向任何EBGP邻居发送包括联盟的EBGP邻居
10.Originator-ID
路由反射使用,是路由发起者产生的一个32比特的值,该值是本地路由发起则的RID,如果路由发起者的RID,如果路由发起者从属性上看到自己的RID,说明有环路就忽略
IBGP下服务器会选择出一条最优路径,若开启反射器,则会将最优路径反射给非客户端,而从客户端得到的俩条或多条到达同一目标的路径,无法都反射到非客户端,使得非客户端丧失了选择最优的权力
11.Cluster-list
路由反射器使用,是路由进过反射器簇ID的一个序号,如果反射器在属性里看到自己的簇ID就说明有环路,忽略
根据选路参数来做决策,参数又有优先级之分,决策结果放置bgp的路由表。
ibgp通过水平分割,ibgp邻居之间路由不可中转。
ebgp通过as-path属性来防止,也是水平分割,as之间传递路由不能接收自己as发出的路由
反射防环
originator-id 由自己发出的路由不会反射回自己,自己发出的路由携带originator-id(默认为自己的rid),回程的时候检测路由是否和自己的originator-id一致。
cluser-list 由反射器自己反射出去的路由不会反射回本发射器。当一条路由被反射器反射的时候反射器会把自己的cluster-id(默认为rid)添加在cluster-list中,每经过一个反射器该反射器都会添加自己cluster-id到cluster-list中
当一条路由需要被反射器接收时反射器会查看该路由的cluster-list,如果发现有自己的cluster-id则不接收该路由。
大的角度是距离矢量,一般的距离矢量生成的是一个路由的最短路径树。而bgp生成的是一个AS的最短路径树。
connectretry 计数器
浮动惩罚 bgp damponping
1、最高weight值 (选最高weight值的路由,Cisco私有,默认为0,如果是BGP本地发起路由,weight值32768)
2、最高Local-pref值(若weight值相同,则选择拥有最高local-pref值的路由,默认100)
3、本地发起(起源)路由(若local-pref值相同,则选择BGP本地发起的路由:也就是下一跳为0.0.0.0的路由。本地发起的路由有多种方式:network命令引入,重发布,汇总。)
4、最短AS-path(若本地发起路由无法比出最有路径,则选择拥有最短AS-path的路由。可以使用bgp bestpath as-path ignore 命令来忽略对AS-path的比较,而直接比较下一属性。)
5、最低origin类型(若AS-path无法比较出最优路径,则选择拥有最低origin类型的路由。origin记录了路由是如何进入路由表的,有三种方法:从IGP导入,从EGP导入,以及重发布。优先级:IGP > EGP > Incomplete)
6、最小MED值(若origin类型无法比较出最优路径,则选择拥有最小MED值的路由,并且只有当多个下一跳邻居在同一个AS时,才能比较MED值。如果在多个不同AS的下一跳中比较MED,可使用命令bgp always-compare-med,需注意此命令在整个AS的路由器上配置,否则可能产生环路。MED默认值为0,如果收到一条没有MED值的路由,也认为是0)
7、EBGP优于IBGP(若MED无法比较出最优路径,则选择下一跳为EBGP的邻居。EBGP的路由AD为20,而IBGP的路由AD为200,但BGP并不在EBGP与IBGP间比较AD值,比到此步时,是邻居类型影响了最优路径的选择,而不是AD值的影响。注意:BGP联邦内部没有改规则)
8、在下一跳地址中,选择拥有IGP metric最小的路由
9、如果配置了maximum-path,若存在多条等价路径,会同时进路由表,即负载均衡
10、若下一跳都为EBGP,则选择最早学习到的路由,即时间最长的路由。(前提必须是external路由,联邦内的EBGP路由当做IBGP处理)
11、选择拥有最低router-id的下一跳路由
12、选择拥有最短cluster-list的路由
13、选择下一跳邻居拥有最小IP地址的路由
精确默认
neighbor X.X.X.X default-originate
全局默认 –给所有邻居下发默认条件
全局 default-information originate
全局路由表中有默认路由
network 0.0.0.0 或者 重发布该全局路由表的默认给bgp
过滤
基于邻居的过滤
neighbor X.X.X.X prefix-list XX in/out //匹配前缀使用
neighbor X.X.X.X route-map XX in/out //route-map匹配的条件多(下一跳,属性,community-list,ip as-path )
基于bgp路由表的过滤 distribute-list ACL/route-map in/out
as欺骗配置
通过neighbor x.x.x.x local-as xx 我们可以实现让对方路由器认为本方as为xx这个as号
关闭as-path的水平分割
as-override用于让对方接收含有其as号的路由
allowas-in 用于让自己接收含有与自己一致as号的路由
SoO site of orgin 这个属性用来防止关闭水平分割以后双点bgp出现的环路问题