处理不同类型请求的网络装置的制作方法

文档序号:15567942发布日期:2018-09-29 03:47阅读:165来源:国知局

本发明涉及一种对请求进行处理的网络装置,且特别涉及一种可将不同类型请求中的域段信息用不同寄存器进行锁存(latch)的装置,例如网络接口控制器



背景技术:

地址解析通信协议(addressresolutionprotocol,arp)是基于互联网协议第四版(internetprotocolversion4,ipv4)的一种2层协议。地址解析的过程是主机在发送帧前将目标ip地址转换成目标媒体存取控制(mediumaccesscontrol,mac)地址的过程。以太网络协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信时,必须要知道目标主机的mac地址。在传输控制协议(transmissioncontrolprotocol,tcp)和ip堆栈中,网络层和传输层只关心目标主机的ip地址。这就导致在以太网中使用ip协议时,数据连结层的以太网协议接到上层ip协议提供的数据中,只包含目的主机的ip地址。利用地址解析通信协议(arp)就可以根据目的主机的ip地址获得其mac地址。

以主机a向主机b发送数据为例。当发送数据时,主机a会在自己的arp缓存表中寻找是否有目标ip地址。如果找到了,也就知道了目标mac地址,因而可直接把目标mac地址写入帧内并发送。如果在arp缓存表中没有找到目标ip地址,主机a就会在网络上广播一个arp请求(arprequest),其可用于询问具有特定ip(即,主机b的ip)的主机的mac地址。网络上其他主机并不回应arp询问,只有主机b接收到这个帧时,才向主机a做出回应,即,arp回应(arpresponse)。如此一来,主机a即可得知主机b的mac地址,进而得以向主机b发送数据。

同时,主机a和主机b同时皆更新了自己的arp缓存表。因此,当主机a及主机b欲向对方发送数据时,即可直接从各自的arp缓存表里查找对方的mac地址。

邻居发现协议(neighbordiscoveryprotocol,ndp)适用于互联网协议第六版(internetprotocolversion6,ipv6),与ipv4使用的arp相应。在ndp中存在邻居发现(neighbordiscovery,nd)及邻居请求(neighborsolicitation,ns)等包,其工作原理也和arp类似,用以实现地址解析的功能。亦即,当一个节点需要得到同一本地链路上另一个节点的mac地址时,发送ndp请求(例如,网际控制消息协议第六版(internetcontrolmessageprotocolversion6,icmpv6)报文),当另一节点收到此ndp请求后,可回传ns回应(nsresponse),而主机缓存此地址对。

然而,由于产生arp/ns回应及将其发送需要一定的时间,因此当某主机连续地收到多个arp/ndp请求时,此主机有可能因无法实时将较晚出现的请求的域段信息进行缓存而无法相应地产生足够可靠的回应。在此情况下,这些较不可靠的回应可能会被丢弃,从而影响主机对arp/ns请求作出回应的效率及可靠性



技术实现要素:

有鉴于此,本发明提供一种网络装置,其可通过不同的寄存器将不同类型的地址请求中的域段信息进行缓存,从而提升后续产生的回应的可靠性,并相应地改善arp/ns卸载的实现效率。

本发明提供一种对多个不同类型的请求进行处理的网络装置。上述网络装置包括地址解析模块。上述多个不同类型的请求包括多个第一类请求和多个第二类请求。上述地址解析模块包括至少一第一类寄存器、至少一第二类寄存器及指令队列。第一类寄存器用于缓存上述多个第一类请求所需暂存的域段信息。第二类寄存器用于缓存上述多个第二类请求所需暂存的域段信息。指令队列用于依序缓存关联于上述多个第一类请求的多个第一类指令和关联于上述多个第二类请求的多个第二类指令,每一上述多个第一类指令用于触发相应的第一类请求所需暂存的域段信息从上述第一类寄存器发出。每一上述多个第二类指令用于触发相应的第二类请求所需暂存的域段信息从上述第二类寄存器发出。上述多个第一及第二类指令由上述地址解析模块产生并缓存至上述指令队列,其中上述地址解析模块产生及缓存上述多个第一及第二类指令的顺序为上述地址解析模块接收上述多个第一及第二类请求的顺序。

基于上述,本发明提出的网络装置可藉由其地址解析模块将第一类请求及第二类请求的域段信息分别锁存于相应的寄存器中,并在适当的时机将其取出以相应地产生正确且可靠的第一类回应或第二类回应。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下

附图说明

图1是本发明的一实施例的网络装置的示意图。

图2是本发明的一实施例的传送时序图。

图3a是本发明的一实施例的网络装置示意图。

图3b是本发明的一实施例的状态机运作状态示意图。

图3c是本发明的一实施例的状态信号示意图。

