华为路由器:外部网关协议——BGP协议

it2023-02-05  51

关于BGP协议的原理和相关信息,参考下面的链接

https://blog.csdn.net/keith6785753/article/details/107088632 https://blog.csdn.net/qq_39689711/article/details/102979864

一、BGP理论部分

BGP协议

BGP是一个外部网关协议,实现在两个自治系统(Autonomous System)之间传递路由信息,BGP着重于控制路由传播与选择最优路由的协议,它是基于矢量路径算法的动态路由协议。

EGP与IGP区别

EGP(Exterior Gateway Protocol)是外部网关协议,它是动态路由协议的一种,另一种是IGP。常用的EGP协议目前只有BGP,在AS之间都是通过BGP协议传播数据。

IGP(Interior Gateway Protocol)是内部网关协议,工作于AS自治系统内,常见的IGP协议有RIP、OSPF、ISIS,IGP着重于发现路由与计算路由。

注:BGP与OSPF是应用最广泛的两个路由协议,外部网关协议与内部网关协议中的两个网关指的是AS自治系统。

路由来源

BGP与IGP协议与路由来源息息相关,路由器转发报文基于路由表,路由表则涉及了路由来源。 路由来源方式有以下三种:直连路由、静态路由、动态路由。

注:直连路由接口连接链路,接口配置IP,此条路由会被其他路由器学习到、静态路由:使用IP Route Static命令配置

治系统Autonomous System

自治系统(AS)是由技术管理机构管理、使用统一选路策略的一些路由器的集合。AS间传递信息时会携带AS编号,如AS65000与AS65001两个编号分别代表两个不同的AS组合。

AS编号有公网与私网之分,公网编号由国际组织管理分配,与IP类似。

公网编号范围:1~64511私网编号范围:64512-65535

注:公网上AS与AS之间传播消息,只能使用公网编号,私网编号可以在不同AS内随意使用,不同运营商都可以用相同编号,但不可发布在公网。

AS间路由器如何通过BGP传递路由信息?

AS65000自治系统的边缘路由器 与AS65001边缘路由器要同时运行两个进程。

AS65000允许OSPF与内部路由器进行路由学习,也同时与AS65001交互,分别运行OSPF与BGP,从BGP学习到的路由信息,要传递到整个AS的路由器,那么便需要把BGP的路由信息导入到 OSPF进程里面,OSPF进程就会在里面进行通告,其实这个边缘路由器起到的作用就是:引入外部路由,同理,AS65001的边界路由器工作原理也是如此。

为什么用BGP(EGP)?

如图:AS1、AS2、AS3分别代表移动联通电信三个运营商,内部分别有三台HTTP服务器,当服务器需要被其他用户访问时。

静态路由配置

通过在RTA、RTB与RTC上分别配置ip route static命令,配置去往3个路由器的静态路由条目,在AS1中的RTC上,把静态路由导入到内部OSPF进程中,AS1的路由器则就可以学习到这RTA与RTB的路由。

缺点:静态路由配置需手动配置,假若AS2内有若干台服务器,那配置静态路由的条目也需要若干条。

动态路由OSPF协议配置

OSPF可以把路由引入 ,把3.3.3.3导入OSPF进程内, RTA与RTC路由器之间运行OSPF,会带来一个问题。

缺点:A与C分属不同的运营商,它们通过OSPF建立连接,A将C的整个路由表学习到,等同于获得了C的网络拓扑,内部路由器数量、网络规模大小,在运营商(公司)之间,这是不被允许的,属于商业机密,所以AS之间不允许使用OSPF来连接。

动态路由协议BGP配置

AS之间通过BGP协议来精确控制学习路由,所谓精确路由传递,即AS3内的Http服务器,可以允许AS2内的用户访问,却不被AS1内用户访问,这就是BGP的精确控制。

BGP的基本工作机制

BGP有四种工作机制:

建立邻居发布路由传递路由链路维护

BGP工作过程

建立-发布-传递-维护:

邻居建立过程:在路由器上配置BGP,路由器便有了bgp路由表,最初,bgp路由表为空,BGP不会自动学习或发现路由。(如A与B直连,接口上有IP与链路,但是信息不会进入BGP路由表内)路由发布过程:AS1内IP为1.1.1.1的路由,要让其他AS用户网络都能学习到,需要通过命令: [RTA-BGP]Network 1.1.1.1 24 发布到BGP路由表,配置完,BGP内就有了这条路由。BGP路由传递:RTA传递路由,会将路由交给邻居B->C->D,最终每个AS内的路由器都会学习到此路由。RTA传递BGP路由是可控制的,由它决定是否传递给B、C、D某台路由器。链路维护:RTA与RTB之间,属于邻居,需要维护链路,对链路进行周期性检测是否可以用 工作机制对应消息类型建立邻居Open发布路由Network、import传递路由Update链路维护keep-alive、Notific atiol、router-refresh

BGP消息类型?

BGP报文有五种类型:

Open:负责和对等体建立邻居关系。Update:该消息被用来在BGP对等体之间传递增量路由信息。Keep-Alive:该消息在对等体之间周期性地发送,用以维护连接。Notification:当BGP Speaker检测到错误的时候,就该发送该消息给对等体。Route-refresh:用来通知对等体自己支持路由刷新能力。

BGP为什么没有对Update消息的确认呢?Update丢失了怎么办?

Update消息带有路由增量信息,却并没有对Update的确认消息,在OSPF内,有LSR、LSU、LSACK ,ACK就是对LSU的确认。

