来自主控装置的自动网络映射的制作方法

文档序号:7941322阅读:117来源:国知局
专利名称:来自主控装置的自动网络映射的制作方法
技术领域
本公开一般涉及在开机启动或复位时配置网络。
背景技术
移动领域中所关注点之一在于提供针对芯片-芯片网络的通信标准,例如,使用 高速串行链路。通用协议能够解决由于在网络上存在每个都运行不同软件的多个不同装置 可能引起的互连问题。互连问题包括错误处理、流量控制、路由选择和仲裁。为了实现在如 何在不对软件产生太大影响的情况下把这些装置连接到网络方面的灵活性,可以在开机启 动时自动搜寻和枚举这些装置。

发明内容
根据一个实施例,本发明提供了具有用于与具有初始未知的拓扑结构和多个未知 装置的网络进行连接并通信的一个或多个主机端口的控制装置。控制装置还包括可编程处 理器,被配置成执行启动程序,该启动程序使用设置和获取命令来对网络进行映射。通过使 用一个或多个主机端口搜寻网络上的多个未知装置并且使用一个或多个主机端口对所搜 寻的装置进行枚举使得经过枚举的装置与网络拓扑结构相对应,来对网络进行映射。根据一个实施例,本发明还提供被配置成使用设置和获取命令来与具有初始未知 的拓扑结构和多个未知装置的网络进行连接并通信的控制装置。控制装置包括使用控制装 置的一个或多个主机端口来搜寻网络上的未知装置的装置,以及使用一个或多个主机端口 为每个搜寻到的装置分配不同的网络地址来对搜寻到的装置进行枚举的装置。根据一个实施例,本发明另外提供了使用控制装置执行设置和获取命令以与具有 初始未知的拓扑结构和多个未知装置的网络进行连接并通信的方法。所述方法包括步骤 使用控制装置的一个或多个主机端口来搜寻网络上的未知装置;以及通过使用所述一个或 多个主机端口为每个搜寻到的装置分配不同的网络地址来对搜寻到的装置进行枚举,使得 经过枚举的装置与网络拓扑结构相对应。以上概要并非意在描述本发明的每个实施例或各个实现方式。随后的附图和具体描述更具体地举例说明了各个实施例。