图4是本发明的一实施例的传送时序图。

图5是本发明另一实施例的传送时序图。

具体实施方式

请参照图1,其是本发明的一实施例的网络装置10的示意图。一般而言,图1的网络装置10包括地址解析模块100,在一实施例中,还包括接收端(下称rx)102、发送端(下称tx)104;网络装置10可为网络接口控制器(networkinterfacecontroller,nic)、主机或芯片组(chipset),在一实施例中,为了能保证主机处在休眠状态时也能对接收到的请求作出相应的回应,图1的地址解析模块100、接收端(下称rx)102、发送端(下称tx)104可设置于千兆比特nic(gigabitnic,gnic)的悬置(suspend)模块中,更具体地,设置在悬置模块的千兆比特mac(gigabitmac,gmac)模块中。

具体而言,地址解析模块100可在rx102接收地址请求之后,判断是否需要对地址请求作出回应,若是,就提取此地址请求中的域段信息。前述地址请求的类型包括第一类请求或第二类请求,第一类请求例如是arp请求,而第二类请求例如是ndp请求,但本发明可不限于此。

前述域段信息例如包括目标ip地址、来源ip地址以及来源mac地址,而地址解析模块100可将上述域段信息暂存。在地址请求接收完成之后,tx104将会收到通知,而tx104将会相应地将暂存的域段信息取出,并将其与本地回应信息(例如本地mac地址、以太网络地址等)一同封装为回应以进行发送。在本发明中,地址请求包括第一类请求及/或第二类请求,则第一类请求相应的回应为第一类回应,第二类请求相应的回应为第二类回应。在一实施例中,若第一类请求包括arp请求,则tx104可相应地产生arp回应;若第二类请求包括ndp请求,则tx104可相应地产生ns回应,但本发明可不限于此。

然而,在图1的架构下,若rx102连续地收到多个第一类请求及/或第二类请求时,有可能因无法即时将较晚出现的请求的所需暂存的域段信息进行缓存,或者无法完整地缓存较晚出现的请求的所需暂存的域段信息,进而无法让tx104产生相应的回应或足够可靠的回应。若地址解析模块100没能完整地缓存较晚出现的请求的所需暂存的域段信息,tx104即使产生了相应的回应,也极有可能是不可靠的,这些较不可靠的回应可能会被丢弃,从而将影响网络装置10卸载(offload)请求的效率,以下辅以图2来说明此情形。

请参照图2,其是本发明的一实施例的传送时序图。在本实施例中,假设rx102收到一个arp请求200,而arp请求200的长度为64个字节。一般来说,arp请求200的有效载荷(payload)包括来源协议地址(sourceprotocoladdress,spa)、来源硬件地址(sourcehardwareaddress,sha)、目标协议地址(targetprotocoladdress,tpa)及目标硬件地址(targethardwareaddress,tha),其中,spa、tha及tpa用于作为是否相应产生arp回应的依据,换言之,spa、tha及tpa可用于判断arp请求200是否确实是用于询问地址解析模块100所属主机的mac地址。

在本实施例中,假设arp请求200确实是用于询问地址解析模块100所属主机的mac地址,且arp请求中的spa(sourceprotocoladdress)域段和tpa(targetprotocoladdress)均与接收arp请求的主机上层驱动器传送的值一致,则在tx104产生arp回应202时,除了地址解析模块100所属主机的mac地址(即,本地mac地址)以外,arp请求200中的sha也需作为arp回应202的有效载荷进行封包后传输至发送端总线(txbus)。

如图2所示,在tx104发送arp回应202的过程中,rx102需要接收下一个地址请求204,而相应于地址请求204的回应的产生可能会受到影响。具体而言,虽然rx102接收到了地址请求204,但由于地址解析模块100未能完整地暂存地址请求204中的域段信息,因此tx104无法相应地产生正确且有效的回应。亦即,tx104响应于地址请求204所产生的回应是不可靠的(在完成arp回应202的传送之前,无法对地址请求204作出回应),而此种不可靠的回应通常会被丢弃,从而可能影响到arp卸载请求的实现效率。

此外,若rx102先接收到具有更大长度的ndp请求(最长的ndp请求可长达110字节)后,再接收arp请求,由于tx104对ndp请求作出回应的时间很长,在tx104对ndp请求作出回应的过程中,rx102接收到一个甚至多个arp请求,但地址解析模块100一直缓存ndp请求中所需暂存的域段信息,而不能及时且准确地缓存arp请求中所需暂存的域段信息,致使tx104不能生成arp请求相应的回应或不能生成可靠的arp回应。有鉴于此,本发明提出另一种网络装置架构,用以解决上述技术问题。

