介绍
近年来,随着移动支付技术的发展和支付场景的普及,“扫一扫支付”已经成为我们日常生活的重要组成部分。在日常消费、交通、社保、医疗等重点领域和生活场景中,快捷支付给我们带来了诸多便利。作为移动支付基础设施中的关键一环,银行快捷支付系统的稳定性将直接影响到每一位消费者的支付体验。
鉴于快捷支付业务频繁的交互需求,快捷支付系统需要应对每日海量的交易请求,从网络层面来看,具有高频短连接的特点,即连接建立和释放都很快,这里的连接基于TCP()传输控制协议。近年来,G银行不断优化快捷支付网络,不断提高交易成功率,助力提升快捷支付客户体验。
TCP协议简介
TCP 是一种面向连接的、可靠传输的通信协议,其工作阶段分为连接建立、数据传输、连接终止。我们常说的五元组,即源 IP 地址、源端口、目的 IP 地址、目的端口和传输层协议(如 TCP),共同构成了一个连接。
为了确保消息的可靠传输,TCP 协议为每条消息设置了一个序列号,这也确保了传输到接收实体的消息按顺序接收。然后,接收实体对已成功接收的字节发送相应的确认 (ACK)。如果发送实体在合理的往返时间 (RTT) 内没有收到确认,则会重新传输相应的数据。
首先TCP协议通过“三次握手”建立连接,如下图所示:
图1 TCP 三次握手
1、客户端向服务器发送设置了SYN标志的TCP数据包,然后客户端进入SYN-SENT状态;
2、服务器收到客户端的TCP报文后,发送一个带有SYN、ACK标志的TCP报文,然后进入SYN-RCVD状态;
3、客户端在收到服务端带SYN和ACK标志的TCP报文后,发送带ACK标志的TCP报文,随后进入该状态,服务端在收到客户端带ACK标志的TCP报文后,也进入该状态,随后双方进入数据报文交互阶段。
三次握手完成后,客户端与服务器成功建立TCP连接并开始数据传输。数据传输完成后,TCP协议通过“四次握手”终止连接。流程如下图所示(以客户端主动发起关闭连接为例):
图2 TCP协议四次挥手
1、客户端主动发送标志位设置为FIN的TCP报文,然后进入FIN-WAIT-1状态;
2、服务端收到客户端的设置了FIN标志的TCP报文后,向客户端发送设置了ACK标志的TCP报文,然后进入-WAIT状态;
3、客户端收到服务端发送的带ACK标志的TCP报文后,进入FIN-WAIT-2状态,服务端准备释放连接后,主动向客户端发送带FIN和ACK标志的TCP报文,然后进入LAST-ACK状态。
4、客户端收到服务端带FIN和ACK标志的TCP报文后,向服务端发送带ACK标志的TCP报文,然后进入TIME-WAIT状态。服务端收到客户端发送的带ACK标志的TCP报文后,关闭连接。客户端也是在等待TIME-WAIT状态(2个最大报文存活时间)超时后关闭连接。
快捷支付架构介绍
快捷支付系统的业务逻辑流程通常包括:商户发起快捷支付交易请求,通过运营商专线到达银行三方中间业务DMZ区域,经过银行防火墙、负载均衡或加解密设备处理后与银行快捷支付系统进行连接交互。每笔交易将建立两个连接。具体流程为:商户先通过“三次握手”与银行加解密设备建立TCP连接(图3中连接1),商户向银行加解密设备发起交易请求对密文进行解密,然后加解密设备采用代理模式(使用商户的地址和端口)通过“三次握手”与银行无卡快捷前置服务器建立新的连接(图3中连接2),经过银行后台处理后将交易处理结果返回给商户。 在交易处理完成后,商户通过“四次挥手”终止与加解密设备的连接1,随后加解密设备终止与后端服务器的连接2。
为保障快捷支付业务安全顺畅运行,G银行部署了网络流量分析工具,在多个网络节点同时实时捕获并分析网络流量,对快捷支付交易进行监控,一旦发现失败的交易,可通过数据包对每一笔失败交易进行回溯分析,并以此为基础持续优化改进。
图3 快捷支付架构示意图
表4为G银行一笔快捷支付交易中两次连接经过各种网络路径的源地址和目的地址及端口,银行防火墙设备控制交易的接入并转换目的地址(即银行加解密设备地址),第一层负载均衡设备加载加解密设备,第二层负载均衡设备加载无卡快捷前置服务器。
表4 快捷支付TCP连接源地址和目的地址及端口
负载均衡设备源端口快速重用问题及优化
在前期的日常运维过程中,运营人员反馈快捷支付业务每天都会出现少量的连接交易失败,网络管理员抓包分析后发现加解密设备有时会主动向商户发送断开链路的报文,与前文中描述的商户主动关闭连接不一致。网络工作人员通过网络流量分析平台对异常交易连接逐包进行深入分析。首先对产生断线告警的加解密设备侧进行网络流量分析,确认是加解密设备主动向商户发送了报文,如图5所示:
图5 加解密设备主动发送消息给商户
为了进一步确认问题根源,技术人员继续分析某个负载均衡节点的网络流量,这时发现了负载均衡源端口转换机制,由于端口转换,很快又使用了之前连接使用的源端口,如图6所示:
图6 第1层负载均衡源端口快速复用
之所以能快速复用,是因为商户通过“四次挥手”终止与加解密设备的连接1后,发送了快速恢复连接的消息,因此第一层负载均衡和加解密设备会快速恢复连接1。恢复后,下次新建连接有概率会复用上一次连接的源端口。此时由于加解密设备已经快速恢复了上一次的连接1,所以复用源端口的新连接1可以正常建立,如图7所示:
图7:快速复用源端口的连接1正常建立
上文提到,当新的连接建立成功后,加解密设备会使用连接1的源地址和源端口,与后端无卡快充前端服务器发起连接2(目的地址为二层负载均衡VS地址)。此时,由于连接2是标准的“四次挥手”断线,加解密设备向服务器发送带ACK标志的TCP报文,并进入TIME-WAIT状态。在TIME-WAIT等待处理连接回收的时间内,无法接受具有相同五元组的新连接。如果在此期间出现具有相同五元组的新连接,则无法正常建立新的连接,加解密设备向商户发送断线通知。而且,交易量越大,发生五元组冲突的可能性就越大,交易失败的次数和概率也就越高。在业务层面,表现为客户发起的快捷支付交易失败,需要重新发起,影响客户的体验。
在明确问题原因及原理之后,网络优化的思路就是避免由于TIME-WAIT导致连接2无法正常建立的问题,同时又要保证各项优化操作不会对实际生产交易造成新的影响。综合考虑各方面因素后,网络技术人员分阶段开展优化工作。首先将第一层负载均衡设备的源端口转换功能设置为不转换模式,即不再转换商户发起的连接1源端口,降低连接1快速复用上一个连接源端口的概率。优化之后,每日连接重置次数有所下降,如图8所示。
图8 优化第一层负载均衡设备源端口后连接重置事务变化情况
表9给出了优化后一笔快捷支付交易中流经各网络路径的两段连接的源地址和目标地址及端口。
表9 快捷支付TCP连接源地址和目的地址及端口
商户源端口快速重用问题及优化
关闭第一层负载均衡的源端口转换设置后,网络技术人员发现连接还是每天都被重置,于是继续分析靠近商户节点的网络流量,发现商户发起交易请求时,源端口很快就被重用,如图10所示:
图10 商户侧源端口快速复用
此时优化思路有两个,一是模仿解决第一层负载均衡源端口快速复用问题的思路,降低五元组连接1相同的概率。考虑到商户侧源端口快速复用不在G银行网络技术人员维护范围内,优化难度较大,商户侧会和银行的加解密设备建立连接1,此时可以尝试从目的端进行优化,达到同样的效果。
为连接1目的地的加解密设备提供负载的负载均衡设备默认采用“最小连接数”负载均衡算法,即根据后端服务器当前的连接情况,动态选择一台积压连接数最少的服务器,将商户发起的交易转发到多台加解密设备中的一台。相比“最小连接数”负载均衡算法,“轮询”负载均衡算法将交易请求按顺序分配给后端服务器,后一个连接分配的目的地址与前一个连接分配的目的地址不一致,从原理上可以降低出现相同五元组连接1的概率。在无卡快捷交易场景下,各台加解密设备上的连接处理机制是一致的,调整为“轮询”负载均衡算法后,各台加解密设备上的连接数也能相对均衡。
经过充分的测试后,网络技术人员进行了第二阶段的网络优化,将第一层负载均衡算法调整为“轮询”。调整后,单日连接重置交易数进一步下降,证明此步优化也是有效的,如图11所示:
图11 第一层负载均衡算法优化后连接重置事务变化情况
但此时还是有极少数的连接重置,原因是快捷支付的交易量较大,将一层的负载均衡算法调整为“轮询”后,还是有极少数的连接快速复用源端口“轮询”到同一个加解密设备上。此时网络技术人员考虑使用第二种优化思路,即减少连接2恢复的等待时间。如果连接2能在更短的时间内恢复,那么即使连接1有相同的五元组,连接2也能正常建立。如上文所述,连接2是加解密设备通过“四次挥手”关闭的,加解密设备有一个TIME-WAIT等待时间,TIME-WAIT时间的长短将决定连接2恢复的时间。为此,经过充分的测试和批量试点,网络技术人员将加解密设备的TIME-WAIT时间从1秒调整为100毫秒。 经过第三阶段优化后,每日连接重置事务数量下降为0,如图12所示:
图12 加解密设备TIME-WAIT时间优化后连接重置事务变化情况
表13给出了整体优化后,一笔快捷支付交易中流经各网络路径的两段连接的源地址和目的地址及端口。
表13 快捷支付TCP连接源地址和目的地址及端口
总结
快捷支付业务在应用和网络层面具有连接短、交易高频等特点,经过三个关键阶段的网络优化,G银行快捷支付交易系统成功率明显提升,有力支撑了“双十一”、“双十二”等电商大促高峰期每日大量并发交易和业务访问量。
随着金融业务发展转型,为实现高质量发展,G银行信息科技部不断深化“123+N”数字银行发展体系,持续发挥科技动能,通过金融科技解决新的发展挑战。G银行网络也将继续站在业务视角,关注各类关键业务交易场景,优化分布式架构下的网络传输路径,提升交易响应速度,不断夯实底层基础设施,持续优化改进,提升客户服务和使用体验,助力银行业务再上新台阶。
结尾