发明名称 一种实现ARP协议IP核的方法
摘要 本发明涉及一种实现的ARP协议IP核的实现方法。现有的ARP协议功能大多与操作系统绑定,不易于硬件集成。本发明实现的IP核为上层协议(或上层模块)提供ARP协议中的IP地址与MAC地址映射关系的查询、管理ARP表项、提供快速老化机制、发送ARP请求、自动回复其它主机的ARP请求、管理查询超时。本发明中的ARP协议IP核带有Wishbone标准片内总线接口,在系统集成过程中,很容易实现即插即用,具有良好的可移植性。同时,本发明集成了ARP协议所有功能,减轻了主机管理ARP协议相关信息的负担。
申请公布号 CN101237415A 申请公布日期 2008.08.06
申请号 CN200810059861.1 申请日期 2008.02.22
申请人 浙江大学 发明人 陈金龙;韩雁;霍明旭;张艳;廉玉平
分类号 H04L12/56(2006.01);H04L29/06(2006.01) 主分类号 H04L12/56(2006.01)
代理机构 杭州求是专利事务所有限公司 代理人 张法高
主权项 1、一种实现ARP协议IP核的方法,包括管理和查询ARP缓存、接收ARP报文并根据接收到的报文类型做出响应,其特征在于:管理和查询ARP缓存的步骤包括:a、主机通过Wishbone总线将查询MAC-IP地址对的命令写入寄存器中,该命令包括待查询的IP地址和本次查询的标志符;提取命令中的这两个信息,分别存入待查询IP地址寄存器和待查询IP地址的标识符寄存器中,并产生开始查询的使能信号;b、将IP查询指针寄存器清零,使之指向ARP缓存的开始位置;c、若ARP缓存满寄存器的值为1,则比较IP查询指针寄存器中的值和ARP缓存的总深度,若前者的值大于后者,则转到步骤g,即在ARP缓存中没有找到主机请求的IP地址;若前者的值小于等于后者,则转到步骤d;若ARP缓存满寄存器的值为0,则比较IP查询指针寄存器的值和ARP缓存边界指针寄存器的值,若前者大于等于后者,则转到步骤g,即在ARP缓存中没有找到主机请求的IP地址;若前者小于后者,则转到步骤d;d、以IP查询指针寄存器的值为地址,读取ARP缓存中IP地址队列中的IP地址的低16位,将该值与待查询IP地址寄存器的低16位比较,若两者相同则转步骤e;若两者不相等,则将IP查询指针寄存器的值加1,并更新到该寄存器中,然后转到步骤c;e、以IP查询指针寄存器的值为地址,读取ARP缓存中IP地址队列中的IP地址的高16位,将该值与待查询IP地址寄存器的高16位比较,若两者相同则转步骤f,即找到主机请求的IP地址;若两者不相等,则将IP查询指针寄存器的值加1,并更新到该寄存器中,然后转到步骤c;f、将以IP查询指针寄存器的值为基地址,从ARP缓存的MAC地址队列中读出MAC地址,并写入到MAC缓存中;然后以中断方式通知主机,表明在ARP缓存中找到了MAC-IP地址对应关系,查询结束;g、将待查询IP地址寄存器的值写入IP查询缓存中,并启动与待查询IP地址标志符对应的查询超时倒计数器,同时更新有效待查询IP地址向量寄存器,将该寄存器中与待查询IP地址标志符对应的位设为1,然后转到步骤h;其中,超时倒计数器初值为T0,计数的步长为1秒,计数的基准由外部输入;i、按照ARP协议格式,将报文中的数据按照报文格式要求依次写入发送缓冲区,并以中断方式通知主机,表示有一条ARP报文需要发送,查询结束;接收ARP报文并根据接收到的报文类型做出响应的具体步骤包括:j、主机通过wishbone接口将数据包写入ARP报文接收缓存区中,同时接收报文并提取报文中的关键信息,并存入相应的寄存器中,然后判断报文的目的IP地址是否与本地的IP地址相同,若不相同则转步骤q,若相同则转步骤k;所述的关键信息包括报文类型、目的IP地址、源IP地址和源MAC地址;k、根据报文类型寄存器的值判断报文的类型,若报文为ARP响应报文或是ARP请求报文,则转步骤1;若既不是ARP响应报文也不是ARP请求报文则转步骤q;l、将源IP地址和源MAC地址寄存器中的值分别存入ARP缓存中的IP地址队列和MAC地址队列,存入的位置为ARP缓存边界指针寄存器所指定的位置;若ARP缓存边界指针寄存器当前指向ARP缓存的最后一个位置,则将ARP缓存满寄存器设为1,同时将ARP缓存边界指针寄存器复位到0;若ARP缓存边界指针寄存器当前不是指向ARP缓存的最后一个位置,则将ARP缓存边界指针寄存器加1后,更新到该寄存器中;m、根据报文类型寄存器的值判断报文的类型,若为ARP请求报文则转步骤s,若为ARP响应报文转步骤n;n、将有效待查询IP地址向量寄存器的值复制到当前待查询IP地址向量寄存器中;o、若当前待查询IP地址向量寄存器为0,即本地没有有效的待查询IP地址,结束报文接收和响应的过程;若当前待查询IP地址向量寄存器不是0,则通过首1检测器找到当前待查询IP地址向量首个1在向量中的位置,并将该位置的值存入当前IP查询缓存地址寄存器中;其中首1检测器的输入为二进制的当前待查询IP地址向量,输出为该向量中首个1在向量中的位置;p、以当前IP查询缓存地址寄存器的值为地址,读取IP查询缓存中存储的IP地址的低16位,将该值与源IP地址寄存器的低16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,并转到步骤o;若从IP查询缓存中读取的值与源IP地址寄存器的低16位相等,则转到步骤q;q、以当前IP查询缓存地址寄存器的值为地址,读取IP查询缓存中存储的IP地址的高16位,将该值与源IP地址寄存器的高16位比较,若两者不相等,则将当前待查询IP地址向量寄存器中首个1复位到0,并转到步骤o;若从IP查询缓存中读取的值的高16位与源IP地址寄存器的高16位相等,则转到步骤r;r、停止IP查询缓存中与当前IP查询缓存地址寄存器相对应的计时器,将计时器复位,并将源MAC地址寄存器的值存入MAC缓存中,然后通过中断方式通知主机,找到一条待查询的MAC-IP地址对应关系,结束报文接收和响应的过程;s、若为ARP请求报文,将报文按照协议规定的格式写入ARP发送缓冲区中,并用中断方式通知主机,请求发送一条报文,结束报文接收和响应的过程。
地址 310027浙江省杭州市西湖区浙大路38号