目录
一、动态路由协议划分
BGP 区分号 AS 1-65535 64512-65535 私有AS 2^16 AS号不足
(1)BGP的建邻
实验操作:(以下操作均以这个为基础)
(2)BGP邻居状态以及包
(3)、BGP路由生成:
1.network
2.import
(4)、BGP路由学习
(5)、BGP的路由更新
(6)、BGP的过滤
使用前缀列表来实现过滤
2.使用route-policy来实现过滤
BGP属性
公认必遵:BGP的Update消息中必须包含的属性。
公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性。
可选过渡:BGP不能识别该属性,但可以接收该属性并将其发布给它的邻居的属性。
可选非过渡:BGP可以忽略包含该属性的消息并且不向它的邻居发布。
一、动态路由协议划分
算法: 距离矢量型 --- RIP EIGRP(收敛最快), BGP(传输路径信息),传输路由表。
链路状态型 --- OSPF ISIS 传输链路状态信息。
路径矢量型 --- BGP 传递和控制路由。
范围 : IGP内部网关协议 ---是在一个自治网络内网关 ( 主机 和 路由器 )间交换 路由 信息的 协议 。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。(AS 内部使用的协议)
IGP 协议 包括RIP、OSPF、IS-IS、IGRP、EIGRP。
EGP 边界网关协议 (AS 外部使用的协议)
EGP协议包括EGP BGP
外部网关协议(EGP)为两个相邻的位于各自域边界上的路由器提供一种交换消息和信息的方法。BGP是常用的外部网关协议,是不同自治系统的路由器之间交换路由信息的协议。
BGP 区分号 AS 1-65535 64512-65535 私有AS 2^16 AS号不足
特点:
- 可以跨跳建立邻居。
- 强调路由传递控制的一种协议,控制:路由学习选择性,选路的控制。
- 手动建立邻居。
- BGP有多种路由属性。
(1)BGP的建邻
BGP是通过单播使用TCP协议建邻(TCP端到端), 端口号 :179
邻居类型:
IBGP邻居 --- AS内部建立的BGP邻居,邻居路由器的AS号是一致的。
EBGP邻居 --- AS之间建立BGP邻居,邻居路由器的AS号不相同。
注意: 上图中如果不写上面那条命令,则默认用10.1.12.2做源IP,就会与对方申邻地址不一致,建邻不成功。(建邻需注意源的问题)
一般而言BGP的EBGP建邻会使用直连建立,IBGP建邻会使用回环建立。如果我们用回环建立EBGP邻居需要修改建邻跳数(跳数变大),BGP的跳数一般为1。
实验操作:(以下操作均以这个为基础)
bgp 200
router-id 2.2.2.2
peer 10.1.24.2 as-number 300
peer 10.4.4.4 as-number 300
peer 10.4.4.4 ebgp-max-hop 2 //修改跳数(跳数只要大于1就行,不一定必须是2 ),不加数值默认是255 peer 10.4.4.4 connect-interface LoopBack0
若,没有自动弹出建邻成功的信息,则需要修改下一跳的跳数,因为BGP有跳数约束。如下:
此时,就会自动弹出建邻信息。
查看建邻信息:
bgp 100
router-id 1.1.1.1
peer 10.1.13.2 as-number 300
peer 10.1.13.2 password simple 123 //BGP的认证
断开邻居关系,操作如下:
(2)BGP邻居状态以及包
BGP没有周期更新,只有触发更新,update包可以更新路由也可以撤销路由,BGP更新速度非常慢。
BGP通过报文的交互完成邻居建立、路由更新等操作,共有Open、Update、Notification、Keepalive和Route-refresh等5种报文类型。
1,Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
2,Update报文:用于在BGP邻居之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
一条Update报文可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。
一条Update报文可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由。
一条Update报文可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。
3,Notification报文:当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断。
4,Keepalive报文:BGP路由器会周期性的向邻居发出Keepalive报文,用来保持连接的有效性。
5,Route-refresh报文:Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。
BGP路由器报文交互过程:
Idle状态是BGP初始状态。在Idle状态下,BGP路由器拒绝邻居发送的连接请求。只有在收到本设备的Start事件后(设备开启BGP),BGP路由器才开始尝试与其邻居进行TCP连接,并转至Connect状态。
在Connect状态下,BGP路由器启动连接重传定时器(Connect Retry),等待TCP完成连接。
如果TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP路由器转至Active状态。
如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态。
在Active状态下,BGP路由器总是在试图建立TCP连接。
如果TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
如果TCP连接失败,那么BGP路由器停留在Active状态。
如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态。
在OpenSent状态下,BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
如果收到的Open报文正确,那么BGP路由器发送Keepalive报文,并转至OpenConfirm状态。
如果发现收到的Open报文有错误,那么BGP路由器发送Notification报文给邻居,并转至Idle状态。
在OpenConfirm状态下,BGP路由器等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
在Established状态下,BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文。
在BGP中,建邻和宣告分开来做。
建邻:
R2
R3:
并添加R4
查看邻居关系:
此时,并没有宣告,如下:
(3)、BGP路由生成:
network
Network命令是逐条将IP路由表中已经存在的路由引入到BGP路由表中。
掩码宣告,必须和路由表中路由掩码对应,否则宣告不进去。只能一条一条宣告。
2.import
Import命令是根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时
import命令还可以引入直连和静态路由。
引入操作:
(4)、BGP路由学习
- 仅将自己最优的路由发布给邻居(图标为:*> 为最优路由)
- 通过EBGP获得的最优路由发布给所有BGP邻居
- IBGP之间不能中转路由(就是IBGP必须传给它的IBGP邻居)----原因为了防环是一种水平分割的设置--因为IBGP之间没有设置防环计算。 EGBP没有防环设置。
- BGP与IGP同步 ---BGP会查看自身路由有没有被重发布到IGP中,如果有就是同步,如果没有就是不同步(不同步的路由在BGP中不优)
路由黑洞问题
- BGP全互联---在黑洞路由器上配置BGP并且与其他BGP路由器建立邻居
- 重发布---把BGP路由引入IBGP---BGP与IGP同步
- mpls做隧道
- 5.IBGP之间传递路由时路由的下一跳不变 。 peer 10.4.4.4 next-hop-local //解决下一跳不可达问题 6.EBGP之间传递路由时路由的下一跳会修改为自己的更新地址(建邻地址)。
(5)、BGP的路由更新
本地路由(BGP-RIB)---->过滤---->出向BGP-RIB---updata-->邻居的入向BGP-RIB-->过滤--->邻居的本地BGP-RIB
(6)、BGP的过滤
刷表:
使用前缀列表来实现过滤
bgp 100
router-id 1.1.1.1
peer 10.1.13.2 as-number 300
#
ipv4-family unicast undo synchronization
network 30.1.1.1 255.255.255.255
network 100.1.1.1 255.255.255.255
network 100.2.2.2 255.255.255.255
network 100.3.3.3 255.255.255.255
peer 10.1.13.2 enable
peer 10.1.13.2 ip-prefix 3 export
#
ip ip-prefix 3 index 10 deny 100.3.3.3 32
ip ip-prefix 3 index 20 permit 0.0.0.0 0 less-equal 32
2.使用route-policy来实现过滤
bgp 300
router-id 4.4.4.4
peer 10.1.24.1 as-number 200
peer 10.3.3.3 as-number 300
peer 10.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast undo synchronization
network 20.4.4.4 255.255.255.255
import-route direct route-policy direct peer 10.1.24.1 enable
peer 10.1.24.1 route-policy 2 export
peer 10.3.3.3 enable
peer 10.3.3.3 next-hop-local
route-policy 2 deny node 10
if-match ip-prefix 3
#
route-policy 2 permit node 20
#
ip ip-prefix 3 index 10 permit 100.2.2.2 32
BGP属性
对于BGP来说,BGP路径属性被分为四大类:公认(必遵,任意),可选(过度,非过渡)
公认属性:所有BGP路由器都必须识别并支持的属性。
公认必遵:BGP的Update消息中必须包含的属性。
公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性。
可选属性:不要求所有的BGP路由器都能够识别的属性。
可选过渡:BGP不能识别该属性,但可以接收该属性并将其发布给它的邻居的属性。
可选非过渡:BGP可以忽略包含该属性的消息并且不向它的邻居发布。
Origin属性是决定最优路径的一个因素,用于标明路由的起源。
Origin的3种属性:
i --- 表明BGP路由通过network命令注入;
e --- 表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e;
? --- 即Incomplete表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
3种Origin属性的优先级为:i>e>Incomplete(?)。