OSPF,BGP和ICMP

在控制平面我们关注的是,路由器转发报文的路径是怎么样的。也就是如何在路由器中配置转发表。配置转发表有一下两种方式:

  • 每台路由器控制:也是是传统的路由选择方式,每台路由器自己计算转发表。
  • 逻辑集中式控制:就是通过SDNSDN的方式进行路由选择,由SDNSDN计算并配置转发表。

这里我们只涉及传统的路由控制方法,不涉及SDNSDN。下面我们先讲两种传统的路由选择算法,然后再讲在因特网路由选择协议**OSPFOSPFBGPBGP**。

1. 路由选择算法

根据执行算法需不需要路由器所在网络中的所有的链路信息,可以将算法分为集中式和分散式两类:

  • 集中式路由选择算法:其中一个常用算法是链路状态算法。也是就在数据结构中的DijkstraDijkstra算法。
  • 分散式路由选择算法:常用的算法是距离向量算法。从数据结构中BellmanFordBellman-Ford算法变形而来。

这两个算法在数据结构哪里学过,比较容易理解。

2. 因特网路由选择协议OSFPOSFPBGPBGP

因为在全球有很多路由器,不可能把全部的路由器一起的运行路由选择算法,这样很浪费时间。同时每一个ISPISP通常希望按照自己的想法配置路由器,如选择ISPISP内部的路由选择算法,或对外部隐藏内部的路由器组成。

所以通过ISPISP我们可以把全球的网络划分为多个自治系统(AS),每一个AS内部统一运行自己的路由选择协议。通常一个ISPISP内部的路由器和链路构成一个AS。不过有些比较大的ISPISP将它的内部分成多个互联AS。每一个AS有一个唯一的AS号(ASN),ASN由ICANNICANN区域注册机构所分配。

在一个AS的内部,路由器彼此拥有对方的信息,运行自治系统内部路由选择协议。而在AS之间,运行自治系统间路由选择协议。下面分别介绍这两种协议。

2.1 开放最短路优先(OSFPOSFP)

OSFPOSFP是一种链路状态协议,使用链路状态和DijkstraDijkstra最低开销路径算法。在使用OSFPOSFP的时候,路由器使用OSFPOSFP报文向AS内部的广播路由选择信息。每当链路发生变化,路由器就会广播链路状态信息。即使链路状态不发生变化,路由器也要周期性的广播链路状态信息,这样可以使链路状态算法具有更好的健壮性。OSFPOSFP报文直接由IPIP承载,对OSFPOSFP其上层协议的值为89。

OSFPOSFP的优点有一下几个方面:

  • 安全:在一般情况下,路由器间的OSFPOSFP报文是未被鉴别的并能被伪造。不过我们可以配置两种鉴别方式:简单鉴别和MD5。使用MD5的比较安全。
  • 多条相同的开销路径:当到达目的地的多条路径有相同开销时,OSFPOSFP允许使用多条路径。
  • 对单播和多播路由选择的综合支持
  • 支持在单个AS中的层次结构:可以在一个AS中,配置多个子AS,每个子AS通过边界路(子AS系统与主AS系统相连的路由器)互相联系。

2.2 ISPISP之间的路由选择:BGPBGP

在AS内,我们使用的是OSFPOSFP路由选择协议。在AS之间,我们使用BGPBGP路由选择。

要运行BGPBGP,要经过两个阶段:

  • BGPBGP通告路由选择信息
  • 执行路由选择算法

其实每个路由选择算法都需要经过个两个阶段。下面依次介绍这两个阶段

2.2.1 BGPBGP通告路由选择信息

BGPBGP中,路由器通告的不是目的地址,而是一个前缀,前缀是一个子网或子网集合。所以在路由器中具有(x,I)(x,I)的表项,其中xx是一个前缀(例如156.235.123/24),II是该路由器的接口之一。

BGPBGP在通过前缀时,会在里面包含一些**BGPBGP属性**,比较重要的有两个ASPATHAS-PATHNEXTHOPNEXT-HOP

  • ASPATHAS-PATH:要到达前缀xx,经过的AS路径,也可以用来防止环路。
  • NEXTHOPNEXT-HOP:在BGPBGP中路由器分为两种,能与外部的AS的路由器相连的叫做网关路由器,只与内部路由器相连的叫做内部路由器NEXTHOPNEXT-HOP就是要到达前缀xx要经过的第一个外部AS网关路由器的IPIP地址

