具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
网络设备的多个转发槽位中的各转发芯片进行源MAC学习和报文转发过程均一致,因此在本发明中,以任一转发芯片来详细描述源MAC学习和报文转发过程。
参见图1,图1为本发明报文源MAC学习流程图。具体步骤为:
步骤101,转发芯片接收单播报文,确定该单播报文的源MAC地址未记录于FDB表,则将该单播报文的源MAC地址和入接口信息记录于FDB表。
步骤102,转发芯片将该单播报文和入接口信息广播到同一VLAN内的其他转发芯片。
下面本发明通过具体实施例分别从FDB表中的MAC地址表项学习、同步、老化、清除来详细说明。报文进入网络设备时,都会被分配VLAN,因此转发芯片收到的报文携带VLAN,在进行源MAC地址学习或目的MAC地址学习时,都是在FDB表中对应VLAN下匹配的,同现有技术没有任何区别,因此在本文里不再详细描述对VLAN的判断。下面分别从转发芯片接收用户侧发来的单播报文如何进行源MAC学习;以及接收其他转发芯片发来的单播报文如何进行源MAC学习来描述。
参见图2,图2为本发明具体实施例中用户侧发来的单播报文进行源MAC学习流程图。其具体步骤为:
步骤201,转发芯片接收单播报文。
本步骤中,转发芯片收到用户侧发来的单播报文,生成控制字,控制字中包括该单播报文的入接口信息,该入接口信息包括接收报文的物理芯片号和该芯片的芯片号。
步骤202,如果转发芯片确定该单播报文的源MAC地址未记录于FDB表,则将该单播报文的源MAC地址和入接口信息记录于FDB表。执行步骤206。
步骤203,如果转发芯片确定FDB表中源MAC地址对应的出接口信息与该单播报文的入接口信息不一致,则将该单播报文的入接口信息更新到FDB表中源MAC地址对应的出接口信息。执行步骤206。
步骤204,转发芯片确定FDB表记录的源MAC地址对应的出接口信息与该单播报文的入接口信息一致,且FDB表未记录该单播报文的目的MAC地址。执行步骤206。
步骤205,如果转发芯片确定FDB表记录的源MAC地址对应的出接口信息与该单播报文的入接口信息一致,且FDB表记录该单播报文的目的MAC地址时,将该单播报文和入接口信息直接转发。本流程结束。
本步骤中,将该单播报文和入接口信息转发给目的转发芯片,入接口信息以控制字的形式同单播报文一起转发。
步骤206,转发芯片将该单播报文和入接口信息广播到同一VLAN内的其他转发芯片。
本步骤中,入接口信息以控制字的形式同单播报文一起转发。
参见图3,图3为本发明具体实施例中其他转发芯片发来的单播报文进行源MAC学习流程图。具体步骤为:
步骤301,转发芯片接收单播报文和入接口信息。
本步骤中,转发芯片接收到其他转发芯片发来的单播报文和该单播报文的入接口信息。此时,不生成控制字,直接查找FDB表,进行源MAC学习。。
步骤302,如果转发芯片确定该单播报文的源MAC地址未记录于FDB表,则将该单播报文的源MAC地址和收到的入接口信息记录于FDB表。执行步骤306。
步骤303,如果转发芯片确定FDB表中源MAC地址对应的出接口信息与收到的入接口信息不一致,则将该入接口信息更新到FDB表中源MAC地址对应的出接口信息。执行步骤306。
步骤304,如果转发芯片确定FDB表记录的源MAC地址对应的出接口信息与收到的入接口信息一致,且FDB表未记录该单播报文的目的MAC地址。执行步骤306。
步骤305,如果转发芯片确定FDB表记录的源MAC地址对应的出接口信息与收到的入接口信息一致,且FDB表记录该单播报文的目的MAC地址时,将该单播报文和收到的入接口信息直接转发。本流程结束。
本步骤中,将该单播报文和收到入接口信息转发给目的转发芯片,入接口信息以控制字的形式同单播报文一起转发。
步骤306,转发芯片将该单播报文和收到的入接口信息广播到同一VLAN内的其他转发芯片。
本步骤中转发芯片广播报文时不再向给其发送该单播报文的转发芯片广播该报文。
由于接收到控制字中携带入接口信息,因此原始的转发芯片的芯片号和物理端口号在下行学习过程中可以被正确获得。该过程同现有技术,这里不再赘述。
本实施例中转发芯片还设置FDB表中各MAC地址的老化时间,删除该FDB表中到达老化时间的MAC地以及重置FDB表中与单播报文的源MAC地址一致的MAC地址的老化时间,即转发芯片确定收到的单播报文中的源MAC地址已记录再FDB表中,则转发芯片将FDB表中该芯片的老化时间重置。
本实施例中MAC地址表项老化过程各转发芯片单独处理,每个转发芯片为自身的FDB表中的MAC地址表项设置老化时间。在老化时间内,如果收到的单播报文携带的源MAC地址与FDB表中的MAC地址匹配,则将对应的MAC地址表项刷新;如果未收到,则启动老化流程,将自身FDB表中对应的MAC地址表项删除。
本实施例中转发芯片接收协议状态变化通知,并删除FDB表中所有MAC地址。在CPU获得协议状态变化时,CPU触发转发芯片采用Flush all的方式将FDB表清除一遍。这里的协议状态变化如加入端口、退出端口等。
基于同上述方法同样的发明构思,本发明还提出了一种MAC地址表项更新网络设备。参见图4,图4为本发明具体实施例MAC表项更新网络设备结构图。该网络设备包括多个转发芯片,任一该转发芯片包括:存储单元401、接收单元402、处理转发单元403;
存储单元401,与处理转发单元403相连,用于存储各VLAN的FDB表;该FDB表存储MAC地址表项;
接收单元402,与处理转发单元403相连,用于接收单播报文;
处理转发单元403,用于确定所述单播报文的源MAC地址未记录于存储单元401存储的FDB表,则将该单播报文的源MAC地址和入接口信息记录于存储单元401的FDB表中;并将该单播报文和入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,
处理转发单元403,进一步用于确定如果FDB表中源MAC地址对应的出接口信息与该单播报文的入接口信息不一致,则将该单播报文的入接口信息更新到FDB表中源MAC地址对应的出接口信息;并将该单播报文和入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,
处理转发单元403,进一步用于确定FDB表记录的源MAC地址对应的出接口信息与该单播报文的入接口信息一致,且FDB表未记录所述单播报文的目的MAC地址;则将该单播报文和入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,
接收单元402,进一步用于接收到入接口信息;
处理转发单元403,进一步用于确定单播报文的源MAC地址未记录于FDB表,则将该单播报文的源MAC地址和收到的入接口信息记录于FDB表,并将该单播报文和收到入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,
处理转发单元403,进一步用于确定FDB表中源MAC地址对应的出接口信息与收到的入接口信息不一致,则将收到入接口信息更新到FDB表中源MAC地址对应的出接口信息,并将该单播报文和收到的入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,
处理转发单元403,进一步用于确定FDB表记录的源MAC地址对应的出接口信息与收到的入接口信息一致,且FDB表未记录所述单播报文的目的MAC地址,则将该单播报文和收到的入接口信息广播到同一VLAN内的其他转发芯片。
较佳地,该转发芯片进一步包括:老化单元404;
老化单元404,与存储单元401相连,用于设置FDB表中各MAC地址的老化时间,删除FDB表中到达老化时间的MAC地以及重置FDB表中与单播报文的源MAC地址一致的MAC地址的老化时间。
较佳地,该转发芯片进一步包括:清除单元405;
清除单元405,与存储单元401相连,用于接收协议状态变化通知并删除FDB表中所有MAC地址。
其中,该协议状态变化通知可以是协议状态变化引起的CPU触发;转发芯片的清除单元405可以采用Flush all的方式将FDB表的MAC地址表项清除。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明在转发芯片收到单播报文时,在FDB表中未查找到该单播报文的源MAC地址、或者源MAC地址对应的出接口信息同该单播报文的入接口信息不一致,或者未匹配到目的MAC地址时,将该单播报文和入接口信息广播到所在网络设备中的其他转发芯片,其他转发芯片也自动学习源MAC地址。如果转发芯片收到单播报文和入接口信息时,同样在本地的FDB表中查找,进行源MAC学习。各芯片的老化流程单独处理,由于各芯片单独对源MAC进行学习,因此学习速度同报文转发或广播的速度。
本发明每个转发芯片的FDB表中MAC地址表项自动维护,无需CPU干预,大大减轻CPU的负担,由于学习速度为在线级别,线卡板之间不会出现时序问题;当协议状态变化时流量切换时间和处于广播阶段的时间都不会变长。因此,本发明不需要借助CPU的干预,自动、高效地维护FDB表的MAC地址表项。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。