IP和BGP,OSPF之间的那些事

  • 知识补充
  • 问题引出
  • 解答


知识补充

在我们深入讨论之前的,我们先来做一点前置知识补充。我们在学习网络层都知道最著名的IP协议,另外OSPF和BGP也是在网络层这一章学习的协议。OSPF是作用于同一个AS内部的路由选择,而BGP是作用于不同的AS之间的路由选择。

问题引出

OSPF和BGP是网络层协议吗?
如果不是的话,为什么要放在网络层这一章节来讲呢?IP协议跟他们又有什么关系呢?

解答

一 首先它们两个都不是网络层的协议,这里关于OSPF我引用书上的语言 ”OSPF报文直接由IP承载“,书中并没有明确的指出OSPF是那一层协议,而这又对应书中的另一句话”不要太纠结于协议应该属于那一层,现实世界就是这么复杂“。不过我们可以推断出OSPF应该属于传输层,毕竟它下层使用IP协议。
而关于BGP书中明确的指出它属于应用层协议,使用TCP。
二 这个问题就说来话长了,首先网络层更细分的话可以拆成数据平面和控制平面,而关于两者的功能简单说就是数据平面致力于解决到达路由器的分组如何从路由器的输入端到路由器的输出端。控制平面则解决宏观上的分组转发问题(比如路径最短问题)。下面我们重点来看OSPF和BGP为什么放在网络层。我们上面说网络层分为两部分,这里OSPF和BGP实际上是放在控制平面来讲的,这两种协议完成的功能可以概况为路由选择。
我们知道网络层实际上就做两件事:转发和路由选择,转发这件事是路由器中的转发表完成的,而转发表的实现就是通过区分IP首部的字段来划分到不同的输出端,比如IP地址以0100开头的需要转发到0号输出端口,0101开头的转发到1号输出端口。。。。。而OSPF和BGP是用来宏观上控制分组的转发的。
所以既然用于控制数据报的转发,所以才会有两个根本不是网络层的协议放在网络层这一章的”怪像“。
下面我们详细的看OSPF和BGP的功能。
OSPF:使得每台路由器都有一个自己AS的完整的网络拓补图,运行时通过Dijkstra算法来选择到达另一端的最短的路径。
BGP:使用TCP允许每个子网向互联网上其他的AS通知他的存在。
我们看看有了OSPF和BGP以后的数据报有多“自由”,我们假设我没有使用WIFI。
我们假设一个报文从我电脑开始传输。
一次成功的传输分两种情况。
第一种是我和同一个AS下的小伙伴通信,这个时候我电脑上发送的报文最后变成bit(物理层),bit到我家里的路由器封装成数据报,因为是同一个AS,所以使用OSPF的Dijkstra
算法将我的数据报转发到目的路由器,然后目的路由器在顺着网线传给我的小伙伴。
第二种是我和小伙伴不在同一个AS下的通信,这个时候不同的AS已经通过BGP协议完成了信息的交换,结果就是两个AS连接到了一起。
这里注意两点
每个路由器都会进行BGP的通信以交换信息。
每个路由器都会运行BGP的路由选择算法来确定合适的路径。
这个时候我电脑上发送的报文最后变成bit(物理层),bit到我家里的路由器封装成数据报,然后路由器
会运行BGP的路由选择算法来确定合适的路径从而到达另外一个AS中的路由器,进而顺着网线传给我的小伙伴。