文章目录
AS
- 属于同一个组织管理下的网络集合称为自制系统
- 一个自制系统往往具有相同的路由管理规范和策略
- AS通过不同的AS号进行区分,AS号范围原本范围是0-65535,后来进行扩展0-232
- 中国电信163 AS号:4134
- 中国电信CN2 AS号:4809
- 中国网通AS 号:9929
IGP
- 内部网关协议
- 执行拓扑发现
- 当网络发生变化的时候,可以快速的更新路由
- 尽力完成快速收敛
- 网络发生变化,到全部设备的路由表都稳定的时间,称为收敛时间
- IGP协议的收敛速度是路由协议优化的一个衡量标准
- 需要周期性的更新来确保路由选择信息的精确性
- 受同一个管理机构的控制
- 采取了共同的路由选择策略
- 提供了优先的策略控制能力
- 控制路由的唯一手段就是度量值
EGP
- 外部网关协议 主要是为了在AS之间传递路由
- 早期的时候有协议就叫EGP,后来被淘汰,被BGP替代
- EGP的路由设备可能各自属于不同的自制系统
一、BGP
-
Border Gateway Protocol 边界网关路由协议(距离矢量)
-
主要作用是在AS之间传递路由信息
-
目前BGP有4个版本:V1、V2、V4、V4+(即MBGP)
-
为什么使用BGP
- 大量路由需要承载,IGP只能容纳千条,而BGP可以容纳上万
- 支撑MPLS/VPN的应用,传递客户VPN路由。
- 策略能力强,可以很好的实现路由决策与数据控制。
-
BGP使用TCP为传输层协议,TCP端口号为179
-
BGP路由器之间建立TCP连接,这些路由器称为BGP对等体,也叫BGP邻居:EBGP,IBGP
-
对等体之间交换整个BGP路由表
-
BGP路由器只发送增量更新或者触发更新(不会周期更新)
-
具有丰富的路径属性
-
BGP通告成千上万的路由,可采用TCP滑动窗口的机制,停止并等待确认前,可以发送65576个字节
-
比如各个运营商将自己内部的服务地址通过BGP传递到全球,这样不同的运营商都可以访问。
-
一般来说各个AS不会将所有的地址都上报给BGP
拓扑
IP地址配置
R1(config)#int lo0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#int e0/0
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
==============================
R2(config)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#int e0/0
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 192.168.23.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/2
R2(config-if)#ip add 192.168.24.2 255.255.255.0
R2(config-if)#no sh
==========================
R3(config)#int lo0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#int e0/0
R3(config-if)#ip add 192.168.23.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int e0/1
R3(config-if)#ip add 192.168.35.3 255.255.255.0
R3(config-if)#no sh
==============================
R4(config)#int lo0
R4(config-if)#ip add 4.4.4.4 255.255.255.0
R4(config-if)#int e0/0
R4(config-if)#ip add 192.168.24.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#int e0/1
R4(config-if)#ip add 192.168.45.4 255.255.255.0
R4(config-if)#no sh
=============================
R5(config)#int lo0
R5(config-if)#ip add 5.5.5.5 255.255.255.0
R5(config-if)#int e0/0
R5(config-if)#ip add 192.168.35.5 255.255.255.0
R5(config-if)#no sh
R5(config-if)#int e0/1
R5(config-if)#ip add 192.168.45.5 255.255.255.0
R5(config-if)#no sh
R5(config-if)#int e0/2
R5(config-if)#ip add 192.168.56.5 255.255.255.0
R5(config-if)#no sh
===========================
R6(config)#int lo0
R6(config-if)#ip add 6.6.6.6 255.255.255.0
R6(config-if)#int e0/0
R6(config-if)#ip add 192.168.56.6 255.255.255.0
R6(config-if)#no sh
AS200中的IGP(OSPF)
这边要注意,在R2和R5的对其他AS的接口,不应启用路由协议,不然就会导致泄漏路由。
R2(config)#int range e0/1-2,lo0
R2(config-if-range)#ip ospf 1 area 0
===============================
R3(config-if)#int range e0/0-1,lo0
R3(config-if-range)#ip ospf 1 area 0
================================
R4(config-if)#int range e0/0-1,lo0
R4(config-if-range)#ip ospf 1 area 0
==================================
R5(config)#int range e0/0-1,lo0
R5(config-if-range)#ip ospf 1 area 0
配置AS之间的BGP协议
首先建立R1和R2的BGP邻居
R1(config)#router bgp 100
R1(config-router)#neighbor 192.168.12.2 remote-as 200
# BGP无法自己发现邻居,要自己去指定邻居关系,因为BGP就不是拿来做拓扑发现作用的,是用来传递现有的路由
================================
R2(config)#router bgp 200
R2(config-router)#neighbor 192.168.12.1 remote-as 100
查看邻居关系
R1#sh ip bgp summary
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.12.2 4 200 4 4 1 0 0 00:00:09 0
# 一定要确认Up/Down下面有时间,因为BGP summary中会显示所有被指定的邻居,即使从来没建立过
# 所以邻居条目即使有,后面写的never也是无效
建立R5和R6的邻居
R5(config)#router bgp 200
R5(config-router)#neighbor 192.168.56.6 remote 300
=======================
R6(config)#router bgp 300
R6(config-router)#neighbor 192.168.56.5 remote 300
# 这边如果AS号写错了,比如我写成了300
*Apr 5 02:32:30.617: %BGP-3-NOTIFICATION: sent to neighbor 192.168.56.5 passive 2/2 (peer in wrong AS) 2 bytes 00C8
# 如果出现了peer in wrong AS,就说明你配置错误的AS号
查看邻居关系
R6#show ip bgp summary
BGP router identifier 6.6.6.6, local AS number 300
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.56.5 4 200 5 5 1 0 0 00:01:28 0
然而在AS之间建立连接,肯定是需要链路的冗余,所以直接指定对方的物理接口地址作为邻居也是不稳定的。
建议BGP所有的邻居关系都最好使用环回接口
AS之间不能启动IGP协议,但是可以配置静态路由,可以使用静态路由保障双方环回接口可达性。
R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.12.2
=======================
R2(config)#ip route 1.1.1.0 255.255.255.0 192.168.12.1
检查连通性
R1#ping 2.2.2.2 so 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
两边都设置邻居,并且设置更新源
R1(config)#router bgp 100
R1(config-router)#nei 2.2.2.2 remote 200
R1(config-router)#neighbor 2.2.2.2 update-source Loopback0
=====================
R2(config)#router bgp 200
R2(config-router)#nei 1.1.1.1 remote 100
R2(config-router)#neighbor 1.1.1.1 update-source Loopback0
发现无法建立邻居
R1#sh ip bgp sum
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2.2.2.2 4 200 0 0 1 0 0 never Idle
我们尝试抓取EBGP邻居之间数据包
我们发现EBGP邻居默认发出的数据包TTL是1,也就是如果R1发送EBGP邻居消息给R2,根本无法被R2的lo0收到。
如果是EBGP邻居使用环回接口,或者跨网段建立邻居关系,需要设置EBGP多跳。
R1(config)#router bgp 100
R1(config-router)