当前位置: 首页 > news >正文

getaway网关转发去前缀_如何极度压榨网络性能:揭秘 UCloud 的物理云网关

f7c435da19626cdcc5ee2bb3c5293138.png

和绝大多数人想象中的不同,物理云服务器并非直接帮你上架一个服务器就行

近些年来,云计算蓬勃发展,上云成为现在软件开发落地的首选。但随着企业业务的不断增长和扩大,传统云计算的劣势也暴露出来:单体硬件性能不够,只能堆集群;租户隔离不够彻底,时有新闻爆出问题。因此,物理机服务器又再一次的被提上了台面。

创立于 2012 年的 UCloud,从 2013 年伊始就面向市场同时提供了基于虚拟化服务器的公有云产品和基于裸金属服务器的物理云产品。不过,和绝大多数人想象中的不同,物理云服务器并非直接帮你上架一个服务器就行的,其背后也有不少复杂的技术难点需要 UCloud 及合作伙伴们去攻关。这其中最为艰难的,可能就是虚拟网络相关特性的研发。

物理云产品和公有云产品最大的不同就在于客户可以独占并完全控制整台物理服务器,UCloud 作为服务商并不会在服务器上运行任何虚拟化的软件。这使得想要让物理云产品和公有云产品的网络互通、让物理云产品享受到公有云产品所享有的网络优势变得十分困难。特别是一些有状态的特性比如安全组等实现起来更加困难。

UCloud 踩过的那些坑

bebf0fcf86bf67fb45e02ae1e4fc3658.png

从 2013 年开始,UCloud 开始使用 Open vSwitch 来构建基于 Openflow 技术的公有云 SDN 虚拟网络。也因此,同年, UCloud 提供物理云产品的时候,选用了支持 OpenFlow 的 SDN 交换机,以实现物理云产品和公有云 VPC 网络的互通。

2014 年,随着 UCloud 业务的扩大和快速发展,已有的交换机所提供的 OpenFlow 流表有限的条目已经无法支撑实际物理云产品业务的需求。

2015 年,已经在 DPDK 技术上做了两年研究储备的 UCloud 领先在产品环境推出了采用 DPDK 技术的服务器集群,从而替代硬件 SDN 交换机,满足业务层面的需求。

但随着以太网技术的发展,人工智能、大数据等应用的落地,网络技术的发展得到了爆发般的发展,25G、100G 的网络迅速得到普及, DPDK 网关集群的转发性能和成本问题逐渐成为业务发展的瓶颈。

079785a6940a7e03cfa9283268c9293a.png

时间来到了 2019 年, UCloud 开始使用智能网卡(Smart NIC)来替代原有的 DPDK 网关集群。UCloud 采用的智能网卡方案采用了 16 核 ARM CPU 运行 OVS 作为 SlowPath,采用 Linux TC Flower 卸载技术将网卡芯片作为 FastPath,通过 SRIOV 技术和用户系统集成,很好地解决了性能问题,但与此同时,其所带来的高昂采购成本造成了成本的提升。此外,由于所采用的智能网卡的转发面尚不可编程,也使得任何新的特性都需要网卡芯片厂商修改固件来实现。甚至一些比较复杂的特性也不能实现。比较典型的例子就是为了让智能网卡支撑 UCloud 使用的 Overlay 封装格式,就花费了半年时间才在和网卡芯片厂商反复沟通协调下完成,而类似带宽控制、硬件卸载的特性却难以实现。

痛定思痛的深度思考

六年的艰辛探索,让 UCloud 调研试验了几乎市面上所有的各种网络网关方案。而这些年来踩的坑,也让 UCloud 看到了这一代网关产品的问题和不足。作为战斗在云计算网络技术一线的团队,UCloud 基于实践经验,总结出了下一代物理云网关应该满足的一些需求:

  1. 全功能:能够提供和公有云一样的网络特性,比如有状态服务安全组等。
  2. 高性能:能够满足从 25G 网络到 100G 网络的需求。
  3. 低成本:比 DPDK 网关和智能网卡网关有更低的拥有成本。
  4. 可定制:能够满足定制需求,可以基于此进行进一步的演进。
98140465054acd4d5bbf94667224b59c.png

基于 Jericho2 芯片的下一代物理云网关 —— BCM88690

在使用现有的智能网卡解决方案的同时, UCloud 也在积极的在技术市场上寻找合适的下一代物理云网关,以替换现有的产品解决方案。

首先进入 UCloud 视线的是某公司的一款高性能交换机。它和智能网卡一样可以运行 Linux 和 Open vSwitch,更加难得的是,其通过 Switchdev 支持 OVS TC Flower 卸载,并使用交换机芯片作为 OVS 的 FastPath。遗憾的是交换芯片对 TC Flower 卸载的支持仍然不好,造成很多功能无法卸载。并且交换芯片不支持用户编程,UCloud 无法修改交换芯片的管线来满足自己实际的业务需求。

而在这时,博通正在研发 Jericho2 可编程交换芯片相关的产品,于是 UCloud 与博通一拍即合,与博通合作利用 Jericho2 可编程交换芯片研究开发物理云网关,并基于研究的成果,开发出了能够完美满足 UCloud 需求的物理云网关。

