一种LINUX内核协议栈网桥数据转发方法.pdf

上传人:b*** 文档编号:4298359 上传时间:2018-09-13 格式:PDF 页数:6 大小:344.41KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210266965.6

申请日:

2012.07.31

公开号:

CN102780627A

公开日:

2012.11.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/56申请日:20120731|||公开

IPC分类号:

H04L12/56; H04L12/46

主分类号:

H04L12/56

申请人:

深圳市共进电子股份有限公司

发明人:

何思斌; 王志波; 邓永坚; 郭小东

地址:

518000 广东省深圳市南山区蛇口南海大道1019号百盈医疗器械园二楼

优先权:

专利代理机构:

深圳市智科友专利商标事务所 44241

代理人:

孙子才

PDF下载: PDF下载
内容摘要

本发明提供了一种Linux内核协议栈网桥数据转发方法,在LINUX内核协议栈起来时,初始化一个存储转发表项的双向链表,当有数据报文进入内核协议栈网桥时,通过VLAN和MAC共同计算HASH值,以HASH为索引建立转发表项,插入到存储转发表项的双向链表中,对于同一源的MAC地址,能学习到对应多个不同出设备的转发表项。本发明的有益效果是整个过程实现起来简单,容易实施,对LINUX内核的稳定性,扩展性有保证,非常适合于基于LINUX系统的嵌入式设备网桥数据转发的需求。

权利要求书

1.一种Linux内核协议栈网桥数据转发方法,其特征在于,包括以下步骤:A、系统启动时初始化存储转发表项的双向链表;B、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于建立转发表项的VLAN ID;从数据包中提取出用于建立转发表项的源MAC地址;C、计算步骤K的所述的VLAN ID和源MAC地址的HASH值;D、根据步骤C计算的HASH值轮询转发表项:未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中;找到转发表项,更新找到转发表项的老化时间;E、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于查找转发表项的VLAN ID;从数据包中提取出用于查找转发表项的目的MAC地址;F、计算步骤E中的所述的VLAN ID和目的MAC地址的HASH值;G、根据步骤F中计算的HASH值轮询转发表项:1)找到转发表项,根据转发表项进行转发;2) 未找到转发表项,在桥中广播该数据报文。2. 根据权利要求1所述的Linux内核协议栈网桥数据转发方法,其特征在于:所述的步骤A中,初始化存储转发表项的双向链表是在LINUX内核启动的时初始化的。3. 根据权利要求1所述的Linux内核协议栈网桥数据转发方法,其特征在于:在步骤B和E中,通过应用层的设置将VALN ID和端口设备进行绑定,在系统启动时我们将VLAN和端口设备的绑定关系传入内核协议栈,在内核中根据数据报文所带的源端口设备可以快速查找VLAN对应的VLAN ID。4. 根据权利要求1所述的Linux内核协议栈网桥数据转发方法,其特征在于:在步骤D中,插入转发表项时需要给表项分配内存,然后插入到存储转发表项的双向链表中;在表项超时后,需要将对应的转发表项从存储转发表项的双向链表中删除,同时将分配改该表项的内存释放掉。

说明书

一种Linux内核协议栈网桥数据转发方法

技术领域

 本发明涉及嵌入式操作系统领域,特别涉及Linux内核协议栈网桥数据转发方法。

背景技术

目前LINUX内核协议栈网桥的实现方式中当在一个桥里面添加两个或两个以出设备时,对于同一目的MAC需要走不同出设备的数据报文将只有一个数据流能通。原因在于LINUX内核协议栈网桥转发表项的学习和转发原理是根据MAC计算HASH值,以计算出的HASH值为索引建立和查找转发表项进行数据报文的转发,一个转发表项至少包括端口号、转发标记、老化时间、出设备。这里出设备就是对应的硬件的端口,通常在表象中一个mac地址只能对应一个出设备,每一个mac地址对应一个出设备。在学习阶段,计算数据报文源MAC地址的HASH值建立转发表项;在转发阶段,计算目的MAC地址的HASH值,通过HASH查找转发表项进行转发。因此,对于同一个MAC地址计算出的HASH值在网桥中只能建立一个转发表项、对应一个出设备,对于去往其它出设备的数据报文因走错出设备而到达不了目的地,不能满足数据转发的需求。

发明内容

本发明针对目前目前LINUX内核协议栈网桥的实现方式中对于同一个MAC地址计算出的HASH值在网桥中只能建立一个转发表项、对应一个出设备,对于去往其它出设备的数据报文因走错出设备而到达不了目的地,不能满足数据转发的需求的不足,提供一种利用VLAN ID+MAC实现Linux内核协议栈网桥数据转发方法。

