JIN FEICAI (CN)
YU LIYUAN (CN)
JIN FEICAI (CN)
CN102130836A | 2011-07-20 | |||
CN1581818A | 2005-02-16 | |||
CN101115006A | 2008-01-30 | |||
CN101072210A | 2007-11-14 |
北京派特恩知识产权代理事务所(普通合伙) (CN)
权利要求书 1、 一种报文转发通知三层协议的方法, 其特征在于, 采用反向管理, 所述反向管理包含以下步驟: 比较新反向管理条目与原始反向管理条目, 若两者不一致, 则反向通 知上层协议; 所述反向管理条目包括地址解析协议反向管理 RMARP条目和介质访 问控制反向管理 RMMAC条目。 2、 如权利要求 1所述的报文转发通知三层协议的方法, 其特征在于, 所述 RMARP条目按如下方式生成: 三层协议向 RMARP注册生成 RMARP条目; RMARP根据读取的对应的地址解析协议 ARP信息 , 填充 RMARP条 目下的信息。 3、 如权利要求 1所述的报文转发通知三层协议的方法, 其特征在于, 所述 RMMAC条目按如下方式生成: RMARP向 RMMAC注册生成 RMMAC条目; RMMAC根据读取的对应的介质访问控制 MAC信息, 填充 RMMAC 条目下的信息。 4、 如权利要求 1、 2或 3所述的报文转发通知三层协议的方法, 其特 征在于, 当新 RMARP条目与原始 RMARP条目不一致, 所述反向通知上层协 议包括: 由 RMARP反向通知三层协议; 当新 RMMAC条目与原始 RMMAC条目不一致时,所述反向通知上层 协议包括: 由 RMMAC反向通知 RMARP, 再由 RMARP反向通知三层协 议。 5、 如权利要求 4所述的报文转发通知三层协议的方法, 其特征在于, 所述填充的 RMARP条目下的信息包括 MAC信息和虚拟局域网 VLAN 信息; 所述填充的 RMMAC条目下的信息包括二层出口、 接口信息。 6、 如权利要求 4所述的报文转发通知三层协议的方法, 其特征在于, 注册生成的条目中根据不同的上层协议分配有协议标识位, 即注册位。 7、 如权利要求 4所述的报文转发通知三层协议的方法, 其特征在于, 所述反向管理采用通知状态机处理其输入和输出。 8、 如权利要求 7所述的报文转发通知三层协议的方法, 其特征在于, 所述反向管理的输入包括: 三层协议的注册和取消注册, ARP表的变 4匕、 MAC表的变 4匕; 所述反向管理的输出包括: MAC地址、虚拟局域网标识 VLAN ID、 二 层出接口的变化。 9、 一种报文转发通知三层协议的系统, 其特征在于, 包含反向管理模 块, 所述反向管理模块用于比较新反向管理条目与原始反向管理条目, 若 两者不一致, 则反向通知上层协议; 所述反向管理条目包括 RMARP条目和 RMMAC条目。 10、 如权利要求 9所述的报文转发通知三层协议的系统, 其特征在于, 所述反向管理模块包括三层协议注册填充子模块,用于三层协议向 RMARP 注册生成 RMARP条目; 还用于 RMARP根据读取的对应的 ARP信息 , 填 充 RMARP条目下的信息。 11、如权利要求 10所述的报文转发通知三层协议的系统,其特征在于, 所述反向管理模块还包括 RMARP 注册填充子模块, 用于 RMARP 向 RMMAC注册生成 RMMAC条目;还用于 RMMAC根据读取的对应的 MAC 信息, 填充 RMMAC条目下的信息。 |
本发明涉及通讯领域, 特别涉及一种报文转发反向通知三层协议的方 法及系统。 背景技术
ARP ( Address Resolution Protocol,地址解析十办议 ),即 4巴机器的 Internet 地址转换成物理地址。 IP数据包在互联网中传播时要通过一个个物理 络, 在到达目的网络时要通过最后一个物理网络把 数据包送给目的主机, 而数 据通过物理网络时需要机器的物理地址, 数据包传输使用的是机器的 IP地 址, 因此, 需要有一种机制来把机器的 IP地址转换成物理地址。 ARP虽然 是三层协议, 但是由于 ARP是二三层之间交互的桥梁, 人们往往又把 ARP 称作 2.5层协议。
MAC ( Media Access Control, 介质访问控制), 交换机之所以能够直接 对目的节点发送数据包, 而不是像集线器一样以广播方式对所有节点发 送 数据包, 最关键的技术就是交换机可以识别连在网络上 的各节点网卡 MAC 地址, 并把它们放到一个叫做 MAC地址表的地方。
MAC地址表存放于交换机的緩存中, 当需要向目的地址发送数据时, 交换机在 MAC地址表中查找这个 MAC地址的节点位置, 然后直接向该位 置的节点发送数据, 即交换机根据 MAC地址进行报文转发。
MAC地址具有唯一性, 这保证了 4艮文的正确转发。 实际上, 每个交换 机都维护着一张 MAC地址表, MAC地址表的表项由 MAC地址和 VLAN ID ( Virtual Local Area Network Identification , 虚拟局域网标识 )唯一标识的, 只要 MAC地址和 VLAN ID相同, 就认为是同一个表项。 在这张 MAC表 中, MAC 地址和交换机的端口——对应。 当交换机收到数据帧时, 根据 MAC 地址表来决定对该数据帧进行过滤还是转发到 交换机的相应端口。 MAC地址表是交换机实现快速转发的基础和前提 , MAC协议是二层协议。
如图 1所示, 三层单播 IP报文发送或转发基本原理是: 首先用目的 IP 地址根据路由表查找下一跳和出接口 (三层口), 用下一跳和出接口 (三层 口 )根据 ARP表查找目的 MAC地址, 用目的 MAC地址根据 MAC表查找 出接口(二层口),使用 ARP表中的 VLAN ID或者由上层协议指定的 VLAN ID查找 MAC表。
三层协议都是基于三层部署的, 理论上三层协议只应该关心三层变化, 然而实际上三层没有变化时, 也有可能对三层协议产生影响, 例如以下这 种情况。
如图 2所示, 一个 VLAN ( Virtual Local Area Network, 虚拟局域网 ) 中包含两个物理口, LSP ( Label Switched Path, 标签交换路径)指定三层 接口 VLAN1转发流量, 三层口 VLAN1上最多能转发 1000+100=1100M流 量, 根据转发原理, 如果 LSP计算的下一跳是同一个 IP地址, 或者所有的 IP地址对应的 MAC地址相同时, 流量只会从一个二层物理端口转发出去, 这时三层流量的实际转发能力就不是三层 VLAN1接口的转发能力,而是实 际二层物理出接口的转发能力。 假设 LSP指定下一跳 IP1 , 对应 ARP1 , 对 应 MAC1 , 最终对应出接口 gei_2/l (千兆物理口), 由于某种原因 MAC1 迁移到 fei_l/l (百兆物理口;), 流量随之迁移到 fei_l/l , 如果 LSP需要的最 小带宽是 200M, 则 fei_l/l就不能满足三层流量转发的性能指标, 此时需 要 QoS ( Quality of Service, 服务质量 )通知 LSP重新选择一个能够满足性 能指标的三层口 VLAN2进行流量转发。
从以上例子可以看到, 三层流量转发有必要知道二层的实际组网, 需 要根据二层出接口的变化并进行相应的处理。 即三层单播 IP报文依据 ARP 表和 MAC表发送或转发, 就必然受到 ARP表和 MAC表变化的影响, 现 有技术中尚无 ARP表和 MAC表变化时反向通知三层协议方案。 发明内容
本发明提供了一种报文转发反向通知三层协议 的方法及系统, 能提高 通讯的质量。
为解决上述技术问题, 本发明采用了如下的技术方案:
一方面, 本发明公开了一种报文转发通知三层协议的方 法, 采用反向 管理, 所述反向管理包含以下步驟:
比较新反向管理条目与原始反向管理条目, 若两者不一致, 则反向通 知上层协议;
所述反向管理条目包括地址解析协议反向管理 RMARP条目和介质访 问控制反向管理 RMMAC条目。
上述报文转发通知三层协议的方法的一个实施 例中, 所述 RMARP条 目按如下方式生成:
三层协议向 RMARP注册生成 RMARP条目;
RMARP根据读取的对应的地址解析协议 ARP信息 , 填充 RMARP条 目下的信息。
上述报文转发通知三层协议的方法的一个实施 例中, 所述 RMMAC条 目按如下方式生成:
RMARP向 RMMAC注册生成 RMMAC条目;
RMMAC根据读取的对应的介质访问控制 MAC信息, 填充 RMMAC 条目下的信息。
上述报文转发通知三层协议的方法的一个实施 例中, 当新 RMARP条 目与原始 RMARP条目不一致, 所述反向通知上层协议包括: 由 RMARP 反向通知三层 1"办议; 当新 RMMAC条目与原始 RMMAC条目不一致时,所述反向通知上层 协议包括: 由 RMMAC反向通知 RMARP, 再由 RMARP反向通知三层协 议。
上述报文转发通知三层协议的方法的一个实施 例中, 所述填充的 RMARP条目下的信息包括 MAC信息和虚拟局域网 VLAN信息;
所述填充的 RMMAC条目下的信息包括二层出口、 接口信息。
上述报文转发通知三层协议的方法的一个实施 例中, 注册生成的条目 中根据不同的上层协议分配有协议标识位, 即注册位。
上述报文转发通知三层协议的方法的一个实施 例中, 所述反向管理采 用通知状态机处理其输入和输出。
上述报文转发通知三层协议的方法的一个实施 例中, 所述反向管理的 输入包括: 三层协议的注册和取消注册, ARP表的变化、 MAC表的变化; 所述反向管理的输出包括: MAC地址、虚拟局域网标识 VLAN ID、 二 层出接口的变化。
另一方面, 本发明还公开了一种报文转发通知三层协议的 系统, 包含 反向管理模块, 所述反向管理模块用于比较新反向管理条目与 原始反向管 理条目, 若两者不一致, 则反向通知上层协议;
所述反向管理条目包括 RMARP条目和 RMMAC条目。
上述报文转发通知三层协议系统的一个实施例 中, 所述反向管理模块 包括三层协议注册填充子模块,用于三层协议 向 RMARP注册生成 RMARP 条目;
还用于 RMARP根据读取的对应的 ARP信息, 填充 RMARP条目下的 信息。
所述反向管理模块还包括 RMARP注册填充子模块, 用于 RMARP向 RMMAC注册生成 RMMAC条目; 还用于 RMMAC根据读取的对应的 MAC信息 , 填充 RMMAC条目下 的信息。
和现有技术相比, 本发明的有益效果在于:
本发明公开了一种报文转发通知三层协议的方 案, 采用反向管理, 比 较新反向管理条目与原始反向管理条目, 若两者不一致, 则反向通知上层 协议; 所述反向管理条目包括 RMARP条目和 RMMAC条目。 本发明采用 的方案, 可以在 ARP表和 MAC表变化时有效地反向通知三层协议, 实现 三层协议感知二层变化的目的, 可提高通讯质量。 附图说明
图 1示例性地描述了现有技术中二、 三层协议转发原理图;
图 2示例性地描述了现有技术中, 三层协议转发依赖二层出接口变化 的示意图;
图 3示例性地描述了本发明的注册机制流程示意 ;
图 4示例性地描述了本发明的 RMARP数据来源示意图;
图 5示例性地描述了本发明的 RMMAC数据来源示意图;
图 6示例性地描述了本发明的报文转发通知三层 议方法的总体流程 示意图;
图 7示例性地描述了本发明的报文转发通知三层 议方法的具体流程 示意图;
图 8示例性地描述了本发明的报文转发通知三层 议系统的结构示意 图。 具体实施方式
本发明公开了一种报文转发通知三层协议的方 法, 采用反向管理, 反 向管理具体包含以下步驟: 比较新反向管理条目与原始反向管理条目, 若两者不一致, 则反向通 知上层协议;
所述反向管理条目包括地址解析协议反向管理 (RMARP )条目和介质 访问控制反向管理(RMMAC )条目。
在本说明书中, 为了便于说明, 将地址解析协议反向管理简写为 RMARP; 将介质访问控制反向管理简写为 RMMAC。 同理, 地址解析协议 ARP简称为 ARP, 介质访问控制 MAC简称为 MAC。
下面对照附图并结合具体实施方式对本发明进 行进一步详细说明。 实施例一:
反向管理条目包括 RMARP条目和 RMMAC条目。
RMARP条目按如下方式生成:
三层协议向 RMARP注册生成 RMARP条目;
RMARP根据读取的对应的 ARP信息, 填充 RMARP条目下的信息。
RMMAC条目按如下方式生成:
RMARP向 RMMAC注册生成 RMMAC条目;
RMMAC根据读取的对应的 MAC信息,填充 RMMAC条目下的信息。 下面详细说明注册机制。
本实施例中, 涉及两种注册, 一是三层协议模块向 RMARP注册, 二 是 RMARP向 RMMAC注册。
注册和取消注册的结果是:
注册的结果是添加注册条目; 取消注册的结果是删除注册条目。
注册接口: 三层协议模块和 RMARP的注册接口索引是三层接口和下 一跳; RMARP和 RMMAC的注册接口索引是 MAC地址和 VLAN ID。
注册生成的条目中根据不同的上层协议分配有 协议标识位, 即注册位。 注册条目是上层注册模块通知生成的, 为了区分和复用不同上层注册 模块通知生成的注册条目, 需要针对不同的三层协议分配协议标识位, 我 们称这种协议标识位为注册位。
注册时, 如果注册条目已经创建就不会再次创建, 直接与注册位做或 运算; 如果注册条目不存在, 先创建注册条目, 再与注册位做或运算; 注册时, 如果注册条目不存在, 生成注册条目, 默认数据为 0, 读取相 应的数据, 事件处理通知状态机运行后发现注册条目的信 息变化才会回调 通 口, 没有变 不通 口;
注册时, 如果注册条目已经存在, 不会再生成注册条目, 也不会再回 调通知, 需要上层协议模块在注册后直接查询注册条目 的数据;
重复注册时, 直接返回;
取消注册时, 与注册位的反码做与运算;
取消注册后, 如果注册条目的注册位已经为 0, 则删除注册条目, 如果 注册条目的注册位不为 0, 则不删除注册条目。
采用注册机制, 可共用数据, 节省空间, 同时便于实现。
注册机制属于 RMARP 和 RMMAC 的对外接口机制, RMARP 和 RMMAC 可复用此机制。 同时, 上层协议之间的注册完全独立, 避免了相 互之间的干扰。
图 3是本发明的注册机制流程图, 以 RMARP为例:
三层协议 A注册生成 RMARP注册条目 1 , 注册条目 1中保存了三层 协议 A对应的注册位 A; RMARP条目变化通知三层协议时, 只会回调通 知注册位 A对应的三层协议 A。
三层协议 A、 B、 C注册生成 RMARP注册条目 2, 注册条目 2中保存 了三层协议 A、 B、 C对应的注册位 A、 B、 C; 注册位表明了当前已经有三 个协议注册, 但是不能记录三个协议注册的先后顺序, 也不能记录是否有 哪个三层协议曾经删除后重复注册; RMARP条目变化通知三层协议时, 只 会回调通知注册位 A、 B、 C对应的三层协议 A、 B、 C, 回调的顺序是按照 三层协议 A、 B、 C注册回调函数的顺序回调,和注册条目的注 顺序无关。
三层协议 B、 C注册生成注册条目 3,注册条目 3中保存了三层协议 B、 C对应的注册位 B、 C; 注册位表明了当前已经有两个协议注册, 但是不能 记录两个协议注册的先后顺序, 不能记录是否有哪个三层协议曾经取消注 册后重复注册, 不能记录是否有哪个三层协议曾经注册后又取 消注册; RMARP条目变化通知三层协议时, 只会回调通知注册位 B、 C对应的三层 协议 B、 C, 回调的顺序是按照三层协议 B、 C注册回调函数的顺序回调, 和注册条目的注册顺序无关。
三层协议曾经注册生成注册条目 4, 注册条目 4中的注册位为 0; 注册 条目 4是要删除的注册条目, 当最后一个注册位删除时, 删除注册条目。
实施例二:
本发明的一个实施例的报文转发通知三层协议 的方法中, 采用反向管 理, 所述反向管理采用通知状态机处理其输入和输 出。
所述反向管理的输入包括: 三层协议的注册和取消注册, ARP表的变 4匕、 MAC表的变 4匕;
所述反向管理的输出包括: MAC地址、 VLAN ID、二层出接口的变化。 事件处理通知状态机实际上只关心自身表项的 建立、 查找、 读取、 平 滑、 数据变化、 销毁, 输入和输出的定义、 区分、 透传, 实际上并不关心 这些输入和输出的具体含义。 这就要求事件处理通知状态机尽量使用公共 的描述。
从表项生成开始时, 除了索引以外, 原始数据和新数据均为 0; 分析并 穷举所有会导致数据变化的输入事件; 输入事件处理后, 调用数据前后对 比函数对数据变化进行计算并得到状态机的输 出, 回调上层协议。
RMARP的输入: RMMAC的二层出接口变化; ARP模块生成 ARP条 目 (下一跳 +三层出接口;)、 删除 ARP条目 (下一跳 +三层出接口;)、 更新 ARP条目 ( MAC地址或 VLAN ID变化;)。
RMARP的输出: RMARP的 MAC地址变 4匕; RMARP的 VLAN ID变 化; RMARP的二层出接口变化。
RMMAC的输入: MAC模块添加 MAC条目 ( MAC地址 +VLAN ID ), 删除 MAC条目 ( MAC地址 +VLAN ID )、 更新 MAC条目 (二层出接口变 化)。
RMMAC的输出: RMMAC的二层出接口变 4匕。
如图 4所示, 本发明的 RMARP数据来源具体为:
RMARP条目均是三层协议注册生成的;
三层接口和 ip地址均是三层协议注册时带给 RMARP模块的, 是 RMARP条目的索引;
RMARP条目的 MAC、 VLAN信息均是从 ARP模块获取的;
RMARP条目的二层出接口信息是从 RMMAC模块获取的。
如图 5所示, 本发明的 RMMAC数据来源具体为:
RMMAC条目均是 RMARP注册生成的;
MAC地址、 VLAN ID均是 RMARP注册时带给 RMMAC模块的 , 是 RMMAC条目的索引;
RMMAC条目的二层出接口信息是从 MAC模块获取的。
实施例三:
本发明一个实施例的报文转发通知三层协议的 方法中, 比较新反向管 理条目与原始反向管理条目, 若两者不一致, 则通知上层协议, 具体包括 两种:
当新 RMARP条目与原始 RMARP条目不一致, 由 RMARP反向通知 三层协议; 当新 RMMAC条目与原始 RMMAC条目不一致时, 由 RMMAC反向 通知 RMARP , 再由 RMARP反向通知三层协议。
RMMAC反向通知 RMARP, RMARP反向通知三层协议, 均采用通知 机制, 通知机制采用回调链表管理。
下面简单说明回调函数链表管理的机制。
回调函数结构的内存申请, 建议采用全局内存形式;
必须尽量保证在注册条目前完成回调函数注册 ;
可以在初始化时注册回调函数, 也可以动态注册;
提供回调函数取消注册, 但是一般不会用到;
注册时必须输入上层协议回调函数标识位。
回调函数是否能被调用到取决于:
当前索引对应的条目是否存在事件通知;
是否已经注册回调函数;
条目的标识位和回调函数注册模块的标识位相 与后是否为非 0;
回调函数机制的局限性: 会把所有事件通知给注册模块, 由注册模块 根据具体的应用决定对特定的事件采取什么样 的处理。
一次函数调用有可能回调大批量的事件, 因此需要緩存事件。
本发明中, 还涉及反向查询机制, 下面以 RMARP为例进行说明: 反向查询机制的难点在于同一个 MAC地址 +VLAN ID , 通过 RMARP 有可能查询到多个三层接口 +下一跳, 个数不定, 有可能只有一个, 也有可 能有很多个。
具体协议总是希望通过一个 MAC地址 +VLAN ID只查到一个三层接口 +下一跳, 这就需要设置不同协议的识别位不同, 只要保证特定协议关心的 三层接口 +下一跳选择的 MAC地址 +VLAN ID均不相同即可。 例如: 协议 A只注册一个 IP地址 +三层口, RMARP只会通知注册的 IP地址 +三层口。 当然如果注册多个 IP地址 +三层口对应同一个 MAC 地址 +VLAN ID, RMARP也就处理不了了, 所以这种情况还要各个具体协议进行配置规避 。
值得注意的是, 必须注册才能提供反向查询, 没有注册, 此模块从 RMARP查询不到任何结果。
实施例四:
如图 6所示, 本发明的报文转发通知三层协议的方法的一个 实施例, 总体处理流程包含以下步驟:
步驟 101 , 比较新反向管理条目与原始反向管理条目;
步驟 102, 若两者一致, 则保持不变, 不需要通知上层协议。
步驟 103 , 若两者不一致, 则反向通知上层协议。
如图 7所示, 本方法的 ^艮文转发通知三层协议的方法的一个实施例 具体处理流程包含以下步驟:
步驟 201 , 反向管理输入, 如上所述的 RMARP的输入或 RMMAC的 输入。
步驟 202, 保持反向管理输入前的反向管理条目原始数据 不变。
原始数据存储在原始数据区, 并将原始数据区的数据复制至新数据区。 步驟 203 , 若 ARP表或 MAC表有变化, 则获取新反向管理条目数据。 获取的新的反向管理管理条目更新到新数据区 。
步驟 204, 将新反向管理条目添加到延迟通知链表中。
将反向管理条目添加到延迟通知链表中是为了 避免大批量变化对上层 协议产生沖击或频繁变化对上层协议产生的震 荡, 维持了系统的稳定。
步驟 205 , 判断新反向管理条目与原始反向管理条目是否 一致, 如果一 致转步驟 206, 如果不一致转步驟 207。
步驟 206,不需要通知上层协议,如果反向管理条目 延迟通知链表中, 则从延迟通知链表中移除, 转向步驟 208。 步驟 207,计算反向管理的输出,如上所述 RMARP的输出或 RMMAC 的输出。
步驟 208, 延迟通知定时器超时。
步驟 209,处理延迟通知链表中的反向管理条目,并 向通知上层协议。 步驟 210,反向通知上层协议后,使用新反向管理条 覆盖原始反向管 理条目。
步驟 211 , 结束。
实施例五:
如图 8所示, 本发明一个实施例的报文转发通知三层协议的 系统, 包 含反向管理模块, 所述反向管理模块用于比较新反向管理条目与 原始反向 管理条目, 若两者不一致, 则通知上层协议;
所述反向管理条目包括 RMARP条目和 RMMAC条目。
本发明一个实施例的报文转发通知三层协议的 系统中, 所述反向管理 模块包括三层协议注册填充子模块, 用于三层协议向 RMARP 注册生成
RMARP条目;
还用于 RMARP根据读取的对应的 ARP信息, 填充 RMARP条目下的 信息。
所述反向管理模块还包括 RMARP注册填充子模块, 用于 RMARP向 RMMAC注册生成 RMMAC条目;
还用于 RMMAC根据读取的对应的 MAC信息, 填充 RMMAC条目下 的信息。
本发明公开了一种报文转发通知三层协议的方 法, 采用反向管理, 包 含以下步驟: 比较新反向管理条目与原始反向管理条目, 若两者不一致, 则通知上层协议; 所述反向管理条目包括 RMARP条目和 RMMAC条目。 本发明采用的方法, 可以在 ARP表和 MAC表变化时有效地反向通知三层 协议, 实现三层协议感知二层变化的目的, 可提高通讯质量。 能认定本发明的具体实施只局限于这些说明。 对于本发明所属技术领域的 普通技术人员来说, 在不脱离本发明构思的前提下, 还可以做出若干简单 推演或替换, 都应当视为属于本发明的保护范围。
Next Patent: METHOD AND SYSTEM FOR SWITCHING IDENTITIES OF CALLING AND CALLED PARTIES