TCP-IP详解卷1:协议读书笔记_10

动态选路协议

静态选路:在配置接口时,以默认方式生成路由表项,并通过route命令的方式可以增加表项,或者通过ICMP重定向生成表项。
在网络很少,且与其他网络只有单个连接点且没有多余路由时,采用这种方法是可行的。
动态选路协议:它用于路由器间通信。我们主要讨论RIP,即选路信息协议,大多数TCP/IP是吸纳都提供这个应用广泛的协议,其次还有OSPF和BGP以及一种名为无分类域间选路的新的选路技术。

动态选路

当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路。每个路由器之间必须采用选路协议进行通信,这样的选路协议有很多种。路由器上有一个进程称为路由守护进程,它运行选路协议,并与相邻的一写路由器进行通信。

动态选路并不改变之前描述的内核在IP层的选路方式。内核搜索路由表,查找主机路由、网络路由以及默认路由的方式并没有改变。仅仅是放置到路由表中的信息改变了---当路由随时间变化时,路由是有路由守护程序动态的增加或删除。

路由守护程序将选路策略加入到系统中看,选择路由并加入到内核的二路由表中。如果守护进程发现前往同一宿主存在多条路由,那么它以某种方式,将选择最佳路由并加入到内核路由表中。如果路由守护程序发现一条链路已经断开,它可以删除受影响的路由或增加一条路由绕开问题。

在像Internet这样的系统中,目前采用了许多不同的选路协议。Internet是以一组自治系统(AS,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。常常将一个公司或大学校园定义为一个自治系统。NSFNET的Internet骨干网形成一个自治系统,这是因为骨干网中的所有路由器都在单个的管理控制之下。
每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。

最常用的IGP是选路信息协议RIP。一种新的IGP是开放最短路径优先OSPF(Open Shortest Path First)协议。

Unix选路守护程序

Unix系统上常常运行名为routed路由守护程序。几乎所有的TCP/IP实现中都提供该程序。改程序只使用RIP进行通信,这是一种用于小型到中型网络中的协议。

另一个程序时gated。IGP和EGP都支持它。下图对routed和两种不同版本的gated所支持的不同选路协议进行了比较。大多数运行路由守护程序的系统都可以运行routed,除非它们需要支持gated所支持的其他协议。


routed 和gated 所支持的选路协议

RIP选路信息协议

报文格式

RIP报文包含在UDP数据包中,如下图。


封装在UDP中的RIP协议

下图为使用IP地址时的RIP报文格式。


使用IP地址时的RIP报文格式

命令字段为1表示请求,2表示应答。还有两个舍弃不用的命令(3和4),两个非正式的命令:5表示轮询,6表示轮询表项。请求表示要求其他系统发送其全部或部分路由表。应答则包含发送者全部或部分路由表。
版本字段通常为1,但是第二版RIP,将此字段设置为2。
紧跟在后面的20字节指定地址系列、IP地址以及相应的度量。
采用这种20字节格式的RIP报文可以通告多达25条路由。上限25是用来保证RIP报文的总长度为20 X 25 + 4 = 504,小于512字节。由于每个报文最多携带25个路由,因此为了发送整个路由表,经常需要多个报文。

正常运行

RIP常用的UDP端口号是520,正常采用RIP协议的routed程序运行结果:
·初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的UDP端口号是520(这是其他路由器的路由守护程序端口号)。
这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为16。这是一种要求另一端完整路由表的特殊请求报文。

·接收到请求:如果路由器接收到上面的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量设置为16。然后发回相应。

·接收到响应:使响应生效,可能会更新路由表、可能会增加新的表项,对已有的表项进行修改,或是将已有表项删除。

·定期选路更新:每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由器可以是广播形式的,或是发送给点对点链路的其他终点的。

·触发更新:每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

每条路由都有与之相关的定时器。如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除。这意味着已经在6个30秒更新时间里没收到通告该路由的路由器的更新了。再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。

度量

RIP所使用的度量是以跳计算的。所有直连接口的跳数为1。

下图中画出的4条虚线是广播RIP报文。路由器R1通过发送广播到N1通告它与N2之间的跳数是1(发送给N1的广播中通告它与N1之间的路由是无用的)。同时也通过发送广播给N2通告它与N1之间的跳数为1。同样,R2通告它与N2的度量为1,与N3的度量为1。

路由器和网路示意

如果相邻路由器通告它与其他网络路由的跳数为1,那么我们与那个网络的度量就是2,这是因为为了发送报文到该网络,我们必须经过那个路由器。在我们的例子中,R2到N1的度量是2,与R1到N3的度量一样。
由于每个路由器都发送其路由表给邻站,因此,可以判断在同一个自治系统AS内到每个网络的路由。如果在该AS内从一个路由器到一个网络有多条路由,那么路由器将选择跳数最小的路由,而忽略其他路由。
跳数的最大值是15,这意味着RIP只能用在主机间最大跳数值为15的AS内。度量为16表示到无路由到达该IP地址。

问题

这种方法看起来很简单,但它有一些缺陷。首先,RIP没有子网地的概念。例如,如果标准的B类地址中16bit的主机号不为0,那么RIP无法区分非零部分是一个子网号,或者是一个主机地址。有一些实现中通过接收到的RIP信息,来使用接口的网络掩码,而这有可能出错。

其次,在路由器或链路发生故障后,需要很长的一段时间才能稳定下来。这段时间通常需要几分钟。在这段建立时间里,可能会发生路由环路。在实现RIP时,必须采用很多微妙的措施来防止路由环路的出现,并使其尽快建立。

采用跳数作为路由度量忽略了其他一些应该考虑的因素。同时,度量最大值为15则限制了可以使用RIP的网络的大小。

RIP版本2

RIP-2版本的扩充并不改变协议本身,而是利用下图的结构,额外的传递一些信息。如果RIP忽略了那些必须为0的字段,那么RIP和RIP-2可以互相操作。


RIP-2报文格式

对于RIP-2来说,其版本字段为2。

路由域是一个选路守护进程的标识符,它指出了这个数据报的所有者。在一个Unix实现中,它可以是选路守护进程的进程号。该域允许管理者在单个路由器上运行多个RIP实例,每个实例在一个路由域内运行。

路由标记是为了支持外部网关协议而存在的,它携带者EGP和BGP的自治系统号。

每个表项的子网掩码应用于相应的IP地址上。下一站IP地址指明发往目的IP地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给RIP报文的系统。

RIP-2提供了一种简单的鉴别机制。可以指定RIP报文的前20字节表项地址系列为0xffff,路由标记为2。表项中的其余16字节包含一个明文口令。

OSPF:开放最短路径优先

OSPF是除RIP外的另一个内部网关协议,它克服了RIP的所有限制。

与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议。距离向量的意思是RIP发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接受到邻站的这些距离向量来更新自己的路由表。

在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接受这些链路状态信息,并建立起完整的路由表。

OSPF与RIP(以及其他选路协议)的不同点在于,OSPF直接使用IP。也就是说,它并不使用UDP或TCP。

另外,作为一种链路状态协议而不是距离向量协议,OSPF还有着一些优于RIP的特点。

1.OSPF可以对每个IP服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个IP服务类型。
2.给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个IP服务类型指派一个单独的费用。
3.当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量,我们称之为流量平衡。
4.OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的IP地址分割成多个不同大小的子网。到一个主机的路由是通过全1子网掩码进行通告的。默认路由是以IP地址为0.0.0.0、网络掩码为全0进行通告的。
5.路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络。这样可以节省IP地址。
6.采用了一种简单鉴别机制。可以采用类似于 RIP-2机制(10.5节)的方法指定一个明文口令。
7.OSPF采用多播,而不是广播,以减少不参与OSPF系统负载。

BGP:边界网关协议

BGP是一种不同系统的路由器之间进行通信的外部网关协议。BGP是APPANET所使用的老EGP的取代品。

BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自制系统AS中的所有路径。这些信息足以构造一副自治系统连接图。然后,可以根据连接图删除选路环,指定选路策略。

首先,我们将一个自治系统中的IP数据报分成本地流量和通过流量。在自治系统中,本地流量是起始或终止于该自治系统的流量。也就是说,其信源IP地址或信宿IP地址所指定的主机位于该自治系统中。其他的流量称为通过流量。在Internet中使用BGP的一个目的就是减少通过流量。

可以将自治系统分为以下几种类型:
1)残桩自治系统,它与其他自治系统只有单个连接。该系统只有本地流量。
2)多接口自治系统,它与其他自治系统有多个连接,但拒绝传送通过流量。
3)转送自治系统,它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。