本发明为了完成其技术目的所采用的技术方案是:一种Linux内核协议栈网桥数据转发方法,包括以下步骤:

A、系统启动时初始化存储转发表项的双向链表;

B、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于建立转发表项的VLAN ID;从数据包中提取出用于建立转发表项的源MAC地址;

C、计算步骤K的所述的VLAN ID和源MAC地址的HASH值;

D、根据步骤C计算的HASH值轮询转发表项:

a)       未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中;

b)      找到转发表项,更新找到转发表项的老化时间;

E、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于查找转发表项的VLAN ID;从数据包中提取出用于查找转发表项的目的MAC地址;

F、计算步骤E中的所述的VLAN ID和目的MAC地址的HASH值;

G、根据步骤F中计算的HASH值轮询转发表项:

1)找到转发表项,根据转发表项进行转发;

2) 未找到转发表项,在桥中广播该数据报文。

进一步的,上述的Linux内核协议栈网桥数据转发方法中:所述的步骤A中,初始化存储转发表项的双向链表是在LINUX内核启动的时初始化的。

进一步的,上述的Linux内核协议栈网桥数据转发方法中:在步骤B和E中,通过应用层的设置将VALN ID和端口设备进行绑定,在系统启动时我们将VLAN和端口设备的绑定关系传入内核协议栈,在内核中根据数据报文所带的源端口设备可以快速查找VLAN对应的VLAN ID。

进一步的,上述的Linux内核协议栈网桥数据转发方法中:在步骤D中,插入转发表项时需要给表项分配内存,然后插入到存储转发表项的双向链表中;在表项超时后,需要将对应的转发表项从存储转发表项的双向链表中删除,同时将分配改该表项的内存释放掉。

本发明的有益效果是整个过程实现起来简单,容易实施,对LINUX内核的稳定性,扩展性有保证,非常适合于基于LINUX系统的嵌入式设备网桥数据转发的需求。

LINUX内核协议栈网桥的学习和转发方法原理是根据MAC计算HASH值,以计算的HASH值为索引建立和查找转发表象进行数据报文的转发,对应同一个MAC地址只能建立一个转发表象,而一个转发表象对应同一个出设备,这样就导致了同一个MAC去往不同出设备的数据流只有一个能通;本发明通过VLAN ID和MAC共同计算HASH值,对于同一个MAC可以学习到对应不同出设备的转发表象,保证同一个MAC去往不同出设备的数据流畅通。

下面通过结合具体实施例和附图对本发明进行进一步的说明。

附图说明

附图1是本发明实施例1流程图。

具体实施方式

如图1所示,本实施例是一种以VLAN+MAC实现的LINUX内核协议栈网桥的数据转发方法,该方法借助网络数据报文和设备配套软件指令实现,具体包括启动引导程序、加载LINUX系统内核、启动应用程序、查找MAC和VLAN、学习转发表项、转发数据报文过程。首先在LINUX内核协议栈起来时,初始化一个存储转发表项的双向链表,当有数据报文进入内核协议栈网桥时,通过VLAN和MAC共同计算HASH值,以HASH为索引建立转发表项,插入到存储转发表项的双向链表中,对于同一源的MAC地址,能学习到对应多个不同出设备的转发表项。本方法的步骤包括:

步骤1、系统启动,初始化存储转发表项的双向链表;

步骤2、根据数据报文所带源设备与VLAN ID

的绑定关系找该数据报文用于建立转发表项的VLAN ID;从数据包中提取出用于建立转发表项的源MAC地址;

步骤3、计算步骤2中VLAN ID和MAC地址的HASH值;

步骤4、根据步骤3计算的HASH值轮询转发表项:

1)                                      未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中;

2)                                      找到转发表项,更新找到转发表项的老化时间;

步骤5、根据数据报文所带源设备与VLAN ID的绑定关系找该数据报文用于查找转发表项的VLAN ID;从数据包中提取出用于查找转发表项的目的MAC地址;

这里步骤2和5中的vlan id都是应用层设定的与端口设备绑定的vlan id,不同的vlan id与不同的端口设备绑定,因此根据数据包所带源设备与vlan id的绑定关系可以查找vlan id。

步骤6、计算步骤5中VLAN ID和MAC地址的HASH值;

步骤7、根据步骤F中计算的HASH值轮询转发表项:

3)                                      找到转发表项,根据转发表项进行转发;

4)                                      未找到转发表项,在桥中广播该数据报文;

本实施例在建立转发表项前,先要初始化存储转发表项的双向链表,在步骤A中,初始化存储转发表项的双向链表是在LINUX内核启动的时初始化的。

