基于端口的mac地址数量统计方法及其装置的制作方法

文档序号:7672559阅读:179来源:国知局
专利名称:基于端口的mac地址数量统计方法及其装置的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于端口的MAC地址数量统计方法及其装置。
背景技术
在通信网络的应用过程中,为避免一些非法用户对网络资源进行非授权访问,发送欺骗性的数据干扰网络功能等情况的发生,需要提供相应的网络安全技术,而在各种安全技术方案中,基于网络接入设备端口等物理安全技术尤其重要,如果网络接入设备没有应用相应的物理安全,其他所有的安全策略都将无法发挥相应的作用,所以物理安全是以太网交换机等网络接入设备安全的重点。目前,以太网交换机都提供了多种网络安全机制,其中基于端口的地址安全技术应用最为广泛。
基于端口的安全技术是以太网交换机对通过某个端口的数据包进行相应的控制,对不符合安全要求的数据包作丢弃处理。通常当源MAC地址没有被学习到MAC地址表时,对应该MAC地址的用户将收不到数据包,同时,该用户向外发送的数据包也将被作丢弃处理。
目前,一些以太网交换机端口安全策略中,采用了一种通过设置允许端口学习的单播MAC地址数量对接入用户进行相应的网络访问控制的网络访问控制技术,即通过控制以太网交换机端口允许接入用户的数量保证网络的安全性能。具体包括以下两种方法1、首先在以太网交换机中设置一张软MAC地址表,以便于对各个端口学习MAC地址的数量进行统计;然后禁止芯片自动学习MAC地址,并将未知MAC地址的数据包发送至CPU进行处理,最后由CPU遍历软MAC地址表统计各个端口对应的学习到的MAC地址数量;统计出各个端口学习到的MAC地址数量后,再判断端口学习到的MAC地址数量是否达到设定该端允许学习的MAC地址数量阈值,如果达到所述阈值,则禁止芯片自动学习MAC地址,这样,从该端口上来的源MAC地址便不再添加到MAC地址表中,限制了接入用户的数量,为网络安全提供了保证;如果没有达到阈值,则允许学习的MAC地址,并将新学习到的MAC地址由软件分别添加到软MAC地址表和硬MAC地址表,以保证软硬MAC地址表一致。
该方法中对端口学习到的MAC地址数量的统计需要通过建立一张软MAC地址表实现,软MAC地址表的建立占用了有限的网络接入设备(即以太网交换机)资源;且当学习新的MAC地址时,需要根据端口MAC数量是否达到阈值,决定是否将其添加到软硬MAC地址表中,浪费了网络的带宽资源;另外,该方法中没有实现动态实时统计端口的MAC地址数量,从而使得该方法的应用效果将受到一定程度的影响。同时,该方法中关闭端口的自学习功能以统计端口的MAC地址数量,将影响以太网交换机的正常工作;2、首先通过配置相应端口为锁定状态实现针对该端口已经学习到的MAC地址数量的统计,即当使能端口学习MAC地址数量限制时,端口配置为锁定状态,且MAC地址不老化,这样就能保证软件可以维持端口对应MAC地址数的计数器的值不变,再由软件来遍历硬MAC地址表,统计出端口对应的MAC地址数量;然后同软件根据实际端口学习到的MAC地址数量跟该端口允许学习到的MAC地址数量阈值进行比较,如果未达到阈值,由软件配置该端口不锁定,该端口上来的源MAC地址可以学习到硬MAC地址表中;如果达到阈值,则将该端口锁定,不允许向硬MAC地址表中添加从该端口上来的MAC地址,即丢弃由该端口进入未知源MAC地址的数据包。
该方法中通过软件配置端口锁定,使硬件不学习MAC地址表,当使能端口的MAC地址数量限制时,进行端口MAC地址数的统计需要软件遍历硬MAC地址表,所需时间较长,且占用了一定量网络带宽资源。同时,利用该方法完成端口的MAC地址数量限制功能,软、硬件需要多次交互,影响了以太网交换机的正常工作。另外,该方法与第一种方法同样未实现动态实时统计端口学习到的MAC地址数量,即无法实时体现端口的MAC地址学习数量限制功能。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种基于端口的MAC地址数量统计方法及其装置,以克服现有技术所存在的问题,并可以实时准确地统计网络接入设备端口学习到的MAC地址数量,方便了进一步需要实现网络访问控制方案。
本发明的目的是通过以下技术方案实现的本发明提供了一种基于端口的MAC地址数量统计方法,包括a、确定各种类型导致端口的MAC地址数量发生变化的情况;b、实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测;c、根据发生的导致端口的MAC地址数量发生变化的情况的类型对端口的MAC地址数量进行调整。
所述的步骤a包括a1、确定端口学习新的MAC地址;a2、确定老化端口已经学习到的MAC地址;a3、确定软件对端口的MAC地址进行添加或删除维护。
所述的步骤a1包括确定端口学习新的MAC地址,并添加至MAC地址表的空表项中;确定端口学习新的MAC地址,并覆盖MAC地址表的已经保存着MAC地址的表项。
所述的步骤a3包括确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中;确定软件向端口添加新的MAC地址,且覆盖MAC地址表的已经保存着MAC地址的表项。
所述的步骤b为采用一级流水分别对各种类型导致端口的MAC地址数量发生变化的情况进行监测。
所述的步骤b包括设定一级流水的时钟周期数,并为各时钟周期定义时钟周期序号;确定监测各种类型导致端口的MAC地址数量发生变化的情况的时钟周期的时钟周期序号;当一级流水的时钟周期运行到相应序号的时钟周期时,监测该时钟周期序号对应的相应类型导致端口的MAC地址数量发生变化的情况是否发生。
所述的步骤c包括在相应的时钟周期序号对应的时钟周期,如果确定因端口学习新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,则寄存被覆盖的MAC地址所在的端口,将被覆盖的MAC地址所在的端口的MAC地址数量减1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定端口学习新的MAC地址,并添加至MAC地址表的空表项中,或者是覆盖了MAC地址表中已经存在的MAC地址,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定老化已经学习到的MAC地址,则寄存老化的MAC地址所在的端口,将该端口的MAC地址数量减1,否则,不作处理;
在相应的时钟周期序号对应的时钟周期,如果确定因软件向端口添加新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,或者确定软件删除MAC地址表中的MAC地址,则寄存被覆盖的MAC地址所在的端口或被删除的MAC地址所在的端口,将被覆盖的MAC地址所在的端口或被删除的MAC地址所在的端口的MAC地址数量减1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1,否则,不作处理。
所述的步骤b为采用状态机实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测。
所述的步骤b包括根据各种类型导致端口的MAC地址数量发生变化的情况建立四种状态的状态机,且四个状态分别为初始状态为状态机的初始状态;学习状态学习新的MAC地址的状态;老化状态老化MAC地址的状态;软件维护状态软件对MAC地址进行添加或删除操作的状态;当发生导致端口的MAC地址数量发生变化的情况时,状态机由初始状态转入相应的状态。
所述的步骤c包括当转入学习状态时,确定端口学习新的MAC地址,当将新的MAC地址添加至MAC地址表的空表项中时,寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;当新的MAC地址覆盖MAC地址表的已经保存着MAC地址的表项时,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;当转入老化状态时,确定老化已经学习到的MAC地址,则寄存老化的MAC地址所在的端口,将该端口的MAC地址数量减1;当转入软件维护状态时,如果确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;如果确定软件向端口添加新的MAC地址,且覆盖MAC地址表的已经保存着MAC地址的表项,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;如果确定软件删除端口上已经学习到的MAC地址,则寄存该MAC地址所在的端口,并该端口的MAC地址数量减1。
本发明还提供了一种基于端口的MAC地址数量统计装置,包括端口选择电路引入各端口计数值信号的及端口选择信号,进行选择处理后输出给端口MAC地址选择计数电路;端口选择计数电路接收端口选择电路输出相应端口的端口计数值信号,根据引入的端口计数方式信号进行相应端口的MAC地址数量统计,并输出统计结果。
所述的端口选择电路为一个引入各端口计数值信号及端口选择信号的端口信号选择器,端口信号选择器根据引入的信号确定相应端口的端口计数值信号,并输出至端口计数选择器;所述的端口MAC地址计数电路进一步包括一个接收端口选择电路输出的端口计数值信号的端口计数选择器,根据端口计数选择器引入的端口计数方式信号对所述的端口计数值信号进行处理,并输出给端口计数值寄存器;
译码器引入端口选择信号,经译码处理后输出给每个端口计数值寄存器的二选一选择器,作为选择信号;端口计数值寄存器每一个端口对应一个端口计数值寄存器,分别引入端口计数选择器输出的相应端口的端口计数值,并根据译码器输出的信号确定将端口计数选择器输出的端口计数值存入相应端口对应的端口计数值寄存器中。
由上述技术方案可以看出,本发明通过由硬件实时完成网络接入设备端口学习到的MAC地址数量的统计,从而大大加快统计速度,提高了以太网交换机的性能,且利用硬件电路实现本发明可以节省大量硬件资源,优化了设计,降低成本。因此,本发明解决了软件完成学习到的MAC地址数量统计时需要处理过程繁琐的问题,简化了对网络接入设备端口学习到的MAC地址数量进行统计时的处理过程。同时,本发明不仅可以准确实时统计出网络接入设备端口学习到的MAC地址数量值,实时保证端口的安全,还可以保证对相应端口学习到的MAC地址数量的统计不会影响以太网交换机的其他功能,即利用本发明统计学习到的MAC地址的同时不影响交换机的正常工作。


