骨干网与WLAN

BGP概述

动态路由分类

IGP:内部网关协议

  • AS内部使用IGP来计算和发现路由,如OSPF

EGP:外部网关协议

  • AS与AS之间使用BGP来传递和控制路由

AS

AS:自治系统

  • AS:Autonomous System 自治系统,指由一组网络和路由器组成的网络
  • 每个自治系统都有唯一的一个编号,即AS号
  • AS号可以帮助互联网中的路由器找到要到达目的地的IP地址的最短路径
  • AS号由互联网分配机构IANA(互联网分配号码管理局)分配
  • AS号的范围被划分为两类:公共AS号和私有AS号
  • 公共AS号是指由IANA分配的AS号,可用于在全球范围内标识自治系统
  • 私有AS号是指由互联网注册机构(IR)分配的AS号,用于在私有互联网中标识自治系统

2字节AS号范围是0~65535

  • 164511为公有AS,6451265535为私有AS

4字节AS号范围是0~4294967295

  • 4200000000~4294967294为私有AS号

网络规模扩大,路由数量不断增长,IGP已无法管理,AS的概念诞生

AS与AS之间通信需要使用哪种路由协议?

  • 在AS之间使用BGP协议进行路由传递

BGP发展历史

7.1.1

BGP在企业中的应用

7.1.2

场景一:遍布全国大型政企单位之间,或大型数据中心

场景二:运营商骨干网

BGP概述

BGP:Border Gateway Protocol 边界网关协议

  • 作用:实现在AS与AS之间动态交换路由信息
  • 稳定:BGP是基于TCP协议建立的,使用端口号TCP179,非常稳定
  • BGP是公有协议,任何厂商的设备都支持BGP
  • BGP位于OSI的第7层 (应用层)
  • 2006年之后单播IPv4网络使用的版本是BGP-4
  • IPv6使用的版本是MP-BGP

BGP特点

  • 稳定性非常高
  • 传递大量路由
  • 丰富的路由传递策略

BGP基本概念

BGP特征

  • 路由器之间的BGP会话基于TCP连接而建立
  • 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器
  • 两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表
  • BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)
  • BGP能够传递大批量的路由,可在大规模网络中应用

7.1.3

BGP邻居类型

BGP邻居类型

  • EBGP:运行于不同AS之间,默认优先级255
  • IBGP:运行于同一AS内部,默认优先级255

7.1.4

BGP报文

BGP邻居的建立过程主要有5种报文

报文 作用
Open报文 用于建立BGP邻居
Update报文 用于在邻居之间传递路由信息和撤销路由
Keepalive报文 用于维护邻居关系,保持BGP连接,周期性发送,60秒发一次
notification报文 通知报文,用于通知BGP邻居之间的报错信息,用于断开BGP连接
Route-refresh报文 策略更改后,让邻居重新发送路由信息

BGP邻居关系建立

7.1.5

BGP状态机

Peer状态名称 用途
Idle 初始化状态,tcp未连接状态,邻居的状态为idle , 当bgp设备和邻居进行tcp 连接时,会从当前的状态转为connect 状态
Connect 正在进行TCP连接,如果TCP连接建立失败则进入Active状态,反复尝试连接,如果tcp 建立连接成功,bgp 设备会向邻居发送open报文,状态也会转为OpenSent 状态
Active TCP连接没建立成功,反复尝试TCP连接,如果成功,状态依然可以转为opensent 状态,如果重传计时器超时,依然没有收到邻居回应,bgp设备会返回上一个状态,上一个是connect 状态
OpenSent TCP连接已经建立成功,开始发送Open报文,协商邻居的建立,如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,并且回复的报文是正确的,bgp 设备会继续发送keep alive 报文,状态转为 Open Comfirm 状态,如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,但是回复的报文有错误,bgp 设备会向邻居发送notification 报文(用于断开bgp连接状态),断开后会跳转到最初的idle 状态
OpenConfirm 协商成功,自己发送Keepalive报文,等待对方的Keepalive报文,如果收到邻居发来的keep alive 报文,状态会转为established 建立状态,如果收到邻居发来的notification 报文,状态会跳转为 idle 状态
Established 已经收到对方的Keepalive报文,开始使用Update通告路由信息,如果收到邻居发来的错误的update 报文或者keepalive 报文,bgp设备会发送notification 报文,通知邻居断开连接,会回到idle 初始化状态

