网络转发设备的快速转发方法 技术领域 本发明涉及一种网络转发设备的转发方法, 更具体地, 涉及一种网络转发设备通 过五元组关键信息和五元组附属信息进行快速转发的方法。
背景技术
图 1 是现有技术的网络转发设备的二层转发、 三层转发和三层隧道转发的流程图。 以下将参照图 2、 图 3 和图 4 对图 1 所示的二层转发、 三层转发和三层隧道转发的 流程图进行描述。
图 2 是示出图 1 所示的现有技术的网络转发设备的二层转发的示图。 如图 2 所示, 网络设备 1 与网络设备 2 通过二层交换机互联, 其中, 二层交换机与网络设备 1 相连的接口 为接口 1, 与网络设备 2 相连的接口为接口 2。网络设备 1 向网络设备 2 发送报文的步骤如 下:
网络设备 1 向网络设备 2 发送 IP( 互联网协议 ) 报文, 目的 IP 为网络设备 2 的 IP 即 1.1.1.2, 源 IP 为自己即 1.1.1.1。网络设备 1 发现目的 IP 与自己网段相同, 则无需查 找路由, 用目的 IP 查找本地 ARP( 地址解析协议 ) 表项, 得到目的 IP 对应的 MAC( 媒体访问 控制 ) 即 MAC2。网络设备 1 对 IP 报文添加以太网封装并进行转发, 源 MAC 为自己即 MAC1, 目的 MAC 为 MAC2。
交换机接收到所述报文, 在操作 S210, 判断目的 MAC 是否为本设备 MAC。如果目的 MAC 不是自己, 则在操作 S220 使用目的 MAC 查找交换机 MAC 表。如果所述查找成功, 得到出 接口为接口 2, 则在操作 S230 将报文 ( 不做任何修改 ) 从接口 2 转发, 如果查找不成功, 则 二层转发失败。
随后, 网络设备 2 接收报文。
网络设备 2 向网络设备 1 发送报文, 即上述过程的逆向处理, 在此不作详细描述。
图 3 是示出图 1 所示的现有技术的网络转发设备的三层转发的示图。如图 3 所 示, 网络设备 1 通过路由器 1、 路由器 2 与网络设备 2 相连, 其中, 路由器 1 与网络设备 1 相 连的接口为接口 1, 路由器 1 与路由器 2 相连的接口为接口 2, 路由器 2 与路由器 1 相连的 接口为接口 3, 路由器 2 与网络设备 2 相连的接口为接口 4。网络设备 1 向网络设备 2 发送 报文的步骤如下 :
网络设备 1 向网络设备 2 发送 IP 报文, 源 IP 为自己即 1.1.1.2, 目的 IP 为网络设 备 2 的 IP 即 3.3.3.1。网络设备 1 发现目的 IP 与自己 IP 不在同一网段, 则用目的 IP 查 找本地路由表, 得到下一跳 IP 即 1.1.1.1 ; 再用下一跳查找 ARP 表项得到 MAC2。网络设备 1 对 IP 报文添加以太网封装并进行转发, 源 MAC 为自己即 MAC1, 目的 MAC 为下一跳 MAC 即 MAC2。
路由器 1 从接口 1 接收到网络设备 1 发送的报文, 在操作 S210, 判断目的 MAC 是否 为本设备 MAC。如果目的 MAC 为接口 1 的 MAC, 则进行三层转发逻辑处理, 即, 在操作 S310,
路由器 1 检查报文目的 IP 是否为本设备 IP, 如果不是路由器 1 自己的 IP, 则路由器 1 在操 作 S320 用报文目的 IP(3.3.3.1) 查找路由表。如果查找不成功, 则路由失败, 如果所述查 找成功, 得到下一跳为 2.2.2.2, 出接口为接口 2, 则路由器 1 在操作 S330 用下一跳查找 ARP 表项。如果查找不成功, 则 ARP 失败, 如果所述查找成功, 得到 MAC 为 MAC4, 则路由器 1 在操 作 S340 将报文源 MAC 替换为接口 2 的 MAC 地址即 MAC3, 将报文目的 MAC 地址替换为 MAC4, 从接口 2 转发。
路由器 2 从接口 3 接收到路由器 1 转发的报文, 进行与上述相同的操作, 并最后将 报文源 MAC 替换为接口 4 的 MAC 地址即 MAC5, 将报文目的 MAC 地址替换为 MAC6, 从接口 4 转发。
随后, 网络设备 2 接收路由器 2 转发的报文。
网络设备 2 向网络设备 1 发送报文, 即上述过程的逆向处理, 在此不作详细描述。
图 4 是示出图 1 所示的现有技术的网络转发设备的三层隧道转发的示图。三层隧 道主要包括 IP 隧道、 GRE( 通用路由封装 ) 隧道、 Capwap 隧道等。隧道有两层 IP 头, 外层 IP 头由隧道发起者加上, 源 IP 为隧道发起者的 IP, 目的 IP 为隧道终结者的 IP ; 内层 IP 头, 源 IP 和目的 IP 为报文真实源 IP 和目的 IP。 如图 4 所示, 网络设备 1 通过路由器 1、 隧道、 路由器 2 与网络设备 2 相连, 路由器 1 与路由器 2 建立隧道, 隧道外层 IP 头的源 IP 为路由器 1 接口 2 的 IP, 隧道外层 IP 头的 目的 IP 为路由器 2 接口 3 的 IP。其中, 路由器 1 上与网络设备 1 相连的接口为接口 1, 路 由器 1 上与隧道相连的接口为接口 2, 路由器 2 上与隧道相连的接口为接口 3, 路由器 2 上 与网络设备 2 相连的接口为接口 4。网络设备 1 向网络设备 2 发送报文的步骤如下 :
网络设备 1 向网络设备 2 发送 IP 报文, 源 IP 为自己即 1.1.1.2, 目的 IP 为网络设 备 2 的 IP 即 3.3.3.1。网络设备 1 发现目的 IP 与自己 IP 不在同一网段, 则用目的 IP 查 找本地路由表, 得到下一跳 IP 即 1.1.1.1 ; 再用下一跳查找 ARP 表项得到 MAC2。网络设备 1 对 IP 报文添加以太网封装并进行转发, 源 MAC 为自己即 MAC 1, 目的 MAC 为下一跳 MAC 即 MAC2。
路由器 1 从接口 1 收到网络设备 1 发送的报文, 在操作 S210, 判断目的 MAC 是否 为本设备 MAC。如果目的 MAC 为接口 1 的 MAC, 则进行三层转发处理, 即, 在操作 S310, 路由 器 1 检查报文目的 IP 是否为本设备 IP, 如果不是路由器 1 自己的 IP, 则路由器 1 在操作 S320 使用报文目的 IP(3.3.3.1) 查找路由表。参照图 4 路由器 1 的路由表, 除了 4.4.4.4 和 1.1.1.2 以外的 IP 均按照目的 IP 为 0.0.0.0 处理, 诸如, 查找 3.3.3.1 可得到出接口为 隧道 1。 如果查找不成功, 则路由失败, 如果所述查找成功, 通过在图 4 所示的路由器 1 的路 由表中查找报文目的 IP(3.3.3.1) 得到出接口为隧道 1, 则路由器 1 在操作 S410 剥去报文 以太网封装, 加隧道封装 ( 即, 添加外层 IP 头 ), 外层 IP 头的源 IP 为 2.2.2.1, 目的 IP 为 4.4.4.4, 随后操作返回 S310。 在操作 S310, 路由器 1 检查隧道报文的外层目的 IP 是否为本 设备 IP, 如果不是路由器 1 自己的 IP, 则路由器 1 在操作 S320 使用所述外层目的 IP 查找 路由表。 如果查找成功, 通过在图 4 所示的路由器 1 的路由表中查找报文目的 IP(4.4.4.4) 得到下一跳为 2.2.2.2, 出接口为接口 2, 则路由器 1 在操作 S330 再使用下一跳 2.2.2.2 查 找 ARP 表项。如果查找成功, 得到下一跳 MAC 为 MAC4, 则路由器 1 在操作 S340 对隧道报文 添加以太网封装, 将报文源 MAC 替换为接口 2 的 MAC 地址即 MAC3, 将报文目的 MAC 地址替换
为 MAC4, 从接口 2 转发。
经过隧道的转发之后, 路由器 2 从接口 3 接收到转发的隧道报文, 在操作 S210, 判 断外层目的 MAC 是否为本设备 MAC。如果外层目的 MAC 为接口 3 的 MAC, 则进行三层转发处 理, 即, 在操作 S310, 路由器 2 检查报文外层目的 IP 是否为本设备 IP, 如果是路由器 2 自己 的 IP, 则送上层处理, 即, 路由器 2 在操作 S420 判断接收到的报文是否是隧道报文, 如果不 是隧道报文, 则进行主机协议处理。如果是隧道报文, 则路由器 2 在操作 S430 剥去报文以 太网封装和隧道封装, 得到内层 IP 报文, 随后操作返回 S310。在操作 S310, 路由器 2 检查 报文的内层目的 IP 即 3.3.3.1 是否为本设备 IP, 如果不是路由器 2 自己的 IP, 则路由器 2 在操作 S320 使用所述内层目的 IP 查找路由表。 如果查找成功, 在图 4 所示的路由器 2 的路 由表中查找报文目的 IP(3.3.3.1) 得到下一跳为 3.3.3.1, 出接口为接口 4, 则路由器 2 在 操作 S330 再使用所述下一跳查找 ARP 表项, 得到下一跳 MAC 为 MAC8。在操作 S340, 路由器 2 对报文添加以太网封装, 将报文源 MAC 替换为接口 4 的 MAC 地址即 MAC7, 将报文目的 MAC 替换为 MAC8, 从接口 4 转发。
随后, 网络设备 2 接收路由器 2 转发的报文。
网络设备 2 向网络设备 1 发送报文, 即上述过程的逆向处理, 在此不作详细描述。
在现有技术的网络转发设备二层转发逻辑、 三层转发逻辑和三层隧道转发逻辑 中, 网络转发设备需要频繁地查找 MAC 表、 路由表、 ARP 表项等, 转发效率低, 性能压力大。发明内容
本发明的目的在于提供一种网络转发设备通过五元组关键信息和五元组复数信 息进行快速转发的方法, 从而能够完成报文一次学习、 多次转发, 加快了报文转发效率。
本发明提供了一种网络转发设备的快速转发方法, 包括 : 由网络转发设备接收报 文; 确定所述报文的目的 MAC 是否是所述网络转发设备的 MAC ; 当目的 MAC 是所述网络转发 设备的 MAC 时, 确定所述报文的目的 IP 是否是所述网络转发设备的 IP ; 当目的 IP 不是所 述网络转发设备的 IP 时, 提取所述报文的五元组关键信息并查找快速转发表, 确定是否能 查到与所述五元组关键信息相应的五元组附属信息 ; 如果查找到与所述五元组关键信息相 应的五元组附属信息, 则根据五元组附属信息对所述报文进行以太网封装或隧道封装并将 以太网封装或隧道封装的报文转发, 其中, 所述快速转发表存储在所述网络转发设备中并 包括多个快速转发表项, 每个快速转发表项对应于一个报文并包括报文的五元组关键信息 和五元组附属信息, 其中, 五元组关键信息包括 : 下行 IP, 对应上行报文的目的 IP 或者下行 报文的源 IP ; 上行 IP, 对应上行报文的源 IP 或者下行报文的目的 IP ; 下行端口, 对应上行 报文的目的端口或者下行报文的源端口 ; 上行端口, 对应上行报文的源端口或者下行报文 的目的端口 ; 协议类型, 对应报文 IP 头中的协议类型, 其中, 五元组附属信息包括 : 隧道类 型, 指示快速转发表项对应的报文的隧道类型 ; 下行 IP, 对应上行报文的隧道目的 IP 或者 下行报文的隧道源 IP ; 上行 IP, 对应上行报文的隧道源 IP 或者下行报文的隧道目的 IP ; 下 行 MAC, 对应上行报文的目的 MAC 或者下行报文的源 MAC ; 上行 MAC, 对应上行报文的源 MAC 或者下行报文的目的 MAC。
所述快速转发方法还包括 : 如果没有查找到与所述五元组关键信息相应的五元组 附属信息, 则在快速转发表中注册所述五元组关键信息, 使用所述报文的目的 IP 查找所述网络转发设备的路由表, 获得所述报文的出接口和下一跳 ; 当所述出接口不是隧道时, 使用 所述报文的下一跳查找所述网络转发设备的 ARP 表项, 获得所述报文下一跳的 MAC ; 使用所 述报文的出接口的 MAC 和下一跳的 MAC 对所述报文进行以太网封装, 并将所述报文的出接 口的 MAC 和下一跳的 MAC 写入所述报文的五元组附属信息并将以太网封装的报文转发。
所述快速转发方法, 其中, 所述快速转发表支持自动老化机制。
所述快速转发方法, 其中, 所述五元组附属信息还包括协议转换信息。
所述快速转发方法, 其中, 在进行所述查找时, 仅查找五元组附属信息完整的快速 转发表项。
提供了一种网络转发设备的快速转发方法, 包括 : 由网络转发设备接收报文 ; 确 定所述报文的目的 MAC 是否是所述网络转发设备的 MAC ; 当目的 MAC 是所述网络转发设备 的 MAC 时, 确定所述报文的目的 IP 是否是所述网络转发设备的 IP ; 当目的 IP 不是所述网络 转发设备的 IP 时, 提取所述报文的五元组关键信息并查找快速转发表, 确定是否能查到与 所述五元组关键信息相应的五元组附属信息 ; 如果没有查找到与所述五元组关键信息相应 的五元组附属信息, 则在快速转发表中注册所述五元组关键信息, 使用所述报文的目的 IP 查找所述网络转发设备的路由表, 获得所述报文的出接口 ; 当所述出接口是隧道时, 剥去所 述报文的以太网封装, 使用所述隧道先前配置的外层 IP 头的源 IP 和目的 IP 来对所述报文 进行隧道封装, 并将所述外层 IP 头的源 IP 和目的 IP 添加到所述报文的五元组附属信息 ; 使用所述报文的外层 IP 头的目的 IP 查找所述网络转发设备的路由表, 获得所述报文的出 接口和下一跳 ; 当所述出接口不是隧道时, 使用所述报文的下一跳查找所述网络转发设备 的 ARP 表项, 获得所述报文下一跳的 MAC ; 使用所述报文的出接口的 MAC 和下一跳的 MAC 对 所述报文进行以太网封装, 并将所述报文的出接口的 MAC 和下一跳的 MAC 写入所述报文的 五元组附属信息 ; 将以太网封装的报文转发, 其中, 所述快速转发表存储在所述网络转发设 备中并包括多个快速转发表项, 每个快速转发表项对应于一个报文并包括报文的五元组关 键信息和五元组附属信息, 其中, 五元组关键信息包括 : 下行 IP, 对应上行报文的目的 IP 或 者下行报文的源 IP ; 上行 IP, 对应上行报文的源 IP 或者下行报文的目的 IP ; 下行端口, 对 应上行报文的目的端口或者下行报文的源端口 ; 上行端口, 对应上行报文的源端口或者下 行报文的目的端口 ; 协议类型, 对应报文 IP 头中的协议类型, 其中, 五元组附属信息包括 : 隧道类型, 指示快速转发表项对应的报文的隧道类型 ; 下行 IP, 对应上行报文的隧道目的 IP 或者下行报文的隧道源 IP ; 上行 IP, 对应上行报文的隧道源 IP 或者下行报文的隧道目 的 IP ; 下行 MAC, 对应上行报文的目的 MAC 或者下行报文的源 MAC ; 上行 MAC, 对应上行报文 的源 MAC 或者下行报文的目的 MAC。
所述快速转发方法, 其中, 所述快速转发表支持自动老化机制。
所述快速转发方法, 其中, 所述五元组附属信息还包括协议转换信息。
所述快速转发方法, 其中, 在进行所述查找时, 仅查找五元组附属信息完整的快速 转发表项。
提供了一种网络转发设备的快速转发方法, 包括 : 由网络转发设备接收报文 ; 确 定所述报文的目的 MAC 是否是所述网络转发设备的 MAC ; 当目的 MAC 是所述网络转发设备 的 MAC 时, 确定所述报文的目的 IP 是否是所述网络转发设备的 IP ; 当目的 IP 是所述网络转 发设备的 IP 时, 确定所述报文是否是隧道报文 ; 当所述报文是隧道报文时, 剥去所述报文的以太网封装和隧道封装, 获得所述报文的五元组关键信息, 并查找快速转发表, 确定是否 能查到与所述五元组关键信息相应的五元组附属信息 ; 如果查找到与所述五元组关键信息 相应的五元组附属信息, 则根据五元组附属信息对所述报文进行以太网封装并将以太网封 装的报文转发, 其中, 所述快速转发表存储在所述网络转发设备中并包括多个快速转发表 项, 每个快速转发表项对应于一个报文并包括报文的五元组关键信息和五元组附属信息, 其中, 五元组关键信息包括 : 下行 IP, 对应上行报文的目的 IP 或者下行报文的源 IP ; 上行 IP, 对应上行报文的源 IP 或者下行报文的目的 IP ; 下行端口, 对应上行报文的目的端口或 者下行报文的源端口 ; 上行端口, 对应上行报文的源端口或者下行报文的目的端口 ; 协议 类型, 对应报文 IP 头中的协议类型, 其中, 五元组附属信息包括 : 隧道类型, 指示快速转发 表项对应的报文的隧道类型 ; 下行 IP, 对应上行报文的隧道目的 IP 或者下行报文的隧道源 IP ; 上行 IP, 对应上行报文的隧道源 IP 或者下行报文的隧道目的 IP ; 下行 MAC, 对应上行报 文的目的 MAC 或者下行报文的源 MAC ; 上行 MAC, 对应上行报文的源 MAC 或者下行报文的目 的 MAC。
所述快速转发方法还包括 : 如果没有查找到与所述五元组关键信息相应的五元组 附属信息, 则在快速转发表中注册所述五元组关键信息, 判断所述报文的目的 IP 是否是所 述网络转发设备的 IP ; 当所述报文的目的 IP 不是所述网络转发设备的 IP 时, 使用所述报 文的目的 IP 查找所述网络转发设备的路由表, 获得所述报文的出接口和下一跳 ; 当所述出 接口不是隧道时, 使用所述报文的下一跳查找所述网络转发设备的 ARP 表项, 获得所述报 文下一跳的 MAC ; 使用所述报文的出接口的 MAC 和下一跳的 MAC 对所述报文进行以太网封 装, 并将所述报文的出接口的 MAC 和下一跳的 MAC 写入所述报文的五元组附属信息并将以 太网封装的报文转发。
所述快速转发方法, 其中, 所述快速转发表支持自动老化机制。
所述快速转发方法, 其中, 所述五元组附属信息还包括协议转换信息。
所述快速转发方法, 其中, 在进行所述查找时, 仅查找五元组附属信息完整的快速 转发表项。
提供了一种网络转发设备的快速转发方法, 包括 : 由网络转发设备接收报文 ; 提 取所述报文的五元组关键信息并查找快速转发表, 确定是否能查到与所述五元组关键信息 相应的五元组附属信息 ; 如果查找到与所述五元组关键信息相应的五元组附属信息, 则根 据五元组附属信息对所述报文进行以太网封装或隧道封装 ; 如果没有查找到与所述五元组 关键信息相应的五元组附属信息, 则在快速转发表中注册所述五元组关键信息, 并在转发 报文的过程中完善与所述五元组关键信息相应的五元组附属信息, 其中, 所述快速转发表 存储在所述网络转发设备中并包括多个快速转发表项, 每个快速转发表项对应于一个报文 并包括报文的五元组关键信息和五元组附属信息, 其中, 五元组关键信息包括 : 下行 IP, 对 应上行报文的目的 IP 或者下行报文的源 IP ; 上行 IP, 对应上行报文的源 IP 或者下行报文 的目的 IP ; 下行端口, 对应上行报文的目的端口或者下行报文的源端口 ; 上行端口, 对应上 行报文的源端口或者下行报文的目的端口 ; 协议类型, 对应报文 IP 头中的协议类型, 其中, 五元组附属信息包括 : 隧道类型, 指示快速转发表项对应的报文的隧道类型 ; 下行 IP, 对应 上行报文的隧道目的 IP 或者下行报文的隧道源 IP ; 上行 IP, 对应上行报文的隧道源 IP 或 者下行报文的隧道目的 IP ; 下行 MAC, 对应上行报文的目的 MAC 或者下行报文的源 MAC ; 上行 MAC, 对应上行报文的源 MAC 或者下行报文的目的 MAC。
将在接下来的描述中部分阐述本发明另外的方面和 / 或优点, 还有一部分通过描 述将是清楚的, 或者可以经过本发明的实施而得知。 附图说明
通过下面结合附图进行的详细描述, 本发明的上述和其它目的和特点将会变得更 加清楚, 其中 :
图 1 是现有技术的网络转发设备的二层转发、 三层转发和三层隧道转发的流程 图;
图 2 是示出图 1 所示的现有技术的网络转发设备的二层转发的示图 ;
图 3 是示出图 1 所示的现有技术的网络转发设备的三层转发的示图 ;
图 4 是示出图 1 所示的现有技术的网络转发设备的三层隧道转发的示图 ;
图 5 是根据本发明示例性实施例的网络转发设备的二层转发、 三层快速转发和三 层隧道快速转发的流程图 ;
图 6 是示出图 5 所示的根据本发明示例性实施例的网络转发设备的三层快速转发 的示图 ; 图 7 是示出图 5 所示的根据本发明示例性实施例的网络转发设备的三层隧道快速 转发的示图 ;
图 8 是示出根据本发明示例性实施例的应用快速转发的示例的示图。
具体实施方式
现在, 详细描述本发明的实施例, 其示例在附图中表示, 其中, 相同的标号始终表 示相同的部件。
IP 地址可以唯一确定一台网络设备, 协议和端口号可以唯一确定一台网络设备的 应用程序。假设网络设备 1 和网络设备 2 通信, 只要具备以下五个元素就可以确定唯一网 络设备 1 和网络设备 2 的数据流 : 源 IP、 目的 IP、 协议类型、 源端口和目的端口。
本发明在收包驱动中保存一个快速转发表, 快速转发表包括多条快速转发表项, 每条快速转发表项包括唯一确定一条数据流的五元组的五元组关键信息以及转发所需的 五元组附属信息。表 1 是根据本发明示例性实施例的快速转发表项的示例。应该了解, 除 了表 1 所示出的之外, 快速转发表项中的五元组附属信息还可以包括其它快速转发信息, 诸如协议转换信息等。
表 1 根据本发明示例性实施例的快速转发表项 快速转发表分为两部分 : 五元组关键信息, 即业务流的五元组 ; 五元组附属信息,包括用于加 / 去隧道封装的隧道转发信息和用于报文二层转发的二层转发信息。
对于五元组关键信息 ( 即, 隧道报文的内层五元组, 或者普通三层报文 ( 非隧道报 文 ) 的五元组 ), 下行 IP 对应上行报文的目的 IP 或者下行报文的源 IP ; 上行 IP 对应上行 报文的源 IP 或者下行报文的目的 IP ; 下行端口对应上行报文的目的端口或者下行报文的 源端口 ; 上行端口对应上行报文的源端口或者下行报文的目的端口 ; 协议类型对应报文 IP 头中的协议类型。
对于隧道转发信息, 隧道类型指示本快速转发表项对应的数据流的隧道类型 ( 诸 如, 否 ( 即, 不是隧道 )、 加隧道、 去隧道等 ), 所述隧道可以是 IPIP 隧道、 GRE 隧道等, 但本 发明不限于此 ; 下行 IP 对应上行报文的隧道目的 IP 或者下行报文的隧道源 IP, 仅当隧道 类型指示加隧道时存在 ; 上行 IP 对应上行报文的隧道源 IP 或者下行报文的隧道目的 IP, 仅当隧道类型指示加隧道时存在。
对于二层转发信息, 下行 MAC 对应上行报文的目的 MAC 或者下行报文的源 MAC ; 上 行 MAC 对应上行报文的源 MAC 或者下行报文的目的 MAC。
在使用五元组关键信息查找快速转发表时, 仅对五元组附属信息完整的快速转发 表项进行查找, 只有五元组关键信息而五元组附属信息还不完整的快速转发表项不参与所 述查找。 图 5 是根据本发明示例性实施例的网络转发设备的二层转发、 三层快速转发和三 层隧道快速转发的流程图。
以下将参照图 6 和图 7 对图 5 所示的三层快速转发和三层隧道快速转发的流程图 进行描述。
图 6 是示出图 5 所示的根据本发明示例性实施例的网络转发设备的三层快速转发 的示图。如图 6 所示, 网络设备 1 通过路由器 1、 路由器 2 与网络设备 2 相连, 其中, 路由器 1 与网络设备 1 相连的接口为接口 1, 路由器 1 与路由器 2 相连的接口为接口 2, 路由器 2 与 路由器 1 相连的接口为接口 3, 路由器 2 与网络设备 2 相连的接口为接口 4。网络设备 1 向 网络设备 2 发送报文的步骤如下 :
网络设备 1 向网络设备 2 发送 HTTP 请求报文, 协议类型是 TCP, 源端口是 4630, 目的端口是 80, 源 IP 为自己即 1.1.1.2, 目的 IP 为网络设备 2 的 IP 即 3.3.3.1。网络设 备 1 发现目的 IP 与自己 IP 不在同一网段, 故用目的 IP 查找本地路由表, 得到下一跳 IP 即 1.1.1.1 ; 再用下一跳查找 ARP 表项得到 MAC2。网络设备 1 对 IP 报文添加以太网封装并进 行转发, 源 MAC 为自己即 MAC1, 目的 MAC 为下一跳 MAC 即 MAC2。
路由器 1 从接口 1 接收到网络设备 1 发送的报文, 在操作 S610, 判断目的 MAC 是 否为本设备 MAC。由于目的 MAC 为接口 1 的 MAC, 故路由器 1 在操作 S620 检查报文目的 IP 即 3.3.3.1 是否为本设备 IP。由于不是路由器 1 自己的 IP, 故路由器 1 在操作 S630 提取 五元组关键信息并查找快速转发表, 确定是否能查到与所述五元组关键信息对应的完整的 五元组附属信息 ( 如果目的 MAC 不是自己, 则应该进行图 2 所示的传统二层转发处理 )。这 里分为两种情况, 查找命中和查找失败。
如果查找未命中, 则注册这个五元组关键信息, 然后按照传统三层转发流程处理, 即, 路由器 1 在操作 S640 用报文目的 IP 查找路由表。如果查找不成功, 则路由失败, 如果 所述查找成功, 通过在图 6 所示的路由器 1 的路由表中查找报文目的 IP 即 3.3.3.1 得到下
一跳为 2.2.2.2, 出接口为接口 2, 则路由器 1 在操作 S650 用下一跳查找 ARP 表项。如果查 找不成功, 则 ARP 失败, 如果所述查找成功, 通过在图 6 所示的路由器 1 的 ARP 表项中查找 报文的下一跳即 2.2.2.2 得到 MAC 为 MAC4, 则路由器 1 在操作 S660 将报文源 MAC 替换为接 口 2 的 MAC 地址即 MAC3, 将报文目的 MAC 地址替换为 MAC4, 并完善快速转发表项, 将二层转 发信息 ( 上行、 下行 MAC) 写入五元组附属信息, 并将报文从接口 2 转发。这样就有了这个 数据流的快速转发表项, 如表 2 所示, 其中, 由于不是隧道报文, 故五元组附属信息的上行、 下行 IP 不存在。
表 2 根据本发明示例性实施例的快速转发表项
如果查找命中, 则路由器 1 在操作 S670 查看五元组附属信息, 如果不是隧道报文, 则对于上行报文, 用上行 MAC 替换源 MAC, 下行 MAC 替换目的 MAC ; 对于下行报文, 用下行 MAC 替换源 MAC, 上行 MAC 替换目的 MAC ; 然后将报文转发 ; 如果是隧道报文, 则根据附属信息加 隧道封装或解隧道封装, 这将在后面进行详细描述。
路由器 2 从接口 1 接收到路由器 1 转发过来的报文, 在操作 S610, 判断目的 MAC 是 否为本设备 MAC。由于目的 MAC 为接口 3 的 MAC, 故路由器 2 在操作 S620 检查报文目的 IP 即 3.3.3.1 是否为本设备 IP, 由于不是路由器 2 自己的 IP, 故路由器 1 在操作 S630 提取五 元组关键信息并查找快速转发表, 确定是否能查到与所述五元组关键信息相应的完整的五 元组附属信息 ( 如果目的 MAC 不是自己, 则应该进行图 2 所示的传统二层转发处理 )。这里 分为两种情况, 查找命中和查找失败。
如果查找未命中, 则注册这个五元组关键信息, 然后按照传统三层转发流程处理, 即, 路由器 2 在操作 S640 用报文目的 IP 查找路由表。如果查找成功, 通过在图 6 所示的路 由器 2 的路由表中查找报文目的 IP 即 3.3.3.1 得到下一跳为 3.3.3.1, 出接口为接口 4, 则 路由器 2 在操作 S650 用下一跳查找 ARP 表项。如果查找成功, 通过在图 6 所示的路由器 2 的 ARP 表项中查找报文的下一跳即 3.3.3.1 得到 MAC 为 MAC6, 则路由器 2 在操作 S660 将 报文源 MAC 替换为接口 4 的 MAC 地址即 MAC5, 将报文目的 MAC 地址替换为 MAC6, 并完善快 速转发表项, 将二层转发信息 ( 上行、 下行 MAC) 写入五元组附属信息, 并将报文从接口 4 转 发。这样就有了这个数据流的快速转发表项, 如表 3 所示
表 3 根据本发明示例性实施例的快速转发表
如果查找命中, 则路由器 2 在操作 S670 查看五元组附属信息, 由于不是隧道报文 ( 隧道类型是 “否” ), 故对于上行报文, 用五元组附属信息中的上行 MAC 替换源 MAC, 下行 MAC 替换目的 MAC ; 对于下行报文, 用下行 MAC 替换源 MAC, 上行 MAC 替换目的 MAC ; 然后将报文 转发。 如果是隧道报文, 则根据附属信息加隧道封装或解隧道封装, 这将在后面进行详细描 述。
随后, 网络设备 2 收到路由器 2 转发过来的报文。
网络设备 2 向网络设备 1 发送报文, 即上述过程的逆向处理, 此处省略。
应该理解, 上述列出的快速转发表项的具体信息 ( 诸如, 上行 IP、 下行 IP、 协议类 型等的具体值 ) 仅是示例性的, 并且其值可以改变 ; 上述描述中的转发设备是两个路由器, 但是本发明不限于此, 报文可以经由任意数量、 任意类型的网络转发设备的转发并最终到 达目的 IP。
从上面的分析可以看出, 一条五元组的数据流, 只有第一次查找快速转发表未命 中时按照一般的路由转发信息处理, 并且生成五元组的快速转发表项。以后对于这条数据 流上的报文, 可以在收到报文后查找快速转发表, 并根据查找到的快速转发表项把报文转 发出去, 这样报文就不需要进三层转发或者三层隧道转发了。
图 7 是示出图 5 所示的根据本发明示例性实施例的网络转发设备的三层隧道快速 转发的示图。如图 7 所示, 网络设备 1 通过路由器 1、 隧道、 路由器 2 与网络设备 2 相连, 其 中, 路由器 1 上与网络设备 1 相连的接口为接口 1, 路由器 1 上与隧道相连的接口为接口 2, 路由器 2 上与隧道相连的接口为接口 3, 路由器 2 上与网络设备 2 相连的接口为接口 4。三 层隧道有两层 IP 头 : 外层 IP 头由隧道发起者加上, 源 IP 为隧道发起者的 IP, 目的 IP 为隧 道终结者的 IP ; 内层 IP 头的源和目的 IP 为报文真实源 IP 和目的 IP。路由器 1 与路由器 2 建立隧道, 隧道外层 IP 头的源 IP 为路由器 1 接口 2 的 IP, 隧道外层 IP 头的目的 IP 为路 由器 2 接口 3 的 IP, 所述隧道外层 IP 头的源 IP 和目的 IP 用于加隧道和去隧道。
网络设备 1 向网络设备 2 发送报文的步骤如下 :
网络设备 1 向网络设备 2 发送 TFTP 请求报文, 协议类型是 UDP, 源端口是 8810, 目的端口是 69, 源 IP 为自己即 1.1.1.2, 目的 IP 为网络设备 2 的 IP 即 3.3.3.1。网络设 备 1 发现目的 IP 与自己 IP 不在同一网段, 则用目的 IP 查找本地路由表, 得到下一跳 IP 即 1.1.1.1 ; 再用下一跳查找 ARP 表项得到 MAC2。网络设备 1 对 IP 报文添加以太网封装, 源 MAC 为自己即 MAC1, 目的 MAC 为下一跳 MAC 即 MAC2。
路由器 1 从接口 1 接收到网络设备 1 发送的报文, 在操作 S610, 判断目的 MAC 是否 为本设备 MAC。由于目的 MAC 为接口 1 的 MAC, 故路由器 1 在操作 S620 检查报文目的 IP 即 3.3.3.1 是否为本设备 IP, 由于不是路由器 1 自己的 IP, 故路由器 1 在操作 S630 提取五元
组关键信息并查找快速转发表, 确定是否能查到与所述五元组关键信息相应的五元组附属 信息 ( 如果目的 MAC 不是自己, 则应该进行图 2 所示的传统二层转发处理 )。这里分为两种 情况, 查找命中和查找失败。
如果查找未命中, 则注册这个五元组关键信息, 然后按照传统转发流程处理, 即, 路由器 1 在操作 S640 使用报文目的 IP 即 3.3.3.1 查找路由表。参照图 7 路由器 1 的路由 表, 除了 4.4.4.4 和 1.1.1.2 以外的 IP 均按照目的 IP 为 0.0.0.0 处理, 诸如, 查找 3.3.3.1 可得到出接口为隧道 1。 如果查找不成功, 则路由失败, 如果所述查找成功, 通过在图 7 所示 的路由器 1 的路由表中查找报文目的 IP 即 3.3.3.1 得到出接口为隧道 1, 则路由器 1 在操 作 S710 剥去报文以太网封装, 使用外层 IP 头的源 IP 即 2.2.2.1 和目的 IP 即 4.4.4.4 来 添加隧道封装, 并将所述外层 IP 头的源 IP 和目的 IP 添加到所述报文的五元组附属信息, 随后操作返回 S620。其中, 所述外层 IP 头的源 IP 和目的 IP 是由隧道 1 先前配置的。在操 作 S620, 路由器 1 检查隧道报文的外层目的 IP 是否为本设备 IP, 由于不是路由器 1 自己的 IP, 故路由器 1 在操作 S630 提取五元组关键信息并查找快速转发表是否能查到五元组附属 信息。 此时由于该条数据流的五元组附属信息依然不完整 ( 不包括二层转发信息 ), 故查找 仍然没有命中, 路由器 1 在操作 S640 使用外层目的 IP 查找路由表。如果查找成功, 通过在 图 7 所示的路由器 1 的路由表中查找报文外层目的 IP 即 4.4.4.4 得到下一跳为 2.2.2.2, 出 接口为接口 2, 则路由器 1 在操作 S650 再使用下一跳 2.2.2.2 查找 ARP 表项。如果查找成 功, 通过在图 7 所示的路由器 1 的 ARP 表项中查找下一跳 2.2.2.2 得到下一跳 MAC 为 MAC4, 则路由器 1 在操作 S660 对隧道报文添加以太网封装, 将报文源 MAC 替换为接口 2 的 MAC 地 址即 MAC3, 将报文目的 MAC 地址替换为 MAC4, 然后把二层转发信息写入五元组附属信息, 把 报文从接口 2 转发。这样就有这个流的快速转发表项, 如表 4 所示。
表 4 根据本发明示例性实施例的快速转发表项如查找命中, 则路由器 1 在操作 S670 查看五元组附属信息, 由于隧道类型是加隧 道, 故去掉 MAC 头, 加封装隧道, 使用五元组附属信息中的上行 IP 作为外层源 IP, 下行 IP 作 为外层目的 IP, 上行 MAC 作为源 MAC, 下行 MAC 作为目的 MAC, 并将报文转发。
应该了解, 隧道的转发过程属于本领域现有技术, 为了清楚和简明, 在此不再累 述。 经过隧道的转发之后, 路由器 2 从接口 3 接收到转发的报文, 在操作 S610, 判断目的 MAC 是否为本设备 MAC。由于目的 MAC 为接口 3 的 MAC, 故路由器 2 在操作 S620 检查报文外层 目的 IP 即 4.4.4.4 是否为本设备 IP, 由于是路由器 2 自己的 IP, 故在操作 S720 判断接收 到的报文是否是隧道报文, 如果不是隧道报文, 则进行主机协议处理。 由于所述报文是隧道 报文, 故路由器 2 在操作 S730 剥去报文以太网封装和隧道封装, 得到五元组关键信息, 随 后查找快速转发表, 确定是否能查找到与所述五元组关键信息相应的完整的五元组附属信息。这里分为两种情况, 查找命中和查找失败。
如果查找未命中, 则在操作 S750 注册所述五元组关键信息, 随后操作返回 S620。 在操作 S620, 路由器 2 检查报文的内层目的 IP 即 3.3.3.1 是否为本设备 IP。由于不是路 由器 2 自己的 IP, 故路由器 2 在操作 S630 提取五元组关键信息并查找快速转发表是否能查 到五元组附属信息。 应该理解, 由于已经对所述五元组关键信息查找过快速转发表, 故这里 也可以省略上述操作 S630。由于刚刚注册该条数据流的五元组关键信息故查找没有命中, 路由器 2 在操作 S640 使用所述内层目的 IP 查找路由表。如果查找成功, 通过在图 7 所示 的路由器 2 的路由表中查找内层目的 IP 即 3.3.3.1 得到下一跳为 3.3.3.1, 出接口为接口 4, 则路由器 2 在操作 S650 使用下一跳 3.3.3.1 查找 ARP 表项。如果查找成功, 通过在图 7 所示的路由器 2 的 ARP 表项中查找下一跳 3.3.3.1 得到下一跳 MAC 为 MAC8, 则路由器 2 在 操作 S660 对报文添加以太网封装, 将报文源 MAC 替换为接口 4 的 MAC 地址即 MAC7, 将报文 目的 MAC 替换为 MAC8, 然后把二层转发信息和隧道转发信息写入五元组的附属信息, 把报 文从接口 4 转发。这样就有这个流的快速转发表项, 如表 5 所示。
表 5 根据本发明示例性实施例的快速转发表项
如果查找命中, 则路由器 2 在操作 S740 查看五元组附属信息, 由于隧道类型是去 隧道, 并且之前已经剥去报文以太网封装和隧道封装, 故使用五元组附属信息中的上行 MAC 作为源 MAC, 下行 MAC 作为目的 MAC, 以太封装 MAC 头, 并将报文转发。
网络设备 2 收到路由器 2 转发的报文。
应该理解, 上述列出的快速转发表项的具体信息 ( 诸如, 上行 IP、 下行 IP、 协议类 型等的具体值 ) 仅是示例性的, 并且其值可以改变 ; 上述描述中的转发设备是两个路由器, 但是本发明不限于此, 报文可以经由任意数量、 任意类型的网络转发设备的转发并最终到 达目的 IP ; 本发明的快速转发方法不限于图 6、 图 7 及其相关描述, 可以根据转发表的实际 情况根据图 5 的流程任意进行相关操作。
根据本发明的示例性实施例, 快速转发表的形成分为两个步骤, 首先是注册关键 信息, 然后注册附属信息。 然而, 也可以在完成一次路由后一次生成快速转发表。 一般 TCP/ UDP 的数据流, 才生成快速转发表, 其它不常用报文不生成快速转发表。快速转发表可以支 持自动老化机制, 每条快速转发表项有老化时间, 如果一定时间内没有报文命中快速转发 表项, 则自动删除这条快速转发表项。 通过自动老化机制可以防止快速转发表项无限增加。
图 8 是示出根据本发明示例性实施例的应用快速转发的示例的示图。
网络终端封装 8.2.11 数据报文格式 ( 诸如, 浏览网页 ), 并将报文发送给无线接入 点 (AP)。
AP 接收到报文后, 发现与无线控制器 (AC) 建立了隧道 (tunnel), 故对报文进行隧
道封装, 外层源 IP 是 AP 的 IP, 目的 IP 是 AC 的 IP, 源 MAC 是 AP 的 MAC, 目的 MAC 是路由器 A 的 MAC, 并将报文转发给路由器 A。
路由器 A 接收到 AP 的报文, 通过查找 ARP 表项和路由表, 把源 MAC 修改为路由器 A 的 MAC, 目的 MAC 修改为 AC 的 MAC, 并将报文转发给 AC。
AC 接收到报文后, 发现目的 MAC 是自己的 MAC, 故提取隧道内层五元组关键信息。 如果查找五元组附属信息失败, 就注册五元组关键信息, 然后按照传统转发流程转发报文。 由于目的 IP 是自己的 IP, 并且是隧道报文, 故 AC 对报文解封装隧道, 又发现报文是 802.11 数据格式, 故将 801.11 数据格式转换为 802.3 数据格式, 然后将报文转发, 同时注册五元组 附属信息。这样就形成了快速转发表项, 如表 6 所示。
表 6 根据本发明示例性实施例的快速转发表项
报文通过路由或者转发最终到达无线终端请求的 Web 服务器地址。
从 Web 服务器回复给无线终端的报文在 AC 处的处理正好相反, 是一个封装 802.11 报文格式和隧道报文格式, 同时生成快速转发表项的过程, 如表 7 所示, 在此不再累述。
表 7 根据本发明示例性实施例的快速转发表项
可以看出, 如果 AC 具有一条数据流的快速转发表项, 则 AP 转发给 AC 的报文, AC 需要 解封装隧道, 并将 802.11 报文格式转换为 802.3 报文格式 ; AC 转发给 AP 的报文, AC 需要加封 装隧道, 并将 802.3 报文格式转换为 802.11 报文格式。这里, 只需要查找快速转发表就可以完 成数据的转发, 报文不需要进行二层和三层协议处理, 大大地提高了 AC 数据转发的性能。
根据本发明的示例性实施例, 通过快速转发表能够完成报文一次学习、 多次转发, 加快了报文转发效率, 降低了设备的性能压力。
虽然已经参照示例性实施例示出和描述了本发明, 但是本领域的技术人员应该理 解: 在不脱离由权利要求定义的本发明的精神和范围的情况下, 可以进行形式和细节上的 各种改变。