那bgp为什么没有呢,BGP是应用层协议,它基于TCP,TCP是面向连接的可靠传输协议,TCP内自带消息确认机制,可保证报文不会丢失,所以BGP内不会对Update进行确认。

二、BGP实验部分

1、实验拓扑

2、R3配置计划节点地址

R3是网络的中心,首先必须在R3上面把各节点的地址先加上去,要不然后面的步骤没法进行。

[R3]int s2/0/0 [R3-Serial2/0/0]ip add 10.0.0.2 8 [R3-Serial2/0/0]q [R3]int s2/0/1 [R3-Serial2/0/1]ip add 20.0.0.2 8 [R3-Serial2/0/1]q [R3]int s1/0/0 [R3-Serial1/0/0]ip add 30.0.0.2 8 [R3-Serial1/0/0]q [R3]int s1/0/1 [R3-Serial1/0/1]ip add 40.0.0.2 8 [R3-Serial1/0/1]

3、R1的配置

[R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add [R1-GigabitEthernet0/0/0]ip address 192.168.1.2 24 [R1-GigabitEthernet0/0/0]int s2/0/0 [R1-Serial2/0/0]ip add 10.0.0.1 8 [R1-Serial2/0/0]q [R1]bgp 100 #范围编号 [R1-bgp]router-id 10.0.0.1 #router-id就以端口的IP [R1-bgp]peer 10.0.0.2 as-number 300 #对端的范围编号 [R1-bgp]network 192.168.1.0 #添加两端的网段 [R1-bgp]network 10.0.0.0 #添加两端的网段 [R1-bgp]

4、R2的配置

[R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip add 192.168.2.2 24 [R2-GigabitEthernet0/0/0]int s2/0/0 [R2-Serial2/0/0]ip add 20.0.0.1 8 [R2-Serial2/0/0]q [R2]bgp 200 [R2-bgp]router-id 20.0.0.1 [R2-bgp]peer 20.0.0.2 as-n [R2-bgp]peer 20.0.0.2 as-number 300 [R2-bgp]network 192.168.2.0 [R2-bgp]network 20.0.0.0

5、R3配置bgp

[R3-bgp]router-id 10.0.0.2 [R3-bgp]peer 10.0.0.1 as-number 100 [R3-bgp]peer 20.0.0.1 as-number 200 [R3-bgp]peer 30.0.0.1 as-number 400 [R3-bgp]peer 40.0.0.1 as-number 500 [R3-bgp]

这里如果填错了,可以使用undo peer 40.0.0.1命令删除。

6、R4的配置

[R4]int g0/0/0 [R4-GigabitEthernet0/0/0]ip add 192.168.3.2 24 [R4-GigabitEthernet0/0/0]q [R4]int s2/0/0 [R4-Serial2/0/0]ip add 30.0.0.1 8 [R4-Serial2/0/0]q [R4]bgp 400 [R4-bgp]router-id 30.0.0.1 [R4-bgp]peer 30.0.0.2 as-n [R4-bgp]peer 30.0.0.2 as-number 300 [R4-bgp]network 192.168.3.0 [R4-bgp]network 30.0.0.0 [R4-bgp]

7、R5的配置

[R5]int g0/0/0 [R5-GigabitEthernet0/0/0]ip add 192.168.4.2 24 [R5-GigabitEthernet0/0/0]q [R5]int s2/0/0 [R5-Serial2/0/0]ip add 40.0.0.1 8 [R5-Serial2/0/0]q [R5]bgp 500 [R5-bgp]router-id 40.0.0.1 [R5-bgp]peer 40.0.0.2 as-n [R5-bgp]peer 40.0.0.2 as-number 300 [R5-bgp]network 40.0.0.0 [R5-bgp]network 192.168.4.0 [R5-bgp]

8、验证结果

在PC1 上面分别ping 其他PC

PC>ping 192.168.4.1 Ping 192.168.4.1: 32 data bytes, Press Ctrl_C to break Request timeout! From 192.168.4.1: bytes=32 seq=2 ttl=125 time=15 ms From 192.168.4.1: bytes=32 seq=3 ttl=125 time=16 ms From 192.168.4.1: bytes=32 seq=4 ttl=125 time=31 ms From 192.168.4.1: bytes=32 seq=5 ttl=125 time=31 ms --- 192.168.4.1 ping statistics --- 5 packet(s) transmitted 4 packet(s) received 20.00% packet loss round-trip min/avg/max = 0/23/31 ms PC>ping 192.168.2.1 Ping 192.168.2.1: 32 data bytes, Press Ctrl_C to break Request timeout! From 192.168.2.1: bytes=32 seq=2 ttl=125 time=16 ms From 192.168.2.1: bytes=32 seq=3 ttl=125 time=15 ms --- 192.168.2.1 ping statistics --- 3 packet(s) transmitted 2 packet(s) received 33.33% packet loss round-trip min/avg/max = 0/15/16 ms PC>ping 192.168.3.1 Ping 192.168.3.1: 32 data bytes, Press Ctrl_C to break Request timeout! From 192.168.3.1: bytes=32 seq=2 ttl=125 time=15 ms From 192.168.3.1: bytes=32 seq=3 ttl=125 time=16 ms From 192.168.3.1: bytes=32 seq=4 ttl=125 time=31 ms From 192.168.3.1: bytes=32 seq=5 ttl=125 time=31 ms --- 192.168.3.1 ping statistics --- 5 packet(s) transmitted 4 packet(s) received 20.00% packet loss round-trip min/avg/max = 0/23/31 ms
最新回复(0)