在步骤B和E中,通过应用层的设置将VALN和端口设备进行绑定(对于没有绑定VLAN的端口设备默认其VLAN为0),在系统启动时我们将VLAN和端口设备的绑定关系传入内核协议栈,在内核中根据数据报文所带的入端口设备可以快速查找VLAN其对应的VLAN值。

在步骤D中,插入转发表项时需要给表项分配内存,然后插入到存储转发表项的双向链表中;在表项超时后,需要将对应的转发表项从存储转发表项的双向链表中删除,同时将分配改该表项的内存释放掉,以节省内存空间,防止内存泄露。

在整个LINUX内核协议栈网桥的转发过程中,有两次查找转发表项的动作,第一次查找是在学习阶段,根据数据报文源MAC和VLAN计算的HASH值查找的,以确定对应该源MAC和VLAN组合的转发表项有没有建立。

这里学习阶段就是指转发表项建立阶段,转发表项都是通过学习建立的, 在学习阶段根据源mac和vlan id计算的 hash值查找转发表项,没有找到就建立转发表项, 找到了就更新老化时间。转发阶段就是指转发数据的时候查找转发表项进行数据转发的过程,根据目的mac和vlan id计算 hash值如果找到表象就转发数据报文,没有找到就广播数据报文;VLAN ID 用来区分不同的业务数据流(业务如:上网、语音、IPTV业务等),值在1到4096之间。

第二次是在转发阶段,根据数据报文的目的MAC和VLAN计算的HASH值进行查找的,用于确定数据报文往那个接口转发,对于没有找到表项的数据报文则在网桥中广播该数据报文。

一种LINUX内核协议栈网桥数据转发方法.pdf_第1页
第1页 / 共6页
一种LINUX内核协议栈网桥数据转发方法.pdf_第2页
第2页 / 共6页
一种LINUX内核协议栈网桥数据转发方法.pdf_第3页
第3页 / 共6页
点击查看更多>>
资源描述

《一种LINUX内核协议栈网桥数据转发方法.pdf》由会员分享,可在线阅读,更多相关《一种LINUX内核协议栈网桥数据转发方法.pdf(6页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102780627 A (43)申请公布日 2012.11.14 C N 1 0 2 7 8 0 6 2 7 A *CN102780627A* (21)申请号 201210266965.6 (22)申请日 2012.07.31 H04L 12/56(2006.01) H04L 12/46(2006.01) (71)申请人深圳市共进电子股份有限公司 地址 518000 广东省深圳市南山区蛇口南海 大道1019号百盈医疗器械园二楼 (72)发明人何思斌 王志波 邓永坚 郭小东 (74)专利代理机构深圳市智科友专利商标事务 所 44241 代理人孙子才 (54) 发明名称 。

2、一种Linux内核协议栈网桥数据转发方法 (57) 摘要 本发明提供了一种Linux内核协议栈网桥数 据转发方法,在LINUX内核协议栈起来时,初始化 一个存储转发表项的双向链表,当有数据报文进 入内核协议栈网桥时,通过VLAN和MAC共同计算 HASH值,以HASH为索引建立转发表项,插入到存 储转发表项的双向链表中,对于同一源的MAC地 址,能学习到对应多个不同出设备的转发表项。本 发明的有益效果是整个过程实现起来简单,容易 实施,对LINUX内核的稳定性,扩展性有保证,非 常适合于基于LINUX系统的嵌入式设备网桥数据 转发的需求。 (51)Int.Cl. 权利要求书1页 说明书3页 附。

3、图1页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 3 页 附图 1 页 1/1页 2 1.一种Linux内核协议栈网桥数据转发方法,其特征在于,包括以下步骤: A、系统启动时初始化存储转发表项的双向链表; B、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于建立 转发表项的VLAN ID;从数据包中提取出用于建立转发表项的源MAC地址; C、计算步骤K的所述的VLAN ID和源MAC地址的HASH值; D、根据步骤C计算的HASH值轮询转发表项: 未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中; 找到转发表项,。

4、更新找到转发表项的老化时间; E、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于查找 转发表项的VLAN ID;从数据包中提取出用于查找转发表项的目的MAC地址; F、计算步骤E中的所述的VLAN ID和目的MAC地址的HASH值; G、根据步骤F中计算的HASH值轮询转发表项: 1)找到转发表项,根据转发表项进行转发; 2) 未找到转发表项,在桥中广播该数据报文。 2. 根据权利要求1所述的Linux内核协议栈网桥数据转发方法,其特征在于:所述的 步骤A中,初始化存储转发表项的双向链表是在LINUX内核启动的时初始化的。 3. 根据权利要求1所述的Linux内核协议栈。

