1.1 概述
IPX协议是NovellNetWare网络的网络层协议。它是一个无连接的协议,并不确认包是否转发成功,也不保证包到达目的地的顺序。包转发成功与否和连接控制等功能都必须由位于IPX上层的协议来提供。在IPX中,任何一个IPX包都被认为是一个独立的实体,与其他的IPX包没有任何逻辑上或顺序上的联系。
在网络模型中,IPX协议处于网络层的位置,是上层协议与底层传递信息的唯一通道。IPX在NetWare协议模型中的地位如图1-1所示:
图1-1 IPX在NetWare协议模型中的地位
路由器主要实现包转发、寻径、宣传服务信息等功能,不需要承载上层的SPX、NCP协议。因此在路由器中只需要实现IPX、RIP和SAP协议。此外,由于NetBIOS包要在网间广播,为了防止广播风暴,路由器对NetWare包要做一些限制和特殊处理。下面依次介绍这几种协议。
1.2 IPX协议
IPX的工作方式非常简单:对于上层传来的包,直接转发出去;对于从下层收到的包,IPX从RIP的路径信息表中查找路径,并把包沿着这个路径转发出去。对于无法找到路径的包,IPX会直接把它丢弃,不做任何处理。
1.2.1 IPX地址结构
IPX的地址结构与流行的IP地址结构不一样,它由网络地址和节点地址组成。
网络地址占4个字节,表明站点所在的网络。0地址(0x00000000)表示本地网络,全F地址(0xFFFFFFFF)表示网间广播。在NetWare网络中,一般不允许网间广播(NetBIOS包除外),因此也不允许有全F的地址。
节点地址标志网络中的一个节点,其结构与MAC地址相同,占6个字节,通常表示为用“.”分割的三个两字节数。
因此,IPX地址可以表示为:N.H.H.H,其中N是网络地址,H.H.H是节点地址,例如100.02.03.04,表示网络100中的节点02.03.04。
1.2.2 包转发
为了控制网络间的通讯量,IPX在网间包转发上有一些限制。
IPX包头中有一个传输控制(TC,TransportControl)域,包每经过一个路由器,TC值就加1。当TC值等于16时,路由器将不会转发该包,而是将它直接抛弃,不做任何处理。也就是说,在NetWare网络中,包最多只能通过15个路由器,在16个网段中出现。正是这个机制限制了NetWare网络的规模不可能太大。
为了防止广播风暴,NetWare网络中不允许网间广播。但有些基于NetBIOS的应用必需利用网间广播来实现其功能,因此IPX允许NetBIOS包在网间广播,但对它做了一些限制:
1.NetBIOS包只能传输8个网段,路由器发现TC值大于等于8的NetBIOS包就将它抛弃;
2.同一个NetBIOS包不允许第二次进入同一个网段:路由器转发NetBIOS包时,会将自己的网络号填入NetBIOS包的包头中;下一个路由器收到包后,先检查NetBIOS包头中记录的网络号,若发现有相同的网络号,则将包抛弃。
1.3 RIP协议
路由器的主要功能是在网间转发包。当客户机在网间发送一个包时,它并不知道要到达目的地该经过什么样的路径,它只知道要把此包传到最近的路由器,再由路由器转发出去。因此,路由器必须提供有关那些它可以直接接入或可以发送数据包的网络的路由信息,以便接到一个包时,能找到下一正确站点,把包传递下去。这些路由信息可以静态配置,也可以动态收集。在路由器中,动态路由信息的收集和维护是由RIP协议实现的。
RIP是路由信息协议(Routing InformationProtocol)的简称。路由器通过RIP来创建和维护一个网间路由信息数据库(通常称为路由信息表)。路由器一启动,RIP就不断同外界的RIP交换路由信息。当发现建立了一条新路径,便把此路径的路由信息加入路由信息表中,若一条路径发生了故障,便把此路径的路由信息从路由信息表中删除。从这可以看出,路由信息表对网间的差错和拥挤情况作出反应方面会很灵活。当发生差错和拥挤时,可以动态的修改路由信息表,改换别的路径。
1.3.1 路由信息广播
为保持网间路由信息的动态同步,路由器必须与相邻的路由器交换路由信息,以保证自己的路由表记录了当前正确的网络连接情况。RIP在下列五种特定的情况下在网络上传送它的路由信息:
(1)路由器初始化时:当一个新的路由器被启动时,它会通过RIP广播一个RIP包以便通知网络上其它的路由器它已经可以开始工作了。
(2)路由器请求路由信息时:当接到其它路由器的RIP发出的RIP请求包时,本路由器的RIP要从路由信息表中找出相应的路由信息发出,响应此请求。
(3)周期性地保持当前的路由信息表:每隔60秒,RIP产生RIP广播包向外发出,以保证所有的路由器保持当前的路由信息表。
(4)通知路由器关于路由信息配置的变动情况:当路由器的RIP在它的路由信息表中改变了任何信息是,它广播新的信息以保证所有的路由器已在它们的表中更新了信息。
(5)通知其它路由器关于路由器正在关闭的信息:当一个路由器正在关闭时,它将通过RIP向外广播路由信息,该信息表明所有通过该路由器的路由都已无法接入,从而使其它路由器寻找替代的路由。
虽然广播发生在不同的时间而且大部分包含不同的信息,但它们必须遵循以下两条原则:首先,任何广播都必须是本地广播,因为协议规定RIP包是不允许通过路由器的,这样能减少网络的运输负担。第二,向其它路由器广播时,必须遵循水平分割(Split-Horizon)算法。
1.3.2 Distance Vector路由选择算法
在一个大的互联网上,可能存在多条能到达同一网点的路径。如何从多条路径中找出最佳的路径正是路由选择算法所要解决的。一条最佳路径应具有最小的滴答值和最小的步跳距离,在重要性上,是时间大于距离。经过多年的实践,人们已经找到了许多的路由选择算法,在IP路由器中,是用DistanceVector路由选择算法来选择最佳路径的。
Distance Vector路由选择算法通过以下三条规则来确定最佳路径:
(1)路径具有最小的滴答值。
(2)若多条路径具有相同的滴答值,选择具有最小步跳距离的路径作为最佳路径。
(3)若多条路径具有相同的滴答值和步跳距离,路由器可自由选择其中的一条路径作为最佳路径。
1.3.3 水平分割算法
Distance Vector算法动态实现时,可能会出现这样一种情况:对如下图1-2(a)的网络连接,
图1-2 水平分割示意图
路由器R1把到达网络N1的路由信息广播给路由器R2,这样R2中保存到N1的路由信息,步跳距离为2。R2收到到N1的路由信息后,由于路由信息表发生了改变,所以R2会把此信息向R1广播。对R1,它在向R2发出广播不久,发现到N1的路径出现了故障。当它正要删除此路由信息时,R2的广播到了,R1就会以此路由信息代替以前的路由信息。这样就有了一条经过R2到N1的路径。这样,R1以为通过R2能到达网络N1,R2又以为通过R1能到达网络N1,这样就形成了上图(b)中R1和R2循环寻径的情况。
为了避免类似的情况发生,人们采取了许多的办法,但没有一种能使问题得到根本解决,其中最常用的是水平分割算法。它由以下两条规则构成:
(1)路由器在对特定网点广播时,不能包含先前从此网点接收到的信息。例如,对上图,R2对R1的广播不能包含从R1来的信息,如到网络N1的路由信息。
(2)路由器不能发送有关正在发送的网络的信息。在上图中,也就是路由器R1对网N1的广播不能包含网N1的信息。
水平分割算法能减少路径环的产生,但不能根除,在大的互联网上,还是有可能出现路径环的。
1.3.4 RIP老化(RIP Aging)
如果一台路由器因突发事件(如断电等)而非正常关闭,由于它不能向其他路由器广播“路由器正在关闭”信息,其他路由器无法知道它已经关闭,因此还会一直保存着它的路径,而这些路径事实上已经不存在了。
RIP使用老化(Aging)机制来解决这个问题:路由器为路由信息表的每一条路由信息维护一个定时器,计算与该路径相关的上一个信息被收到后,到现在所经过的时间。当收到信息后,相关入口的定时器清0。若定时器到达3分钟还没有收到信息,路由器便认为通向该网点的该路由不再存在,将它从路由信息表中删除,并马上发送一广播到所有直接相连的网点,通知它们此路由已经不存在了。
1.4 SAP协议
SAP是服务广告协议(Service Advertsing Protocol)的简称。
SAP允许提供服务的节点,诸如文件服务器,打印服务器,NetWare访问服务器,远距控制台服务器等,宣传它们的服务类型和地址。SAP在一个互联网中动态的整理服务信息,或加入,或删除。当服务器启动,它们通过SAP宣传它们的服务;当它们关闭,它们通过SAP指出它们的服务已经中止。
通过SAP,路由器创建和维护着一个网间服务信息数据库,通常称为服务器信息表。它帮助网上的客户明白网中能提供什么样的服务和那些他们可以到达的服务器的网间地址。这是一个很重要的作用,因为一个工作站不知道文件服务器的地址是不能建立同文件服务器的会话的。
一个提供服务的服务器会在与它直接相连的网点上周期性的广播它的服务和地址。这些服务器广播的信息不直接被客户们使用,而是被在网点上的每个路由器里的一个SAP代理所收集,并这个信息存入它的服务器信息表中。因为SAP是动态更新服务器信息的,所以客户总能得到最近的服务器的正确地址。
SAP的各种机制(如服务器信息广播、水平分割、Aging等)与RIP中的相应机制基本一样,在此不再赘述。
小 结
在路由器中,IPX模块由IPX、RIP和SAP组成。IPX负责包的转发;RIP负责建立和维护路由信息表,为包的转发提供路由信息;SAP负责建立和维护服务信息表,在网络上宣传各服务器所提供的服务。
缩略词表
IPX | Internetwork Packet eXchange | 网间包交换协议 |
RIP | Routing Information Protocol | 路由信息协议 |
SAP | Service Advertise Protocol | 服务广告协议 |
GNS Request | Get Nearest Server Request | “获得最近服务器”请求 |
TC | Transport Control | 传输控制 |