首页> 中国专利> 一种实现ARP协议IP核的方法

一种实现ARP协议IP核的方法

摘要

本发明涉及一种实现的ARP协议IP核的实现方法。现有的ARP协议功能大多与操作系统绑定,不易于硬件集成。本发明实现的IP核为上层协议(或上层模块)提供ARP协议中的IP地址与MAC地址映射关系的查询、管理ARP表项、提供快速老化机制、发送ARP请求、自动回复其它主机的ARP请求、管理查询超时。本发明中的ARP协议IP核带有Wishbone标准片内总线接口,在系统集成过程中,很容易实现即插即用,具有良好的可移植性。同时,本发明集成了ARP协议所有功能,减轻了主机管理ARP协议相关信息的负担。

著录项

  • 公开/公告号CN101237415A

    专利类型发明专利

  • 公开/公告日2008-08-06

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN200810059861.1

  • 申请日2008-02-22

  • 分类号H04L12/56(20060101);H04L29/06(20060101);

  • 代理机构33200 杭州求是专利事务所有限公司;

  • 代理人张法高

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2023-12-17 20:32:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-04-16

    未缴年费专利权终止 IPC(主分类):H04L12/56 授权公告日:20101013 终止日期:20130222 申请日:20080222

    专利权的终止

  • 2010-10-13

    授权

    授权

  • 2008-10-01

    实质审查的生效

    实质审查的生效

  • 2008-08-06

    公开

    公开

说明书

技术领域

本发明属于集成电路设计领域,特别涉及用以太网传输数据的系统芯片(SoC)设计,具体是一种实现ARP协议IP核的方法。

背景技术

ARP是Address Resolution Protocol的缩写,即地址解析协议。对于网络通信,IP地址只是主机在网络层以上所使用的地址。若要将网络层中的数据发送给网络另一端的主机,还要将数据中的IP地址转换为MAC地址后才能在网络中传输。

由于IP地址有32位,而局域网的硬件地址是48位,因此它们之间不存在简单的映射关系。地址解析协议ARP就是用于解决这个问题。

另外,集成电路工艺的不断进步使得在一块芯片中实现一个系统的方案成为可能。现代系统芯片(SoC)的设计瓶颈不再是制造能力的局限,而是芯片的设计和验证能力跟不上的系统芯片所容纳的逻辑门数的增长。因此,复用事先设计好的模块,通过模块集成的新的SoC设计方法被提出,并逐渐取代了原来专用集成电路(ASIC)的设计方法。这些事先设计的模块就被称为IP核(Intellectual Property)。IP核必须事先验证其功能的正确性,同时性能也要达到规定指标。IP核的可复用性和可移植性也是衡量其设计好坏的一个重要标准,一个通用的接口(Interface)是保证IP核可复用和和可移植的必要条件。

发明内容

本发明的目的是提供一种能够根据ARP标准协议(RFC 826协议),实现ARP协议IP核的方法。

本发明方法包括:一、管理和查询ARP缓存;二、接收ARP报文并根据接收到的报文类型做出响应。

ARP协议IP核与系统中的其它模块的接口包括“wishbone总线”和“中断”两种方式。当本IP核应用系统中的单元以wishbone总线协议相互通信时,本IP核为从单元(slave),任何一次通信必须由系统中其它的主单元(master)通过写各种控制指令到本IP核来发起(以下将系统中的主单元统称为“主机”),而本IP核根据指令中的信息做出响应。当本IP核需要与系统中的主机通信时,将信息按一定格式进行编码,并写入中断状态寄存器中,同时置位中断输出。该中断输出用于通知主机读取中断状态寄存器中的信息,并根据其中的信息做出相应的处理。

当主机要发送网络数据包时,首先要确认报文的目的IP地址对应的MAC地址是否已经在本发明中的ARP缓存中。

本发明管理和查询ARP缓存的步骤包括:

1、主机通过Wishbone总线将查询MAC-IP地址对的命令写入寄存器中,该命令包括待查询的IP地址和本次查询的标志符;提取命令中的这两个信息,分别存入待查询IP地址寄存器和待查询IP地址的标识符寄存器中,并产生开始查询的使能信号;

2、将IP查询指针寄存器清零,使之指向ARP缓存的开始位置;