5、网桥数据转发方法,其特征在于:在步骤 B和E中,通过应用层的设置将VALN ID和端口设备进行绑定,在系统启动时我们将VLAN和 端口设备的绑定关系传入内核协议栈,在内核中根据数据报文所带的源端口设备可以快速 查找VLAN对应的VLAN ID。 4. 根据权利要求1所述的Linux内核协议栈网桥数据转发方法,其特征在于:在步骤 D中,插入转发表项时需要给表项分配内存,然后插入到存储转发表项的双向链表中;在表 项超时后,需要将对应的转发表项从存储转发表项的双向链表中删除,同时将分配改该表 项的内存释放掉。 权 利 要 求 书CN 102780627 A 1/3页 3 一种 Linux 内核协议栈。

6、网桥数据转发方法 技术领域 0001 本发明涉及嵌入式操作系统领域,特别涉及Linux内核协议栈网桥数据转发方 法。 背景技术 0002 目前LINUX内核协议栈网桥的实现方式中当在一个桥里面添加两个或两个以出 设备时,对于同一目的MAC需要走不同出设备的数据报文将只有一个数据流能通。原因在 于LINUX内核协议栈网桥转发表项的学习和转发原理是根据MAC计算HASH值,以计算出的 HASH值为索引建立和查找转发表项进行数据报文的转发,一个转发表项至少包括端口号、 转发标记、老化时间、出设备。这里出设备就是对应的硬件的端口,通常在表象中一个mac 地址只能对应一个出设备,每一个mac地址对应一个。

7、出设备。在学习阶段,计算数据报文源 MAC地址的HASH值建立转发表项;在转发阶段,计算目的MAC地址的HASH值,通过HASH查 找转发表项进行转发。因此,对于同一个MAC地址计算出的HASH值在网桥中只能建立一个 转发表项、对应一个出设备,对于去往其它出设备的数据报文因走错出设备而到达不了目 的地,不能满足数据转发的需求。 发明内容 0003 本发明针对目前目前LINUX内核协议栈网桥的实现方式中对于同一个MAC地址计 算出的HASH值在网桥中只能建立一个转发表项、对应一个出设备,对于去往其它出设备的 数据报文因走错出设备而到达不了目的地,不能满足数据转发的需求的不足,提供一种利 用VLA。

8、N IDMAC实现Linux内核协议栈网桥数据转发方法。 0004 本发明为了完成其技术目的所采用的技术方案是:一种Linux内核协议栈网桥数 据转发方法,包括以下步骤: A、系统启动时初始化存储转发表项的双向链表; B、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于建立 转发表项的VLAN ID;从数据包中提取出用于建立转发表项的源MAC地址; C、计算步骤K的所述的VLAN ID和源MAC地址的HASH值; D、根据步骤C计算的HASH值轮询转发表项: a)未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中; b)找到转发表项,更新找到转发表项的老化时间。

9、; E、根据待转发数据报文所带源设备与VLAN的绑定关系找该待转发数据报文用于查找 转发表项的VLAN ID;从数据包中提取出用于查找转发表项的目的MAC地址; F、计算步骤E中的所述的VLAN ID和目的MAC地址的HASH值; G、根据步骤F中计算的HASH值轮询转发表项: 1)找到转发表项,根据转发表项进行转发; 2) 未找到转发表项,在桥中广播该数据报文。 说 明 书CN 102780627 A 2/3页 4 0005 进一步的,上述的Linux内核协议栈网桥数据转发方法中:所述的步骤A中,初始 化存储转发表项的双向链表是在LINUX内核启动的时初始化的。 0006 进一步的,上述的L。

10、inux内核协议栈网桥数据转发方法中:在步骤B和E中,通过 应用层的设置将VALN ID和端口设备进行绑定,在系统启动时我们将VLAN和端口设备的绑 定关系传入内核协议栈,在内核中根据数据报文所带的源端口设备可以快速查找VLAN对 应的VLAN ID。 0007 进一步的,上述的Linux内核协议栈网桥数据转发方法中:在步骤D中,插入转发 表项时需要给表项分配内存,然后插入到存储转发表项的双向链表中;在表项超时后,需 要将对应的转发表项从存储转发表项的双向链表中删除,同时将分配改该表项的内存释放 掉。 0008 本发明的有益效果是整个过程实现起来简单,容易实施,对LINUX内核的稳定性, 扩展。