请参照图3a,其是本发明的一实施例的网络装置示意图。在图3a中,网络装置30包括地址解析模块300,在一实施例中,网络装置30还包括rx302及tx304。相似于图1实施例中所述的,rx302耦接于地址解析模块300,地址解析模块300耦接于tx304,地址解析模块300、rx302及tx304可设置于网络装置30的悬置模块的gmac模块中,用以在接收地址请求rq后据以产生相应的回应rs,但可不限于此。在一实施例中,地址解析模块300、rx302及tx304可设置在不同的模块中,例如地址解析模块300设置在gmac模块中,而rx302及tx304设置在gmac模块外。

如图3a所示,地址解析模块300包括状态机310、指令队列320、第一寄存器330a、第二寄存器330b、第三寄存器330c及第四寄存器330d。第一寄存器330a及第二寄存器330b彼此串接,并可统称为第一类寄存器,用以缓存第一类请求所需暂存的域段信息,其中,第一类请求可以是arp请求。第三寄存器330c及第四寄存器330d彼此串接,并可统称为第二类寄存器,用于缓存第二类请求所需暂存的域段信息,其中,第二类请求可以是ndp请求,但本发明可不限于此。例如,在一实施例中,地址解析模块300可以不包括状态机310。在一实施例中,第二类寄存器可以只包括一个寄存器,如第三寄存器330c或第四寄存器330d。

在本实施例中,地址解析模块300判断是否需要对地址请求作出回应,若不需要对地址请求作出回应,地址解析模块300可以将该地址请求丢弃;若需要对地址请求作出回应,地址解析模块300进而检测该地址请求rq为第一类请求还是第二类请求,并提取地址请求rq中需要暂存的域段信息,例如,对arp请求而言,需要暂存的域段信息可能包括目标ip地址、来源ip地址、目标mac地址以及来源mac地址。在一实施例中,地址解析模块100可依据地址请求的以太网络长度/类型(ethernetlength/type)域段来检测此地址请求为第一类请求或第二类请求。

当地址请求为第一类请求(例如,arp请求)时,地址解析模块300将第一类请求所需暂存的域段信息存储至第一类寄存器中时,地址解析模块300生成相应于该地址请求的第一类指令c1至指令队列320。当地址请求为第二类请求时,地址解析模块300将第二类请求所需暂存的域段信息存储至第二类寄存器中时,地址解析模块300生成相应于该地址请求的第二类指令c2至指令队列320,第一类指令c1和第二类指令c2可统称为请求指令(command)。概括而言,第一类指令c1及第二类指令c2由地址解析模块300产生并缓存至指令队列320,其中地址解析模块300产生及缓存第一类指令c1及第二类指令c2的顺序为地址解析模块300接收多个第一及第二类请求的顺序。第一类指令c1及第二类指令c2在指令队列320中缓存的顺序为地址解析模块300接收相应请求的顺序;此外,请求指令可用以记录对应请求的类型信息,例如请求的类型可以包括第一类请求和第二类请求。在一实施例中,当地址请求rq为第一类请求时,地址解析模块300可将域段信息存储至第一寄存器330a中后再缓存至第二寄存器330b中;当地址请求rq为第二类请求时,地址解析模块300可将第二类请求所需暂存的域段信息存储至第三寄存器330c中后再缓存至第四寄存器330d中。指令队列320用于依序缓存相应于地址请求的请求指令,并依序弹出这些请求指令以保证第一类寄存器和第二类寄存器是按照接收第一类请求和第二类请求中待暂存的域段信息的顺序,将其所缓存的域段信息发出至tx304,指令队列320可以是先进先出(first-in-first-out)队列,但可不限于此。

具体而言,tx304可根据其依序所接收到的请求指令中包含的请求的类型信息选择从第二寄存器330b或第四寄存器330d中读取所暂存的域段信息。举例而言,当tx304接收的请求指令的类型信息指示其为第一类指令c1时,tx304即可选择从第一类寄存器(例如,第二寄存器330b)取出域段信息以生成回应rs(例如,第一类回应);当tx304接收的请求指令的类型信息指示其为第二类指令c2时,tx304即可选择从第二类寄存器(例如,第四寄存器330d)取出域段信息以生成回应rs(例如,第二类回应);具体而言,tx304根据请求指令中所包含的类型信息来判断是从第二寄存器330b还是第四寄存器330d中读取其所暂存的域段信息。