结合附图考虑到各个实施例的以下具体描述,可以更完整地理解本发明,其中图1是根据本发明的可由网络上的主机控制装置映射其拓扑结构的网络的示意 图;图2是根据本发明的连接到交换机并且配置交换机的主机控制装置的示意图;以 及图3是根据本发明映射的网络拓扑结构的示意图。
具体实施例方式尽管本发明可修改成各种变型或替代形式,但是在附图中以示例方式示出了其具 体细节并且将进行具体描述。然而,应当理解,本发明并非限制成所述的特定实施例。相 反,本发明覆盖落入由所附权利要求所限定的本发明的保护范围内的所有变型、等同物和替代。本发明的各个方面都涉及开机启动或复位时搜寻和映射网络的拓扑结构,从主机 控制装置执行对网络的枚举。尽管可以使用读写协议(例如像PCI Express中使用的)执 行自动装置搜寻和枚举,但是通常假定一种特定拓扑结构,其中“根”(从其执行搜寻和枚举 之处)端口具有特定状态并且在开机启动时是已知的(即,硬连接)。在可能具有任意拓 扑结构并且没有具有特定状态的端口的网络中,网络路由器初始不会选择返回到主机的响 应的路由,特别是因为没有配置路由选择表。同时,主机无法知道或者获得到主机的路由器 端口,并且由此无法配置路由选择表。对具有假定的拓扑结构的替代方式是使用专用协议 用于装置枚举和搜寻。然而,研发这种专用协议会花费许多年的协同努力,造成了延迟的实 现。本发明的各种实施例提供了各个方法和实现各个方法的控制装置,其中可以使用配置 命令从主机控制装置执行装置搜寻和枚举以映射初始未知的网络拓扑结构,并且尤其是无 需定义专用协议并且无需假定的拓扑结构。图1示出了包括各种装置(包括交换机和端点)的网络系统100的示例。通常, 控制装置110可以经由片上路由器110R连接到其他装置的片上路由器,诸如路由器120R、 130R和140R,每一个都分别与端点装置120、130和140相关联。反过来,路由器120R可以 连接到端点装置120、122、124和126,路由器130R可以连接到端点装置130和装置132和 134,装置132和134连接到其他装置136,而路由器140R可以连接到第二控制装置140以 及装置142和144。控制装置一般包括处理器和一个或多个通信端口,并且还可以包括存储器装置。 控制装置的示例包括应用引擎、基带处理器等。交换机或路由器是包括多个通信端口的装 置从而把一个装置连接到一个或多个其他装置。交换机通常被集成在具有一个或几个装置 的同一芯片上,当然也可以把它们实现在分立芯片上。在这里所展示的实施例中,为交换机 分配网络地址从而允许它们采用与网络中的任何其他装置相同的方式进行配置。端点装 置是那些包括单个通信端口的装置,例如显示器、媒体引擎、图形加速器、相机、调制器(例 如,GSM、3G、LTE)、连接性装置(例如,WiMax、WLAN、Bluetooth)、存储装置(例如,闪速存储 器、硬盘、光盘)等。为了用于示例目的,网络100可以被看成视频会议系统。在这种情况下,主机控制 装置110经由其片上路由器110R连接到路由器120R,该路由器120R用于媒体引擎120的 片上路由器。媒体引擎120可以执行图像/视频压缩/解压缩、图像/视频增强、用于游戏 的图形引擎功能等。路由器120R起到媒体桥路的作用,并且连接到路由器130R,该路由器 130R用于通信引擎130的片上路由器。路由器130R起到通信桥路的作用。在媒体侧,端 点装置122可以是工作在视频模式的相机,端点装置124可以是邻近控制装置110的显示 器,而端点装置126可以是用于记录视频会议的大容量存储装置。在通信侧,装置132可以 是用于电话会议的蜂窝调制器,装置134可以是无线局域网装置,例如提供用于同时出现 的背景文件同步,而装置136可以是例如使用蓝牙连接的无线耳机。可选地,主机控制装置
5110可以连接到其他控制装置140,在此情况下,其他控制装置140被显示成用于高分辨率 辅助显示装置142的驱动器,并且可选地连接到大容量存储装置144。主机控制装置110包括一个或多个端口,用于连接并且与网络100中的其他装置 进行通信。控制装置110还包括可编程处理器,被配置成执行启动程序,例如存储在本地非 易失性存储器中的启动程序,可以被在系统开机启动或复位时被调用来执行。在执行启动 程序时,处理器使用命令以设置并获取处理器在网络上发现的每个连续装置的属性,从而 搜寻每个装置,分配网络地址并且沿着路线设置交换机路由选择表。在特定实例中,处理器使用启动程序首先初始化/枚举控制装置110。随后,检查 端口之一上的装置。如果处理器发现一个装置,则其初始化/枚举该装置。一些装置起到 交换机的作用,允许单个端口从处理器连接到多个装置。因而,如果检测到交换机,则处理 器检查装置的交换机的每个端口。对任意搜寻到的装置进行枚举并且分别配置交换机的对 应端口以选择传送到那些装置的数据的路径。一旦在端口上检测到所有装置,则处理器可 以使用剩余端口执行类似的初始化/枚举。为了简化起见,这里的许多实施例都假定在配置其他端口的部分之前处理器彻底 配置一个端口(并且由此允许便于使用递归算法),然而,处理器不必使用这样的递归和专 用算法继续进行初始化/枚举。例如,处理器可以使用循环初始化过程,循环初始化过程在 每个端口以及与其连接的装置之间轮流进行对装置的初始化。同样基于简化的原因,这里 描述的许多实施例假定为树型网络拓扑结构。然而,并未对所给出的方法和装置进行限定, 并且可以用来搜寻任意拓扑结构并且通过在搜寻期间创建逻辑生成树来利用任意拓扑结 构对网络进行枚举,例如通过广度优先(breath first)方式游走于网络并且跳过已经访问 的节点。如理解的那样,针对网络100所示出的配置仅仅是一种可行的配置,从而在复位 或系统开机启动时,不会假定特定的网络拓扑结构。在这些情况下,本发明的方法和控制装 置可以用来对网络上的装置进行自动搜寻和枚举从而准备正常操作。图2可用来示出可以在本发明中实现的装置搜寻和枚举步骤。图2示出了连接到 具有四个端口 222A-D的交换机装置220的主机控制装置210,端口 222D是交换机配置端 口,其收到交换机网络地址并且存储交换机路由选择表,而端口 222A连接到主机装置210。 主机装置210和交换机220可以位于同一芯片上,或者两个不同芯片上。在启动时,网络拓 扑结构未知,这意味着装置和连接未知。作为初始步骤,主机装置210可以自我配置,包括 根据主机装置端口数量为自身保留许多网络地址。通常,根据用于控制装置的专有的处理 进行主机控制装置配置。一旦配置了主机装置210,则主机使用“设置”和“获取”配置命令以设置和获取属 性从而开始配置额外的网络节点。当配置每个接下来的装置时,主机把接下来可用的网络 地址分配给该装置,并且通常接收从该装置返回的确认消息。一旦搜寻到端点装置并且利 用网络地址对端点装置进行枚举,主机控制装置可以继续搜寻下一个装置。可以跳过寻找 只有一个端口的装置来确定端点。如果存在一个以上的端口,则该装置被认为是一个交换 机。当下一个装置是交换机时,如图2所示,控制装置210首先设置交换机220的路 由选择表,从而通过初始通信端口 222A来选择通信路由,端口 222A是连接到主机装置的端口。在一些情况下,来自主机装置210的数据包默认被选择交换机220的配置端口 222D 的路径,配置端口为默认端口,在正常操作期间(传输到交换机的)数据包选择该默认端口 作为路径。在设置交换机路由选择表之前,可以使用初始路由选择条件,由此初始进入端口 222A被保存并且用于选择路径来将响应返回到主机装置210。这可能会禁用正常的通信路 由选择直到完全配置好交换机220为止。随后可以确定交换机220上的端口数量,从而可 以保留正确数量的网络地址。一旦对交换机的本地端口进行了完整地枚举,可以设置路由 选择表,并且可以禁用初始路由选择条件以满足正常路由选择。随后可以通过交换机220上的每个端口,按照随后连续的装置连接的这种方式继 续进行装置搜寻和枚举,直到到达端点为止,随后对接下来的交换机端口进行相同的操作 直到针对交换机220的所有端口发现导向端点的所有连接为止。针对与主机控制装置的每 个连接接着相同的处理,直到对网络进行完全枚举为止。此时,对网络拓扑结构进行了完整 地映射,并且在正常条件下可以进行通信。图3示出了在根据本发明的装置搜寻和枚举之后的网络拓扑结构示例。网络300 包括主机控制装置310,根据其端口数量,主机控制装置310被分配前四个网络地址,编号0 到3。主机310经由端口 322C连接到交换机320。与主机310的其他连接是可行的,但是 图3并没有示出。交换机320包括四个端口,包括配置端口 322A、连接到交换机330的端口 322B、连接到主机310的端口 322C和连接到交换机360的端口 322D。交换机320是主机 310遇到的第一个装置,由此被分配下一个网络地址,编号4,如路由选择表324所示。在对 交换机320进行枚举之后,对交换机330进行搜寻和枚举,收到下一个可用网络地址,编号 5,如路由选择表334所示。交换机330包括配置端口 332A、连接到装置340的端口 332B、连 接到装置350的端口 332C和连接到交换机320的端口 332D。在对交换机330进行枚举之 后,对连接到交换机330的装置(即装置340)进行枚举,装置340被赋予网络地址编号6, 并且对装置350进行枚举,装置350收到网络地址编号7到9。接下来,搜寻交换机360,其 收到下一个网络地址编号10,如路由选择表364所示。交换机360具有配置端口 362A、连 接到交换机320的端口 362B、连接到装置370的端口 362C和连接到装置380的端口 362D。 在对交换机360进行枚举之后,对连接到交换机360的装置(即装置370)和装置380进行 枚举,装置370收到网络地址11,并且装置380收到网络地址12。尽管本发明可以采用任意适合的环境来实现,但是根据特定寻址方案和通信协议 来描述各个方面是有益的。同样,下面的描述将定义和使用由寻址方案和通信协议定义的 规则,当然本领域技术人员将会理解取决于环境的变型仍落入本发明的精神和范围内。在示例性芯片与芯片通信协议中,可以使用网络地址(为了说明目的称为 "DevicelD")来识别装置,并且使用端口进行装置通信。从一个端口“Port”发送数据包的 装置(由其DevicelD所识别)计算目的装置地址“DestDevicelD”和目的端口 “DestPort”, 如下DestDevicelD = DeviceID+[Port/32];DestPort = Port % 32,其中,%表示模算子。接收数据包并且掌握DevicelD的装置可以如下获取端口 fn息Port = (DestDevicelD-DevicelD)X 32+DestPort
7
如果满足下面的条件,则DestDevicelD对于装置来说是有效的DevicelD 彡 DestDevicelD 彡 DeviceID+[MaxPort/32]使用这种基本寻址方案,可以定义两种通信模式,称为面向连接(CO)通信和无连 接(CL)通信。CO连接意味着在可以传输任何数据之前,连接需要从两个装置之间退出。CL 通信没有这样的要求,这是因为与利用CO通信借助连接存在的一些信息相反,通信所需的 所有信息都存在于正在传送的数据包中。在CO通信中,连接的装置接入点被称为“CPort”。CPort的状态包括对等装置的 DevicelD和CPort,连接被映射到的通信量类以及可选的端到端流量控制状态。由于所有 这种状态信息都包含在CPort中的事实,所以仅仅通过提供数据的装置就可以进行数据传 送。表1描述了用于C0通信的数据帧格式。C0数据帧格式的第一个符号和最后两个符号分别代表头部和尾部。头部包括转义 字节(ESC_DL)、符号控制识别字段(在数据帧头部的情况下为S0F,或者“帧的开始”)、通信 量类“TCx”和三个保留位。尾部包括EOF或者“字段结尾”、控制符号和用于检错的CRC符 号。EOF符号包括转义字节(ESC_DL)、符号控制识别字段(在数据帧尾部的情况下为EOF) 以及帧序列号。表1C0数据帧格式 帧包括L3数据单元和L4数据单元,每一个都具有一字节头部并且没有尾部。L3 头部包括设置为1的L3数据单元位(指示短L3头部)以及对等装置的DevicelD。L4头 部包括设置为1的L4数据单元位(指示短L4头部)、目的CPort、用来把端到端流量控制 信用发送给对等的CPort的FCT位以及由应用程序用来指示消息结束的E0M位。当诸如在 C0通信中通过CPort进行传送(S卩,通过连接)时,应用程序仅仅需要传递数据并且指示消 息边界。在使用CPort状态时,填充传送数据所需的剩余信息。CL通信不同于C0通信的主要原因在于,CL通信在数据包(例如源端口、源装置 ID、协议ID等)中添加了系统开销(overhead),在C0通信中,系统开销作为连接状态的部 分存在。CL通信还缺少端对端流量控制,这意味着在目的装置处由于溢出会丢失数据。CL 通信的优势包括无需首先建立连接而快速发送数据的能力。无连接服务的装置接入点被称 为“RPort”。表2描述了用于CL通信的数据帧格式。表2:CL数据帧格式
CL数据帧的头部(第一符号)和尾部(最后两个符号)与CO数据帧中的那些头 部和尾部相同。CL通信的L3头部扩展成还包括源DevicelD字段(“SrcDevicelD”)从而 指示数据包源自何处。L3头部每个L3符号还包括一个“Ext”位,如果设置为1,则指示另 一个L3符号的存在,否则指示L3头部的结束(表2没有示出L3扩展)。L4头部在CL通 信中扩展成包括指示该段是寻址到CPort (设置为1的CPort位)还是寻址到RPort (设 置为0的CPort位)、源端口(“SrcPort”)的CPort位;设置成0指示第一生成版本的Ver 位(打开今后定义新L4数据单元的选项);每个L4符号的一个Ext位,其起到与L3头部 相同的作用(表2示出了“协议ID”的一个L4扩展);以及指示由应用程序所使用的通信 协议的协议ID字段。对于CL通信来说,应用程序发送适于所定义的帧格式的数据消息。应用程序指定 目的DevicelD和RPort,并且可选地指定协议ID。在通过网络发送之前,在不分段的情况 下将消息打包。在接收侧,除了消息自身之外,给应用程序提供了源DevicelD和源RPort。本发明中使用的配置协议包括基本写入和读取命令,这里称为Set和Get,用于设 置和读取属性值。这些命令由所谓的启动程序发出并且由所谓的目标程序执行。Set和 Get命令转换成携带有命令及其参数的请求消息,并且转换成确认命令到达和执行的响应 消息。可能的消息包括“类型”字段,指示配置消息类型(例如,设置命令、获取命令、设置 响应、获取响应);可选的“长度”字段,指示作为设置或获取命令的对象的属性值的字节长 度;以及“属性”字段,指示作为设置或获取命令的对象的所识别的属性。在设置消息的情 况下,请求还包括数值本身,可以从几个符号得到。Get消息具有用于命令字段的不同的值, 而没有数值字段。响应消息再次由类型字段识别,并且例如可以包括“SET_SUCCESS”、“GET_ SUCCESS”和“FAILURE”。在SET_SUCCESS情况下,无需额外的字段。对于GET_SUCCESS来 说,在Get请求中指定的值返回到数值字段中。对于FAILURE响应来说,“FailureReason” 字段可以指示命令失败的原因(例如,错误或无效DevicelD、错误或无效RPort、不存在的 属性、其他装置临时锁定对属性的访问、属性范围之外的值,等等)。在开机启动或复位之后,网络的拓扑结构是未知的,并且没有分配网络地址。主机 使用配置协议可以执行对拓扑结构的搜寻并且为所有网络节点(路由器和端点装置)分配 地址。可以使用类似但有些不同的步骤执行基于CL的搜寻和枚举以及基于C0的搜寻和枚 举。在两种通信方式下描述各种处理步骤是有益的。
在表3中示出了基于CL通信的搜寻和枚举的上层示图。定义了三个常数CFG_ RP0RT(第0行),代表用于网络配置的目标RPort ;CFG_TC(第1行),代表用于配置的通信 量类;以及DEVICEID_MAX(第2行),代表允许的DevicelD的最大数量。另外,设置了主机 发出配置命令的RPort。使用nextDevicelD变量来指示可以分配的下一个DevicelD。当 程序刚刚开始时,nextDevicelD被初始化为0,如在第4行上所示。表3 基于CL的装置搜寻和枚举的顶视图 程序以对主机控制装置进行枚举而开始。使用nextDevicelD的初始值来把N_ DevicelD分配给主机(第5行),并且把初始值存储在hostDevicelD用于以后参考(第6 行)。主机使用LocalSETO函数设置其本地堆栈的属性,利用取决于特定主机装置的所属 装置来执行该函数。第7和8行示出了从其自身堆栈中获得Cport和RPort的数量的主机。 此外,使用LocalGet (),并且典型地通过所属装置来执行该操作。使用CPort和RPort的数 量来计算为主机保留的DevicelD数值的数量(第9行)。在网络中其他装置的真正搜寻和枚举开始之前,设置RPort用于配置通信量类 CFG_TC(第10行)并且启用以用于通信(第11行)。随后通过Enumerate ()函数执行网 络装置搜寻和枚举,在第12行被调用。在主机经过枚举之后,Enumerate ()函数把下一个 可用DevicelD (nextDevicelD)作为自变量,并且在整个网络都经过枚举之后返回下一个 可用DevicelD。在第二次网络扫描中可以使用返回值来更新除了主机之外的装置之间的路 由选择表。表4示出了在基于CL的搜寻和枚举中的枚举函数(“CLEnumerateO ”)的细节。 CL Enumerate ()函数由主机执行,并且使用GET()和SET()配置调用来获得和设置属性。 在使用CL通信时,GET0和SET0函数把目标装置的DevicelD和RPort作为前两个自变 量。在GET0的情况下,第三个自变量是属性标识符。在SET0的情况下,第三自变量是成 对的,包括属性标识符和需要成为的数值。SET0和GET0配置命令产生网络可用数据单 元,将被传送到所指示的目的装置。
10
表4 用于基于CL的装置搜寻和枚举的Enumerate ()函数 枚举函数以请求交换机端口的数量为开始(第15行)。如果目标装置是交换机 (即,路由器),则请求将返回交换机端口的数量。否则,该装置被看成端点,并且请求将返 回1作为端口的数量。因为GET0命令及其响应产生从主机到目标装置以及从目标装置到 主机的网络配置数据单元,而目标装置还未经过枚举和配置,所以会引起几个问题。一个问题涉及在复位之后允许目标装置接受与其自身N-DevicelD不匹配的数据 包。解决这一问题的一种方法是使用指示没有设置N-DevicelD属性的标志位,在这种情 况下,接受具有任意DestDevicelD的数据包。在设置DevicelD之后,复位标志位,恢复正 常运行条件,从而仅接受具有有效DestDevicelD的数据包。一种替代方法是在复位之后的特定状态下开始,由标志位所指示,其中接受携带任意DestDevicelD的数据包。当设置 DevicelD之后主机把标志位关掉时,仅接受具有有效DestDevicelD的数据包。另一问题涉及其配置RPort和CFG_RP0RT准备接受请求配置消息并且发出响应配 置消息的目标装置。这可以通过使得配置RPort摆脱启用的复位并且使用通信量类1来解 决。另外,目标交换机装置应当能够把请求配置数据包选择到配置交换机端口的路径上。这 可以通过使得交换机路由选择表摆脱在这样一种状态下的复位来实现,在这种状态下,所 有的数据包都被选择到交换机配置端口的路径上(即,包含任意DestDevicelD值的数据包 将被选择交换机配置端口的路径)。另一问题涉及目标交换机选择响应配置数据包返回到主机装置的路径的能力。如 果到主机的交换机端口和主机DevicelD都已知,那么在复位时可以配置路由选择表从而 把携带主机DevicelD的数据包选择到主机的交换机端口的路径上。然而,如果需要用于把 主机附接到任意交换机端口的灵活性(例如,由于机械限制),则在复位时预先配置交换机 可能行不通。一种替代方法是使得交换机记录其接收第一个数据包的进入端口,并且使用 该端口选择返回响应配置数据包的路径。当接收请求(诸如GET)时,也将数据包源装置ID和RPort告知目标。这些可以 在返回响应时由目标装置使用。返回到表4,可以使用获得的端口数量(第15行)来确定当前目标装置是交换机 (具有一个以上的端口)还是端点(具有单个端口)。如果目标装置是交换机(第16行), 则将配置路由选择表,其后关掉初始的特定路由选择以支持正常操作。在第17行,通过首 次从目标装置获得保存的到主机的端口(即,接收配置数据包的进入端口),随后为到主机 的端口建立主机DevicelD范围的路由选择表条目并且把到主机的端口设置为默认,来配 置到主机的交换机端口的路由选择表(第18-20行)。这仅仅是路由选择表配置的一个例 子,如根据本发明容易理解的那样,任何适合的路由选择表构成和配置也是可行的。到交换机配置端口的路由选择表条目是类似的。首先获得配置的交换机端口(第 21行),其后,设置路由选择表(第22-23行)。在为到主机的交换机端口配置路由选择表 条目之后,可以关掉初始的特定路由选择(第24行)。在第26行,为目标装置分配下一个可用的DevicelD。这自动启用了丢弃没有 携带对于目的装置来说有效的DestDevicelD的所有数据包的临时禁用部件。所分配的 DevicelD被保留(第27行)用于今后在搜寻过程中引用。而且,分别在第28和29行,获 得CPort和RPort的总数以有助于计算当前装置的DevicelD的范围,并且由此在第30行计 算下一个可用的DevicelD。在交换机的情况下(第31行),首先针对存在大于32个CPort 和RPort的情况更新到交换机配置端口的路由选择表(第33行)。该步骤是可选的,因为 典型的交换机不应当多于32个端口。对于每个交换机端口(第34行),循环调用Enumerate ()函数(例如,以深度优 先次序)来对装置进一步枚举。跳过已经配置的交换机端口,即到主机和配置的端口(第 35-36行)。对于其他端口中的每一个来说,配置朝向下一个待枚举的装置的路由选择表 (第37-38行),从而把所有DestDevicelD的路由选择表临时选择到所枚举的端口的路径 上。这可以有助于避免沿从主机到每个搜寻的装置的新枚举的装置的路径的路由选择表的 不必要的更新。在第39行,调用枚举函数自身,其在当前端口上的所有装置都经过枚举之
12后返回下一个可用的DevicelD。该值用于为将该交换机端口的路由选择表条目更新为正确 的范围(第40行)。如果使用基于范围的路由选择表实现方式,则在上面步骤12之后,完成路由选择 表配置。然而,对于其他路由选择实现方式来说(例如,没有默认端口的路由选择表),可 能需要额外的步骤,从而通过使用枚举期间由主机采集的拓扑结构信息来填充除主机之外 的所有装置之间的路由选择表,以完成路由选择表建立。即使对于使用默认端口的路由选 择表来说可能也需要这样的额外步骤,以防路由器会丢弃不是指向网络中任何装置的具有 DestDevicelD的数据包。在这种情况下,使用Enumerate ()在步骤12返回的值来为每个路 由器的默认端口配置有效的DevicelD范围。表5 基于CO的装置搜寻和枚举的顶视图 基于CO的搜寻和枚举类似于基于CL的搜寻和枚举。不同之处在于主机建立链接 到目标装置的初始链路的方式。表5示出了基于C0的搜寻和枚举的纵视图。如在CL情况 一样,可以定义三个常数目标配置端口(在这种情况下是“CPort”)、通信量类和装置的最 大数量(第44-46行)。此外,可以定义主机控制装置的配置端口(第47行)。接下来,采 用与CL的相同方式计算主机DevicelD (第49_54行)。当建立本地端口时出现第一个不 同之处。在C0通信的情况下,端口是CPort (可由他人使用配置或专用协议来配置),并且 在执行CPort上的任何其他配置之前设置标志位以保留CPort (第55行)。其后,通过设 置用于配置的对等的CPort和通信量类(均为已知值)可以配置连接的本地端(第56-57 行)。当配置好主机时,循环调用Enumerate 0函数(第59行)。表6 基于C0的装置搜寻和枚举的Enumerate ()函数 表6示出了基于CO通信的EnumerateO函数细节。首先,通过把主机的对等 DevicelD设置成新的目标装置,主机把其连接端配置成指向最新枚举的装置(第62_64 行)。接下来,通过保留CPort、给自身设置对等的DevicelD和CPort、设置通信量类、并且 启用通信CPort,主机设置连接的另一端(即,目标侧)(66-70)。为了恰当布置无损连接 (对于配置来说很重要),在连接的双方向上启用端到端流量控制。这是通过获得目标和主 机的Rx( ?)缓冲大小(分别在第72和73行)、获得两个方向的令牌大小(分别在第74 和75行)、计算两端的令牌数量(分别在第76和77行)、以及设置令牌值并且启用端到端 流量控制(分别在第78-79行和80-81行)来完成的。CO EnumerateO函数的其余部分差不多与CL情况相同,除了主机到目标通信 是经由主机配置CPort而不是主机配置RPort执行之外。结果,SET()和GET()配置命 令不用再把目标DevicelD和RPort作为参数。其他不同之处仅仅在于,在第108行调用 Enumerate ()之后,不得不恢复对当前目标装置的连接。这是通过等待直到连接传输完所有 数据并且转移所有端到端信用令牌(第110行)为止,并且把对等的DevicelD设置回到当
15
SET(N_DeviceID = nextDevicelD); thisDevicelD = nextDevicelD ; numCPorts = GET(N_NumCPorts); numRPorts = GET(N_NumRPorts);
nextDeviceID+ = thisDeviceID+(humCPorts+numRPorts)/32+1 ;
if(numSwitchPorts > 1) {
SET (N_RT. end[cfgSwPort] = nextDeviceID-1); for (sp = 0 ;sp < numSwitchPorts ;sp++) {
if ((sp = = cfgSwPort) | | (sp = = swPortToHost))
continue ; SET(N_RT. start[sp] = nextDevicelD); SET(N_RT. end[sp] = DEVICEID_MAX); nextDevicelD = Enumerate(nextDevicelD);
WaitConnectionBecomesIdle (); LocalSET(T_ConnectionState[CFG_CP0RT] = IDLE); LocalSET(T_PeerDeviceID[CFG_CP0RT] = thisDevicelD); LocalSET (T_ConnectionState[CFG_CP0RT] = CONNECTED); SET(N_RT. end[sp] = nextDeviceID-1);
}前目标(第111-113行)来完成的。在恢复连接之后,可以在第114行安全地执行路由选
择表设置。在一个实施例中,在复位之后,经过枚举的装置以特定状态(“RESET”)结束,其 中,经过枚举的装置可以在不检查它们网络地址的正确性的情况下接收数据包。当接收数 据包时,保存初始接收数据包的进入端口,从而主机稍后可以读取数据包。随后数据包按照 正常方式进行处理。函数返回响应数据包,随后使用专门选择到请求的进入端口的路径来 作为返回的路径。交换机执行这些操作直到禁用专门的路由选择函数以支持正常操作。一 旦禁用专用的路由选择,则检查每个数据包的网络地址,并且如果与装置自身的网络地址 匹配,则处理在数据包中包含的配置消息,否则丢弃数据包并且报告错误。有关错误的响应 数据包返回到主机。在正常操作状态,使用正常的路由选择表而不再使用专门的路由选择 来作为响应数据包的路由。配置消息处理可以如下进行。首先,对协议进行检查以确保仅处理配置消息。其 次,准备一般响应消息,其中使用主机控制装置值和输入的消息源装置网络地址和端口来 填充目的网络地址和端口。把响应消息源网络地址和端口设置为当前装置的网络地址和端 口,把协议设置成配置,并且把执行状态暂时设置成“SUCCESS”。在设置配置命令的情况下,设置相应的属性,并且返回响应数据包。在完全实现方 式中,还应当检查属性地址以确定是否有效,并且应当检查属性值以确定是否落在属性有 效范围内。如果这些检查中的一个或两个失败,则不应当采取行动,并且应当返回错误。在 获取配置命令的情况下,在响应中返回属性值。此外,在完全实现方式中,如果属性无效,则 应当返回错误。针对基于CL的装置搜寻和枚举选择路由的特定交换机的替代实施例不仅包括 保留初始接收数据包的进入端口,还包括更新交换机的路由选择表,从而正确地为指定为 主机控制装置网络地址的所有端口选择路由。结果,可以不需要初始使用专用路由选择。 类似实施例还可以用于基于CO的装置搜寻和枚举,只是主机控制装置网络地址需要从配 置CPort的“T_PeerDeViceID”属性(参见表6)获得而不是从接收的数据包获得。随后 响应应当排队直到目标接收到设置了 T_PeerDeViceID属性的数据包为止。优选地,T_ PeerDevicelD应当与第一配置命令中的一个一起设置。
1权利要求
一种控制装置(110、210、310),其具有用于与具有初始未知的拓扑结构和多个未知装置的网络(100,300)进行连接并通信的一个或多个主机端口,所述控制装置包括可编程处理器,被配置成执行启动程序,所述启动程序使用设置和获取命令通过以下操作来对网络进行映射使用所述一个或多个主机端口来搜寻网络上的多个未知装置;以及使用所述一个或多个主机端口来对搜寻到的装置进行枚举。
2.如权利要求1所述的控制装置,其中对搜寻到的装置进行枚举包括分别为每个搜寻 到的装置分配不同的网络地址。
3.如权利要求1所述的控制装置,其中所述可编程处理器进一步使用所述启动程序来 确定每个搜寻到的装置是否是交换机。
4.如权利要求3所述的控制装置,其中所述可编程处理器进一步使用所述启动程序来 为每个确定的交换机配置路由选择表,每个路由选择表用来在各个交换机的指定端口与所 枚举的装置之间路由选择通信。
5.如权利要求4所述的控制装置,其中在为所选交换机配置路由选择表之前,经由从 控制装置首先接收命令的所选交换机端口在所述控制装置与所选交换机之间进行通信,并 且在为所选交换机配置路由选择表之后,根据所述路由选择表进行与所选交换机的通信。
6.如权利要求5所述的控制装置,其中在为所选交换机配置路由选择表之前,丢弃由 所选交换机接收到的除了经由从控制装置首先接收命令的端口进行的通信之外的其他任 何通信。
7.如权利要求1所述的控制装置,其中执行启动程序建立了在这样一种功能状态下的 网络,其中所选的一些所枚举的装置能够通过所述网络通信。
8.如权利要求1所述的控制装置,其中使用网络数据包发送所述设置和获取命令,每 个网络数据包都包括源网络地址和目的网络地址。
9.如权利要求8所述的控制装置,其中对所搜寻到的装置进行枚举包括分别为每个装 置分配不同的网络地址。
10.如权利要求8所述的控制装置,其中每个网络数据包还包括源端口指定和目的端 口指定。
11.如权利要求8所述的控制装置,其中在被分配了网络地址之前,所选装置接受具有 任意网络地址的网络数据包,并且在被分配了网络地址之后,所选装置仅接受具有有效网 络地址的网络数据包。
12.如权利要求1所述的控制装置,其中使用一个或多个主机端口中的同一个端口来 建立与所搜寻到的装置中的每一个的连接。
13.如权利要求1所述的控制装置,其中对每个搜寻到的装置进行枚举发生在搜寻另 一个装置之前。
14.如权利要求13所述的控制装置,其中当搜寻并对所选交换机进行枚举时,可编程 处理器进一步使用启动程序来搜寻连接到所选交换机的每个装置并且在搜寻其他装置之 前对连接到所选交换机的每个装置进行枚举。
15.如权利要求1所述的控制装置,其中所述控制装置是移动装置。
16.如权利要求15所述的控制装置,其中所述移动装置是蜂窝电话、PDA、媒体播放器、游戏机或相机。
17.如权利要求1所述的控制装置,其中在对所有网络装置进行枚举之后,启动程序对 用于除了所述控制装置之外的其他装置之间的通信的任意路由选择表进行更新。
18.—种控制装置(110、210、310),其被配置成使用设置和获取命令来与具有初始未 知的拓扑结构和多个未知装置的网络进行连接并通信,所述控制装置包括用于使用控制装置的一个或多个主机端口来搜寻网络上的未知装置的装置;以及用于使用所述一个或多个主机端口为每个搜寻到的装置分配不同的网络地址来对搜 寻到的装置进行枚举的装置。
19.一种使用控制装置(110、210、310)执行设置和获取命令来与具有初始未知的拓扑 结构和多个未知装置的网络(100,300)进行连接并通信的方法,所述方法包括步骤使用控制装置的一个或多个主机端口来搜寻网络上的未知装置;以及通过使用所述一个或多个主机端口为每个搜寻到的装置分配不同的网络地址来对搜 寻到的装置进行枚举。
20.如权利要求19所述的方法,还包括步骤配置所述控制装置以通过所述一个或多 个主机端口与未知装置进行通信。
21.如权利要求19所述的方法,还包括步骤确定每个搜寻到的装置是否为多端口交 换机,每个多端口交换机具有一个以上通信端口。
22.如权利要求21所述的方法,还包括步骤为每个多端口交换机配置路由选择表,路 由选择表用以基于网络地址来选择到达交换机端口中的一个端口的通信路由。
23.如权利要求22所述的方法,还包括配置每个多端口交换机,其中每个多端口交换 机对识别哪个通信端口接收初始数据包的信息进行保存,使用所识别的初始数据包端口来 选择返回到控制装置的通信路由,并且一旦配置好路由选择表就禁用通过初始数据包端口 的通信路由选择,以支持路由选择表。
24.如权利要求23所述的方法,其中在配置所选多端口交换机时,丢弃经由除了所识 别出的初始数据包端口之外的其他任何端口所传送的数据包。
25.如权利要求19所述的方法,其中每个装置都接受所有数据包通信直到针对所述装 置执行完枚举步骤,所述装置其后仅接受携带有效网络地址的数据包通信。
全文摘要
公开了与具有原始未知拓扑结构和多个未知装置的网络(100,300)进行通信的方法以及具有配置来执行上述方法的可编程处理器的控制装置(110、210、310)。这些方法使用设置和获取配置命令以使用控制装置的一个或多个主机端口来搜寻网络上的未知装置,通过使用一个或多个主机端口为每个搜寻到的装置分配不同的网络地址来对所搜寻到的装置进行枚举,使得经过枚举的装置与网络拓扑结构相对应。
文档编号H04L29/12GK101855891SQ200880115203
公开日2010年10月6日 申请日期2008年10月3日 优先权日2007年10月3日
发明者丹尼斯·考特索尔斯, 安德雷·拉托莱斯库, 彼得·范登哈默 申请人:意法爱立信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1