11、性有保证,非常适合于基于LINUX系统的嵌入式设备网桥数据转发的需求。 0009 LINUX内核协议栈网桥的学习和转发方法原理是根据MAC计算HASH值,以计算的 HASH值为索引建立和查找转发表象进行数据报文的转发,对应同一个MAC地址只能建立一 个转发表象,而一个转发表象对应同一个出设备,这样就导致了同一个MAC去往不同出设 备的数据流只有一个能通;本发明通过VLAN ID和MAC共同计算HASH值,对于同一个MAC 可以学习到对应不同出设备的转发表象,保证同一个MAC去往不同出设备的数据流畅通。 0010 下面通过结合具体实施例和附图对本发明进行进一步的说明。 附图说明 0011 附图1。

12、是本发明实施例1流程图。 具体实施方式 0012 如图1所示,本实施例是一种以VLAN+MAC实现的LINUX内核协议栈网桥的数据转 发方法,该方法借助网络数据报文和设备配套软件指令实现,具体包括启动引导程序、加载 LINUX系统内核、启动应用程序、查找MAC和VLAN、学习转发表项、转发数据报文过程。首先 在LINUX内核协议栈起来时,初始化一个存储转发表项的双向链表,当有数据报文进入内 核协议栈网桥时,通过VLAN和MAC共同计算HASH值,以HASH为索引建立转发表项,插入到 存储转发表项的双向链表中,对于同一源的MAC地址,能学习到对应多个不同出设备的转 发表项。本方法的步骤包括: 步。

13、骤1、系统启动,初始化存储转发表项的双向链表; 步骤2、根据数据报文所带源设备与VLAN ID 的绑定关系找该数据报文用于建立转发表项的VLAN ID;从数据包中提取出用于建立 转发表项的源MAC地址; 步骤3、计算步骤2中VLAN ID和MAC地址的HASH值; 步骤4、根据步骤3计算的HASH值轮询转发表项: 1)未找到转发表项,建立以HASH值为索引的转发表项插入到转发表中; 2)找到转发表项,更新找到转发表项的老化时间; 步骤5、根据数据报文所带源设备与VLAN ID的绑定关系找该数据报文用于查找转发 说 明 书CN 102780627 A 3/3页 5 表项的VLAN ID;从数据包。

14、中提取出用于查找转发表项的目的MAC地址; 这里步骤2和5中的vlan id都是应用层设定的与端口设备绑定的vlan id,不同的 vlan id与不同的端口设备绑定,因此根据数据包所带源设备与vlan id的绑定关系可以查 找vlan id。 0013 步骤6、计算步骤5中VLAN ID和MAC地址的HASH值; 步骤7、根据步骤F中计算的HASH值轮询转发表项: 3)找到转发表项,根据转发表项进行转发; 4)未找到转发表项,在桥中广播该数据报文; 本实施例在建立转发表项前,先要初始化存储转发表项的双向链表,在步骤A中,初始 化存储转发表项的双向链表是在LINUX内核启动的时初始化的。 00。

15、14 在步骤B和E中,通过应用层的设置将VALN和端口设备进行绑定(对于没有绑定 VLAN的端口设备默认其VLAN为0),在系统启动时我们将VLAN和端口设备的绑定关系传入 内核协议栈,在内核中根据数据报文所带的入端口设备可以快速查找VLAN其对应的VLAN 值。 0015 在步骤D中,插入转发表项时需要给表项分配内存,然后插入到存储转发表项的 双向链表中;在表项超时后,需要将对应的转发表项从存储转发表项的双向链表中删除,同 时将分配改该表项的内存释放掉,以节省内存空间,防止内存泄露。 0016 在整个LINUX内核协议栈网桥的转发过程中,有两次查找转发表项的动作,第一 次查找是在学习阶段,根。

16、据数据报文源MAC和VLAN计算的HASH值查找的,以确定对应该源 MAC和VLAN组合的转发表项有没有建立。 0017 这里学习阶段就是指转发表项建立阶段,转发表项都是通过学习建立的, 在学习 阶段根据源mac和vlan id计算的 hash值查找转发表项,没有找到就建立转发表项, 找到 了就更新老化时间。转发阶段就是指转发数据的时候查找转发表项进行数据转发的过程, 根据目的mac和vlan id计算 hash值如果找到表象就转发数据报文,没有找到就广播数 据报文;VLAN ID 用来区分不同的业务数据流(业务如:上网、语音、IPTV业务等),值在1到 4096之间。 0018 第二次是在转发阶段,根据数据报文的目的MAC和VLAN计算的HASH值进行查找 的,用于确定数据报文往那个接口转发,对于没有找到表项的数据报文则在网桥中广播该 数据报文。 说 明 书CN 102780627 A 1/1页 6 图1 说 明 书 附 图CN 102780627 A 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1