请参照图3b,其是本发明的一实施例的状态机运作状态示意图。在本实施例中,状态机310可运作于闲置状态、取出(pop)状态、忙碌状态或传输完成状态,可不限于此,例如,在一实施例中,状态机310可只包括闲置状态和忙碌状态。在本实施例中,状态机310可用于管理请求所需暂存的域段信息在寄存器中的缓存和从寄存器中的发送。具体而言,当指令队列320中没有缓存任何请求指令时,状态机310处于闲置状态;当指令队列320缓存请求指令时,状态机310接收指令队列320发送的非空状态指示cne后跳转至取出状态;当tx304开始从寄存器(例如从第二寄存器330b或第四寄存器330d)接收其所暂存的域段信息,以生成相应于该请求的回应时,状态机310跳转至忙碌状态;当tx304发送完回应时,状态机310跳转至传输完成状态。地址解析模块300在检测地址请求为第一类请求并将第一类请求中所需暂存的域段信息缓存在第一寄存器330a后的一个周期,若第二寄存器330b没有缓存域段信息(此时状态机310处于闲置状态),则位于第一寄存器330a中的域段信息缓存至第二寄存器330b。在一实施例中,rx302完成地址请求rq的接收之后,rx302可生成第一接收结束信号并传送给地址解析模块300,而地址解析模块300在接收到第一接收结束信号后将地址请求rq中的域段信息缓存在第一寄存器330a。在一个周期后,第一接收结束信号可变为第二接收结束信号(以下以arp_ns_rcv_end代称)。当状态机310处于闲置状态且存在arp_ns_rcv_end信号时,则位于第一寄存器330a中的域段信息可被移至第二寄存器330b,但可不限于此。

在第一类指令c1被推入指令队列320中之后,指令队列320可发送非空状态指示cne予状态机310,以触发状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出第一类指令c1予tx304,并由取出状态跳转至忙碌状态。

之后,tx304可基于其所接收的第一类指令c1从第二寄存器330b取出域段信息,并据以生成回应rs(即,第一类回应),tx304发送完第一类回应,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。在一实施例中,tx304一边接收来自第二寄存器330b的域段信息,一边据以生成第一类回应,当来自第二寄存器330b的域段信息接收完毕,tx304产生该发送完成信号tx_done。

在一实施例中,在检测地址请求rq为第一类请求,并提取第一类请求所需暂存的域段信息并缓存至第一寄存器330a之后,若状态机310处于忙碌状态,则位于第一寄存器330a中的域段信息可被保持在第一寄存器330a,即不移至第二寄存器330b中,以避免覆盖第二寄存器330b中所缓存的当下tx304生成回应rs所需要的域段信息。具体而言,当状态机310处于忙碌状态时,即代表tx304可能正依据当下位于第二寄存器330b中一个第一类请求所需暂存的域段信息生成一个对第一类请求的回应,若此时将第一寄存器330a中所缓存的域段信息转存至第二寄存器330b,则可能会影响到tx304生成当下第一类请求相应的回应的准确性。在另一实施例中,在检测地址请求rq为第一类请求之后,若tx304正在发送另一回应,则位于第一寄存器330a中的域段信息可被保持在第一寄存器330a,待tx304完成另一回应的发送之后,位于第一寄存器330a中的域段信息可被移至第二寄存器330b。以下搭配图3c进行进一步说明。

请参照图3c,其是本发明的一实施例的状态信号示意图。在图3c中,tx304发送完回应后,会生成完成信号tx_done,并将完成信号tx_done发送至地址解析模块300,更具体而言,可能是状态机310,但本发明不限于此,例如,tx304也可能将完成信号tx_done发送至第一寄存器330a及/或第三寄存器330c。在本实施例中,当rx302在接收到新的地址请求rq,并且tx304在发送前述另一回应时,地址解析模块300可生成一个信号arp-ns-2l。如图3c所示,当同时存在完成信号tx_done及信号arp-ns-2l,即代表tx304已完成前述另一回应的发送,因而已不再需要当下位于第二寄存器330b中的域段信息。因此,位于第一寄存器330a中的域段信息被移至第二寄存器330b。

在另一实施例中,地址解析模块300在检测地址请求为第二类请求并将第二类请求中所需暂存的域段信息缓存在第三寄存器330c后的一个周期,若第四寄存器330d没有缓存域段信息(例如可通过状态机310处于闲置状态来检测)或者已发送完其所缓存域段信息至发送端304,则状态机310会控制第三寄存器330c中的域段信息缓存至第四寄存器330d。相似于先前实施例所述的,当状态机310处于闲置状态且存在arp_ns_rcv_end信号时,则位于第三寄存器330c中的域段信息可被移至第四寄存器330d,但可不限于此。

并且,在第二类指令c2被推入指令队列320中之后,指令队列320可发送非空状态指示cne予状态机310,以触发状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出第二类指令c2予tx304,并由取出状态跳转至忙碌状态。