这样,可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用BGP——它们通过运行EGP在自治系统之间交换可到达信息。

BGP允许使用基于策略的选路。由分治系统管理员指定策略,并通过配置文件将策略指定给BGP。指定策略并不是协议的一部分,但指定策略允许BGP实现在存在多个可选路径时选择路径,并控制信息的重发送。选路策略与政治、安全或经济因素有关。

BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。

BGP是一个距离向量协议,但是和RIP不同的是,BGP列举了到每个目的地址的路由。

BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。应用层keepalive报文和TCP的keepalive选项是独立的。

CIDR:无类型域间选路

CIDP的基本观点是采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和成更少的数目。例如:如果单个站点分配16个C类地址,以一种可以用总和的方式来分配这16个地址,这样,所有者16个地址可以参照Internet上的单个路由表表项。同时,如果有8个不同站点是通过一个Internet服务提供商的同一个连接点接入Internet的,
且这8个站点分配的8个不同IP地址可以进行总和,那么,对于这8个站点,在Internet上,只需要单个路由表表项。

要使用这种总和,必须满足一下三种特性:
1.为进行选路要对多个IP进行总和时,这些IP地址必须具有相同的高位地址比特。
2.路由表和选路算法必须扩展成根据32bitIP地址和32bit掩码做出选路决策。
3.必须扩展选路协议使其32bit地址外,还要有32bit掩码。

CIDR同时还使用一种技术,使最佳匹配总是最长的匹配:即在32bit掩码中,它具有最大值。

“无类型”的意思是现在的选路决策是基于整个32bitIP地址的掩码操作,而不管其IP地址是A类、B类或是C类,都没有什么区别。

小结

有两种基本的选路协议,即用于同一自治系统各路由器之间的内部网关协议(IGP)和用于不同自治系统内路由器通信的外部网关协议(EGP)。
最常用的IGP是路由信息协议(RIP),而OSPF是一个正在得到广泛使用的新IGP。一种新近流行的EGP是边界网关协议(BGP)。

第2版RIP是其最近的一个改进版,它支持子网,还有一些其他改进技术。同时也对OSPF、BGP和无类型域间选路(CIDR)进行了描述。CIDR是一种新技术,可以减小Internet路由表的大小。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容