[发明专利]一种实现ARP协议IP核的方法无效
申请号: | 200810059861.1 | 申请日: | 2008-02-22 |
公开(公告)号: | CN101237415A | 公开(公告)日: | 2008-08-06 |
发明(设计)人: | 陈金龙;韩雁;霍明旭;张艳;廉玉平 | 申请(专利权)人: | 浙江大学 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
代理公司: | 杭州求是专利事务所有限公司 | 代理人: | 张法高 |
地址: | 310027浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 arp 协议 ip 方法 | ||
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发送缓冲区中,并用中断方式通知主机,请求发送一条报文,结束报文接收和响应的过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810059861.1/1.html,转载请声明来源钻瓜专利网。