之后,tx304可基于其所接收的第二类指令c2从第四寄存器330d取出域段信息,并据以生成第二类回应,tx304发送完第二类回应,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。在一实施例中,tx304一边接收来自第四寄存器330d的域段信息,一边据以生成第二类回应,当来自第四寄存器330d的域段信息接收完毕,tx304产生该发送完成信号tx_done。

在一实施例中,在检测地址请求rq为第二类请求,并提取第二类请求所需暂存的域段信息至第三寄存器330c之后,若状态机310处于忙碌状态,则位于第三寄存器330c中的域段信息可被保持在第三寄存器330c,即不移至第四寄存器330d中,以避免影响当下tx304的操作。具体而言,当状态机310处于忙碌状态时,即代表tx304可能正依据当下位于第四寄存器330d中第二类请求所需暂存的域段信息生成第二类请求相应的回应,若此时将第三寄存器330c中所缓存的域段信息转存至第四寄存器330d,则可能会影响到tx304生成当下第二类请求相应的回应的准确性。

在另一实施例中,在检测地址请求rq为第二类请求之后,若tx304正在生成或发送另一回应,则位于第三寄存器330c中的域段信息可被保持在第三寄存器330c,待tx304完成另一回应的发送之后,位于第三寄存器330c中的域段信息可被移至第四寄存器330d。此处的细节可参考先前针对图3c进行的说明,在此不再赘述。

在一实施例中,tx304在生成或发送第二类回应时,rx302可能已接收完两个第一地址请求及第二地址请求,其中,第一地址请求早于第二地址请求,且第一地址请求及第二地址请求皆为第一类请求。在此情况下,本发明通过设置第一类寄存器和第二类寄存器,用以分别缓存第一类请求和第二类请求,并且,更进一步地,本发明通过将第一类寄存器设置成两级缓存的结构,即,第一类寄存器包括第一寄存器330a和第二寄存器330b(地址解析模块300将第一地址请求所需暂存的域段信息存储至第二寄存器330b,并将第二地址请求所需暂存的域段信息存储至第一寄存器330a),用以保证当tx304在生成或发送第二类回应,而rx302连续地接收多个第一类请求时,本发明的地址解析模块300仍可及时地、准确地存储多个第一类请求所需暂存的域段信息,进而保证tx304相应正确、有效且可靠地产生及发送多个第一类请求相应的多个第一类回应。

请参照图4,其是本发明的一实施例的传送时序图。为便于说明,以下将以arp请求、ndp请求、arp回应及ns回应作为第一类请求、第二类请求、第一类回应及第二类回应的实例,并搭配图3a所示的各个元件来进行说明。为使图式更为简洁,图4中以t表示周期,而tk则代表第k个周期,例如t1代表第1个周期,而t64代表第64个周期,以此类推。

在本实施例中,假设rx302连续地接收到从不同的主机发送的arp请求410、ndp请求420、arp请求430、arp请求440及ndp请求450,其中,假设各请求及回应之间存在的间隔为最小请求间隔,即,两个相邻请求及回应间存在12个周期的间隔。依据先前实施例中的教示,在完成arp请求410的检测之后,arp请求410所需暂存的域段信息410a可被存储在第一寄存器330a中。并且,域段信息410a可在存储到第一寄存器330a中后的下一周期被移至第二寄存器330b中。接着,tx304可在域段信息410a存储至第二寄存器330b后的第十三个周期开始依据域段信息410a产生arp回应410b,并将arp回应410b通过发送端总线发送出。

另外,在完成ndp请求420的检测之后,ndp请求420所需暂存的域段信息420a可被存储在第三寄存器330c中。并且,域段信息420a可在存储到第三寄存器330c中后的下一周期被移至第四寄存器330d中。接着,tx304可在域段信息420a存储至第四寄存器330d后的第十三个周期开始依据域段信息420a产生ns回应420b,并将ns回应420b通过发送端总线发送出。

相似地,在完成arp请求430的检测之后,arp请求430的域段信息430a可被存储在第一寄存器330a中。当tx304发送完毕ns回应420b后,域段信息430a可由第一寄存器330a移至第二寄存器330b中。

值得注意的是,在rx302完成接收arp请求430之前,域段信息410a可持续地暂存于第一寄存器330a中,在尚未完成ns回应420b的传输之前,域段信息410a可持续地暂存于第二寄存器330b中,但本发明不限于此。例如,在一实施例中,当域段信息410a由第一寄存器330a移至第二寄存器330b中后,即可清空第一寄存器330a中所缓存的域段信息410a,当tx304发送完毕arp回应410b后,即可清空第二寄存器330b中所缓存的域段信息410a。

