一、应用场景

如图所示,在商业WIFI场景中,经常需要手机用户下载指定的APP才能进行WIFI的应用认证, 在网关设备,对手机下载app安装文件进行缓存。使客户下载APP速度大大提高,提升了用户体验。原始应用文件存储于文件服务器中,在有手机用户下载安装后,接下来的其它用户直接从设备上获取文件。

手机用户访问下载页面, 再跳转到文件服务器下载,通过此特性,可以对指定的应用进行缓存。

功能:应用缓存是一种针对手机应用下载的缓存功能,可以缓存所有苹果的应用文件,也可以只缓存指定厂家的应用文件。当用户去资源服务器下载资源时,网关设备会将该资源缓存到设备上,当用户再请求获取该资源时,数据将从本地的网关设备上获取,并返回给用户。

资源类型:ipa、apk文件

资源服务器:苹果的应用商店或其他的ipa\apk资源服务器。

 

二、功能原理      

缩略语/术语

说明

基于域名的TCP代理

通过TCP代理功能,把报文送到用户空间,进行处理后再转发报文。通过配置应用文件存储服务器域名或ip,针对性地对访问此服务器的流进行代理。

资源服务器

苹果的应用商店或其他的ipa\apk资源服务器.

资源类型

ipa、apk文件

缓存指定应用

手机用户下载应用时,通常是先访问应用提供商的一个跳转(比如portal页)页面,然后点击对应的手机系统跳转到文件服务器或者应用商店进行下载。根据此操作规律,设定了10分钟的窗口时间,如果用户访问了指定应用的url,就把其手机的ip记录,在10分钟内此ip发起的ipa文件进行缓存功能处理,超过10分钟或者没有访问指定应用的url,则不处理。

URL

互联网上标准资源的地址

STA

Station,无线终端工作站,例如PDA,无线笔记本

基于域名的TCP代理:通过TCP代理功能,把报文送到用户空间,进行处理后再转发报文。通过配置应用文件存储服务器域名或ip,针对性地对访问此服务器的流进行代理。

应用缓存:手机用户通过HTTP协议下载应用安装文件,在第一次下载时,应用缓存模块识别出URL中含有ipa\apk的下载链接,则对应答的报文进行缓存,在第二次有用户下载同样的应用文件时,缓存命中,就在网关设备上构造应答报文并传给手机。

缓存指定应用:手机用户下载应用时,通常是先访问应用提供商的一个跳转(比如portal页)页面,然后点击对应的手机系统跳转到文件服务器或者应用商店进行下载。根据此操作规律,设定了10分钟的窗口时间,如果用户访问了指定应用的url,就把其手机的ip记录,在10分钟内此ip发起的ipa\apk文件进行缓存功能处理,超过10分钟或者没有访问指定应用的url,则不处理。

整体的交互流程图如上图(以QQ软件为例):

1)手机用户A首次向资源服务器域名发起TCP报文,请求中包含QQ软件的下载链接;

2)EG应用缓存模块通过设置的规则识别出手机用户A的URL中含有QQ(ipa/apk程序)下载链接,判断为QQ文件,再查找本地缓存,缓存模块中里面没有这个文件,则判断没有命中,因此需要由手机用户A自身从资源服务器获取QQ软件;

3)手机用户A,向资源服务器获取QQ软件;从资源服务器取回的文件需要经过EG,EG会主动缓存到本地存储介质。

4)手机用户B再次向资源服务器域名发起TCP报文,请求中包含QQ的下载链接;

5)EG应用缓存模块通过设置的规则识别出手机用户B的URL中含有QQ(ipa/apk程序)下载链接;EG判断命中缓存模块里面的QQ文件

6)EG应用缓存模块构造应答报文并传给手机用户B;

7)手机用户B从EG网关中快速获取到QQ软件,实现应用加速。

三、相关技术原理介绍

1、EG缓存模块识别终端用户A的TCP报文

终端用户发送向苹果商店的TCP报文,到达设备后,从设备驱动上来后送往设备的EG缓存模块. EG缓存模块通过设置的规则拦截该报文识别提取出报文里面的URL请求,URL的在报文的格式如下:

http://iosapps.itunes.apple.com/apple-assets-us-std-000001/Purple71/v4/c8/45/bd/c845bd73-fd29-1557-8dc1-082fd088783b/mzps.8603071550842798354.ipa?accessKey=1480596993_3099180169941723287_V%2BP4HApvEeuwb1GGoj62pDiiWy9wniGchU8ZMznlbxeDbURNv2mTn4PM%2BiVC%2Bdia2Fk1uEH4DOoHJdlt%2BF0wvuL2ULJz0iKBAaCGGcY0i6q4vZ%2FKY36zA4lFkja%2FiE8OSKDl%2FBFibVA%2FW0BO4tHqG00crOqDGMzmN3BbwqZ%2F0vBtekteiNoqCOuAOJoZkGQh

获取该URL的方式有两种:

1.   EG设备特权模式上面输入:show was http session status ;

2.   使用wireshark软件,过滤关键字:http and ip.addr== 172.18.158.29 //172.18.158.29就是终端用户的IP。

说明:如果客户需要将这个URL设置为缓存指定应用,只需将填写前缀即可,如下所示:http://iosapps.itunes.apple.com/apple-assets-us-std-000001/Purple71/v4/c8/45/bd/c845bd73-fd29-1557-8dc1-082fd088783b/mzps.8603071550842798354.ipa

 

2、EG缓存模块识别解析URL

EG获取到这个URL后,会做出与终端用户一样行为,开始找DNS服务器去解析该URL地址。

工作流程如下:

1.   终端用户第一次去下载的时候,解析出来对端URL--->地址1;

2.   设备同样会有一个动作去解析这个URL--->地址1;

3.   EG的DNS解析地址出来的地址必须有一个跟终端用户是一样的。

满足以上条件,设备才会开始进行缓存。

在通常情况下一个URL有可能对应多个地址 URL---->地址 1 2 3 4 ......

设备针对这类URL的处理机制是:30s时间内不停的去针对这个URL解析,此时会将所有解析出来的地址存到EG本地的DNS缓存中,以此保证与PC解析出来的地址一致。在设备上面可以通过show dy ru 查看解析地址,再与终端用户解析出来的地址比对,如果解析地址不一致,可以判断设备因为解析问题无法进行缓存。

具体如下:

EG#show dy ru 这个是设备的dy rule规则,可以用来查看设备解析出来的地址

Rule   Type  App   O  Source Addr      Source port  Dest Addr        Dest port    Module       Aging       

1      auto  http  N  0.0.0.0          0            122.228.84.27   80           1            7158        

2      auto  http  N  0.0.0.0          0            219.238.2.188    80           1            7158        

手机解析出来的地址如下图:

3、EG缓存模块拦截终端用户A的TCP报文并判断请求的文件是否命中

1. 设备对TCP报文进行拦截,获取到的报文的目的地址会与本地的规则进行比对,匹配的顺序如下:

先匹配dy rule里的规则,然后再匹配in-path rule里面的规则(确保送往缓存地址的报文都可以匹配到)

EG#show dy rule

Rule   Type  App   O  Source Addr      Source port  Dest Addr        Dest port    Module       Aging       

1      auto  s-httpN  0.0.0.0          0            106.75.28.106    80           2            7200        

2      auto  http  N  0.0.0.0          0            60.9.1.177       80           1            7200        

3      auto  http  N  0.0.0.0          0            121.30.196.118   80           1           7170        

4      auto  http  N  0.0.0.0          0            221.194.130.171  80           1           5899  

was http inpath domain iosapps.itunes.apple.com

EG#show in-path rule

Rule  Type O VLAN      App    Source Addr/Mask   Source port                          Dest Addr/Mask     Dest port                            description                    

1     pass N all       none   all                port:all                             all                name:Secure                          Secure(bypass)                 

2     pass N all       none   all                port:all                             all                name:Interactive                     Interactive(bypass)            

def   pass N all       none   all                port:all                             all                port:all                             any                                  

2.匹配到了以后,送TCP协议栈,进行TCP代理,然后进行与本地看是否命中缓存,如果没有命中缓存,则向资源服务器获取资源,如果命中缓存则由EG本地提供QQ文件。