3、若ARP缓存满寄存器的值为1,则比较IP查询指针寄存器中的值和ARP缓存的总深度,若前者的值大于后者,则转到步骤7,即在ARP缓存中没有找到主机请求的IP地址;若前者的值小于等于后者,则转到步骤4;若ARP缓存满寄存器的值为0,则比较IP查询指针寄存器的值和ARP缓存边界指针寄存器的值,若前者大于等于后者,则转到步骤7,即在ARP缓存中没有找到主机请求的IP地址;若前者小于后者,则转到步骤4;

4、以IP查询指针寄存器的值为地址,读取ARP缓存中IP地址队列中的IP地址的低16位,将该值与待查询IP地址寄存器的低16位比较,若两者相同则转步骤5;若两者不相等,则将IP查询指针寄存器的值加1,并更新到该寄存器中,然后转到步骤3;

5、以IP查询指针寄存器的值为地址,读取ARP缓存中IP地址队列中的IP地址的高16位,将该值与待查询IP地址寄存器的高16位比较,若两者相同则转步骤6,即找到主机请求的IP地址;若两者不相等,则将IP查询指针寄存器的值加1,并更新到该寄存器中,然后转到步骤3;

6、将以IP查询指针寄存器的值为基地址,从ARP缓存的MAC地址队列中读出MAC地址,并写入到MAC缓存中;然后以中断方式通知主机,表明在ARP缓存中找到了MAC-IP地址对应关系,查询结束。其中,在读取ARP缓存中的MAC地址时,分三次、每次16位,从MAC地址的高位开始连续读取,并将读出的地址按顺序写入MAC缓存中。

7、将待查询IP地址寄存器的值写入IP查询缓存中,并启动与待查询IP地址标志符对应的查询超时倒计数器,同时更新有效待查询IP地址向量寄存器,将该寄存器中与待查询IP地址标志符对应的位设为1,然后转到步骤8;其中,超时倒计数器初值为T0,计数的步长为1秒,计数的基准由外部输入。超时倒计数器用于完成ARP查询超时功能,ARP查询超时指:当以太网中的某一台设备向该网络广播查询另外一台设备的物理地址时,在规定时间内没有收到待查询设备的响应。ARP查询超时功能与ARP缓存查询过程相互独立。在IP查询缓存中的每一个IP都有一个唯一的计时器与之相对应,当计时器溢出时(倒计时器计时达0),在IP查询缓存中与该计时器对应的IP地址将被删除,并将有效待查询IP地址向量寄存器中与该IP地址对应的位复位到0,同时通过中断通知主机,表明待查询的IP不存在于当前网络中。若在超时之前收到待查询IP所对应设备发送的ARP响应报文,则停止超时计数器,将计时器复位,并通过中断通知主机,表明找到待查询IP的MAC地址,同时将MAC地址转移到MAC缓存中。然后将有效待查询IP地址向量寄存器中与该IP地址对应的位复位到0。若未超时,则ARP查询超时功能单元将继续等待。

8、按照ARP协议格式,将报文中的数据按照报文格式要求依次写入发送缓冲区,并以中断方式通知主机,表示有一条ARP报文需要发送,查询结束。

本发明的另一个功能是接收ARP报文并对报文进行响应。ARP报文包括其它设备发送的ARP请求报文和其它设备对本设备请求的响应报文。报文接收和响应的具体步骤包括:

1、主机通过wishbone接口将数据包写入ARP报文接收缓存区中,同时接收报文并提取报文中的关键信息,并存入相应的寄存器中,然后判断报文的目的IP地址是否与本地的IP地址相同,若不相同则转步骤8,若相同则转步骤2;关键信息包括:报文类型、目的IP地址、源IP地址和源MAC地址;

2、根据报文类型寄存器的值判断报文的类型,若报文为ARP响应报文或是ARP请求报文,则转步骤3;若既不是ARP响应报文也不是ARP请求报文则转步骤8;