由于地址解析模块300除了包括第二类寄存器外,还包括第一类寄存器,所以当tx304在基于第二类寄存器(例如,第四寄存器330d)中缓存的域段信息420a生成及传输ns回应420b时,域段信息430a可完整地暂存于第一类寄存器(例如,第一寄存器330a),因此,tx304在传输完毕ns回应420b之后,仍能够产生正确、有效且可靠的arp回应430b。如此一来,arp回应430b便不会被丢弃,因而能够改善地址解析模块300对请求进行处理的实现效率。

基于上述教示,在完成arp请求440的检测之后,arp请求440所需暂存的域段信息440a可被存储在第一寄存器330a中。当tx304发送完毕arp回应430b时,域段信息440a可由第一寄存器330a移至第二寄存器330b中。由于当下尚未完成arp回应430b的传输,因此域段信息440a可持续地暂存于第一寄存器330a中,待arp回应430b的传输完成之后,tx304可在域段信息440a存储至第二寄存器330b后的第十三个周期开始依据第二寄存器330b中域段信息440a产生arp回应440b,并将arp回应440b通过发送端总线发送出。

相似于先前的教示,由于域段信息440a可完整地暂存于第一寄存器330a中,因此即便当下存在tx304尚未完成传输的arp回应430b的情况,tx304在传输完毕arp回应430b之后,仍能够产生正确、有效且可靠的arp回应440b。如此一来,arp回应440b便不会被丢弃,因而能够改善地址解析模块300对请求进行处理的效率。

另外,在完成ndp请求450的检测之后,ndp请求450所需暂存的域段信息450a可被存储在第三寄存器330c中。当tx304发送完毕arp回应440b时,域段信息450a可由第三寄存器330c移至第四寄存器330d中。接着,tx304可在域段信息450a存储至第四寄存器330d后的第十三个周期开始依据域段信息450a产生ns回应450b,并将ns回应450b通过发送端总线发送出。

图4中的arp请求为98字节(byte),但在极限情况下,arp请求的长度最长可以为110字节,即,ns、虚拟区域网络(virtuallocalareanetwork,vlan)及子网络存取通信协议(subnetworkaccessprotocol,snap)的加总形式。在这种情况下,本发明提出的地址解析模块300更能克服现有技术中的缺陷,更能提高地址解析模块300对请求进行处理的效率,以下即搭配图5进行说明。

请参照图5,其是本发明另一实施例的传送时序图。在本实施例中,假设rx302连续地接收到从不同的主机传来的ndp请求510、arp请求520、arp请求530及arp请求540,其中ndp请求为极限情况下的长度。为使图式更为简洁,图5中同样以t表示周期,而tk则代表第k个周期,例如t1代表第1个周期,而t110代表第110个周期,以此类推。

依据先前实施例中的教示,在完成ndp请求510的检测之后,ndp请求510所需暂存的域段信息510a可被存储在第三寄存器330c中。并且,域段信息510a可在存储到第三寄存器330c中后的下一周期被移至第四寄存器330d中。接着,tx304可在域段信息510a存储至第四寄存器330d后的第十三个周期开始依据域段信息510a产生ns回应510b,并将ns回应510b通过发送端总线发送出。

详细而言,在rx302接收完ndp请求510之后,rx302可发送第一接收结束信号至地址解析模块300,而地址解析模块300可将ndp请求510中所需暂存的域段信息510a存入第三寄存器330c,并将关联于ndp请求510的第二类指令c2推入指令队列320中。在接收完ndp请求510的一个周期之后,地址解析模块300将依据第一接收结束信号相应地生成第二接收结束信号arp_ns_rcv_end。此时,若状态机310不处于忙碌状态,则状态机310会控制第三寄存器330c中的域段信息510a由第三寄存器330c移入第四寄存器330d。

由于指令队列320中缓存了关联于ndp请求510的第二类指令c2,因此指令队列320可发送非空状态指示cne予状态机310,以令状态机310将由闲置状态跳转至取出状态。此时,状态机310可发送取出指令pop以触发指令队列320弹出第二类指令c2予tx304,接着,状态机310由取出状态跳转至忙碌状态。tx304可基于第二类指令c2从第四寄存器330d取出域段信息510a,以生成ns回应510b,tx304发送完ns回应510b,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。

如图5所示,在tx304发送ns回应510b的同时,rx302正在进行arp请求520的接收。当rx302接收完毕arp请求520时,rx302可发送第一接收结束信号至地址解析模块300,而地址解析模块300可将arp请求520中所需暂存的域段信息520a存入第一寄存器330a,并将关联于arp请求520的第一类指令c1推入指令队列320中。在接收完arp请求520的一个周期之后,地址解析模块300将依据第一接收结束信号相应地生成第二接收结束信号arp_ns_rcv_end。此时,由于状态机310处于忙碌状态,则第一寄存器330a中的域段信息520a可被保持在第一寄存器330a中。

