CCN网关子网清理性能优化

01


项目背景 

云联网(Cloud Connect Network)为用户提供一种能够快速构建跨地域VPC之间以及云上多VPC与云下多数据中心之间的高速、优质、稳定的网络能力,帮助用户打造一张具有企业级规模和通信能力的全球云上网络。通过创建云连接,将用户需要实现互通的不同地域的网络实例加载到云连接实例中,就可以快速的为用户提供全球网络互通服务,这里的网络实例可以是用户自己创建的VPC实例也可以是本地数据中心的IP资源。

02


CCN V1版本优化简述 

随着公司内业务不断上云,VPC间访问需求也随之增加,云联网网关不仅承担跨地域的流量,同时也会承载同地域VPC间的东西流量,网关的压力。之前在云联网优化v1版本中将云联网中报文的转发由每个报文转发处理改为session模式处理,极大提高了云联网转发性能。但是转发性能提高的同时也引入了一些新的问题。

03


现有问题

3.1 云联网架构描述

云联网网关由控制面和转发面组成,控制面对外提供API,供业务创建ccsi规则来打通vpc之间/idc与vpc之间的访问。转发面基于DPDK框架,通过加载ccsi转发规则,完成数据包的策略匹配,最终通过VXLAN封装数据包后,发送至正确的节点。其中包含几个基础概念,CCSI(一个云联网实例,子网路由挂载在实例下)、ROUTE-子网路由(需要打通的vpc或idc网段)、下一跳(云联网网关封VXLAN包的外层源ip)。

图1 云联网架构图

3.2 优化v1版本云联网优化方案

图2 云联网v1优化方案

3.3 优化v1版本CCN报文转发流程

a 根据报文携带的vxlanid遍历ccsi实例的哈希表获取与当前vxlanid相同的ccsi_entry节点

b 拿到ccsiid后根据ccsiid遍历ccsi实例的哈希表获取id相等的ccsi实例节点信息

c 根据源ip对ccsi实例节点下关联的子网进行路由匹配

d 根据目的ip对ccsi实例节点下关联的子网进行路由匹配

e 源目的IP都匹配成功后,根据目的ip的vxlanid遍历vpc哈希表查询是否存在当前vpc

 f 根据vxlanid及目的ip地址信息查询vpc哈希表确认目的IP对应的虚机是否存在

g 查到虚机具体信息后,用于封装vxlan数据包转发至正确的节点

建立session后的报文转发:

a 根据报文源目的IP查询是否存在session

b 存在则根据session记录的信息,封装vxlan数据包转发至正确的节点


图3 V1版本云联网转发流程

3.4 优化v1版本云联网产生的问题

基于上述v1版本优化云联网的转发性能得到了极大的提升,网卡利用率由优化前的20%提升到80%以上,但是提升性能的同时伴随着大量session的创建,在v1版本中sesion的清理工作实现包括session本身的老化处理,空连接的定时清理工作,删除子网或者vport信息时,遍历session表中的清理工作,当云联网中的配置发生变化(删除子网route或者是删除vport信息)时,需要查找到要删除的子网route或vport所关联的session。这里就会出现一个很苦恼的问题,创建session时是以源ip及目的ip座位hashkey的计算因子,当删除子网或者vport信息时,是拿不到源ip和目的ip相关信息的。因此只能遍历整个session表,逐个节点查询匹配当前要删除的子网或者vport信息,这样查询效率很慢。如果当前有大批量的删除子网route或者vport信息时就会出现明显的网络抖动,甚至导致bgp断连,因此,如何提高session清理时的查询算法变得尤为重要。

04


优化方案

如何绕过对会话表的查询动作呢?如果在删除子网路由的时候可以同时获悉当前路由下的所有session节点就可以完美的绕过对大会话表的查询动作。因此在conn结构和route结构中分别增加一个list,在ccn转发过程中,如果报文匹配上所有策略创建session时,将当前session节点挂载在session表和route结构链表中,如此在每个route结构下都挂载了当前子网下的所有session节点,在清理时就可以由原先的遍历整个session表下所有node变为遍历当前route结构下挂载的list节点,如下所示:

4.1 优化前数据结构

图中每个hash节点的key都是由源目地址相同的报文组成,删除子网时需要按顺序遍历整个session表。

图4 session表数据结构

4.2 优化后数据结构

图中每个节点都是要删除的子网结构下挂载的session节点,直接遍历子网结构下的所有list即可

图5 route结构中挂载conn_list结构

如此可以极大减少查询动作。

但是需要注意的是,在删除子网时清理session表session节点的同时,需要清理掉当前route结构下链表对应的session节点,相应的在删除vport或者超时情况下,出现清理session表动作的情况下,需要清理掉route结构下的链表节点

05


性能测试结果


5.1 测试环境

网关服务器,配置具体如下:

服务器配置

网卡

25G迈络思网卡

cpu

Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz

操作系统

centos7.2

5.2 删除200条CCN子网

25G网卡流量满载测试结果如下:

优化前版本:

两台虚机经云联网网关互访,网络抖动明显,bgp断连

图6 V1版本延迟

优化后版本

两台虚机经云联网网关互访,网络无抖动

图7 V2版本延迟

06


后续优化

目前高性能版本的云联网已经上线至公司的三个地域,持续稳定运行了2个多月。后面我们还会逐步卸载一些VPC间流量到云联网网关上,来减轻其他种类网关压力。另外,高性能版本的云联网还有继续可优化的点,比如当前session实现为无状态方式,ccn网关收包和回包不一定在同一cpu核上,会分别在不同核上创建新的会话,后续可以参考负载均衡中的有状态会话,增加redirect会话重定向机制。这样收包和回包会走同一条session落到一个cpu核上,可以极大减少每个cpu核上的会话数。会话查看工具也在逐步完善中,通过工具可以掌握目前每个核的session负载情况,有助于问题排查。


更多技术干货,

请关注“360智汇云开发者”👇

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。

目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案。

官网:https://zyun.360.cn(复制在浏览器中打开)

更多好用又便宜的云产品,欢迎试用体验~

添加工作人员企业微信👇,get更快审核通道+试用包哦~

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值