关于BGP协议的原理和相关信息,参考下面的链接
https://blog.csdn.net/keith6785753/article/details/107088632 https://blog.csdn.net/qq_39689711/article/details/102979864
BGP是一个外部网关协议,实现在两个自治系统(Autonomous System)之间传递路由信息,BGP着重于控制路由传播与选择最优路由的协议,它是基于矢量路径算法的动态路由协议。
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命令配置
自治系统(AS)是由技术管理机构管理、使用统一选路策略的一些路由器的集合。AS间传递信息时会携带AS编号,如AS65000与AS65001两个编号分别代表两个不同的AS组合。
AS编号有公网与私网之分,公网编号由国际组织管理分配,与IP类似。
公网编号范围:1~64511私网编号范围:64512-65535注:公网上AS与AS之间传播消息,只能使用公网编号,私网编号可以在不同AS内随意使用,不同运营商都可以用相同编号,但不可发布在公网。
AS65000自治系统的边缘路由器 与AS65001边缘路由器要同时运行两个进程。
AS65000允许OSPF与内部路由器进行路由学习,也同时与AS65001交互,分别运行OSPF与BGP,从BGP学习到的路由信息,要传递到整个AS的路由器,那么便需要把BGP的路由信息导入到 OSPF进程里面,OSPF进程就会在里面进行通告,其实这个边缘路由器起到的作用就是:引入外部路由,同理,AS65001的边界路由器工作原理也是如此。
如图:AS1、AS2、AS3分别代表移动联通电信三个运营商,内部分别有三台HTTP服务器,当服务器需要被其他用户访问时。
通过在RTA、RTB与RTC上分别配置ip route static命令,配置去往3个路由器的静态路由条目,在AS1中的RTC上,把静态路由导入到内部OSPF进程中,AS1的路由器则就可以学习到这RTA与RTB的路由。
缺点:静态路由配置需手动配置,假若AS2内有若干台服务器,那配置静态路由的条目也需要若干条。
OSPF可以把路由引入 ,把3.3.3.3导入OSPF进程内, RTA与RTC路由器之间运行OSPF,会带来一个问题。
缺点:A与C分属不同的运营商,它们通过OSPF建立连接,A将C的整个路由表学习到,等同于获得了C的网络拓扑,内部路由器数量、网络规模大小,在运营商(公司)之间,这是不被允许的,属于商业机密,所以AS之间不允许使用OSPF来连接。
AS之间通过BGP协议来精确控制学习路由,所谓精确路由传递,即AS3内的Http服务器,可以允许AS2内的用户访问,却不被AS1内用户访问,这就是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-refreshBGP报文有五种类型:
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进行确认。
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]这里如果填错了,可以使用undo peer 40.0.0.1命令删除。
在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