当rx302接收了arp请求520,并且tx304在发送ns回应510b时,即,状态机310处于忙碌状态,地址解析模块300可生成一个信号arp-ns-2l。待tx304发送完ns回应510b后将发出完成信号tx_done给地址解析模块300,此时,地址解析模块300中同时存在完成信号tx_done及信号arp-ns-2l,则位于第一寄存器330a中的域段信息520a可被移至第二寄存器330b。

待收到完成信号tx_done之后,状态机310将依序进入传输完成状态及闲置状态。然而,由于此时指令队列320中存在关联于arp请求520的第一类指令c1,因此指令队列320可发送非空状态指示cne予状态机310,以令状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出关联于arp请求520的第一类指令c1予tx304,接着,状态机310由取出状态跳转至忙碌状态。tx304可基于关联于arp请求520的第一类指令c1从第二寄存器330b取出域段信息520a,以生成arp回应520b,tx304发送完arp回应520b,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。

由上可知,在尚未完成ns回应510b的传输时,域段信息520a可持续地暂存于第一寄存器330a中,待tx304将ns回应510b传输完成之后,存储于第一寄存器330a中的域段信息520a可由第一寄存器330a转存至第二寄存器330b,tx304再从第二寄存器330b中读取域段信息520a,以产生正确、有效且可靠的arp回应520b,并将arp回应520b通过发送端总线发出。

在tx304发送arp回应520b时,rx302正在进行arp请求530的接收。当rx302接收完毕arp请求530时,rx302可发送第一接收结束信号至地址解析模块300,而地址解析模块300可将arp请求530中所需暂存的域段信息530a存入第一寄存器330a,并将关联于arp请求530的第一类指令c1推入指令队列320中。在接收完arp请求530的一个周期之后,地址解析模块300将依据第一接收结束信号相应地生成第二接收结束信号arp_ns_rcv_end。此时,由于状态机310处于忙碌状态,即,tx304正在基于从第二寄存器330b读取的域段信息520a生成及发送arp回应520b,则第一寄存器330a中的域段信息530a可被保持在第一寄存器330a中。

当rx302在接收了arp请求530,并且tx304在发送arp回应520b时,即,状态机310处于忙碌状态,地址解析模块300可生成一个信号arp-ns-2l。待tx304发送完arp回应520b后将发出完成信号tx_done给地址解析模块300,此时,地址解析模块300中同时存在完成信号tx_done及信号arp-ns-2l则位于第一寄存器330a中的域段信息530a可被移至第二寄存器330b。

待收到完成信号tx_done之后,状态机310将依序进入传输完成状态及闲置状态。然而,由于此时指令队列320中存在关联于arp请求530的第一类指令c1,因此指令队列320可发送非空状态指示cne予状态机310,以令状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出关联于arp请求530的第一类指令c1予tx304,接着,状态机310由取出状态跳转至忙碌状态。tx304可基于关联于arp请求530的第一类指令c1从第二寄存器330b取出域段信息530a,以生成arp回应530b,tx304发送完arp回应530b,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。

由上可知,在尚未完成arp回应520b的传输时,域段信息530a可持续地暂存于第一寄存器330a中,待tx304将arp回应520b传输完成之后,存储于第一寄存器330a中的域段信息530a可由第一寄存器330a转存至第二寄存器330b,tx304再从第二寄存器330b中读取域段信息530a,以产生正确、有效且可靠的arp回应530b,并将arp回应530b通过发送端总线发出。

在tx304发送arp回应530b时,rx302正在进行arp请求540的接收。当rx302接收完毕arp请求540时,rx302可发送第一接收结束信号至地址解析模块300,而地址解析模块300可将arp请求540中所需暂存的域段信息540a存入第一寄存器330a,并将关联于arp请求540的第一类指令c1推入指令队列320中。在接收完arp请求540的一个周期之后,地址解析模块300将依据第一接收结束信号相应地生成第二接收结束信号arp_ns_rcv_end。此时,由于状态机310处于忙碌状态,即,tx304正在基于从第二寄存器330b读取的域段信息530a生成及发送arp回应530b,则第一寄存器330a中的域段信息540a可被保持在第一寄存器330a中。

如先前实施例中所教示的,当rx302在接收了arp请求540,并且tx304在发送arp回应530b时,地址解析模块300可生成一个信号arp-ns-2l。待tx304发送完arp回应530b后将发出完成信号tx_done给地址解析模块300,此时,地址解析模块300中同时存在完成信号tx_done及信号arp-ns-2l,则位于第一寄存器330a中的域段信息540a可被移至第二寄存器330b。

