(计算机软件与理论专业论文)基于安全组播的会议系统设计与实现.pdf_第1页
(计算机软件与理论专业论文)基于安全组播的会议系统设计与实现.pdf_第2页
(计算机软件与理论专业论文)基于安全组播的会议系统设计与实现.pdf_第3页
(计算机软件与理论专业论文)基于安全组播的会议系统设计与实现.pdf_第4页
(计算机软件与理论专业论文)基于安全组播的会议系统设计与实现.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

、:i 一 t 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:丛玺:盘:日期:冲年夕月巧,日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 。 签名:乏丛垂幺 导师签名: 日期:瑚一年岁月万日 i 一 一 t e x t ( ) ) ;将组播地址赋 给结构体对应的变量 m u l t ii p i m ri n t e r f a c e sa d d r = h t o n l ( i n a d d ra n y ) ;将待加入组播组的接口 地址赋给结构体对应的变量 s e t s o c k o p t ( s o c k e l d e s 嘶p t o r i p p r o t o - 皿口a d d m e m b e r s h i p ,m u l t i j p , s i z e o f ( m u l t ii p ) ) ;该函数的功能便实现了加入组播组。 在函数s e t s o c k o p t 中,第一个参数是发送接收组播数据的套接字描述符;第二 个参数代表负责处理套接字选项的网络层,在i p 组播中,该值总为i p p r o t 0i p : 第三个参数i pa d dm e m b e r s h i p 是加入组播组时必须用到的选项。而把该参 数的值换为i pd r o pm e m b e r s h i p 即实现了离开组播组【3 0 3 1 1 。 在本系统中,系统函数s e t s o c k o p t 由另外一个同学进行了修改,在调用它加入 组播组时,便会在底层发起整个的认证过程。若加入成功,则返回从组播管理服 务器得到的长度为6 4 位共享密钥,用于加密以后的数据。 i应用层组播的验证如下:用户首先用预先配置的与成员服务器共享的密钥, i 对自己的信息进行加密,密钥采用6 4 位的随机数,加密算法同样采用d e s 。成员 - 将加密后的信息传输给成员服务器进行验证。认证通过后,成员服务器将返回一 个6 4 位的组密钥以及其他成员的信息,密钥用于后续的数据加密。 4 3 3 2ip 层组播成员信息维护 在调用s e t s o c k o p t ( ) 成功加入组播组后,将会调用c r e a t m e m b e r l i s t ( ) 创建成员 列表,成员列表的存储结构借助于q t 提供的类q m a p 。现定义如下: q m 印 m e m b e r s ; 其中m e m b e r 为自定义类,类中包含了用户成员必须的信息以及基本的操作。 旺中基本信息包含:用户名、级别以及标志位。标志位t a g 初始化为1 。 采用q m a p 结构保存多个成员信息,可以使应用程将i p 地址作为用户列表的 索引,方便快速查找。 3 9 电子科技大学硕士学位论文 列表建好之后,首先将自己的信息加入表中。接着调用函数s t a n t i m e r ( ) 创建 定时器m y n m e l ( 6 0 s ) 以及m ) ,t i m e 2 ( 1 2 0 s ) ,定时器1 到时后将向线程池申请一个线 程,该线程将调用函数s e n d s t a t e ( ) 发送状态信息,m y t i m e 2 到时后,同样向线程池 申请线程,该线程将调用函数i p d e l e t e m e m b e r ( ) 遍历成员列表,t a g 位为0 的删除 对应成员,t a g 为1 的则置t a g 为0 。当有成员被删除时,应用程序将会同时更新 界面用户信息。 在q t 中,类q s o c k e t n o t i 6 e r 采用信号槽机制对底层的数据接收机制进行了 封装,通过它创建的对象s o c k e t n o t i f i e r 可用于让应用程序感知到数据包的到来: q s o c k e t n o t i f i e r 木s o c k e t n o t i f i e r = n e w q s o c k e t n o t i f i e r ( s o c k e ! _ d e s c r i p t o r q s o c k e t n o t i f i e r :r e a d ,t h i s ) ; q o b j e c t :c o 彻e c t ( s o c k e t n o t i f i e r ,s i g n a l ( a c t i v a t e d ( i n t ) ) ,m i s ,s l o t ( i p r e c v ( ) ) ) ; 数据包到来后将触发函数i p r e c v ( ) 接收数据,判断数据若为h e l o 型消息,则 在线程池中申请线程,该线程调用函数i p u p d a t a ( ) 更新成员信息。更新过程如下: 以收到数据包的源地址为索引查找成员列表m e m b e r s ,若找到该成员则将其对应的 t a g 置1 ,没有找到该成员则将该成员信息加入列表。当有成员加入列表时,同时 更新界面信息。整个流程中的主要函数调用关系如图4 6 所示: e 三三妇 oo 时 图4 6i p 层组播成员信息维护函数调用关系 第四章系统实现 4 3 3 3 应用层组播成员信息维护 应用层组播中,组播成员信息的维护有两种情况:普通终端成员与服务器成 员。当界面上输入服务器地址的t e x t 控件有输入且满足i p 地址规则时,将产生信 号t e x t c h a n g e d ( ) 触发函数c r e a t m e m b e r l i s t ( ) 创建成员列表,在该函数中,通过对比 输入的i p 地址是否与本地i p 地址相同,来检验本机是否为服务器。若为普通终端 成员则启动定时器m y t i m e 3 ( 6 0 s ) ,服务器端成员则启动定时器m y t i m e 4 ( 1 2 0 s ) 。定 时器3 到时后,将向线程池申请一个线程,该线程将调用函数s e n d s t a t e ( ) 发送状态 信息。 定时器4 到时,服务器成员客户端同样向线程池申请线程,该线程将调用函 数u p d e i e t e m e m b e r ( ) 遍历成员列表,t a g 位为o 的删除对应成员,t a g 为l 的则置t a g 为o 。如果发现有成员被删除,则调用u p s e n d s t a t e 3 0 向所有成员发送s e r 3 型消 息,并更新自己的界面显示。 上面讲的是发送状态信息,而当服务器端成员收到h e l o 型消息时,将向线 程池申请一个线程,该线程将调用函数u p u p d a t a ( ) 更新成员信息,该函数会检验 发送报告的成员是否为新成员,若是新成员则调用函数u p s e n d s t a t e l ( ) 向该成员发 送s e r l 型消息,通告该组已存在的成员信息,同时调用函数u p s e n d s t a t e 2 ( ) 向其 它也存在组中的成员发送s e l 毪型消息,通告新成员的到来,并更新界面信息。若 不是新成员,则不发送任何通告消息吗,只将该成员对应信息的t a g 置l 。 而客户终端成员收到s e r l 型消息将向线程池申请一个线程,该线程将调用函 数u p u p d a t a l 0 进行处理,该函数会把消息中包含的成员加入到列表中,并更新界 面信息;收到s e r 2 型消息也将向线程池申请一个线程,该线程将调用函数 u p u p d a t a 2 ( ) 进行处理,该函数把消息中包含的单个成员信息加入列表中,并更新 界面信息;收到s e r 3 型消息也将向线程池申请一个线程,该线程将调用函数 u p u p d a t a 3 ( ) 处理,函数将把消息中包含的成员信息从列表中删除,并更新界面信 息。整个流程中的主要函数调用关系如图4 7 所示: 4 l 多rli,气l。l,r 电子科技大学硕十学位论文 t e x t c h 柚g e d o l c 陀a t m e m b e r l i s t o 足太 丕 足 弋:罗 6 , 定时器4 到时 l 定时器3 到时 q s o c k e t n o t 讯e r 0d c l c t e m e m b e r ( )s e n d s t 砒e ( ) q s o c k e t n o t 讯e “) 有数上到来有成占删除有数。到来 j _j r。r ” u p s c r r e c v 0 u p s c n d s t a t c 3 0 u p c i i r e c v o r1 i n e n c r y p t 0 i n c n c r y p t ( ) l 少三夕- , | 叩u p 。删l 。:。 u p u p d a t a l ,2 ,3 0 oi 图4 7 应用层组播成员信息维护函数调用关系 4 3 4 数据发送模块 4 3 4 1 建立虚电路发送文字信息 i p 层组播在发送即时文字信息前,首先要建立虚电路。虚电路的创建是通过 调用修改后的系统函数c o l l i l e c t ( ) 来实现的。在发送任何数据前都必须先调用该函 数创建虚电路。 c o n n e c t ( s o c k e t - d e s c r i p t o r ,( s t l l j c ts o c k a d d r ) & a d d r e s s ,s i z e o f ( a d d r e s s ) ; 参数中的地址结构即为需要创建虚电路的对端地址。在i p 层组播中,该地址 为组播地址,建立的虚电路即是从发送端到组播树中的汇聚点之间。 4 2 畚葛fj】1=11-1,r 第四章系统实现 虚电路建好后,通过界面上的级别选项选定接收对象的级别,在这里可以选 择多个接收级别,然后构造发送报文,接着便可以调用i p d a t a s e n d ( ) 向组播地址发 送即时文字信息。在这里给多个接收端发送数据仅需要调用一次发送函数,发送 一个报文就可以实现,这就是i p 层组播的优势所在。函数调用关系如图4 8 所示: 至三丑 加密数据 c o n n e c t ( ) 上 i p d a t a s e n d ( ) 图4 - 8i p 层组播文字信息发送 应用层组播与i p 层组播发送即时文字信息的流程大体相同,发送数据之前, 也必须创建虚电路。虚电路的对端地址则是根据所选接收用户的范围来确定。接 收用户的范围是通过界面上的级别选项选定,然后构造发送报文。此时,发送端 要根据所选则的接收对象级别种类,来复制发送报文,通过单播的方式调用函数 u p d a t a s e n d ( ) 给每个接收端用户发送数据。函数调用关系如图4 9 所示: 三互 加密数据 图4 9 应州层组播文字信息发送 4 3 4 2 建立虚电路发送音频数据 虚电路的创建方式与上节描述的方式相同,在发送音频数据前,首先要做的 4 3 飞咛。 ,。, ,t;0髫鼍一咎o爹落:垫嚼馕妻, 电子科技人学硕士学位论文 是获取音频数据。我通过调用l i n u x 系统提供的函数o p e n ( ) 来访问声卡: i n tc a r d = o p e n ( ”d e i v d s p ”,o 蛋w r ) ; 为c h a n n e ln u m i t s 木疔e 木1 3 2 。l 音频数据采集完毕后,接下来便是数据的发送。在数据发送前,注意到每秒 ,薹 钟的音频数据量为c h 猢e ln u m 袖i t s 木舶木1 8 ,即2 4 i s 。当采样频率较大且采用i 双声道时,数据占用带宽将成倍增长,大部分用户将无法接受。为便于系统扩展, 爱 减小传输的数据量,本系统利用开源解决方案f f m p e g 提供的m p e g 4 对音频数据藿 进行压缩,然后对压缩数据进行加密传输。 曩 实时数据的发送需要实时传输协议即r t p 。在发送的每个数据块前,都必须 包含r 阳头部。本系统实现了仅发送一个音频流所必须的简单的r t p 。首先是严l s _ 三三三访;_ ;贡献源:数 l u n s i 印e di n tc c :4 ; 贡献源的个数 _ 4 4- 第四章系统实现 u n s i 四e di n te x t :1 ; 扩展标记 吼s i 印e di n tp :1 ; 填充标记 u n s i 印e di n tv e r :2 ; 协议版本 u n s i 朗e di n tp t y p e :7 ;负载类型 u n s i 朗e di n tm :1 ;标记分组( 例如视频帧的开始) s e q js e q j 啪;分组的序列号 m e d i a t i m e - tm y m e ;分组首字节的采样时间 s s r cts s r c ;同步源标识符 c h a r d a t a 1 ; 实时数据开始的地方 ) ; 该头部后还应加上应用层协议的头部“s e n d ”,最后才是真正的音频数据。 发送方在发送i 盯p 数据时,还应发送对应的发送方l 玎c p 报告,其头部定义如下( 小 端字节序) : s t r u c tr t c p u n s i 印e di n tr 印o n - n u m :5 ; 报告计数 u i l s i 印e di n tp :1 ; 填充标记 u n s i 印e di n tv e r :2 ;协议版本 u i l s i 印e dc h a rp t y p e ; 报文类型 u n s i 朗e ds h o r tl e n 舀h ; 报文长度 c h a r d a t a 1 ;报文信息 ) ; 具体的发送方报告包括以下内容:发送方的同步源标识、n t p 时间戳( 高3 2 位与低3 2 位) 、i 玎p 的时间戳、发送的数据包个数、发送的字节数。报告中n t p 时间戳与r t p 的时间戳主要作用是利于接收方进行流同步。由于本系统中并没有 实现视频传输,所以这里的字段并没有太大的意义。 r t p 与r t c p 的发送采用两个独立的端口。在本系统中,音频数据以o 2 5 秒 时长的音频数据量为单位进行数据块封装与发送,考虑到开发所采用的系统是分 时操作系统,所以在发送数据块时,只能保证最小间隔为2 5 0 毫秒。负责发送r t p 数据的线程也是从线程池中获取,此线程会在会议进行期间一直被占用,知道r t p 会话的结束。而l 玎c p 数据的发送间隔,r f c 中做了规定的,有专门的计算方法。 一般情况下,参加会议的成员越多,l 盯c p 的发送速率越低。发送r t c p 的线程也 是从线程池中获取,直到r t p 会话的结束,才会归还给线程池。整个音频发送的 4 5 电子科技大学硕士学位论文 流程如图4 1 0 所示: 4 3 5 数据接收模块 图4 1 0 音频发送流程 4 3 5 1 文字信息接收 i p 层组播中,使用类q s o c k e t n o t i f i e r 的对象s o c k e t n o t i f i e r 用于让应用程序感 知数据包的到来。数据包到来后调用i p r e c v ( ) 接收数据,判断数据类型为s e n d 型 消息,则向线程池申请线程,该线程将调用函数i p r e a d ( ) ,检验协议头部的级别位, 判断本用户是否有权限读取该数据,如果可以则对其进行解密,解密后将数据显 示在界面上,否则丢弃该数据包。 应用层组播中,同样利用q s o c k e t n o t m e r 的对象s o c k e t n o t i f i e r 让应用程序感 知数据包的到来。对于普通客户终端,数据包到来后调用函数u p c l i r e c v ( ) 接收数 据,若判断数据类型为s e n d 型消息,则向线程池申请线程,该线程将调用函数 u p r e a d ( ) 对其解密,解密后将数据显示在界面上。而对于服务器成员端,则调用函 数u p s e r r e c v ( ) 接收数据,该函数若判断数据类型为s e n d 型消息,则同样向线程 池申请线程,该线程将调用函数u p r e a d ( ) 将数据显示在界面上。 4 3 5 2 音频数据接收 音频接收端接收r t p 数据和r t c p 数据,并发送i 玎c p 数据的接收方报告。 首先看r t p 数据的接收。接收端调用函数却r e c v ( ) 接收r 1 p 数据。收到i 玎p 数据后并不会立刻将其加入缓冲区队列,而是调用函数c h e c kn u m ( ) 来判断本客户 端是否有权限读取该音频数据。若有权限,则向线程池申请线程,该线程将调用 函数n pi i l s e n ( ) 将该数据块,按分组序号插入缓冲区队列。该缓冲区是音频接收模 第四章系统实现 块的核心。由于本系统中存在多个线程操作此缓冲区,所以必须实现互斥访问。 l i n u x 系统中提供了专门的函数p t h r e a d _ j n u t e x j o c k ( ) 和p t l l r e a d _ - m u t e x _ u n l o c k ( ) 实 现了对p t h r e a dm u t e xt 类型的变量进行加解锁,以此来保证多线程对同一个数据 结构的互斥访问。本系统的缓冲区队列设计如下: s t m c t r e c v - d a t a j i s t s n l l c tr e c vd a t a 宰f i r s t :缓冲区队首 s t m c tr e c vd a t a 母l a s t :缓冲区队尾 u i l s i 印e dl o n gc o u i l t ;缓冲区中的数据量 s s r ct s s r c :同步源标识符 p t h r e a o n u t e x - tq u e u e - _ m u t e x ;缓冲区的互斥锁 ) ; 其中r e c v d a t a 定义如下: s t n l c t r e c v _ d a t a i n t s t y l e ;用于告知处理线程需要处理的数据为何种数据 s e qts e qn u m ; 分组的序列号 c h a r d a t a g 阳m ;仇玎p 数据块 i n tl e n 昏h ;数据块长度 s t r u c tr e c vd a t a 木n e x t :下一个数据块 s t l l l c tr e c vd a t a 奉p r e ;前一个数据块 ) ; 收到r t p 数据时,还需要判断它的同步源标识符,若已存在该标识符的缓冲 区则调用函数r t p _ i n s e n ( ) ,将该数据块,按分组序号从队尾插入缓冲区队列。若不 存在该标识符,且当前缓冲区不为空,则调用函数c r e a tq u e u e ( ) 创建对应的缓冲区, 然后再将数据插入。若当前缓冲区为空,则修改该缓冲区对应的标识符,将数据 插入该缓冲区中。由于本系统中,同一时间主要是一个i 汀p 会话在运行,所以缓 冲区一般只有一个。 除此之外,本系统中缓冲区的大小受到限制,最大数据包数量为2 0 。函数 c h e c k s e q ( ) 用来判断当前收到的分组是否在正常的范围内,该函数中始终记录着当 前队列中首个i 玎p 数据块的序号及时间戳,接收线程会丢弃预期之外的数据包。 例如:刚到的r t p 数据块序号超前于当前队列中的首个序号或者迟于队列中应到 的最后一个数据块。 当首次调用函数n p - r e c v ( ) 接收到r t p 数据时,会同时向线程池申请两个线程, 4 7 电子科技大学硕士学位论文 其中一个线程调用函数r t c p f c v ( ) 用来接收发送方i 玎c p 报告。发送方i 玎c p 报告 主要包括以下内容: s t n l c t s e n d c p u n s i 印e di n ts s r c ; 发送方的同步源标识 u n s i 朗e di n th t p ;价汀p 时f 可戳高3 2 位 u n s i 印e di n tl n 印;n t p 时间戳低3 2 位 u i l s i 龋e di n tt i m e ; r t p 的时间戳 u n s i 印e di n tp a c k e t - n u m ;发送的数据包个数 u n s i 印e di n tp a c k e l s i z e ;发送的字节数 c h a rb l o c k 1 ;报文信息 ) ; 另外一个线程负责处理接收方报告的生成及发送。该线程会按照协议规定的 时间间隔来发送报文。每次构造报文之前,都要调用函数c h e c ke x i s t ( ) 判断当前的 r t p 会话是否仍然活跃。若不是活跃的,即连续没有收到r t p 数据,此时便构造 一个类型为2 0 3 的接收方报告,并将用户名附加在报告中,调用函数n c p s e n d ( ) 将报告发回给发送方,并关闭音频接收。若当前会话仍然活跃,则调用函数 c h e c kl o s t ( ) 计算丢包个数,将其填入接收方报告,并将用户名附加在报告中,调 用函数r t c p - s e n d ( ) 将其发回给发送方。 接下来看音频数据的播放。当有新的接收缓冲区建立时,便会向线程池申请 一个线程,该线程调用函数p l a y ( ) 专门负责回放数据。在一个r t p 会话中,音频数 据第一次到达时,函数将取出音频数据进行解密解压缩操作,但此时并不回放。 而是等待解压好的分组数量为2 时,才开始播放已解压好的音频数据,并同时处 理下一个音频数据块。这样会有5 0 0 毫秒左右的延迟,以保证声音的平滑回放。 回放声音,要用到系统函数、槲t e ( ) ,它的作用是向声卡写数据。在调用该函数 之前,同样要像采集声音那样对网卡进行设置: i n tc a r d = o p e n ( ”d e v d s p ”,c l r d w r ) ; c h a n n e l _ 1 1 u m = 1 ; i o c t l ( c a r d ,s o u n d _ p c m - w r i t e - c h a n n e l s ,c h 锄e l _ n u m ) ; b i t s = 1 2 : i o c t l ( c a r d ,s o u n d p c m l w r i t e - b i t s ,& b i t s ) ; 舶= 1 6 0 0 0 ; i o c t l ( c a j d ,s o u n i ) - p c m w r l i t era t e ,& f 把) ; 4 8 第四章系统实现 w t i t e ( c a r d ,b u es i z e o f m u f ) ) ;向声卡写数据。 整个音频播放流程如图4 1 1 所示: 4 4 两种关键机制的实现 4 4 1 音频冲突检测 图4 1 l 音频数据接收流程 在本系统的i p 层组播模式中,每个音频接收端,同一时刻只能播放一个音频 流。当有多个成员同时讲话时,将会造成音频信息回放的混乱。在目前的多媒体 会议系统中,大都通过个第三方管理者来安排某位成员的讲话,以避免冲突。 本系统提供了一种自检测机制,避免了第三方的出现。 每个客户端中都维护有一个发言计数变量s p e a l ( n u m ,其初值为0 。成员在采 集音频数据前,需检查该值是否为0 。若为非0 ,则禁止进行音频采集,无法发言; 若为0 ,则可以进行音频采集,并通过组播发送一个特殊报文,其他成员收到该报 文,会将自身的s p e a l ( n 啪值加l 。当发言完毕,将通过组播发送结束报文,其他 4 9 电子科技大学硕士学位论文 成员将自身的s p e a l ( n u m 值减1 。这样,仅有s p e a kn u m 值为0 的成员可以发言。 上面的机制,存在这样一种极限状况:同一时刻有多个s p e 出_ n 啪值为o 的 客户端同时试图发言。为解决此种状况,客户端在获得发言权后,会定时检测自 己的s p e a l ( n l 】m 值,若为l 则继续发言。若大于1 则终止发言,并组播发送结束 报文,然后根据s p e a kn u m 值的大小随机等待一个时间段,重新尝试发言。在该 系统中,等待的随机时间w a i tt i m e 按以下规则取值: 当s p e a l ( n 啪为2 时,w a i t - t i m e 随机选取 0 ,1 0 0 m s ) 中的一个;当s p e a l ( - n u m 大于2 小于5 时,w a i tt i m e 的选取范围为 o ,1 0 0 m s ,2 0 0 m s ,3 0 0 m s ) ;当s p e 出- n 啪 大于5 时,w a i l t i m e 的选取范围为 o ,1 0 0 m s ,2 0 0 m s ,3 0 0 m s ,4 0 0 m s ,5 0 0 m s ,6 0 0 m s , 7 0 0 m s ,。 4 4 2 应用层组播转发机制 在本系统的应用层组播中,成员服务器将所有成员按照其级别在逻辑上划分 为8 个小组,对每个小组成员按其加入组的顺序排序。其逻辑结构如图4 1 2 所示: a la 2a 3 a 4 b lb 2 b jb 4c ic zc jc 4 图4 1 2 应用层组播:肖点结构 上图仅描述了其中的三个小组,节点a 1 ,b 1 以及c 1 分别为各小组的首节点即 最早加入的节点。当节点a 4 要给a b ,c 三个组的成员发送信息时,a 4 仅需将数据 发送给a 1 ,b 1 ,c 1 。然后a 1 ,b 1 ,c 1 分别将数据转发给他们的下一节点a 2 ,b 2 , c 2 ,依次完成该步骤,实现数据的应用层组播传输。在该结构中,若有某个节点 异常离线,成员服务器将会立即更新它所维护的节点信息,发给其他节点,以保 证数据转发逻辑结构的正确。 4 5 用户界面设计 用户界面如图舢1 3 所示: 第四章系统实现 图4 1 3 用户操作界面 打开界面,用户首先输入用户名、密码以及级别。点击登录,此时并没有执 行身份验证,只是将用户信息进行登记。接下来,可以选择发送模式,即应用层 组播或者i p 层组播。选择应组层组播则需要确定服务器地址,选择i p 层组播则需 要确定组播地址。在加入组播组的过程中会进行身份验证并返回验证结果。 验证成功后,则在中间的文本框中,会可以看到当前在线的成员,选定接收 对象的级别后就可以给选定的成员发送信息。若想发送语音信息,则点击“开始 发言按钮之后,接着说话就可以了,发言完毕则点击“停止按钮”,而退出组播 组则点击“退出登录 。 4 6 本章小结 本章首先介绍了系统的总体架构与数据流程,重点介绍了系统的一个关键部 分:线程池。接着详细介绍了系统各个部分的详细设计与实现方法。最后介绍了 系统的用户界面部分设计及使用。 5 i 电子科技大学硕士学位论文 5 1 测试环境 第五章系统测试 本系统已通过了四川省软件测评中心的测试评定,其测试环境的拓扑结构如 图5 1 所示: 图5 1 网络拓扑结构 整个模型由端系统和核心网络两部分组成,端系统负责在网络的边缘发送、 接收数据,且提供安全接入以及数据加密机制。核心网络是由五台功能各异的路 由器组成的支持多播的m p l s 网络,负责数据的路由转发。本文所设计的系统即运 行在端系统上。 硬件环境: 处理器:g e n u i n ei n t e l ( r ) c p u1 6 0 g h z 内存:2 g 5 2 第五章系统测试 软件环境如表5 1 所示: 表5 1 软件环境 所安装软 内核文件 模块文件 已安装软件 件的功能 i n i t r d 一2 6 1 5 5 i a 1 m g a 2 s y s t e m m a p 一2 6 1 5 h o s t m p l s s u n a 组播会议系统 发送接收音频 a 3 k 0 数据 5 v m l i n u z 一2 6 1 5 5 m s i n p1s s u n a k m m s 同上无无 o i n i t r d 一2 6 1 5 5 一m i p r o u t e 一2 6 1 1 1 j n p l s c 1 c 2 p l s i m g 一1 9 5 0 d i 3 8 6 r p 册 支持m p l s 的 e 1 s y s t e m m a p 一2 6 1 5 r t r j n p ls s u n a e b t a b l e s 一2 o 6 7m d ls i p 路由配置 e 2 k o 5 一m p l s 一1 9 5 0 d i 3 8 6 r p m 工具 v m li n u z 一2 6 1 5 5 一 i p t a b l e s 一1 3 o 一2 m p l s m p l s 1 9 5 0 d i 3 8 6 r p m i n i t r d 一2 6 1 5 5 一r p i m g s y s t e m m a p 一2 6 15 r p 无 无无 5 一r p v m li n u z 一2 6 1 5 5 一 r p 说明:整个模型采用三种内核,所有主机和m s 认证服务器使用l i n u x 2 6 1 5 5 内核,r p 使用一种,其他路由器使用一种,后两种内核都是在l i n u x 2 6 1 5 5 内 核的基础上修改而成。 5 2 测试用例及结果 5 2 1 安全接入 该测试过程主要测试没有授权的用户能否加入组播组。表5 2 列出了测试安全 接入认证的用例: 电子科技大学硕士学位论文 表5 2 安全接入认证测试用例 用例i ds cs u 一2 0 0 9 0 3 0 1 0 0 1 用例要求测试系统的安全接入 前提条件现场测试环境搭建成功,设备工作状态正常 步骤测试方法期望的输出相应信息 1 、在组播认证服务器上配置合法的成员信息。在组播认证服务器 l 2 、运行组播会议系统上能够列出合法成员的 信息 1 、在组播会议系统中输入正确的用户名与密码 2 、选择i p 层组播加入组播组 成功加入、离开组播 2 3 、离开组播组 组 4 、选择应用层组播登录 5 、离开应用层组播组 1 、在组播会议系统中输入错误的用户名与密码 2 、选择i p 层组播加入组播组 3 3 、离开组橘组无法加入组播组 4 、选择应刚层组播登录 5 、离开应川层组播组 认证服务器上的成员配置信息如图5 2 所示: 图5 2 成员配置信息 系统调用函数s e t s o c k o p l ( ) 发起接入认证,认证成功将返回6 4 位的数据加密密 钥,认证失败则返回一1 ,认证结果都将输出至文件j o i n _ r e s u l t 中。 图5 - 3 显示了j o i n r e s u j t 中的内容,其中成员“z 1 ”对应的s e t s o c k 叩t 返回值 第五章系统测试 为5 a 7 6 3 9 a b ,说明其验证通过,该值为6 4 位的共享密钥。而成员“j t ”由于输入的 密码与图5 2 中的配置信息不符,s e t s o c k o p t 的返回值为一1 ,认证失败。 5 2 2 数据安全 图5 3 接入认证结果 该过程主要测试在数据传送的过程中,若数据被截获能否被解密。表5 3 列出 了测试数据安全的测试用例: 表5 3 数据安全测试用例 用例i d s cs u 一2 0 0 9 0 3 0 l 一0 0 2 用例要求测试系统的数据传输安全 前提条件现场测试环境搭建成功,设备工作状态正常 步骤测试方法期望的输出相应信息 1 、运行组播会议系统,加入i p 层组播组 2 、发送8 字节未加密数据查看到i p 层传输的 l 3 、利用i p - q u e u e 查看传输的数据 数据是未加密的数据。 l 、运行组播会议系统,加入i p 层组播组 查看到四层传输的 22 、发送8 字:肖加密数据 数据是已加密的数据。 3 、利用i p - q u e u e 查看传输的数据 i p _ q u e u e 是l i n u x 中的n e t f i l t e r 框架提供的将网络数据包从内核传递到用户空 电子科技大学硕士学位论文 间的方法,只要在用户层空间打开一个n e t l i i l l ( 的s o c k e t 后就可以接受内核通过 i m u e u e 所传递来的网络数据包。测试代码按照1 6 进制的方式显式了数据报文的 内容,每行1 6b ”e s 。由于这里获取的报文内容是从i p 层开始的,因此m a c 头部 的1 4 个字节在这里全置为o 。图5 - 4 显示的内容为未加密数据,图5 5 显示的内容 为加密数据: 邈。翟,黧鼍譬= i 篡冀i 警譬麓鬈:0 黝话夏o “篓一“篡! 之篇? 匕纛鬟篡黧! 。z 3 忍露 爻棒f ) 缀秘影焱羲 勘终端i ,豁燕( 8 ,衔劾h j r f h t 谤l t ) c :l i h t。l 等c i tp d c l 街te ) 托t n t o ( ) o o0 0 o ( ) ( 坳( 妁o o ( 妁o o3 5 n c l oo o01 移) c ,( 、j o0 0o jlid :2 jc od 8 ,l8 je oo o ( 聍搿、( v 、:h0 0d ? 移0 j 0o o2 df 喜o ( 、b 气:ij 弓j 站j ,lo t ,n 0 0 : o t 酞气,s 0 :t j : :21 和o d0 0j 孓廿t i l6 0 ;0 嚣a ;c6 弓 o :) 0 0n t j0 :t6 五6 1 :二, :k j ;06 1 螃。6 白i j :r 量转,j 娃r r t ,t 罐l ,c di 扣,嚣tl = l 图5 _ 4 未加密数据 图5 5 加密数据 图5 5 中的数据包最后8 字节为加密后的数据内容,与图5 4 中显示的完全不 同。尝试对加密数据不进行解密,直接解压缩播放,操作将会失败。 5 2 3 组成员状态维护 本系统中的每个合法用户可以看到在线的有哪些成员,而当某成员离丌组时, 其他客户端可以及时的发现,并更新自己的成员列表。表5 - 4 列出了测试组成员状 态维护的测试用例: 5 6 围口 第五章系统测试 表5 4 组成员状态维护测试用例 用例i ds cs u 一2 0 0 9 0 3 0 1 一0 0 3 用例要求 测试组播组内成员的状态 前提条件现场测试环境搭建成功,设备工作状态正常 步骤测试方法期望的输出相应信息 各成员客户端上会出现该新加 1 、运行组播会议系统,选择i p 层组播入成员的信息。新加入的成员客户 l 2 、加入组播组端上也会显示其他成员的信息。该 3 、离开组播组成员离开后,成员信息会在客户端 界面上消失。 1 、运行组播会议系统,选择应用层组播 各成员客户端上会出现该新加 2 、加入组播组 入成员的信息。新加入的成员客户 2 端上也会显示其他成员的信息。该 3 、离开组播组 成员离开后,成员信息会在客户端 界面上消失。 测试结果如图5 6 所示,正确显示了在线成员的状态信息: 幽5 6 成员状态信息 5 7 电子科技大学硕士学位论文 5 2 4 创建虚电路 表5 5 列出了测试创建虚电路的测试用例: 表5 5 创建虚电路测试用例 用例i d s cs u 一2 0 0 9 0 3 0 l 一0 0 4 用例要求测试创建虚电路 前提条件现场测试环境搭建成功,设备工作状态正常 步骤 测试方法 期望的输出相应信息 l 、显示当前创建的端到 1 、运行组播会议系统,调用c o 肌e c t 函数 端虚电路的具体状态 l 2 、在a l 用c a t p r o c m c e s _ v c 米查看虚电路的创建情况。 2 、v ci s e x t a b l i s h i n g 3 、a 1 用d m e s g 命令,查看日志文件v c 一 m c p w d :5 6 7 8 9 0 s h 一 p w d :5 6 7 8 9 0 1 、通过组播会议系统发送数据 2 、用c a t p r o c m c e s _ s 来查看功能模块的运行时信息。 终端打印服务列表 2 3 、用c a t p r o c m c e s - s u 来杏看功能模块的运行时信息。 4 、用c a t p r o c m c e s s u m 来查看功能模块的运行时信息。 虚电路创建信息显示结果如图5 ,7 所示: ,、啦等焉呼1 棼一 4 篓 妇型i f ! 文件d编辑t 9 l rc j c ) l 0 1 0 c al h 0 5 t d a d j i _ d p o r t ;( ) : 9 1 8 7 2工s 0 6 0 lr o o t 谴l o c 习l h o s t 蚕看t 蚴 终端( i j环签( b j 麓劫t 鲢j p r 。cj = c a tc e s v c p k t ty p e 焉e n d c j0 p r o c j = 口 t r e c v c墨t a t e l 3 d o y n a ol h o 图5 7 虚电路创建信息 虚电路的运行状态信息如图5 8 所示: ,j :琴:一j 嚣譬誓4 毒:绉笺蚤驻笙丑i 鹜釜蕊澄主二_ ;:”乏量戡,焉j 每i 。i 一菇菇,j 、i 毫i | 趸艇 文件f 日编辚t 日查看( 蚴终端( i j 壬圣匮i 勘 【r c ,o t 0 1 0 c a 】h o s tp r o c l c a tm c e s s u s o r v ic eu n i t1 i 高ti n f o 曩a t i o n :n u m b e r = 2 + x o b 日e l v c m a n a g e 2b a s o 吐n i t 【r o o t 1 0 c a 】h o s tp r o c j = 口 l t t r f b f o 0 0 0 2 0 3 0 0 0 0 0 2 0 l o o 帮助h ) r e m a r k i n d o p e n d e n t i n d o p o n j o n t 图5 8 虚电路运行模块信息 5 8 ,二二,。一童二二一二:o 一二 二 , , m日h二=吲 r卜卜媛降_髟珏f n 第五章系统测试 虚电路统计的传输信息如图5 9 所示: 文件( 日 辐;i 辚t e j查看( 蚴终端( = d 环签( b j 【r o o t 0 1 0 c a l h o s tp r o c 】牟c a tm c e 5 一s u m s um a n a g e rj 九r o 啊习ti o n s 口r v i c 口 u 九j tn n m b o r :2 。 t o t a l 墨a n d = o :t o t a l1 o c v 窜0 :s a n d1 0 r h i 葛j sar e l e s ev 口r 矗i o n ! 【r o o t p l o c al h o - tp r a c 】牟口 5 2 5 数据发送与接收 图5 9 虚电路统计信息 表5 6 列出了测试发送数据与接收数据的测试用例: 表5 6 数据发送与接收测试用例 用例i d s cs u 一2 0 0 9 0 3 0 1 一0 0 5 用例要求测试数据发送与接收 前提条件现场测试环境搭建成功,设备工作状态正常 步骤测试方法期望的输出相应信息 1 、运行组播会议系统,选择i p 层组播 登录级别为l 和2 的 2 、加入组播组 客户端将收到文字数据, 3 、选择接收对象权限:l ,2 以及音频数据并能成功 l4 、发送文字数据 播放声音。当发送端离开 5 、发送音频数据 组后,接收端将无法收到 6 、离开组播组 数据 7 、发送数据 l 、运行组播会议系统,选择应刚层组播 2 、加入组播组登录级别为l 和2 的 3 、选择接收对象权限:l ,2客户端将收到文字数据。 2 4 、发送文字数据当发送端离开组后,接收 5 、离开组播组端将无法收到数据 6 、发送数据 该项测试结果参照5 2 3 节的演示效果。 5 9 电子科技大学硕士学位论文 5 2 6 系统可靠性与稳定性 表5 7 列出了测试系统可靠性与稳定性的测试用例: 表5 7 系统可靠性与稳定性测试用例 用例ds cs u 一2 0 0 9 0 3 0 1 0 0 6 用例要求测试系统可靠性与稳定性 。 前提条件现场测试环境搭建成功,设备

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论