举个例子:

如图,要将AS3的前缀xx通告给AS1和AS2,总的来看,就是AS3通告AS2,然后AS2通告AS1。

上图AS2中知到的路由情况为:

ASPATHAS-PATHAS3 xNEXTHOPNEXT-HOP:路由器3a最上面接口IPIP地址。

AS1知到的路由情况为:

ASPATHAS-PATHAS2 AS3 xNEXTHOPNEXT-HOP:路由器2a最左面接口IPIP地址。

BGPBGP中每对路由器通过使用179端口的半永久TCPTCP连接交换路由选择信息,每条直接相连以及所有通过该连接发送的BGPBGP报文,称为BGPBGP连接。跨越两个AS的BGPBGP连接称为外部BGPBGP,在AS之内的叫做内部BGPBGP。注意:内部BGPBGP并不总是与物理链路相对应。下图是上面那张图的对应的BGPBGP连接。

那么你现在可能有疑问,ASPATHAS-PATH是在什么地方被添加的呢?

答:在网关路由器添加,也就是在外部BGPBGP添加。例如AS2想AS1通告时,ASPATHAS-PATH在路由器2a处添加上AS2

2.2.2 BGPBGP的路由选择

有两种比较常用的BGPBGP路由选择算法:一是烫手山芋路由选择算法(书上的是热土豆路由选择,是直接从英文翻译过来的,不过符合中文俗语翻译为烫手山芋应该更好),二是比较综合的路由选择算法,下面分别描述。

1. 烫手山芋路由选择

当一个节点要发送报文时,他选择的路径是从他自己到网关路由的最短的路线。步骤如下:

  • 从AS间协议学到经多个网关可达子网xx
  • 使用来自AS内部协议的路由选择信息,以决定到达每个网关的最低开销路径的开销。
  • 选择具有最小最低开销的网关。
  • 从转发表确定最低开销网关的接口II,在转发表中加入表项(x,I)(x, I)

2. 路由选择算法

在实际情况中,我们使用的路由选择算法选用了好几个特征,通过特征的先后顺序来选择路径。

  1. 路由被指派一个本地偏好值作为其属性之一(除了ASPATHAS-PATHNEXTHOPNEXT-HOP)。具有最好本地偏好值的路由将被选择。
  2. 当本地偏好相同时,选择具有最短ASPATHAS-PATH的路由。
  3. 如果上述的都相同,则使用烫手山芋路由选择,即选择具有靠近的NEXTHOPNEXT-HOP路由器的路由。
  4. 如有仍然有多条路由,该路由器使用BGPBGP标识符来选择路由。

2.2.3 IP任播

使用BGPBGP可以自然地支持IPIP任播。当某台BGPBGP路由器收到该IPIP地址的多个路由通告,他将这些通告处理为对相同物理地址提供的不同路径(实际上,可以处于不同的物理地址)。举个例子,假设城市A和B有两台服务器有相同的IPIP地址,于是我的电脑收到了这两个服务器的BGPBGP通告,但是我的电脑并不知到这两个通告来字不同的物理地址。IPIP任播被DNSDNS系统广泛用于将DNSDNS请求指向最近的根DNSDNS服务器。根DNSDNS服务器有13个IPIP地址,但是对应于这些地址,一个地址有多个DNSDNS服务器。

3. ICMPICMP:因特网控制报文协议

ICMPICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMPICMP报文首次生成的IPIP数据报的首部和前8个字节(使发送方可以确定引发该报文差错的数据报)。

一般来说:ICMPICMP有两种格式:询问报文和差错报告报文。

  • 询问报文:如下图使用Ping发送请求。包含类型,编码,检验和,标识符,序号和数据部分。
  • 差错报告报文:如下图,这是使用TracerouteTraceroute程序发送的ICMPICMP,当TTLTTL超时时,返回的ICMPICMP差错报告报文。里面包含了类型,编码,检验和,IPIP首部和原来ICMPICMP报文的前8个字节。

通过类型和编码的不同组合,有许多不同种类的ICMPICMP报文,如下图

更加具体的内容可见维基百科

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章