多核处理器下的快速包处理软件架构FastGate

2023-11-04

FastGate主要的目标是帮助用户缩短研发周期,保护已有的代码,快速开发和灵活部署自己的业务。用户无需关注多核处理器的硬件细节、无需关注性能和扩展性,只需专注于自身功能模块的开发,然后通过和FastGate框架的无缝集成便可以快速形成自己独有的产品,推出市场,同时又可以根据业务需要,灵活的扩展。


FastGate框架的的设计和SDN & OpenFlow的思想很吻合。主要特点如下:

(1)控制平面和数据平面分离。控制平面主要包括session、Flow和信令的管理,运行在User Space和Slow Path环境中。数据平面由一精简的指令集组成,运行在FastPath环境中,专门负责网络报文的处理和转发。Application、SlowPath和FastPath三者之间通过MCC(Multi-core Communication)通信,MCC同时支持本地和远程通信。

(2)通过在FastPath和SlowPath引入ENS Framework,网络协议栈的功能得以以模块的方式互联,模块可以静态或动态的插拔,通过配置平面组合成不同的网络协议栈,以适应不同网络设备对协议栈的需求。

(3)Application可以运行在本地,也可以是远程的信令模块,并可单独开发和部署。从而降低系统的耦合性,提高整体的可靠性和扩展性。用户或第三方的Application可以无缝的和FastGate框架进行集成。

(4)FastPath运行在独立、高效的多核执行环境中,对网络报文的处理要求做到Simple and Stupid, 使其得以充分发挥多核并行处理的性能优势。为此,FastPath中的功能模块都采用高效的数据结构和算法,并针对多核并行处理进行优化。

(5)SlowPath由优化的Kernel协议栈和ENS Framework组成,主要负责IP协议栈的Session、Flow等的管理,并和FastPath进行数据同步。


ENS(Extensible/Efficient Network Stack Framework)负责构建网络协议栈。ENS中的各个功能模块之间是相互独立和透明的,模块之间通过hook的方式互连。模块可以静态或动态的添加和删除,这使得协议栈的扩展非常灵活,而又无需担心性能问题。由于ENS Framework应用在整个协议栈,使得用户不论是在L2、L3,还是L7都可以很容易的扩展自身的业务,从而使得整个系统兼具软件的灵活性和硬件的高性能。

以LTE EPC中SGW和PGW为例,用户的开发也分为控制平面和数据平面。控制平面即符合3GPP规范的SGW和PGW的协议部分,开发完成后,可以部署在FastGate所在的板卡,也可以根据需要部署在独立的板卡上。数据平面即SGW&PGW的报文处理部分,开发完成后作为一个功能模块插入到Fast Path的ENS Framework中,就形成了SGW&PGW的网络协议栈。

关于系统的性能,下面给出基于Cavium cn5850(12 Cores, 600Mhz)的IPv4 Unicast Forwarding (8 cores for fastpath)的性能测试数据:

Fib Number 28,892
Memory Occupied(MB): 3.44
Measured in PPS 4,627,408
Measured in Mbps 4,000 (limited by I/O throughput of ispan9210)
Measured in Latercy(μs) 5 ~ 10

 目前FastGate已经在包括ATCA 和Micro-TCA多个平台上应用,所涉及的项目包括Wi-Fi AC, ASN GW, Femto SeGW, LTE EPC PGW, LTE EPC SGW等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多核处理器下的快速包处理软件架构FastGate 的相关文章

  • 系统架构设计高级技能 · 软件可靠性分析与设计

    系列文章目录 系统架构设计高级技能 软件架构概念 架构风格 ABSD 架构复用 DSSA 一 系统架构设计师 系统架构设计高级技能 系统质量属性与架构评估 二 系统架构设计师 系统架构设计高级技能 软件可靠性分析与设计 三 系统架构设计师
  • Linux mmap系统调用视角看缺页中断

    问题 1 mmap具体是怎么实现比read write少一次内存copy的 2 mmap共享映射和私有映射在内核实现的时候到底有什么区别 3 mmap的文件映射和匿名映射在内核实现的时候到底有什么区别 4 父子进程的COW具体怎么实现的 概
  • Ubuntu16.04编译Linux内核

    本文介绍在Ubuntu中编译Linux内核并添加新的启动项信息 第一步 下载内核源码并解压 内核源码可以在官网下载 点击打开链接 笔者用的内核版本是4 14的 把下载好的内核源码放在 usr src kernel目录下 没有这个目录的话可以
  • printk函数的用法

    printk在内核源码中用来记录日志信息的函数 只能在内核源码范围内使用 用法和printf非常相似 printk函数主要做两件事情 第一件就是将信息记录到log中 而第二件事就是调用控制台驱动来将信息输出 1 日志级别 printk相比p
  • 系统架构设计知识梳理--分布式架构

    CAP理论 C 一致性 一般指强一致性 A 可用性 常见指标TP999 P 分区容错性 其中一致性与可用性存在矛盾 需要开发者根据实际业务取舍 一致性解决方案 Raft算法 原理是将集群中所有服务归为三类角色 leader 领导者 foll
  • 操作系统读书笔记- 01 x86系统架构概览.md-html

    x86系统架构概览 真看不懂了 今天就写这些吧 2 0 处理器工作模式 一般来讲 x86 64处理器具有5种工作模式 实模式 Real address Mode 处理器以16位8086的方式工作 只能以简单的段地址 偏移地址方式进行寻址 地
  • 软件系统产品线特征及构建过程

    根据SEI定义 结合业界的一些研究 软件产品线有如下几个重要特征 1 一个软件产品线应该有一系列的产品成员组成 既产品家族 2 产品家族中的所有产品都服务于一些特定的领域 3 产品家族成员之间在服务功能 产品质量 产品性能 产品应用范围等方
  • linux内核之无锁缓冲队列kfifo原理(结合项目实践)

    无锁缓冲队列kfifo 1 kfifo概述 2 kfifo功能描述 3 kfifo put与 kfifo get详解 4 kfifo get和kfifo put无锁并发操作 5 总结 6 项目使用介绍 7 其它 userspace 移植实现
  • 结构化设计和模块设计

    结构化设计 结构化设计包括架构设计 接口设计 数据设计和过程设计等任务 它是一种面向数据流的设计方法 是以结构化分析阶段所产生的成果为基础 进一步自顶而下 逐步求精和模块化的过程 1 概要设计与详细设计的主要任务 概要设计阶段的主要任务是设
  • iptables上如何封IP

    一 封单个IP 1 封锁单个ip iptables I INPUT s IP j DROP root node1 iptables I INPUT s 192 168 1 11 j DROP root node1 iptables L Ch
  • linux网络全景指南

    自我介绍 腾讯云网络高级工程师 腾讯云网络核心开发人员 欢迎微信搜索 职场重生 关注公众号 职场重生 后续更多精彩内容发布 万字长文 建议收藏 引言 本期分享一个比较常见的 络问题 丢包 例如我们去ping 个 站 如果能ping通 且 站
  • 基于树莓派博通BCM2835芯片手册导读写编简单引脚驱动代码编译和测试(树莓派)

    编写引脚驱动代码 这边写的是17引脚的驱动代码代码 IO口控制的代码在下面 这边只是简单的代码 驱动代码 include
  • 系统架构设计师-数据库系统(1)

    目录 一 数据库模式 1 集中式数据库 2 分布式数据库 二 数据库设计过程 1 E R模型 2 概念结构设计 3 逻辑结构设计 三 关系代数 1 并交差 2 投影和选择 3 笛卡尔积 4 自然连接 一 数据库模式 1 集中式数据库 三级模
  • 初级PHP工程师对于进阶的思考

    突然想写篇博客记录下刚毕业这段时间的经历 主要是对于人生的下一阶段的思考和诸多事物触起的思考 一 人生的下一阶段 人生的意义从来不是为自己奋斗 生活的意义也从来不是奋斗 今年毕业 距离博文发表的现在约莫有2个月 毕业前的我是一个极度执着追求
  • 软件质量属性

    质量特性 质量子特性 功能性 适宜性 准确性 互用性 依从性 安全性 可靠性 成熟型 容错性 可恢复性 可用性 可理解性 易学性 可操作性 效率 时间特性 资源特性 可维护性 可分析性 可修改性 稳定性 可测试性 可移植性 适应性 易安装性
  • 程序的链接

    程序的链接是一个非常实际的问题 他建立在很实际的问题之上 不从程序员的角度去思考问题 则是从软件的角度去思考如何复用错综复杂的代码 因为 这个问题的本质是我们没有给底层的硬件一个完整的可按顺序执行的程序 我们在前几章虽然讨论了指令流的问题
  • 什么是架构,架构的本质是什么

    不论是开发人员还是架构师 我们都一直在跟软件系统打交道 架构是在工作中出现最频繁的术语之一 那么 到底什么是架构 你可能有自己的答案 也有可能没有答案 对 架构 的理解需要我们不断在实践中思考 归纳 演绎 形成自己的认知 一 什么是软件架构
  • 最全的交叉编译Makefile讲解

    最近正在搞交叉编译 参考很多博客 学习了一下Makefile的编写 记录一下Makefile内代码是什么意思 代码如下 简单的hello ko的makefile ifneq KERNELRELEASE obj m hello o else
  • Linux内核之pid为0和pid为1【转】

    转自 https blog csdn net jingyilin2008 article details 7815508 ops request misc 257B 2522request 255Fid 2522 253A 25221592
  • 网盘系统设计:万亿 GB 网盘如何实现秒传与限速?

    Java全能学习面试指南 https javaxiaobear cn 网盘 又称云盘 是提供文件托管和文件上传 下载服务的网站 File hostingservice 人们通过网盘保管自己拍摄的照片 视频 通过网盘和他人共享文件 已经成为了

随机推荐