网络游戏场景
网络游戏中目前常见架构是C/S和B/S,这里只考虑主流即C/S的情况,它们间报文交互涉及
服务器发送到客户端:状态更新、对话框、请求的应答
客户端发送到服务器:用户指令,位置更新等
影响游戏体验的2个最重要的网络因素,延迟(导致卡顿)和丢包(导致重传=变相延迟)。对于延迟,可以通过报文时间间隔判断出来。对于重传,tcp报文重传是通过序列号比较判断出来的,因此无法根据单独一个报文判断出来,而需要完整的流序列;Udp重传是通过应用程序自己封装设计完成,没有标准可循。
前一阶段试验的方法和经验
编号 |
方法 |
失败原因 |
可改进点 |
1 |
根据拟合公式,在网络设备中模拟探针,执行ping,将得到的qos数据代入公式计算,如 5.2696-6.8749*10^(-9)*x^3+2.3495*10^(-5)*x^2-0.0222*x x=delay+9.8371*jitter |
|
获取当前网络情况 |
2 |
使用神经网络对报文流特征进行监督学习(判别模型) |
|
无量纲化处理(上下限,中心化等),特征筛选(信息增益等),发现更有用的特征(熵取代方差) |
难点分析
- 不同(类型)游戏的识别
- 每个游戏识别
- 每类游戏识别
- 不同(类型)游戏达到正常体验时对网络要求不同(棋牌益智类属于非实时,FPS、RTS属于实时。棋类游戏和卡牌游戏有严格的先后顺序,不容易出现逻辑错误,更不会出现不一致的情况;而且回合时间较长,能够容忍高延迟。)
- 每个游戏网络要求
- 每类游戏网络要求
- 其他:某些游戏自带延迟补偿纠正机制(早期Lockstep,后来的dead reckoning、time warp),导致相同网络相同游戏情况下,有无机制也会导致体验的不同,另外有研究发现在长时间尺度下(如按年)同一游戏网络报文特征也会发生变化(如梦幻西游),不同游戏使用协议不同(延迟敏感的使用UDP)
模型思路
游戏数据
方法2中考虑到的数据特征
min_IAT |
最小间隔时间 |
q1_IAT |
第1四分位间隔时间 |
med_IAT |
中位间隔时间 |
mean_IAT |
平均间隔时间 |
q3_IAT |
第3四分位间隔时间 |
max_IAT |
最大间隔时间 |
var_IAT |
间隔时间方差 |
min_len_pkt |
报文最小长度 |
q1_len_pkt |
报文第1四分位长度 |
med_len_pkt |
报文中位长度 |
mean_len_pkt |
报文平均长度 |
q3_len_pkt |
报文第3四分位长度 |
max_len_pkt |
报文最大长度 |
var_len_pkt |
报文长度方差 |
pkt_num_upwd |
上行报文个数 |
pkt_num_dowd |
下行报文个数 |
min_len_pkt_upwd |
上行报文最小长度 |
q1_len_pkt_upwd |
上行报文第1四分位长度 |
med_len_pkt_upwd |
上行报文中位长度 |
mean_len_pkt_upwd |
上行报文平均长度 |
q3_len_pkt_upwd |
上行报文第3四分位长度 |
max_len_pkt_upwd |
上行报文最大长度 |
var_len_pkt_upwd |
上行报文长度方差 |
min_len_pkt_dowd |
下行报文最小长度 |
q1_len_pkt_dowd |
下行报文第1四分位长度 |
med_len_pkt_dowd |
下行报文中位长度 |
mean_len_pkt_dowd |
下行报文平均长度 |
q3_len_pkt_dowd |
下行报文第3四分位长度 |
max_len_pkt_dowd |
下行报文最大长度 |
var_len_pkt_dowd |
下行报文长度方差 |
min_IAT_upwd |
上行最小间隔时间 |
q1_IAT_upwd |
上行第1四分位间隔时间 |
med_IAT_upwd |
上行中位间隔时间 |
mean_IAT_upwd |
上行平均间隔时间 |
q3_IAT_upwd |
上行第3四分位间隔时间 |
max_IAT_upwd |
上行最大间隔时间 |
var_IAT_upwd |
上行间隔时间方差 |
min_IAT_dowd |
下行最小间隔时间 |
q1_IAT_dowd |
下行第1四分位间隔时间 |
med_IAT_dowd |
下行中位间隔时间 |
mean_IAT_dowd |
下行平均间隔时间 |
q3_IAT_dowd |
下行第3四分位间隔时间 |
max_IAT_dowd |
下行最大间隔时间 |
var_IAT_dowd |
下行间隔时间方差 |
游戏体验一般情况下考虑到的特征
文献1:平均rtt,最大rtt,抖动,平均延迟,客户端丢包率,服务端丢包率,
文献2:会话时间,最长报文,最短报文,平均长度,背景流,游戏流,上传延迟、下载延迟、RTT延迟、间隔时间
网络数据
网络特征数据,反映网络客观环境(可以考虑主动收集方式,注入流量)
游戏类型
对于游戏类型识别,已有不少研究,无需DPI,只需基于流特征即可做到类型级别的区分,具体特征包括上下行报文数目比、包大小信息熵,下行PPS等。这里考虑2种分类标准
- 按照游戏内容模式:即
ACT,AVG,PUZ,CAG,FTG,LVG,TCG,TAB,MSC,SPG,SLG,STG,RPG,RCG,RTS,ETC,WAG,SIM,S•RPG,A•RPG,FPS,MUD,MMORPG等,优点是符合用户认知、便于理解,缺点是无法区分是否重合或者过细,而且不能保证覆盖新类型游戏,需要使用DPI技术来实现
- 按照网络特征,即从报文长度,报文时间间隔等,优点是实现技术相对简单(如下图已有借鉴成果)、类型有限、适应性强,缺点是无法直接对应到具体游戏
报文长度特征(双向,平均,分布)、报文个数特征(同上),协议(tcp,udp,tcp+udp),终端(手游、端游)
游戏体验
按MOS值输出为5类(实际上根据调研结果来看,体现出两极趋势,要么一般要么很差,没有很好和中间层)
生成模型
基于贝叶斯思想,对应游戏类型识别,不考虑使用该模型
对应体验,P(c_i|A)=P(A|c_i)P(c_i)/P(A), c_i标识体验,假设体验分5类,则为c1,c2,c3,c4,c5, A为输入数据,或者说收集到的各种网络参数和游戏参数,
假设该参数间无关联,则A可以拆分为(a1,a2,a3….a_n)个单独的特征,诸如丢包率、延迟、抖动等。
P(c_i|A)=P(A|c_i)P(c_i)/P(A)= P(c_i)× P(a_1|c_i)×P(a_2|c_i)×… P(a_n|c_i)/P(A),
则分类问题归结为挑选max P(c_i|A),又因为P(A)视为常数,最终就是求max P(c_i)× P(a_1|c_i)×P(a_2|c_i)×… P(a_n|c_i)
模型优点
- 可解释性,所得结果是最可能的情况
- 基于统计计算,方法简单
模型缺点
- 属于生成模型(G-model),但是网络环境并不保证稳定,因而不能保证某种体验出现概率是固定的,也就是无法给出概率,比如P(c1)并不一定是固定比例,也无法预先知道
- A的拆分出特征,无法保证独立无关,例如抖动为a_1,延迟为a_2,则P(a_1|c_i)×P(a_2|c_i)不等于P(a_1,a_2|c_i)
- 本身P(a_j|c_i)也不能基于是稳定值
总结:该方法还未试验过,但从网络搜索到的结果来看,一般认为该模型在实际应用中效果不如判别模型
判别模型
对应游戏类型,输入层包含游戏数据参数,对应游戏类型作为标签
对应游戏体验,输入层包含游戏类型和游戏数据参数,对应游戏体验作为标签
该模型具体实现有3种考虑
- 使用参数拟合方法,根据qos参数和主观打分来拟合公式,已知大多数游戏体验研究是按此思路进行,已经试验过,效果不好
- 人工提取特征,使用BP网络(或其他监督学习算法)进行训练。输入层包含游戏类型参数、游戏数据参数、网络数据参数,对应时间类体验作为标签,使用BP网络进行训练,已经试验过,效果不好
- 通过深度学习,输入层直接以原始报文和时间点作为输入,由神经网络自动提取特征,该方法还未试验过,特别是需要海量数据,不能轻易尝试
总结:局限于有限类型的游戏情况,扩展性差(基本上限于拟合公式)
异常检测模型
正常情况下,游戏体验正常时间占大多数(不同于下载,如果体验不好,游戏操作不可能长时间进行),通过检测报文的异常特征来发现体验异常,特征包括报文时间间隔,延迟,重传,心跳报文异常(现在大部分网游都有内置保活机制,一种考虑是通过心跳报文检测网络异常)
该模型实现有2种考虑
- 时间序列的统计方法
- 基于机器学习算法
优点:基于不同游戏自身特性来分析,不依赖于游戏分类,极端情况下该游戏特征可以和其他游戏完全不同,不需要监督学习。思科新框架DNA里面也是使用这种模型来监测网络异常,找到一个专利描述的方法是使用小波系数来进行预测。
缺点:从已收集资料来看,该模型若采用时间序列的方法,需要原始数据保证一定的平稳性和周期性,例如校园网或办公网中的网络流量,对于游戏而言,从流量上来看还没发现有周期性特征(一种想法是通过一段时间的数据学习来构建数据转移概率模型,进而判断是否异常,这种方法也属于异常检测中常见的方法之一,但目前有2个问题需要考虑,一是该方法仅是基于相邻的时间尺度做出判断全局性不足,二是正常数据的学习标准不好判断)。若干使用机器学习方法需要保证特征服从正态分布。
总结:有部分研究使用该方法进行体验度量(游戏离开时间检测、预测和实际偏差检测),该模型还未试验过
基于数量(原始特征)异常
基于分布(特征概率)异常
收集数据
根据人的行为特征,正常情况下,游戏体验正常时间占大多数(不同于下载,如果体验不好,游戏操作不可能长时间进行),所以游戏分类和游戏体验度量中的数据收集部分重叠,可以合并进行。
“基于特征选取的网络游戏与视频业务分类研究.pdf”中每类应用/游戏采集了60条流,每条流时长30分钟
数据采样对数据的影响,数据缺失,精度下降