網絡原來如此之快捷支付交易場景網絡優化實踐
網絡原來如此之快捷支付交易場景網絡優化實踐
引言
近年來,隨著移動支付技術的發展和支付場景的普及,“掃一掃”付款已成為我們日常生活的重要組成部分,在日常消費、交通出行、社保醫療等重點領域和生活場景中,快捷支付給我們帶來很多便利。作為移動支付基礎設施的關鍵環節,銀行快捷支付系統的穩定性將直接影響每一位消費者的支付體驗。
鑑於快捷支付業務的頻繁交互需求,快捷支付系統需應對日常龐大的交易請求,從網絡層面來講具有高頻短連接的特性,即連接快速建立、快速釋放,此處說的連接是基於TCP(Transmission Control Protocol)傳輸控制協議進行的。近年來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報文,隨後進入ESTABLISHED狀態,服務器端在收到客戶端標誌位為ACK的TCP報文後也進入ESTABLISHED狀態,隨後雙方進入數據報文交互階段。
在三次握手完成後,客戶端和服務器成功建立TCP連接,開始進行數據傳輸,數據傳輸完成後,TCP協議通過“四次揮手”終止連接,過程如下圖所示(以客戶端主動發起關閉連接為例):
圖2 TCP協議四次揮手
1、由客戶端主動發送標誌位為FIN的TCP報文,隨後進入FIN-WAIT-1的狀態;
2、服務器端在收到客戶端標誌位為FIN的TCP報文後,發送一個標誌位為ACK的TCP報文,隨後進入CLOSE-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區域,在銀行內部經過防火牆、負載均衡或加解密等設備處理後與銀行快捷支付系統進行連接交互,每一筆交易會建立2個連接。具體過程如下:商戶端首先通過“三次握手”與銀行加解密設備建立一個TCP連接(圖3中所示連接1),商戶發起交易請求至銀行加解密設備對加密報文進行解密,隨後加解密設備以代理模式(使用商戶地址和端口),通過“三次握手”與銀行無卡快捷前置服務器建立一個新的連接(圖3中所示連接2),經過銀行後台處理後將交易處理結果返回商戶。交易處理完成之後,由商戶通過“四次揮手”終止與加解密設備的連接1,隨後加解密設備終止與後端服務器的連接2。
為保障快捷支付業務的安全平穩運行,G行部署了網絡流量分析工具,在多個網絡節點同時進行網絡流量實時捕獲分析,對快捷支付交易進行監控,一旦發現失敗交易就可以通過數據報文對每一筆失敗交易進行回溯分析,作為持續優化改進的依據。
圖3 快捷支付架構示意圖
表4所示是G行一筆快捷支付交易中的兩個連接流經各網絡路徑的源目地址和端口情況。其中銀行防火牆設備對交易進行訪問控制,並對目的地址(即銀行加解密設備地址)進行轉換,一層負載均衡設備對加解密設備進行負載,二層負載均衡設備對無卡快捷前置服務器進行負載。
表4 快捷支付TCP連接源目地址和端口情況
負載均衡設備源端口快速復用問題及優化
在前期日常運行維護過程中,運營人員反饋快捷支付業務每天會有少量連接交易失敗的情況,經過網絡管理員抓包分析發現為加解密設備有時會向商戶方向主動發送Reset報文斷鍊,與前文描述的商戶主動關閉連接不符。網絡人員通過網絡流量分析平台逐筆逐包對異常交易連接進行深度分析,首先在產生斷鍊告警的加解密設備側進行網絡流量分析,確認加解密設備主動向商戶方向發送了Reset報文,如圖5所示:
圖5 加解密設備主動向商戶方向發送Reset報文
為進一步確認問題根本原因,技術人員順藤摸瓜,在一層負載均衡節點繼續進行網絡流量分析,此時發現負載均衡源端口轉換機制,由於端口轉換導致快速使用了前一個連接用的源端口,如圖6所示:
圖6 一層負載均衡源端口快速復用
快速復用的原因為商戶在通過“四次揮手”終止與加解密設備的連接1後,發送Reset報文快速回收了這個連接,所以一層負載均衡和加解密設備均會快速回收連接1,回收後下一個新的連接有概率的會出現復用前一個連接源端口的情況,此時因加解密設備已快速回收前一個連接1,復用源端口的新連接1可以正常建立,如圖7所示:
圖7 快速復用源端口的連接1正常建鏈
正如前文所述,當新的連接成功建立後,加解密設備會使用連接1的源地址和源端口,發起和後端無卡快捷前置服務器(目的地址為二層負載均衡VS地址)的連接2,此時因連接2為標準的“四次揮手”斷鍊,加解密設備向服務器端發送標誌位為ACK的TCP報文後進入TIME-WAIT狀態,在處理連接回收TIME-WAIT等待時間內不能接受相同五元組的新連接。在此時間內如果出現相同五元組的新連接,會導致新連接無法正常建立,出現加解密設備向商戶方向發送Reset斷鍊的情況。而且交易量越大五元組衝突的可能性越高,交易失敗的筆數及概率越高,在業務層面表現為客戶已經發起的一筆快捷支付交易失敗,需要重新發起交易,影響客戶使用體驗。
在明確問題原因及原理後,網絡優化的思路是避免因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”數字銀行發展體系,持續發揮科技動能,通過金融科技手段解決發展新挑戰。網絡也將繼續站在業務視角,關注各類重點業務交易場景,優化分佈式架構下網絡傳輸路徑,提高交易響應速度,不斷夯實底層基礎設施,持續優化改進,提升客戶服務和使用體驗,助力銀行業務再上新台階。