UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作.docx

UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作 ? ? UCloud外网网关是为了承载外网IP、负载均衡等产品的外网出入向流量,当前基于Linux内核的OVS/GRE tunnel/netns/iptables等实现,很好地支撑了现有业务。同时,我们也在不断跟踪开源社区的新技术发展,并将之用于下一代外网网关的设计。这些新特性可将系统性能和管理能力再提上一档,满足未来几年的需求。在方案设计研发过程中发现,新特性存在不少缺陷和Bug,为此我们向开源社区回馈了10多个patch,并融入到kernel 5.0版本中,帮助完善kernel功能并提升稳定性。 当前业界的多租户外网网关很多都是基于OpenFlow的OpenvSwitch(OVS)方案,然而随着内核路由转发功能的不断完善,利用内核原生路由转发方式进行设计多租户外网网关系统成为一种可能。在这种方式下能有效的使用传统iproute2路由工具以及iptables、nftables等Firewall工具,并且随着SwitchDev技术的兴起,未来将网关系统迁移到Linux Switch上也成为一种可能。 现有kernel 3.x的不足 当前广泛使用的内核版本为3.x系列,例如CentOS 7全系列标准支持的内核为3.10版本,Fedora/Ubuntu等Linux发行版也有大量使用。在3.x系列内核下存在着IP tunnel管理复杂、租户隔离性能损耗等问题。 1. IP tunnel管理复杂 Linux内核创建IP tunnel设备来建立点对点的隧道连接,创建时需指定tunnel dst和 tunnel key。因为宿主机之间两两建立连接,面向宿主机的目的地址众多,这样就会导致网关节点上需要创建成千上万的tunnel设备,在大规模业务环境下,tunnel的管理将变得及其复杂。 2. 多租户隔离导致的性能下降 a. 公有云需要实现多租户隔离以确保用户间的安全和隐私。由于VPC网络下不同租户的内网地址可以重合,导致路由也有重合的可能性,此时需要通过大量的策略路由去隔离租户的路由规则,由于策略路由的链表属性,性能会随着链表长度的增加而急剧下降。 b. 由于Firewall和NAT的实现基于同样链式的iptables,性能损耗同样可观。 3. netns带来性能开销 通过netns实现租户路由和Firewall规则的隔离,但是netns会引入虚拟网卡和协议栈重入开销,使整体性能下降20%左右。 三项内核新技术 为了解决原有方案存在的困扰,我们调研了大量行业主流方案和内核上游的新动向,发现Lightweight tunneling(轻量级隧道,简称lwtunnel)、Virtual Routing Forwarding(虚拟路由转发,简称VRF)以及nftable netfilter flow offload(流卸载)三项内核新技术的特性,可以帮助规避原方案存在的缺陷。 1. Lightweight tunneling Linux内核在4.3版本中引入了轻量级隧道Lightweight tunneling,它提供了通过route方式设置tunnel属性的方法,这样可以避免管理大量的tunnel设备。 创建隧道设备时指定external模式,利用路由设置的轻量级隧道通过tun设备发送报文。 2. Virtual Routing Forwarding Linux内核在4.3版本中引入了VRF的初步支持,并在4.8版本形成完备版本。Virtual Routing Forwarding虚拟路由转发,可以将一台Linux Box的物理路由器当多台虚拟路由器使用,能很好的解决租户路由隔离问题,避免直接使用策略路由。因此,可以将不同租户的网卡加入租户所属的虚拟路由器中来实现多租户的虚拟路由。 3. flow offload Nftables是一种新的数据包分类框架,旨在替代现存的{ip,ip6,arp,eb}_tables。在nftables中,大部分工作是在用户态完成的,内核只知道一些基本指令(过滤是用伪状态机实现的)。nftables的一个高级特性就是映射,可以使用不同类型的数据并映射它们。例如,我们可以映射iif device到专用的规则集合(之前创建的存储在一个链中)。由于是hash映射的方式,可以完美的避免链式规则跳转的性能开销。 Linux内核在版本4.16引入了flow offload功能,它为IP forward提供了基于流的卸载功能。当一条新建连接完成首回合原方向和反方向的报文时,完成路由,Firewall和NAT工作后,在处理反方向首报文的forward hook,根据报文路由、NAT等信息创建可卸载flow到接收网卡ingress hook

文档评论(0)

科技之佳文库 + 关注
官方认证
内容提供者

科技赋能未来,创新改变生活!

版权声明书
用户编号:8131073104000017
认证主体重庆有云时代科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
9150010832176858X3

1亿VIP精品文档

相关文档