图1为采用流水的方法统计端口MAC地址数量的示意图;图2为图1的时序图;图3为采用状态机的方法统计端口MAC地址数量的示意图;图4为所述的基于端口的MAC地址数量统计装置结构示意图。
具体实施例方式
本发明所述的基于端口的MAC地址数量统计方法的实质是首先,确定各种类型导致端口的MAC地址数量发生变化的情况;然后,实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测;最后,根据发生的导致端口的MAC地址数量发生变化的情况,及所述情况的类型对端口的MAC地址数量进行调整。
为实现本发明首先需要确定可导致端口的MAC地址数量发生变化的情况,基于现有的通信设备应用的相关通信技术可以知道,目前,可导致端口的MAC地址数量发生变化包括以下几种情况(1)端口学习新的MAC地址时,将导致端口的MAC地址数量发生变化,这种变化又进一步包括两种情况一种情况是端口学习新的MAC地址时,MAC地址表中存在空表项,此时,将新的MAC地址添加至MAC地址表的空表项中;另一种情况是端口学习新的MAC地址时,MAC地址表中不存在空表项,此时,需要以新的MAC地址覆盖MAC地址表中已经保存着MAC地址的表项。
(2)老化端口已经学习到的MAC地址时,将导致端口的MAC地址数量发生变化;通常在MAC地址表中除静态配置的表项外,自动学习到的MAC地址均有空闲存在时间的限制,即如果某一MAC地址在设定的时间内一直未接收或发送报文,则需要通过老化MAC地址软件将其老化掉,以保证网络中报文的正常收发,并节省MAC地址表中的空间;(3)软件对端口的MAC地址进行添加或删除维护时,将导致端口的MAC地址数量发生变化,具体包括软件向端口添加新的MAC地址时,MAC地址表中有空表项,则将新的MAC地址添加至MAC地址表的空表项中;软件向端口添加新的MAC地址时,MAC地址表中没有空表项,则以新的MAC地址覆盖MAC地址表的已经保存着MAC地址的表项;根据需要通过软件将MAC地址表中相应的MAC地址删除。
确定了通信网络中可导致端口的MAC地址发生变化的各种情况后,为实现本发明,则需要在各种可导致端口的MAC地址发生变化的情况发生时,对端口的MAC地址数量进行实时统计处理,以满足网络通信系统中限制学习MAC地址数量的需求。
下面将就如何对端口的MAC地址数量进行实时统计作进一步说明,对端口的MAC地址数量进行实时统计可以采用一级流水的方式实现,也可以采用状态机实现,其中所述的采用一级流水实现对端口MAC地址数量进行实时统计如图1和图2所示,具体包括步骤11设定一级流水处理需要的时钟周期数,通常根据时钟周期及需要的一级流水的处理时间确定一级流水处理需要的时钟周期;例如,假设时钟频率为100MHz,确定一级流水处理包括14个时钟周期,并对应时钟周期计数器计数值cnt为0-13,即对应的时钟周期序号为0-13;步骤12确定监测各种类型可导致端口的MAC地址数量发生变化的情况的时钟周期的时钟周期序号;假设如图2所示,确定在时刻T(T为自然数,且为根据需要设定),即时钟周期序号为4的时刻,此时时钟周期计数器的计数值为4,对学习新的MAC地址的情况进行监测并处理;确定在时刻T+U(U为自然数,根据需要设置)时,即时钟周期序号为7,时钟周期计数器的计数值为7时,对根据需要对MAC地址表中的MAC地址进行老化的情况进行监测并处理;确定在时刻T+J(J为自然数,根据需要设置)时,即时钟周期序号为10,时钟周期计数器的计数值为10时,对软件维护MAC地址表的情况进行监测处理;一级流水中上述时刻T、T+1、T+U、T+J、T+J+1都少于一级流水的总的时钟周期数,且T、J、U的具体数值可以根据实际情况确定,其中时刻T、T+1、T+U、T+J、T+J+1分别是指在一级流水中某个时钟周期序号,即某个时钟周期计数值,例如一级流水有20个时钟周期,T可以等于3,表示一级流水的第3个时钟周期,如图2所示,所采用的时钟频率为100MHz,一级流水包括14个时钟周期,并选择T为4,T+U为7,T+J为10;步骤13当一级流水的时钟周期运行到相应时钟周期序号的时钟周期时,监测该时钟周期序号对应的相应类型导致端口的MAC地址数量发生变化的情况是否发生,并执行步骤14进行相应的处理;例如,当一级流水的时钟处于时刻T时,监测是否学习了新的MAC地址;步骤14根据监测结果对相应端口的MAC地址数量进行实时统计,根据发生不同类型导致端口的MAC地址发生变化的情况,具体处理过程如下在时刻T,即时钟周期序号为4时,如果根据监测结果确定端口成功学习新的MAC地址,且为保存该新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,则寄存被覆盖的MAC地址所在的端口,将被覆盖的MAC地址所在的端口的MAC地址数量减1,否则,在该时刻各端口的MAC地址数量均保持不变,即不需要作任何处理;接着,在时刻T+1,即时钟周期序号为5时,如果根据监测结果确定端口成功学习新的MAC地址,无论是将新的MAC地址添加至MAC地址表的空表项中,还是覆盖了MAC地址表中已经存在的MAC地址,则寄存新的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,否则,在该时刻各端口的MAC地址数量均保持不变,即不需要作任何处理;否则,在该时刻各端口的MAC地址数量均保持不变,即不需要作任何处理;在时刻T+U,即时钟周期序号为7时,根据监测结果如果确定发生老化MAC地址表中端口已经学习到的MAC地址的情况,则寄存被老化的MAC地址所在的端口,将该端口的MAC地址数量减1,否则,在该时刻各端口的MAC地址数量保持不变,即不需要作任何处理;
在时刻T+J,即时钟周期序号为10时,根据监测结果如果确定软件向端口成功添加新的MAC地址,且为保存新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,或者根据监测结果确定软件需要成功删除MAC地址表中的某个MAC地址,则寄存被覆盖的MAC地址所在的端口,或者寄存需要删除的MAC地址所在的端口,将被覆盖的MAC地址所在的端口或者需要删除的MAC地址所在的端口的MAC地址数量减1,否则,在该时刻各端口的MAC地址数量保持不变,即不需要作任何处理;因为软件删除MAC地址表的表项的操作和添加MAC地址表的表项的操作不可能同时出现,所以可以将覆盖MAC址址表中已经存在的MAC地址的情况和删除MAC地址表中的MAC地址的情况采用一级流水中的同一时刻进行处理;接着在时刻T+J+1,即时钟周期序号为11时,根据监测结果如果确定软件向端口成功添加新的MAC地址,无论是将新的MAC地址保存至MAC地址表中的空表项,还是通过覆盖MAC地址表的已经保存着MAC地址的表项保存新的MAC地址,则寄存新的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,否则,在该时刻各端口的MAC地址数量保持不变,即不需要作任何处理;如图2所示,端口选择信号sel_port根据寄存的端口选择确定相应的端口,即在时刻T、T+1、T+U、T+J、T+J+1分别选择确定端口a、b、c、d、e,以对相应端口的MAC地址数量进行统计;counter_port_a、counter_port_b、counter_port_c、counter_port_d、counter_port_e分别对应端口a、b、c、d、e的MAC地址数量;端口计数选择信号sel_add_sub根据在时刻T、T+1、T+U、T+J、T+J+1时端口的MAC地址数量的增减,确定选择对应端口(sel_port)的MAC地址数量的加、减或不变的结果。
本发明所述的所述的基于端口的MAC地址数量统计方法还可以采用状态机实现实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测处理,如图3所示,具体为首先,根据各种类型导致端口的MAC地址数量发生变化的情况建立四种状态的状态机,且四个状态分别为初始状态为状态机的初始状态;学习状态学习新的MAC地址的状态;通常当源端口(即数据包进来的端口)对应的MAC地址数大于或等于该端口对应的MAC地址数的阈值时,该端口不允许学习且该端口进来的数据包被丢弃;否则允许该端口学习相应的MAC地址,同时也不丢弃该数据包;当允许端口学习MAC地址时,根据需要学习新的MAC地址查找MAC地址表,找到匹配表项时,再根据匹配表项的相关属性和寄存器的配置确定即将被新的MAC地址覆盖的MAC地址的端口,并寄存该端口;如果没有找到匹配表项时,则在MAC地址表中查找空表项,以保存新的MAC地址,并寄存器新的MAC地址所在的端口;在学习状态中,需要产生如下信号learn_match信号表示找到匹配表项时成功学习到新的MAC地址的信号,高电平有效;learn_match_ff信号为learn_match信号寄存一拍的值,该信号有效时,表示MAC地址表中学习了新的MAC地址;learn_nomatch信号表示没有找到匹配表项时成功学习到新的MAC地址的信号,高电平有效;老化状态老化MAC地址的状态,即确定对应MAC地址表中某个表项需要老化,并确定要老化的MAC地址的端口;该状态需要产生的信号为age_permit信号表示允许MAC地址表中某个表项老化的信号,高电平有效;软件维护状态软件对MAC地址进行添加或删除操作的状态;
确定MAC地址表中软件需要删除的表项,并执行删除操作,寄存被删除掉的端口;确定MAC地址表中找到对应软件要添加的匹配表项(将已添加的新的MAC地址覆盖匹配表项中的已经存在的MAC地址的方式保存新的MAC地址)或没有找到匹配且有空表项(将需要添加的新MAC地址添加至该空表项中),并执行添加操作,寄存添加时被覆盖的端口和要添加的端口;在软件维护状态中需要产生如下信号cpu_del_success信号表示CPU成功删除MAC地址表项的信号,高电平有效,即当硬MAC地址表中找到对应软件要删除的表项时,该信号为1;cpu_add_success信号表示CPU成功添加MAC地址表项的信号,高电平有效,即当硬MAC地址表中找到对应软件要添加的匹配表项或没有找到匹配且有空地址表项时,该信号为1。
cpu_add_success_ff信号表示为信号cpu_add_success信号寄存一拍的值;为实现状态机在各个状态转换过程中实现对相应端口的MAC地址数量进行统计,还需要产生如下信号sel_port信号表示各个状态中需要进行统计MAC地址数量的端口号,与信号sel_add_sub的时序一致在学习状态中,当learn_match为1时,寄存表项中的端口,即要被学习覆盖的端口,当learn_match_ff或learn_nomatch为1时,寄存学习的新的MAC地址对应的端口;在老化状态中,当age_permit信号有效时,寄存要被老化表项对应的被老化端口;在软件维护状态中,当信号cpu_del_success为1时,寄存被删除掉的端口,当cpu_add_success为1时,且找到了匹配表项,则寄存添加时被覆盖的端口;当cpu_add_success_ff为1时,寄存添加的新的MAC地址对应的端口;
其他情况,信号sel_port保持不变;sel_add_sub信号表示确定各个状态下进行端口的MAC地址数量统计时的加、减或不变的处理方式在学习状态中,当learn_match为1时,选择减法器的结果;当learn_match_ff或learn_nomatch为1时,选择加法器的结果;在老化状态中,当age_permit信号有效时,选择减法器的结果;在软件维护状态中,当信号cpu_del_success为1或cpu_add_success为1时,且找到了匹配表项,选择减法器的结果;当cpu_add_success_ff为1时,选择加法器的结果;其他情况,sel_add_sub信号选择不变的结果;当发生导致端口的MAC地址数量发生变化的情况时,则触发状态机由初始状态转入上述四个状态中相应的状态确定端口学习新的MAC地址时,则将状态机转入学习状态,当将新的MAC地址添加至MAC地址表的空表项中时,寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;当新的MAC地址覆盖MAC地址表的已经保存着MAC地址的表项时,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;确定老化端口已经学习到的MAC地址时,则将状态机转入老化状态,寄存老化的MAC地址所在的端口,将该端口的MAC地址数量减1;确定软件对MAC地址表进行维护时,则将状态机转入软件维护状态时,如果确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;如果确定软件向端口添加新的MAC地址,且覆盖MAC地址表的已经保存着MAC地址的表项,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;如果确定软件删除端口上已经学习到的MAC地址,则寄存该MAC地址所在的端口,并该端口的MAC地址数量减1。
如图3所示,状态机的状态转移条件说明如下IDLE(初始状态)IF(condition1)to SOFT_ADD_DEL/如果满足condition1(软件维护MAC地址表的条件),则转入软件维护状态;ELSE IF(condition2)to LEARN/否则,如果满足condition2(学习MAC地址的条件),则转入学习状态;ELSE IF(condition3)to AGE/否则,如果满足condition3(老化MAC地址的条件),则转入老化状态;ELSE to IDLE/否则,保持初始状态;AGE(老化状态)IF(not finishing aging-operation)to AGE/如果未完成执行对相应MAC地址的老化操作,继续保持老化状态;ELSE to IDLE/否则,转入初始状态;SOFT_ADD_DEL(软件维护状态)IF(not finishing software-operation)to SOFT_ADD_DEL/如果未完成执行相应软件维护操作,继续保持软件维护状态;ELSE to IDLE/否则,转入初始状态;LEARN(学习状态)IF(not finishing learning-operation)to LEARN/如果未完成执行MAC地址学习操作,继续保持学习状态;ELSE to IDLE/否则,转入初始状态。
基于上述本发明所述的方法,本发明还提供了一种基于端口的MAC地址数量统计装置,该装置的具体实现方式如图4所示,包括端口选择电路引入各端口计数值信号的及端口选择信号,进行选择处理后输出给端口MAC地址计数电路;所述的端口选择电路为一个引入各端口计数值信号及端口选择信号的端口信号选择器,端口信号选择器根据引入的信号确定相应端口的端口计数值信号,并输出至端口计数选择器;端口选择计数电路接收端口选择电路输出相应端口的端口计数值信号,根据引入的端口计数方式信号进行相应端口的MAC地址数量统计,并输出统计结果,所述的端口MAC地址计数电路进一步包括一个接收端口选择电路输出的端口计数值信号的端口计数选择器,根据端口计数选择器引入的端口计数方式信号对所述的端口计数值信号进行处理,并输出给端口计数值寄存器;译码器引入端口选择信号,经译码处理后输出给每个端口计数值寄存器的二选一选择器,作为选择信号,以便于每个端口选择确定是以当前的端口的MAC地址数量统计数值作为端口MAC地址数量的统计结果,还是以端口计数选择器输出的端口的MAC地址数量作为端口中MAC地址数量的统计结果;端口计数值寄存器每一个端口对应一个端口计数值寄存器,分别引入端口计数选择器输出的相应端口的端口计数值,并根据译码器输出的信号确定将端口计数选择器输出的端口计数值存入相应端口对应的端口计数值寄存器中。
图2中的端口计数值寄存器counter_port_0~counter_port_X,X为交换机的端口数减一,每个端口计数值寄存器的宽度为Hbit,且MAC地址表的深度为2H,H值由用户根据需要确定。
如图2所示,根据sel_port信号从端口counter_port_0~coumter_port_X中选取一个赋值给信号counter_port;然后送给加法器、减法器和端口计数选择器;端口计数选择器根据信号sel_add_sub选取信号counter_add、counter_sub、countre_port其中之一赋值给信号counter_sel;根据sel_port信号经译码器译码后的值选择counter_sel赋值给端口计数值寄存器counter_port_0~coumter_port_X中的一个,从而完成动态实时维护各个端口的MAC地址数量。
由此可以看出,上述电路由五级逻辑电路和一级时序电路组成,整个电路共用了一个加法器和减法器,且仅使用了与交换机端口数相同数量的寄存器,因此,本发明所述的装置结构简单,易于实施。
权利要求
1.一种基于端口的MAC地址数量统计方法,其特征在于包括a、确定各种类型导致端口的MAC地址数量发生变化的情况;b、实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测;c、根据发生的导致端口的MAC地址数量发生变化的情况的类型对端口的MAC地址数量进行调整。
2.根据权利要求1所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤a包括a1、确定端口学习新的MAC地址;a2、确定老化端口已经学习到的MAC地址;a3、确定软件对端口的MAC地址进行添加或删除维护。
3.根据权利要求2所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤a1包括确定端口学习新的MAC地址,并添加至MAC地址表的空表项中;确定端口学习新的MAC地址,并覆盖MAC地址表的已经保存着MAC地址的表项。
4.根据权利要求2或3所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤a3包括确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中;确定软件向端口添加新的MAC地址,且覆盖MAC地址表的已经保存着MAC地址的表项。
5.根据权利要求1或2所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤b为采用一级流水分别对各种类型导致端口的MAC地址数量发生变化的情况进行监测。
6.根据权利要求5所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤b包括设定一级流水的时钟周期数,并为各时钟周期定义时钟周期序号;确定监测各种类型导致端口的MAC地址数量发生变化的情况的时钟周期的时钟周期序号;当一级流水的时钟周期运行到相应序号的时钟周期时,监测该时钟周期序号对应的相应类型导致端口的MAC地址数量发生变化的情况是否发生。
7.根据权利要求6所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤c包括在相应的时钟周期序号对应的时钟周期,如果确定因端口学习新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,则寄存被覆盖的MAC地址所在的端口,将被覆盖的MAC地址所在的端口的MAC地址数量减1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定端口学习新的MAC地址,并添加至MAC地址表的空表项中,或者是覆盖了MAC地址表中已经存在的MAC地址,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定老化已经学习到的MAC地址,则寄存老化的MAC地址所在的端口,将该端口的MAC地址数量减1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定因软件向端口添加新的MAC地址需要覆盖MAC地址表的已经保存着MAC地址的表项,或者确定软件删除MAC地址表中的MAC地址,则寄存被覆盖的MAC地址所在的端口或被删除的MAC地址所在的端口,将被覆盖的MAC地址所在的端口或被删除的MAC地址所在的端口的MAC地址数量减1,否则,不作处理;在相应的时钟周期序号对应的时钟周期,如果确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1,否则,不作处理。
8.根据权利要求1或2所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤b为采用状态机实时对各种类型导致端口的MAC地址数量发生变化的情况进行监测。
9.根据权利要求8所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤b包括根据各种类型导致端口的MAC地址数量发生变化的情况建立四种状态的状态机,且四个状态分别为初始状态为状态机的初始状态;学习状态学习新的MAC地址的状态;老化状态老化MAC地址的状态;软件维护状态软件对MAC地址进行添加或删除操作的状态;当发生导致端口的MAC地址数量发生变化的情况时,状态机由初始状态转入相应的状态。
10.根据权利要求9所述的基于端口的MAC地址数量统计方法,其特征在于所述的步骤c包括当转入学习状态时,确定端口学习新的MAC地址,当将新的MAC地址添加至MAC地址表的空表项中时,寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;当新的MAC地址覆盖MAC地址表的已经保存着MAC地址的表项时,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;当转入老化状态时,确定老化已经学习到的MAC地址,则寄存老化的MAC地址所在的端口,将该端口的MAC地址数量减1;当转入软件维护状态时,如果确定软件向端口添加新的MAC地址,且添加至MAC地址表的空表项中,则寄存新的MAC地址所在的端口,将该端口的MAC地址数量加1;如果确定软件向端口添加新的MAC地址,且覆盖MAC地址表的已经保存着MAC地址的表项,则分别寄存新的MAC地址所在的端口和被覆盖的MAC地址所在的端口,将新的MAC地址所在的端口的MAC地址数量加1,将被覆盖的MAC地址所在的端口的MAC地址数量减1;如果确定软件删除端口上已经学习到的MAC地址,则寄存该MAC地址所在的端口,并该端口的MAC地址数量减1。
11.一种基于端口的MAC地址数量统计装置,其特征在于包括端口选择电路引入各端口计数值信号的及端口选择信号,进行选择处理后输出给端口MAC地址选择计数电路;端口选择计数电路接收端口选择电路输出相应端口的端口计数值信号,根据引入的端口计数方式信号进行相应端口的MAC地址数量统计,并输出统计结果。
12.根据权利要求11所述的基于端口的MAC地址数量统计装置,其特征在于所述的端口选择电路为一个引入各端口计数值信号及端口选择信号的端口信号选择器,端口信号选择器根据引入的信号确定相应端口的端口计数值信号,并输出至端口计数选择器;所述的端口MAC地址计数电路进一步包括一个接收端口选择电路输出的端口计数值信号的端口计数选择器,根据端口计数选择器引入的端口计数方式信号对所述的端口计数值信号进行处理,并输出给端口计数值寄存器;译码器引入端口选择信号,经译码处理后输出给每个端口计数值寄存器的二选一选择器,作为选择信号;端口计数值寄存器每一个端口对应一个端口计数值寄存器,分别引入端口计数选择器输出的相应端口的端口计数值,并根据译码器输出的信号确定将端口计数选择器输出的端口计数值存入相应端口对应的端口计数值寄存器中。
全文摘要
本发明涉及一种基于端口的MAC地址数量统计方法。该方法针对各种类型可导致端口的MAC地址数量发生变化的情况分别进行监测,并根据发生的导致端口的MAC地址数量发生变化的情况的类型对端口的MAC地址数量进行调整。本发明通过由硬件实时完成网络接入设备端口学习到的MAC地址数量的统计,从而大大加快统计速度,提高了以太网交换机的性能,且利用硬件电路实现本发明可以节省大量硬件资源,优化了设计,降低成本。同时,本发明不仅可以准确实时统计出网络接入设备端口学习到的MAC地址数量值,实时保证端口的安全,还可以保证对相应端口学习到的MAC地址数量的统计不会影响以太网交换机的其它功能,即利用本发明统计学习到的MAC地址的同时不影响交换机的正常工作。
文档编号H04L12/08GK1567870SQ0314560
公开日2005年1月19日 申请日期2003年6月24日 优先权日2003年6月24日
发明者夏世长, 马敬兴, 王稷, 陈华彬 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1