待收到完成信号tx_done之后,状态机310将依序进入传输完成状态及闲置状态。然而,由于此时指令队列320中存在关联于arp请求540的第一类指令c1,因此指令队列320可发送非空状态指示cne予状态机310,以令状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出关联于arp请求540的第一类指令c1予tx304,接着,状态机310由取出状态跳转至忙碌状态。tx304可基于关联于arp请求540的第一类指令c1从第二寄存器330b取出域段信息540a,以生成arp回应540b,tx304发送完arp回应540b,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。

由上可知,在尚未完成arp回应530b的传输时,域段信息540a可持续地暂存于第一寄存器330a中,待tx304将arp回应530b的传输完成之后,存储于第一寄存器330a中的域段信息540a可由第一寄存器330a转存至第二寄存器330b,一般至少经过十二个周期(两个相邻回应间的最小间隔)后,tx304可从第二寄存器330b中读取域段信息540a,以产生正确、有效且可靠的arp回应540b,并将arp回应540b通过发送端总线发出。

在tx304发送arp回应540b时,rx302正在进行ndp请求550的接收。当rx302接收完毕ndp请求550时,rx302可发送第一接收结束信号至地址解析模块300,而地址解析模块300可将ndp请求550中所需暂存的域段信息550a存入第三寄存器330c,并将关联于ndp请求550的第二类指令c2推入指令队列320中。在接收完ndp请求550的一个周期之后,地址解析模块300将依据第一接收结束信号相应地生成第二接收结束信号arp_ns_rcv_end。此时,由于状态机310处于忙碌状态,即,tx304正在基于从第二寄存器330b读取的域段信息540a生成及发送arp回应540b,则第三寄存器330c中的域段信息550a可被保持在第三寄存器330c中。

如先前实施例中所教示的,当rx302在接收了ndp请求550,并且tx304在发送arp回应540b时,地址解析模块300可生成一个信号arp-ns-2l。待tx304发送完arp回应540b后将发出完成信号tx_done给地址解析模块300,此时,地址解析模块300中同时存在完成信号tx_done及信号arp-ns-2l则位于第三寄存器330c中的域段信息550a可被移至第四寄存器330d。

待收到完成信号tx_done之后,状态机310将依序进入传输完成状态及闲置状态。然而,由于此时指令队列320中存在关联于ndp请求550的第二类指令c2,因此指令队列320可发送非空状态指示cne予状态机310,以令状态机310由闲置状态跳转至取出状态。当状态机310处于取出状态时,状态机310可发送取出指令pop以触发指令队列320弹出关联于ndp请求550的第二类指令c2予tx304,接着,状态机310由取出状态跳转至忙碌状态。tx304可基于关联于ndp请求550的第二类指令c2从第四寄存器330d取出域段信息550a,以生成ns回应550b,tx304发送完arp回应540b,会相应地发送完成信号tx_done至状态机310,以触发状态机310由忙碌状态跳转至传输完成状态,然后再跳转至闲置状态。

由上可知,在尚未完成arp回应540b的传输时,域段信息550a可持续地暂存于第三寄存器330c中,待tx304将arp回应540b的传输完成之后,存储于第三寄存器330c中的域段信息550a可由第三寄存器330c转存至第四寄存器330d,一般至少经过十二个周期(两个相邻回应间的最小间隔)后,tx304可从第四寄存器330d中读取域段信息550a,以产生正确、有效且可靠的ns回应550b,并将ns回应550b通过发送端总线发出。

综上所述,本发明提出的地址解析模块将第一类请求(例如,arp请求)及第二类请求(例如,ndp请求)的域段信息分别锁存于相应的第一类寄存器及第二类寄存器中,并在适当的时机将其取出以相应地产生正确且可靠的第一类回应(例如,arp回应)或第二类回应(例如,ns回应)。更进一步地,本发明还将第一类寄存器及/或第二类寄存器设置成多级缓存的结构,例如,第一类寄存器包括第一寄存器和第二寄存器。从而改善地址解析模块对请求作出回应的效率及可靠性。

虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求所界定者为准。

【符号说明】

10、30:网络装置

100、300:地址解析模块

102、302:接收端

104、304:发送端

200、410、420、430、440、450、510、520、530、540、550:请求

202、410b、420b、430b、440b、450b、510b、520b、530b、540b、550b、

rs:回应

204、rq:地址请求

310:状态机

320:指令队列

330a:第一寄存器

330b:第二寄存器

330c:第三寄存器

330d:第四寄存器

410a、420a、430a、440a、450a、510a、520a、530a、540a、550a:域段信息

tx_done:完成信号

arp-ns-2l:信号

arp_ns_rcv_end:信号

cne:非空状态指示

pop:取出指令

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1