3、将源IP地址和源MAC地址寄存器中的值分别存入ARP缓存中的IP地址队列和MAC地址队列,存入的位置为ARP缓存边界指针寄存器所指定的位置。若ARP缓存边界指针寄存器当前指向ARP缓存的最后一个位置,则将ARP缓存满寄存器设为1,同时将ARP缓存边界指针寄存器复位到0;若ARP缓存边界指针寄存器当前不是指向ARP缓存的最后一个位置,则将ARP缓存边界指针寄存器加1后,更新到该寄存器中。即本发明中ARP缓存按照先进先出的方式进行更新。另外,本发明还提供快速老化的命令。主机可用通过wishbone接口写入快速老化的命令,本发明收到该命令后,复位ARP缓存边界指针和ARP缓存满这两个寄存器,使ARP缓存回到初始状态。

4、根据报文类型寄存器的值判断报文的类型,若为ARP请求报文则转步骤10,若为ARP响应报文转步骤5;

5、将有效待查询IP地址向量寄存器的值复制到当前待查询IP地址向量寄存器中;

6、若当前待查询IP地址向量寄存器为0,即本地没有有效的待查询IP地址,结束报文接收和响应的过程;若当前待查询IP地址向量寄存器不是0,则通过首1检测器找到当前待查询IP地址向量首个1在向量中的位置,并将该位置的值存入当前IP查询缓存地址寄存器中。其中首1检测器的输入为二进制的当前待查询IP地址向量,输出为该向量中首个1在向量中的位置;

7、以当前IP查询缓存地址寄存器的值为地址,读取IP查询缓存中存储的IP地址的低16位,将该值与源IP地址寄存器的低16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,并转到步骤6;若从IP查询缓存中读取的值与源IP地址寄存器的低16位相等,则转到步骤8;

8、以当前IP查询缓存地址寄存器的值为地址,读取IP查询缓存中存储的IP地址的高16位,将该值与源IP地址寄存器的高16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,并转到步骤6;若从IP查询缓存中读取的值的高16位与源IP地址寄存器的高16位相等,则转到步骤9;

9、停止IP查询缓存中与当前IP查询缓存地址寄存器相对应的计时器,将计时器复位,并将源MAC地址寄存器的值存入MAC缓存中,然后通过中断方式通知主机,找到一条待查询的MAC-IP地址对应关系,结束报文接收和响应的过程;

10、若为ARP请求报文,将报文按照协议规定的格式写入ARP发送缓冲区中,并用中断方式通知主机,请求发送一条报文,结束报文接收和响应的过程。

本发明中的ARP协议IP核带有Wishbone标准片内总线接口,在系统集成过程中,很容易实现即插即用,具有良好的可移植性。同时,本发明集成了ARP协议所有功能,减轻了主机管理ARP协议相关信息的负担。

附图说明

图1本发明的内部系统结构;

图2本发明中查询ARP缓存的流程图;

图3本发明中响应ARP报文的流程图。

具体实施方式

本发明的内部结构如图1所示。下面结合发明内容中的操作步骤,描述本发明中各个部分的具体实现及其管理方法。

Wishbone接口

Wishbone接口部分负责控制命令或数据的写入和读出,在wishbone总线通信中,本发明处于Slave地位。在wishbone总线协议中,任何一次的通信都只能有Master单元发起,而Slave单元来响应,为了提供Slave单元控制的灵活性,在ARP IP核中加入中断输出信号,以便ARPIP核在作为Slave时仍能及时通知Master其工作状态。Wishbone接口中还包含一个寄存器阵列,它用于将Master写入的控制命令转换为相应的控制信号;该寄存器阵列同时记录了ARP IP核的工作状态和中断状态寄存器等信息,可以供Master查询。

图2为查询ARP缓存的流程图,具体内容是:

ARP缓存的结构和边界指针

ARP缓存记录了本地已经存在的MAC-IP地址对。它由两部分组成,一部分用于存储IP地址(称为IP地址队列),另一部分用于储存MAC地址(称为MAC地址队列),两者成对存在,列表的这两个部分被映射为两个寄存器队列(Register File)。队列中有个一个指针,称为ARP缓存边界指针,该指针指向有效地址的边界。初始化时,指针指向队列的开始位置,随着新的MAC-IP地址队存入寄存器队列,该指针自动向下移动,直到指向队列的最后一个位置,随后该指针重新回到队列的开始位置。ARP缓存还有一个ARP缓存满寄存器,该寄存器用于表明ARP缓存是否已经填满。ARP缓存当前状态由ARP缓存边界指针和ARP缓存满这两个寄存器一起来表征。在响应主机查询某一个IP地址请求的过程中,若ARP缓存已满,则搜索的过程需从ARP缓存队列的开始一直到队列的结尾;若ARP缓存未满,则一旦搜索的地址到达ARP缓存边界指针所指的位置,即表明搜索过程结束。

