BGP边界网关协议-路径矢量
BGP基于TCP。
只传递路由信息,不暴露AS内部拓扑。
BGP为触发式更新,而不是周期性更新。(类比:ISIS在广域网中周期性更新,点对点中只更新一次。OSPF为触发式更新+30min分钟周期链路状态刷新)
特征
- 使用TCP(端口179),BGP会话基于TCP连接。
- 会话双方互为对等体,对等体间交换BGP路由表。
- BGP路由只发送增量的BGP路由更新或触发式更新。
- BGP可跨多跳路由建立BGP。
BGP可携带多个路径属性,根据属性选择控制路径。OSPF、ISIS只能由Cost控制路径选择。
对等关系
#类型
- IBGP
同AS(邻接关系):一般使用loopback接口作为更新源接口。 - EBGP
一般使用直连物理接口作为更新源接口。
#过程
#open报文
My Autonomous System:自身AS号
Hold Time:用于协商后续keeplive报文发送时间
BGP Identifier:自身Router ID
#报文类型
- open
- Update
- Notification——报错,中止对等体
- keeplive
- Route-refresh——刷新路由
五个报文都拥有相同的报文头
BGP状态机
2、4~6若Error回到ldle状态。
display bgp peer 查看对等体表(部分)
display bgp routing-table 查看BGP路由表
display bgp routing-table ipv4-address {mask|mask-length} 查看某条路由更加详细的信息
From : 10.0.2.2 标明路由来源
Original nexthop : ~下一跳
AS-path Nil : ~路径属性、是否被优选
BGP路由的生成
BGP自身不会发现并计算产生路由,而是将IGP中路由表的路由注入。
注入方式:
- Network
- import-route
BGP与IGP都可进行路由聚合。
- network
将路由逐条宣告进BGP;
network进来的路由,BGP路由表中Origin属性为i 。 - import方式
将其他协议的路由引入BGP(可批量);
import进来的路由,BGP路由表中Origin属性为“ ?”(Incomplete)
eg.
bgp 200 network 10.1.0.0 24
bgp 200 import-route ospf
#路由聚合
eg.
bgp 200
aggregate 10.1.0.0 22 detail-suppressed
(aggregate:聚合;detail-suppressed:表示通告为聚合后的路由)
BGP通告原则
- 只发布最优且有效(即下一跳地址可达)路由。
*:代表有效
>:代表最优 - 从EBGP对等体获取的路由会发送给所有对等体。
- 从IBGP获取的BGP路由不再发送给其他IBGP对等体。(IBGP水平分割,防环路)
但会产生新的问题,部分路由信息无法传送。 - 当一台路由器从自己的IBGP对等体学习到一条BGP路由时,它不能使用该条路由(因为没有传输路径)或把这条路由通告给自己的EGP(存疑)对等体,除非它又从IGP协议(已生成传输路径)学习到这条路由。这条规则也称为BGP同步原则。
BGP路径属性(常用)
#公认必遵
公认-必须识别;必遵-必须包含在每个Update消息中。
Origin、AS_Path、Next_hop
#公认任意
可能包含在某些Update中
Local_Preference、Atomic_aggregate
#可选过度
可选-不需要都被BGP路由器识别。
BGP不识别此类属性,依然会接受该类属性并通告给其他对等体。
Aggregator、Community
#可选非过渡
BGP设备不识别此类属性会忽略该属性,不会通告给其他对等体。
AS_Path
到达目的地经过AS号列表
AS_Path越短越好,最优。
作用:确保EBGP传输无环=>存在自身AS号,不接收该路由。用于路由优选。
- AS_Path常见类型
-
AS_SEQENCE
有序,新AS从左插入(右侧追加),AS_Path默认类型。 -
AS_SET
无序,当路由聚合时AS信息会丢弃,采用该类型保留AS。 -
修改AS_Path:使用Route-Policy修改(三种方式)
- additive
AS_Path:100 -> apply as-path 300 additive -> AS_Path:300 100
原有左侧追加 - overwrite
AS_Path: 100 200 300 => apply as-path 400 overwrite -> AS_Path: 400
替换 - none overwrite
AS_Path: 100 200 300 -> apply as-path none overwrite -> AS_Path:
清空
- additive
-
Origin(路由来源)
三种类型:
- IGP i
- EGP e 通过EGP学到
- Incomplete ? 引入学习到的
优先级:IGP>EGP>InComplete
Next_Hop
缺省操作:
- 路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_Hop设置为自己的TCP连接源地址(自己的更新源地址)。(就是它自己接口的IP地址)
- 路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_Hop属性不变。
- 如果路由器收到某条BGP路由,该路由的Next_Hop属性值与(将发送的对象)EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变,并传递给该对等体。
- 当路由器将本地始发路由发布给IBGP对等体时,Next_Hop为自己的更新源地址。
修改Next_Hop属性
\2 中Next_Hop不变可能导致R3到不了R1,可更改Next_Hop解决
Local_Preference
本地优先级属性(路由表中的LocPrf)
默认100,值越大,优先级越高。
该属性只能传递给IBGP,不能传递给EBGP对等体。
可在AS边界路由器上使用import方向的第____修改值_。
bgp default local-preference修改值。
Community(团体属性)
类路由标记,用于简化路由策略的执行。
#公认Community
- Internet 0
收到此属路由,可向任何BGP对等体发送该路由。
默认情况下,所有路由都属于Internet团体。 - No_Advertise 4294967042
收此属路由,将不向任何BGP对等体发送该路由。 - No_Export 4294967041
收此属路,将不向AS外发送该路由。 - No_Export_Subconfed 4294967043
收此属路,将不向AS外发送该路由,也不向AS内其他子AS发布此路由。