没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
GCNAT
目录
1. 缩写词 .........................................................................................................................................3
2. 概述 .............................................................................................................................................3
2.1. 应用及原理 ......................................................................................................................3
2.2. 需求总结 ..........................................................................................................................5
3. 总体架构 .....................................................................................................................................5
3.1. 模块关系 ..........................................................................................................................5
3.2. 外部模块处理流程 ..........................................................................................................8
3.2.1. gcnet .......................................................................................................................8
3.2.2. Skbuff ......................................................................................................................8
3.2.3. Bridge......................................................................................................................8
3.2.4. conntrack ................................................................................................................9
3.2.5. netdev .....................................................................................................................9
4. 详细设计 ...................................................................................................................................10
4.1. Gcnat 内部模块划分 .......................................................................................................10
4.1.1. CFG 配置模块 .......................................................................................................10
4.1.2. DB 数据库模块.....................................................................................................10
4.1.3. Timer 处理模块 ....................................................................................................11
4.1.4. Hook 处理模块 .....................................................................................................11
4.1.5. Core 核心处理模块 ..............................................................................................11
4.2. 快转学习流程 ................................................................................................................11
4.2.1. Rx Hook Proc.........................................................................................................12
4.2.2. Tx Hook Proc .........................................................................................................12
4.3. 软件快转流程 ................................................................................................................14
4.4. Linux Kernel 模块事件的 Hook 处理 ..............................................................................15
5. 数据结构 ...................................................................................................................................16
5.1. 配置数据 ........................................................................................................................16
5.2. 状态数据 ........................................................................................................................18
5.2.1. 统计信息 .............................................................................................................18
5.2.2. 表项结构 .............................................................................................................18
5.2.3. 快转规则 Hash 链表 ...........................................................................................20
5.3. 数据同步 ........................................................................................................................20
6. 算法描述 ...................................................................................................................................21
6.1. 快转软表的 Hash 算法 ..................................................................................................21
6.2. 快转规则的构建算法 ....................................................................................................21
7. API 接口......................................................................................................................................21
7.1. 对外提供的 hook 处理接口 ..........................................................................................21
7.1.1. Rx Proc hook .........................................................................................................21
7.1.2. Tx Proc hook..........................................................................................................21
7.1.3. 报文转发类型的处理接口..................................................................................22
7.1.4. 释放 sk_buff 中的 gcnat 数据.............................................................................22
7.1.5. 克隆 sk_buff 中的 gcnat 数据.............................................................................22
7.1.6. 根据 dev 删除快转表项......................................................................................23
7.1.7. 根据 conntrack 信息删除快转表项....................................................................23
7.1.8. 根据 MAC 地址查找快转表项............................................................................23
7.1.9. 根据 conntrack 信息查找快转表项....................................................................23
7.2. 需要 SDK 提供的硬件表项操作接口 ............................................................................24
7.2.1. 添加快转表项 .....................................................................................................24
7.2.2. 删除快转表项 .....................................................................................................24
7.2.3. 判断硬件表项是否超时......................................................................................25
8. 诊断调试 ...................................................................................................................................25
8.1. 调试打印 ........................................................................................................................25
9. 限制条件 ...................................................................................................................................25
10. 附录 .........................................................................................................................................26
10.1. 待确认的问题 ..............................................................................................................26
1. 缩写词
缩写
全称
HW
Hardware Platform
SDK
Software Development Kit
API
Application Interface
ct
conntrack
PD
Packet Description,包含接收或发送端口、设备等信息
2. 概述
本文档描述 gcnat 模块,即快速转发模块的应用、原理、需求、总体架构及详细设计。
2.1. 应用及原理
Gcnat 通过监听经过网关设备的数据流转发过程,分析并建立基于流的快速转发规则,
提供软件和硬件层的快速转发能力。其过程分为以下几个个阶段:
1) 学习阶段
通过监听经过网关设备转发的数据流,基于流转发前后的信息对比建立快速转发规
则。
图 2-1. 学习阶段流转发模型
为避免网络干扰报文等情况消耗快转资源,仅仅当转发次数达到门限的报文进行快
转学习。此门限目前仅对 IPv4 的三层转发报文有效。其中 TCP/UDP 分别有独立的门限,
默认都为 10 个报文,可配置。
2) 软件快速转发阶段
对于已经学习并建立了转发规则的数据流,gcnat 模块直接根据转发规则进行快速
转发,不再经过后续其它转发逻辑的处理,以提高转发效率。
图 2-2. 软件快转阶段流转发模型
3) 硬件快速转发阶段
若硬件支持快转逻辑,开启硬件快转后,若达到硬件快转条件,则会进行硬件快转
表项的设置,后续的数据流,将在硬件中直接进行转发处理,不再经由软件层转发,以
达到更高的,接近线速的转发性能。
图 2-3. 硬件快转阶段流转发模型
硬件快转条件为:
1) 使能了硬件快转(可配置使能或关闭);
2) 当学习到转发规则后,若 1s 内该流的数据包达到指定个数(默认为 10 个报文,
可配置)时,触发硬件快转配置表项下发;
4) 快转表项老化阶段
本设计支持快转表项老化机制,以回收过时的资源。本设计支持硬件和软件表项的
独立老化机制。当硬件表项老化后,将从硬件快转阶段回退到软件快转模式。当软件表
项老化超时后,将回退到最初的未学习状态,不再进行快转,待重新学习后,再进入快
转模式。
硬件表项老化时间为 5s(需确认),软件表项老化时间默认 15s,可配置。只有当硬
件表项老化后,软件表项才能被老化删除。
2.2. 需求总结
结合 Gcnat 的应用和原理,以及从功能灵活性、易用性和可维护性方面的考虑,gcnat
针对已知单播报文需要提供的细分功能如下:
1) 支持快速转发逻辑的自动监听和学习;
2) 支持软件快速转发;
3) 支持硬件快速转发,可开关配置;
4) 支持配置触发 IPv4 及 4in6 Tunnel TCP/UDP 快速转发规则学习的门限报文数量,减
少干扰报文对快转资源的消耗;
5) 支持硬件快速转发规则下发的条件(即 1s 内此流多少个转发报文将触发硬件表项
下发)配置,减少不必要的硬件资源消耗;
6) 支持全局开关配置;
7) 支持硬件和软件转发表项的定时老化机制;
8) 支持二层及三层转发规则的读取和显示;
9) 支持必要的诊断调试手段。
3. 总体架构
3.1. 模块关系
本章节描述 gcnat 与系统中其它有关联的功能模块之间的关系,以及各外部模块对 gcnat
提供的功能支持。
图 3-1. 模块关系图
剩余25页未读,继续阅读
神康不是狗
- 粉丝: 31
- 资源: 338
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0