ARP缓存的查询方法

ARP缓存阵列的宽度为16bit,队列的深度可以根据实际应用环境调整,在本发明的一个实施例中,ARP列表可以储存64组MAC-IP地址对。当有查询MAC-IP地址对的请求时,本发明以待查找的IP地址为关键字,在IP地址寄存器队列中顺序查找该IP是否已在ARP缓存中。IP地址寄存器队列的宽度为16bits,对于32bits的IP地址,储存时,将IP地址的低16bit存入低地址中,高16比特存入高地址中。在搜索过程中,本发明首先取出IP寄存器队列中的首个IP地址的低16bit与待查询的IP低16bit比较,若两者不相等,则直接检测队列中的下一个有效IP地址;若IP地址寄存器队列中的IP地址的低16bit与待查询的IP地址的低16bit相等,则继续读取IP地址队列中的高16位,并与待查询IP地址的高16位比较,若两者相等,则说明在ARP缓存中找到待查询的IP地址。若两者不相同,则检测队列中的下一个有效IP地址。

ARP缓存的更新方法

ARP缓存采用先进先出方式进行更新。当MAC和IP地址寄存器队列存满时,新的地址对将覆盖第一个IP-MAC对,之后依次类推,即新的MAC-IP地址对总是存入ARP缓存边界指针所指的位置。另外,本发明为主机提供快速老化ARP列表的命令,当主机写入该命令时,本发明将通过复位ARP缓存边界指针和ARP缓存满这两个寄存器来清空ARP列表。不定时的对ARP缓存进行快速老化可以使ARP列表最大程度上反映网络中MAC-IP地址对应情况。快速老化对整个ARP缓存起作用,这使得在实现ARP缓存是不需要记录每个MAC-IP的生存时间,降低了实现过程的复杂度和资源开销。另外,不定时的快速老化ARP列表可以有效的控制ARP列表的有效长度,减少在ARP列表中查找某一IP地址的时间。

IP查询缓存的结构和管理方法

在接受到主机查询某一IP地址的MAC地址是否存在的请求后,若检索ARP缓存IP地址队列中的所有有效项仍没有找到待查询的IP地址,本发明将待查询IP地址寄存器的值写入IP查询缓存中。IP查询缓存为SRAM结构,宽度为16bits。本发明要求主机在查询IP地址时,为每一次查询指定一个唯一的标志符(ID)(存储在待查询IP地址的标识符寄存器中),查询结果也是和该ID捆绑。IP查询缓存以该ID为基地址存储待查询的IP,同时启动与该ID对应的超时计数器,计数的间隔为1秒。与此同时,本发明更新有效待查询IP地址向量寄存器,即将该寄存器中与待查询IP地址标志符对应的位设为1。

在本发明的实施例中,若在4秒内从网络中找到待查询IP地址的MAC地址,则超时计数器自动停止并复位。当计时超过4秒仍没有收到与待查询IP对应的ARP响应报文,则认为ARP查询超时,本发明将清除在IP查询缓存中的超时IP地址,并以IP地址所对应的ID通知主机该IP地址在当前网络中不可达。同时,有效待查询IP地址向量寄存器中与该IP地址对应的位将被复位到0。

IP查询缓存的查询方法

当收到指向本地的ARP响应报文时,本发明首先判断源IP地址是否是本地待查询的IP地址。若在IP查询缓存的有效IP地址中找到一个与源IP地址相同的IP地址,则说明源IP地址确实是本地要查找的IP地址。此时,将源MAC地址寄存到MAC缓存中。若未在IP查询缓存中找到源IP地址,则不做处理,并直接返回。在查询IP查询缓存时,首先寄存有效待查询IP地址向量寄存器的值到当前待查询IP地址向量寄存器。通过首1检测器找到当前待查询IP地址向量首个1在向量中的位置,然后以该位置所对应的值作为地址,读取IP查询缓存中的IP地址的低16bit,与源IP地址寄存器的低16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,然后以相同的方法检查下一个有效的IP地址;若两者的低16位相等,则继续读取IP查询缓存中存储的IP地址的高16位,将该值与源IP地址寄存器的高16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,然后查找下一个有效的IP地址;若两者相等,则说明源IP地址确实是本地要查找的IP地址。