4、 EG向苹果商店获取软件并存储在本地存储介质中

在没有命中缓存的情况下,终端用户A会向苹果商店获取软件,下载完成后,EG也会将文件存储在本地的存储介质中,存储的文件的查看方式可统一在EG特权模式下查看,具体查看方式为

show was http app da 100

EG#sho was http app da 100

total num: 16

+----------------------------------+----------------------+------------+------------+--------------------------------+--------------------------------+

| key                             | path                  | size            | hitcount   | date                |

+----------------------------------+----------------------+------------+------------+--------------------------------+--------------------------------+

|b12697dc17e1fcfb60c86344a8e44eb1 | app_cache/20171207000822 | 87267622        | 0          | 2017-12-08 12:11:32  |

url: iosapps.itunes.apple.com/apple-assets-us-std-000001/Purple118/v4/6d/71/09/6d710967-e8e8-8a4d-c61a-634a7fe34e92/mzps.lc.68085014                                                                                                                                 

|16c7307f1c0b36b1d49b2efc108b8e88 | app_cache/20171207000822 | 51745582        | 0          | 2017-12-07 12:13:17  |

存储的文件所处的路径,由于不同的EG型号,使用的存储介质不同,因此有以下三种存储介质如下:

1.   EG2000K使用U盘作为存储介质

2.   EG2000F 使用EMMC卡作为存储介质

3.   EG2000其他系列使用的是硬盘做为存储介质

每一种介质,存储的路径不同,查看方式如下:

进入run-system-shell模式

1.   EG2000F的应用缓存文件在EMMC卡目录如下:

    EG#run-system-shell //进入shell模式

~ # cd /var/was_base/cache //进入EMMC缓存存储文件夹

/storage/was_data/cache # ls

app_cache (应用缓存文件夹)              file                    res_acc(资源加速文件夹)

db_version              http_prefetch_msg_file  web

/storage/was_data/cache # cd app_cache //进入应用缓存文件夹

/storage/was_data/cache/app_cache # ls -R lt //列举详细的文件内容

2.   EG2000K的应用缓存文件在U盘目录如下:

    EG#run-system-shell //进入shell模式

~ # cd /mnt/usb0/cache //进入USB缓存存储文件夹

/mnt/usb0/cache # ls

app_cache (应用缓存文件夹)              file                    res_acc(资源加速文件夹)

db_version              http_prefetch_msg_file  web

/mnt/usb0/cache # cd app_cache //进入应用缓存文件夹

/mnt/usb0/cache /app_cache # ls -R lt //列举详细的文件内容

3.   EG2000其他系列的应用缓存文件在硬盘目录如下:

    EG#run-system-shell //进入shell模式

~ # cd /mnt/sata0/cache //进入USB缓存存储文件夹

/mnt/sata0/cache # ls

app_cache (应用缓存文件夹)              file                    res_acc(资源加速文件夹)

db_version              http_prefetch_msg_file  web

/mnt/sata0/cache # cd app_cache //进入应用缓存文件夹

/mnt/sata0/cache /app_cache # ls -R lt //列举详细的文件内容

 

如需删除个别文件,需进入底层删除,建议联系后台人员操作。

如需删除存储中的所有缓存文件,只需进入EG特权模式

EG#clear was http app da //清除所有缓存文件

EG# was http pre web start //缓存模块重启

2.5 EG缓存模块识别拦截终端用户B的TCP报文并提供加速服务

1. 设备对dy rule规则以及in-path rule里面的规则设置好的TCP报文进行拦截匹配。

2.匹配到了以后,EG会做与对终端用户A相同的动作,送TCP协议栈,进行TCP代理,然后进行与本地看是否命中缓存,判断命中缓存则由EG本地向终端用户B提供QQ文件,提供加速。

如何查看是否命中,可以通过以下命令来查看:

Show was http app data 100 来查看,如下图,第一次下载应用未匹配的情况hitcount为0.第二次下载同一个应用的hitcount为1,达标匹配中1次。

当匹配中后,EG设备将对终端用户B发出应答报文,为终端用户B提供软件,实现加速。

 

 

 

 

 

 

 

 

 

 

This document generated by Mybase + Nyf2CHM.
To remove this tag, please register.