BGP(边界网关协议)(border gateway protocol)
基础:
↗AS内IGP ISIS RIP OSPF
1、作用范围AS
↘AS外EGP BGP
2、算法:DV 增强型距离矢量算法(链路状态有全网的拓扑信息,但是距离矢量没有拓扑信息)可以说是路由选择的一个工具
选择最佳路由和控制路由的传播
ospf封装在ip上去传输 rip封装在UDP上进行传播
支持CIDR 增量更新
3、工作层:应用层:port=179
协议:TCP
4、防环机制
EBGP:AS-path不接收带有本段id的路由 不接受带有本地AS号的路由器
IBGP:水平分割---→FULL Mesh 在AS内学到的路由不在通告给AS内的BGP邻居
反射器、联盟
路由策略丰富
防止路有震荡
易于扩展(PLV)
每个自治系统都有唯一标识的自治系统编号,有IANA分配的
编号范围:1到65535 其中64512到65535是私网的
EBGP:外部BGP运行在同一个AS范围内(一般用物理接口)
IBGP:内部BGP运行在不同的AS之间(一般用网络接口)
基本前提,必须保证底层是通行的 直连 IBGP 静态
报文:
open报文 创建邻居关系(版本号,本段AS号,本段r-id,死亡时间)
update报文 用来更新路由信息--增量 路由信息,路径属性(可以撤销也可以宣告可达的路由信息)
keepalive报文 保持邻居关系,在建立邻居关系时确认收到了对方的open
notification报文 用来中断BGP邻居关系(错误代码、子代码)
1、消息头错误 (1、连接非同步 2、错误的消息长度 3、错误的消息类型)
2、open消息错误 ( 1、不支持的版本号 2、错误的对等体AS号 3、错误的BGP ID 4、不支持的可选参数 5、认证失败 6、不可接受的保持时间)
3、update消息错误 ( 1、畸形的属性列表 2、无法识别的公认属性 3、缺少的工人属性 4、属性标志位错误 5、属性长度错误 6、无效的ORIGIN属性 7、AS路由环路 8、无效的下一条属性 9、可选属性的错误 10、无效的网络字段 11、畸形的AS_PATH)
4、保持时间超时
5、状态机错误
6、终止
router-refresh 用来通知对方我本台路由器的路由刷新能力,在邻居策略发生了变动,会通过refresh去请求对方重新发送update
六种状态机制: 形成条件 停留原因
1、idle 只要配BGP peer 没有路由,没TCP报文发出
2、connect 有路由,有TCP发出 没有收到TCP的回应/本段路由出错
(路由不一定是正确的) 对方没有回程路由/对方没有开启BGP
3、active 只要收到对方的TCP BGP配置出错,本端,对端AS号
回应(路由一定是正确的) 对端IP配错···dis bgp error
4、opensent 收到正确的TCP发open 没有收到对方的OPEN
5、openconfirm 收到对方的open 没有收到对方的keepalive
发Keepalive
6、established 收到对方的keepalive
BGP工作原理---对等体之间的交互原则
IBPG路由,只发布给EBGP对等体
EBGP路由,发布给所有的EBGP和IBGP对等体
只将最优路由发布给对等体
只发送更新的BGP路由
所有对等体发送的路由,BGP设备都会接收
IBGP 全互联 联盟 路由反射器
BGP同步
IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表,只有IGP也知道这条IBGP路由时,他才会被加入到路由表中,并发布到EBGP对等体
路径的途经之一:1、network(掩码严格匹配)
2、 import
IP路由表 BGP路由表 邻居表 ADJ-RIB-IN ADJ-RIB-OUT
公认必遵:所有的BGP路由器都可以识别,且必须存在于update消息中
如果缺少这种属性,路由信息就会出错
公认任意:所有的BGP路由器都可以识别,但是不要求必须在update消息中
如果缺少了这种属性,路由信息也不会出错
可选过渡:在AS之间具有可传递性
BGP路由器可以选择是否在update消息中携带这种属性,接收的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器看我是否会识别并使用到这种属性
可选非过渡:BGP路由器可以选择是否在update消息中携带这种属性。如果接收的BGP路由器不支持此属性,则相应的这类属性会被忽略,且避讳传递给其他的路由器
常见的BGP路由属性:
1、origin--起源
2、AS_PATH列表(有序)
3、Next hop(下一跳)
4、MED(类似于cost)
5、Local-preference(本地优先级)
6、ATomic-Aggregate(自动聚合)
7、Aggregator(手动聚合--无类)
8、Community(团体)
9、Originator-ID(集群内起源ID)
10、Cluster-List(集群列表)
11、MP_Reach_NLRI
12、MP_Unreach_NLRI
13、Extened_Communities
123为公认必遵 56公认任意 78可选过渡 4 9 10 可选非过渡
1、ORIGIN:属性用来定义路径信息的来源:该属性为公认必遵(i>e>?)(访问距离范围最近的)
IGP:通过路由始发AS的IGP得到的路由信息(通过network命令注入的路由)标识符为“i”
EGP:通过EGP得到的路由信息标识符为“e”
INCOMOELETE:通过其他方式学习到的路由信息(通过import命令注入路由)标识符为“?”
acl 2000
ru per sou 100.1.1.1 0
route-policy 1 per no 10
if-maech acl 2000
apply origin egp /igp/in 321
peer x.x.x.x route-policy 1 export /import
这里有两种情况,network进去的时候还是原来的AS号,但是import进入的时候是按照自己修改的
2、AS_Path属性按矢量顺序记录某条路由从本地到目的地址所要经过的所有的AS编号,该属性为公认必遵(只有出去的时候才会打)
acl 2000
ru per sou 100.1.1.1 0
roure-policy 1 per no 10
if-match acl 2000
apply as-path 10 20 30/none additive/overwrite
import -route direct route-policy 1 export
none直接为空 additive添加 overwrite覆盖
3、Next_hop属性记录里了路由的下一跳信息,该属性为公认必遵
BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性
peer x.x.x.x next-hop-local
将学习到EBGP的路由下一跳属性变更为自己建立邻居关系的接口地址。
如果IBGP EBGP内部收到两条等价路由,EBGP默认选择下一跳R-ID小的为优-如果R-ID相同优选建立邻居关系IP小的,但如果变更了底层IGP的选路优先级后,则遵循IGP的优选顺序,用IGP的下一跳影响IBGP的下一跳
总结:NEXT-HOP属性≈IGP内部的优选协议开销
当收到了两条等价路由:一条从EBGP收到、一条从IBGP收------优选EBGP的路由
4、pref val -- 华为私有
只影响本地台路由器 不在BGP范围内传播 ---BGP speaker 在向Pref属性表明本地路由器的iBGP优先级,用于判断流量离开AS时的最佳路由,该属性为公认任意(比大)默认为0
(只在本台路由器上传递)
acl 2000
ru per sou 100.1.1.1 0
route-policy 1 per no 10
if-match acl 2000
apply preferred-value
bgp 1
improt-route direct route-policy 1
5、local-pre:本地优先级 -- 公认任意
(仅在IBGP内部生效 不通告给其他AS)
影响去往外部的路由优先级 常用在边界路由器上
Local_Pref属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP邻居获得目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,其默认值为100
修改:BGP进程里
default local-preference
//修改路由器的
acl 2000
ru per sou x.x.x.x x
route-policy xx per no 10
if acl 2000
apply local-pre 125
Route-policy xx permit no 20
6、MED属性相当于IGP的代价值,用于判断进入AS时的最佳路由,即用来影响邻居AS流量进入本AS的最佳路径,该属性为可选非过渡(比小)Default med
配置修改:
acl 2000
ru per sou x.x.x.x x
route-policy xx per no 10
if acl 2000
apply cost 123
peer x.x.x.x route-policy xx export/import
***影响全部路由:
peer x.x.x.x med x
主要用于影响EBGP学到的路由,或通告给对端的路由,类似IGP协议里的开销
peer x.x.x.x route-policy xx export
影响IBGP内部收到的路由优先级,并且为出方向
6、MED属性相当于IGP的代价值,用于判断进入AS时的最佳路由,即用来影响邻居AS流量进入本AS的最佳路径,该属性为可选非过渡(比小)默认为0
Default med
配置修改:
acl 2000
ru per sou x.x.x.x x
route-policy xx per no 10
if acl 2000
apply cost 123
peer x.x.x.x route-policy xx export/import
***影响全部路由:
peer x.x.x.x med x
主要用于影响EBGP学到的路由,或通告给对端的路由,类似IGP协议里的开销
7.聚合属性:
atomatic-aggregate 属于公认任意 ---- 自动聚合 ---有类网段
aggregator 属于可选过渡 --- 手动聚合(无序的)
用于提示做了汇总路由的始发AS和始发路由器。
8、团体属性:用于标识既具有相同特征的BGP路由,该属性为可选过渡
团体是一组由相同性质的目的地址路由。目的就是将路由信息编组,通过组的标识决定路由传递的策略。tag
携带团体属性的配置:
所有需要传递团体名的邻居 都需要配置
peer x.x.x.x advertise-community
//声明我与我的BGP邻居传递团体属性
internet --- 都可以收到路由 (传播时既会传给EBGP邻居也会传给IBGP邻居)
no-export --- 只可以在联盟内的IBGP和EBGP邻居进行传播,不会传播给联盟外的EBGP邻居
no-export-subconfed --- 只可以传播到联盟内,并且在联盟内的IBGP传播 ,但不会在联盟内进行EBGP的传播,也不会在联盟外进行EBGP传播
no-advertise --- 只可以传播到联盟内属性,但不会在联盟内的IBGP\EBGP传播,也不会在联盟外进行EBGP的传播
BGP路由的团体属性的主要作用是为了简化路由策略的实现过程
保留的 0X00000000--0X0000FFFF
0XFFFF0000--0XFFFFFFFF
Internet:(0x00000000 )缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP邻居;
共有的 NO_EXPORT(0XFFFFFF01)路由器收到了带有这一团体值得路由后,不应该把该路由通告给一个联盟之外的一个对等体(本AS传递)(不会通告给真正的EBGP邻居)
NO_ADVERISE(0XFFFFFF02)路由器收到带有这一团体的路由后,不应该把路由通告给任何的BGP对等体
NO_EXPOPT_STBCONFED(0XFFFFFF03)路由器收到带有这一团体值得路由后,可以把该路由通告给它的IBGP对等体,但不通告给任何的EBGP对等体(包括联盟内的EBGP对等体,本小AS传递)
自定义 AS(2B):Nunmber(2B)
团体属性配置:
router-policy comm permit node 10
apply community no-export
bgp 100
peer 10.1.12.1 route-policy comm import //对10.1.12.1传进的路由打上no-export community标签
dis bgp routing-table 11.1.2.0 //查看路由的属性
******community属性在华为设备中需要手动配置才能传递。
bgp 100
peer 44.1.1.1 advertise-community //配置通告给44.1.1.1团体属性
BGP选路原则:当到达同一目的存在多条路由时,BGP采用如下策论进行路由的选择(display ip routing-table +路由id)
1、如果此路由的下一跳不可达,忽略此路由
2、优选协议首选值(prefval)最高的路由 首选值默认为0,越大越优先(peer 路由器id preferred-value +数值)可以加策略
3、优选本地优先级最高的路由 缺省情况下默认为100 但是可以修改他的优先级。(default local-preference +数值)(比大)本地AS(可以加策略)
4、优选本地生成的路由 network import 聚合
1、优选聚合路由(聚合路由优先级高于非聚合路由) 2、通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic命令生成的自动聚合路由 3、通过network命令引入的路由的优先级高于import-route命令引入的路由
5、优选(AS_path)AS最短的路由(越短越优先)(忽略AS_PATH的作用bestroutr as-path-ignore)
6、比较origin属性,依次优选origin类型为IGP、EGP、Incomplete的路由 i>e>?
7、优选MED值最低的路由 默认值0 AS内 或者是相邻的AS中 越小越优先 (apply cost 100)引入协议值为med值
8、优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
9、优选到BGP下一跳IGP Metric较小的路由
当以上全部相同,则为等价路由,可以负载分担。注:AS_PATH必须一致,当负载分担时,一下3条选中原则无效(默认不负载)(开启命令maximu load-balancing (1-8))
10、优选Cluster_list最短的路有
11、优选Originator_ID或者Router ID最小的路由器发布的路由
比较对等体的IP ADDRESS,优选从具有较小的IP ADDRESS的对等体学来的路由