7.1.6

EBGP配置

EBGP配置

配置EBGP邻居关系

7.1.7

配置命令

配置R1

1
2
3
4
[R1]bgp 100                                //启动BGP进程,指定AS号
[R1-bgp]router-id 1.1.1.1 //配置BGP的router-id
[R1-bgp]peer 192.168.12.2 as-number 200 //指定邻居地址和AS号
[R1-bgp]network 192.168.1.0 24 //注入路由

配置R2

1
2
3
4
[R2]bgp 200                                //启动BGP进程,指定AS号
[R1-bgp]router-id 2.2.2.2 //配置BGP的router-id
[R1-bgp]peer 192.168.12.1 as-number 100 //指定邻居地址和AS号
[R1-bgp]network 192.168.2.0 24 //注入路由

BGP路由的生成

如何产生路由

  • 不同于IGP路由协议,BGP并不会发现并计算产生路由
  • BGP只会将IGP路由表中已存在的路由“搬”到BGP路由表中,称为注入路由
  • BGP将注入的路由通过Update报文“传递”给BGP邻居

BGP注入路由的方式有两种

  • network
  • import-route

BGP注入路由方式

Network

  • Network只会注入IP路由表中已经存在的路由条目
  • Network优势是精准注入,不足是只能逐条注入路由,配置繁琐

import-route

  • import-route可以批量注入路由,可以将其他协议的路由注入BGP路由表
  • 注入直连路由
  • 注入静态路由
  • 注入OSPF路由
  • ……

邻居表和路由表

BGP邻居表

1
2
3
4
5
6
7
8
9
<R1>display bgp peer 

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

192.168.12.2 4 200 45 46 0 00:42:35 Established 1

BGP路由表

1
2
3
4
5
6
7
8
9
10
11
12
<R1>display bgp routing-table 

BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete

Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 192.168.1.0 0.0.0.0 0 0 i
*> 192.168.2.0 192.168.12.2 0 0 200i

IBGP全互联

Next_Hop

BGP路由中的Next_Hop属性设置规则

  • BGP路由器在向EBGP邻居发布路由时,会把该路由的下一跳设置为本地与对端建立的BGP邻居关系的接口地址

  • BGP路由器将本地始发路由发布给IBGP邻居时,会把该路由的下一跳设置为本地与对端建立的BGP邻居关系的接口地址

  • 路由器在收到EBGP邻居发布的路由后,在将路由传递给自己的IBGP邻居时,默认不修改路由的下一跳地址

Next_Hop的缺省操作

使用peer next-hop-local命令可以在设置向IBGP对等体通告路由时,把下一跳设为本地与对端建立BGP邻居关系的接口地址

1
2
3
[R1]bgp 200
[R1-bgp]peer 192.168.12.2 as-number 200
[R1-bgp]peer 192.168.12.2 next-hop-local

IBGP全互联

实现AS100内R4的10.10.4.4 和 AS300内R5的10.10.5.5互通

7.1.8

IBGP配置步骤

配置步骤

  • R4和R1建立EBGP邻居关系
  • AS200内部R1/R2/R3部署OSPF
  • R1/R2/R3建立IBGP全互联
  • R3和R5建立EBGP邻居关系
  • R4和R5中使用network注入路由

配置命令

配置R4

1
2
3
4
5
6
7
8
9
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32

[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32 //注入路由

配置R1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24

[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

[R1]bgp 200 //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 //和R4建立外部邻居
[R1-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local //修改下一跳
[R1-bgp]peer 192.168.12.2 as 200 //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local //修改下一跳

配置R2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24

[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200
[R2-bgp]peer 192.168.23.3 as 200

配置R3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.23.2 as 200 //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 //和R5建立外部邻居

配置R5

1
2
3
4
5
6
7
8
9
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32

[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32 //注入路由