图3为响应ARP报文的流程图,具体内容是:

接收ARP报文并处理

本发明的另一个功能是接收ARP报文。ARP报文包括其它设备发送的ARP请求报文和其它设备对本地请求的响应报文。接收报文时,首先判断报文的目的IP地址是否与本地IP地址相同,若不是,则直接丢弃该报文;若目的IP地址为本地IP,而报文的类型既不是ARP请求报文也不是ARP响应报文,则同样丢弃该报文。若报文为ARP请求报文或ARP响应报文中的一种,则将报文中的源MAC地址和源IP地址存入本地的ARP缓存中。

若接收到的报文为指向本地的ARP响应报文,则以源IP地址为关键字在IP查询缓存中查找该IP是否是本地查找的IP地址。若源IP地址确实为本地待查询的IP地址,则将源MAC地址寄存到MAC缓存中,并通过中断通知主机找到一个待查询的MAC-IP地址对。

若接收到的报文为指向本地的ARP请求报文,则组织ARP响应报文,将报文按照协议规定的格式写入ARP发送缓冲区中,并用中断通知主机,表明请求发送一条报文。

本发明中的寄存器

本发明所使用到的外部寄存器及其功能如表1所示。

  寄存器名  地址  寄存器宽度  访问权限  描述  CheckIP1  0x00  16  R/W  待查询的IP(高16位)  CheckIP0  0x01  16  R/W  待查询的IP(低16位)  PHYCheckCont  0x02  16  R/W  查询控制命令寄存器  ARPStartEnd  0x03  16  R/W  用于表明接收数据报时的  开始和结束  ARPFIFO  0x04  16  R/W  发送/接收缓冲区映射寄存  器。当将数据写入该地址  时,数据将有报文接收模  块处理(ARPRCVProcessor  模块);当读该地址时,  待发送报文中的数据将从  ARPFIFO模块中依次取出  ARPInt  0x05  16  R/W  中断状态寄存器  ARPStatus  0x06  16  R/W  ARP工作状态寄存器,用  于查询ARP模块工作是否  正常

表1

对寄存器的操作如下:

当主机要发送一条网络报文时,首先将目的IP地址写入本发明的寄存器中(CheckIP1和CheckIP2寄存器),然后写入启动查询IP-MAC地址对是否存在的命令(PHYCheckCont寄存器)。

当本地收到一条ARP报文时,主机将收到的报文通过Wishbone接口写入本发明中ARPFIFOReg寄存器中(其中,ARPStartEnd寄存器用于控制接接收到的数据报的写入过程,ARPFIFOReg寄存器直接映射为ARP模块的接收缓冲区和发送缓冲区),此时本发明启动解码功能,从报文中提取有用信息。

当本发明需要和其它模块交互信息时,将信息按照预定的方式编码并写入中断状态寄存器中(ARPInt),同时置位中断信号线。

本发明中的内部寄存器及其功能如表2所示。

  寄存器名  寄存器  宽度  功能描述  待查询IP地  址  32 存放主机要求查询的IP地址  待查询IP地  址的标识符  4 存放主机要求查询的IP地址的标志符  IP查询指针  6 用于指示ARP缓存的当前查找位置  ARP缓存满  1 标示ARP缓存是否已经存满  ARP缓存边  界指针  6 在ARP缓存未满时,用于指示ARP缓存有效地址的边 界;ARP缓存满时,该寄存器只用于指明新的MAC-IP地 址对应该存储的位置  有效待查询  IP地址向量  16 标示IP查询缓存中有效IP地址的二进制向量,向量中为1 的位对应一个有效的待查询IP地址  当前待查询  IP地址向量  16 ARP工作状态寄存器,用于查询ARP模块工作是否正常  当前IP查询  缓存地址  4 当前使用的IP查询缓存地址  报文类型  8 存放接收到的报文的类型  目的IP地址  32 存放收到的报文的目的IP地址  源IP地址  32 存放收到的报文的源IP地址  源MAC地址  48 存放收到的报文的源MAC地址

表2

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号