在技术层面上,UCloud 通过在 Jericho2 可编程交互芯片上定制了管线来作为 TC Flower 的 FastPath,并在交换机控制面运行 Linux + OVS 作为 SlowPath ,并通过 TC Flower Offload 将两者集成在一起,从而实现硬件的加速。

26c292075a0d9814519035c8d9f1c3f6.png

当报文进入交换芯片,首包未命中时通过可编程交换机的虚拟网卡进入交换机的 Linux 内核,通过 OVS 的 Datapath 触发 ovs-vswitchd 下发新的 Openflow 流表。UCloud 通过对 OVS 做了尽量少的改动,将原先通过 Netlink 发送到内核去的 TC Flower 卸载消息通过 UNIX 套接字发送到运行在用户态的 Jericho2 Agent,它再将消息转化为对应的可编程交换机的消息下发给交换芯片。后续报文将直接命中交换机管线中的流表,由交换芯片转发。

0b67f893f5411459598c84fc990504f8.png

Jericho2 提供了业界独一无二的可编程架构,除了管线节点可编程外,还可以进行管线延展,在增加了处理流程的同时而没有损失任何转发性能。其基于 C++ 的编程工具链,成熟且直观,使 UCloud 可以轻松的基于现有芯片添加功能、在线升级,并轻松的根据实际需求进行定制和实施。得益于 Jericho2 灵活的可编程能力,UCloud 和博通合作在交换芯片上实现了 OVS 的 TC Flower 卸载转发面,可以实现和智能网卡同样的 OVS 卸载功能,但达到了 4.8T 的转发性能,相当于 48 块 100G 智能网卡。并且还保留了进一步扩展定制的能力,以实现 UCloud 使用的 Overlay 封装格式 GRETAP 为例,可以完全自行开发、灵活修改,一周的工作就能完成。

2bdac055b11dd28675e14a10e9d2ffb6.png

另外 Jericho2 真正的模块化表项结构,所有表项共享同一块物理缓存,极大增加了片上资源的使用效率。管线上所有处理节点可以并行访问,根据不同的应用场景进行逻辑表项的灵活划分,使得同样的硬件可以应用在完全不同的使用场景。丰富的表项资源使得新一代的网关能够完全满足用户现有甚至未来可见数年的规格需求。

最终, UCloud 实现了一个完全和公有云特性兼容,转发能力高达 4.8T ,并且可以自由定制,成本也非常有竞争力的物理云网关。这满足了对于下一代物理云网关所定义的四大需求:全功能、高性能、低成本、可定制。

总结

UCloud 作为国内公有云市场的大玩家,更是如今国内的公有云第一股,在国内风起云涌、巨头林立的大环境下,稳稳的占据了属于自己的市场, 实属不易。而 UCloud 能做到这一点,得益于其始终坚持“客户为先”的价值观,及时响应客户需求,快速解决客户问题,不断推出超出客户预期的创新产品和服务。也正是这样对于客户为先的价值观,让 UCloud 不仅能做好服务,更能打造出卓越的产品。

点击“了解更多”可访问文内链接

相关文章:

  • esp32 camera_利用Phyphox和ESP32蓝牙探究光敏电阻电流与光强的关系
  • iphone如何信任软件_不是什么数据都能恢复的:留神那些号称可以恢复iPhone数据的工具...
  • 360安全浏览器兼容模式怎么设置_网络资讯:360安全浏览器怎么样
  • csrf攻击原理与解决方法_动图之磁翻板液位计原理及指示异常的判定解决方法...
  • ligergrid 奇偶行效果_淘宝补单多久有效果?如何操作?
  • mybatis核心工厂类是哪一个_温州核心区将建文化新地标!设计方案出炉,你喜欢哪一个?...
  • 大多数日志文件的后缀名是_网络日志分析的重要性
  • eclipse可以写前端吗_ISO9001质量体系认证证书上可以写两个公司名称吗?
  • 数字电路数据选择器及其应用实验报告_岂止于大,一文读懂大数据及其在推荐系统的应用...
  • java前沿技术_初学者如何才能成为一名优秀的Java程序员
  • xampp去运行php文件_五、??文件包含漏洞
  • o型圈沟槽设计_2020内蒙古大尺寸O型密封圈报价
  • win8连接wifi成功但受限制_电脑连无线网提示无线网络受限制?路由电脑都重启了没用...
  • max日期最大值为0_【Excel函数教程】比VLOOKUP好用10倍,你却只会用MAX求最大值?...
  • pyhton=实现调用自定义模块_python的模块与函数
  • [deviceone开发]-do_Webview的基本示例
  • CSS魔法堂:Absolute Positioning就这个样
  • ES6 学习笔记(一)let,const和解构赋值
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Leetcode 27 Remove Element
  • Magento 1.x 中文订单打印乱码
  • Nacos系列:Nacos的Java SDK使用
  • NSTimer学习笔记
  • SpringBoot 实战 (三) | 配置文件详解
  • 彻底搞懂浏览器Event-loop
  • 聊聊sentinel的DegradeSlot
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 深度学习中的信息论知识详解
  • 实现菜单下拉伸展折叠效果demo
  • 小程序测试方案初探
  • 新版博客前端前瞻
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • raise 与 raise ... from 的区别
  • ​油烟净化器电源安全,保障健康餐饮生活
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4.10~4.16)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (分布式缓存)Redis持久化
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)winform之ListView
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET和.COM和.CN域名区别
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .php文件都打不开,打不开php文件怎么办