分组交换与仿真.docx
- 文档编号:20130473
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:20
- 大小:654.79KB
分组交换与仿真.docx
《分组交换与仿真.docx》由会员分享,可在线阅读,更多相关《分组交换与仿真.docx(20页珍藏版)》请在冰豆网上搜索。
分组交换与仿真
课程设计报告
课程设计题目:
分组交换系统的设计与仿真
学号:
学生姓名:
专业:
通信工程
班级:
指导教师:
2013年1月11日
第1章分组交换
1.1分组交换的原理
X.25建议是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)制定的关于数据终端设备(DTE)和数据电路终接设备(DCE)之间的接口规程。
X.25标准的思路是为用户(DTE)和分组交换网络(DCE)之间建立对话和交换数据提供一些共同的规程,这些规程包括数据传输通路的建立、保持和释放,数据传输的差错控制和流量控制,防止网络发生阻塞,确保用户数据通过网络的安全,向用户提供尽可能多而且方便的服务。
X.25建议为分组交换网定义了开放系统互连(OSI)模型的下3层,这三层分别是:
物理层,链路层,分组层。
与OSI模型的下三层一一对应,只是OSI的网络层(第三层)改称分组层,其功能是一致的。
X.25的三层协议为DTE——DTE之间的高层通信协议提供了可靠的基础。
X.25的分组层在X.25接口为每个用户呼叫提供一个逻辑信道(所谓的“呼叫”是指一次通信过程)。
为每个用户的呼叫连接提供有效的分组传输,包括顺序编号,分组的确认和流量控制过程。
提供交换虚电路(SVC)和永久虚电路(PVC)的连接。
提供建立和清除交换虚电路的方法。
当主叫DTE想要建立虚呼叫时,它发送“呼叫请求”分组,该“呼叫请求”分组包含可供分配的高端的LCN和被叫的DTE地址。
该分组发送到本地DCE,由DCE将该分组转换成网络规程格式,而且通过网络路由(交换)到远端DCE,由远端DCE将网络规程格式的呼叫请求分组转换为“入呼叫”分组,并发送给被叫的DTE,该分组包含了可供分配的低端的LCN。
交换虚电路建立过程
被叫DTE通过发送“呼叫接受”分组表示同意建立虚电路。
远端DCE接收到“呼叫接受”分组之后,通过网络规程传送到本地DCE,本地DCE发送“呼叫连接”分组到主叫DTE。
主叫DTE接收到“呼叫连接”分组之后,表示主叫DTE和被叫DTE之间的虚呼叫已建立,可以进入数据传输阶段。
DTE和DCE对应的逻辑信道就进入数据传输状态。
在虚呼叫任何一端的DTE都能够清除呼叫,而且呼叫也可以由网络清除。
呼叫清除的过程如图所示。
主叫DTE发“清除请求”分组,该分组通过网络到达远端DCE,远端DCE发“清除指示”分组到被叫DTE,被叫DTE用“清除证实”分组予以响应。
该“证实”传到本地DCE,本地DCE再发送“清除证实”到主叫DTE。
完成清除规程之后,虚呼叫所占用的所有逻辑信道都成为“准备好”状态。
交换虚电路拆除过程
1.2分组交换的特点
①分组交换方式具有很强的差错控制功能,信息传输质量高。
②网络可靠性强。
在分组交换网中,“分组”在网络中传送时的路由选择是采取动态路由算法,即每个分组可以自由选择传送途径,由交换机计算出一个最佳路径。
因此,当网内某一交换机或中继线发生故障时,分组能自动避开故障地点,选择另一条迂回路由传输,不会造成通信中断。
③分组交换网对传送的数据能够进行存储转发,使不同速率、不同类型终端之间可以相互通信。
④由于以分组为单位在网络中进行存储转发,比以报文为单位进行存储转发的报文交换时延要小得多,因此能满足会话型通信对实时性的要求。
⑤在分组交换中,由于采用了“虚电路”技术,使得在一条物理线路上可同时提供多条信息通路,即实现了线路的统计时分复用,线路利用率高。
⑥分组交换的传输费用与距离无关,不论用户是在同城使用,还是跨省使用,均按同一个单价来计算。
因此,分组网为用户提供了经济实惠的信息传输手段。
第2章分组交换的过程
2.1呼叫建立
2.1.1呼叫建立的原理
当主叫DTE想要建立虚呼叫时,它发送“呼叫请求”分组,该“呼叫请求”分组包含可供分配的高端的LCN和被叫的DTE地址。
该分组发送到本地DCE,由DCE将该分组转换成网络规程格式,而且通过网络路由(交换)到远端DCE,由远端DCE将网络规程格式的呼叫请求分组转换为“入呼叫”分组,并发送给被叫的DTE,该分组包含了可供分配的低端的LCN。
交换虚电路建立过程
2.1.2呼叫建立的源代码与仿真
#include"pconstant.h"
#include"string.h"
extern"C"_declspec(dllexport)boolsetup(char*address,
intport_lcn[2],DTERoutTbaleTypeDTERoutTbale[])
{for(inti=0;i {for(intj=0;j {if(DTERoutTbale[i].Address[j]! =0) {if(! strcmp(DTERoutTbale[i].Address[j],address)) {port_lcn[0]=i; for(intk=0;k if(! DTERoutTbale[i].lcn_state[k]) {DTERoutTbale[i].lcn_state[k]=true; port_lcn[1]=k; returntrue; } } } } } returnfalse; } 准备建立 下图1为mess_flag值为0时表示当前DTE终端要发起建立虚电路连接,此函数要完成当前DTE终端所连接的物理链路上的逻辑信道状态的检查,为呼叫请求分组分配一逻辑信道号。 然后将此逻辑信道状态置为占用,函数返回真值,否则函数返回值为假。 下图2为 mess_flag值为1时为呼叫到达分组Incoming_call,此函数要检查当前DTE终端所连接的物理链路上的呼叫到达分组占用的逻辑信道的状态,若为空闲,将其置为占用状态,函数返回真值,否则函数返回值为假。 下图3为mess_flag值为2时为呼叫连接分组Call_connected,此函数要检查当前DTE终端所连接的物理链路上的呼叫连接分组占用的逻辑信道的状态,若为占用状态,说明是其发起呼叫的连接证实,函数返回真值,否则函数返回值为假。 2.2呼叫拆除 2.2.1呼叫拆除的原理 在虚呼叫任何一端的DTE都能够清除呼叫,而且呼叫也可以由网络清除。 呼叫清除的过程如图所示。 主叫DTE发“清除请求”分组,该分组通过网络到达远端DCE,远端DCE发“清除指示”分组到被叫DTE,被叫DTE用“清除证实”分组予以响应。 该“证实”传到本地DCE,本地DCE再发送“清除证实”到主叫DTE。 完成清除规程之后,虚呼叫所占用的所有逻辑信道都成为“准备好”状态。 2.2.2呼叫拆除的源代码与仿真 #include"pconstant.h" #include"string.h" extern"C"_declspec(dllexport)boolclean(char*address,intport_lcn[2],DTERoutTbaleTypeDTERoutTbale[]) {for(intl=0;l {if(! strcmp(DTERoutTbale[port_lcn[0]].Address[l],address)) {if(DTERoutTbale[port_lcn[0]].lcn_state[port_lcn[1]]) {DTERoutTbale[port_lcn[0]].lcn_state[port_lcn[1]]=false; returntrue; } } } returnfalse;} 下图4为mess_flag值为4时表示当前DTE终端要发起虚电路连接拆除,此函数要完成要拆除的虚电路DTE终端所连接段的逻辑信道状态的检查,若此逻辑信道状态置为占用,函数返回真值,否则函数返回值为假。 下图5为mess_flag值为5时为清除指示分组Clean_indication,此函数要检查当前DTE终端所连接的物理链路上的清除指示分组占用的逻辑信道的状态,若为占用状态,将其置为空闲状态,释放链路资源,函数返回真值,否则函数返回值为假。 下图6为mess_flag值为6时为清除证实分组Clean_confirm,此函数要检查当前DTE终端所连接的物理链路上的呼叫连接分组占用的逻辑信道的状态,若为占用状态,将其置为空闲状态,释放链路资源,函数返回真值,否则函数返回值为假。 2.3分组转发 2.3.1分组转发的原理 被叫DTE通过发送“呼叫接受”分组表示同意建立虚电路。 远端DCE接收到“呼叫接受”分组之后,通过网络规程传送到本地DCE,本地DCE发送“呼叫连接”分组到主叫DTE。 主叫DTE接收到“呼叫连接”分组之后,表示主叫DTE和被叫DTE之间的虚呼叫已建立,可以进入数据传输阶段。 DTE和DCE对应的逻辑信道就进入数据传输状态。 2.3.2分组转发的源代码与仿真 #include"pconstant.h" extern"C"_declspec(dllexport)boolpack_switch(intIn_port_lcn[],intOut_port_lcn[],RoutTableTypeTable[]) { for(inti=0;i { if(Table[i].in_port==In_port_lcn[0]) { Out_port_lcn[0]=Table[i].out_port; Out_port_lcn[1]=Table[i].out_lcn; returntrue; } } returnfalse; } 下图7表示数据在A处有一条线从入端0入,从出端1出,出线人线都是通过逻辑信道3,另外一条线从1进从0出都是通过逻辑信道3,;在B处有一条线从入端0入通过逻辑信道3,从1端出通过逻辑信道6,还有一条线从入端1入,通过逻辑信道6,从1端出,通过逻辑信道3;在C处有一条线从入端0入通过逻辑信道6,从2端出通过逻辑信道2,在C处还有一条线从入端2入,通过逻辑信道2,从0端出,通过逻辑信道6。 通过分析可以看出其传送过程从DTE1到DTE2的传输线路从入线0入通过逻辑信道3从出端1出,出线1经过逻辑信道3在B处从入端0入经过逻辑信道3从出端1出经过逻辑信道6在C处从入端0入经过逻辑信道号6在出端2出,经过逻辑信道号2到达DTE2.还有另外一组传输线路传送过程从DTE2到DTE1的传输线路从入线1入通过逻辑信道3从出端0出,出线0经过逻辑信道3在B处从入端1入经过逻辑信道6从出端0出经过逻辑信道3在C处从入端2入经过逻辑信道号2在出端0出,经过逻辑信道号6到达DTE2. 因为分组交换节点线程调用分组转发函数进行路由表的查找分组转发函数根据分组入端的端口号和逻辑信道号,查找本分组交换节点线程的路由表,若查找到所需的路由信息(路由表数组总共有三项),将出端的端口号和逻辑信道号值赋给Out_port_lcn[]数组,函数返回真值,否则函数返回值为假。 所以由上面两条线路的传输情况可以知道,实现了分组交换分组转发 下图8表示数据从B出端1到C入端0通过逻辑信道号6进行传输。 因为分组交换节点线程调用分组转发函数进行路由表的查找分组转发函数根据分组入端的端口号和逻辑信道号,查找本分组交换节点线程的路由表,为B出端1,C入端0过逻辑信道号6,所以返回值为真。 第3章实验结果分析 3.1呼叫建立的实验结果分析 本次实验是DTE终端线程调用虚电路建立函数来完成虚电路的建立。 虚电路建立函数根据分组类别标识来处理不同的消息。 仿真模拟播放分别是在当mess_flag值为0时为真时,请求建立连接成立,建立连接;当mess_flag值为1时为真时,为呼叫到达分组Incoming_call,为空闲,将其置为占用状态,入呼叫分组成功,实现分组;mess_flag值为2为真时呼叫连接分组Call_connected,前DTE终端所连接的物理链路上的呼叫连接分组占用的逻辑信道的状态,为占用状态,发起呼叫的连接证实,完成分组呼叫连接。 3.2呼叫拆除的实验结果分析 本次实验是DTE终端线程调用虚电路建立函数来完成虚电路的建立。 虚电路建立函数根据分组类别标识来处理不同的消息。 仿真模拟播放分别是mess_flag值为4时为真DTE终端要发起虚电路连接拆除请求;mess_flag值为5时为真DTE终端所连接的物理链路上的清除指示分组占用的逻辑信道为占用状态;mess_flag值为6时为真DTE终端所连接的物理链路上的呼叫连接分组占用的逻辑信道的状态,若为占用状态,将其置为空闲状态,释放链路资源。 即分组交换呼叫拆除在有连接的情况下即逻辑信道被占用,再执行分组交换拆除。 3.3分组转发的实验结果分析 分组转发的三要素分别为入线.出线逻辑信道号,因为交换节点线程调用分组转发函数进行路由表的查找分组转发函数根据分组入端的端口号和逻辑信道号,查找本分组交换节点线程的路由表,在本次模拟观察中,主要是观察在传输过程中经过的路由。 了解分组转发的实质。 第4章实验的代码与仿真 #include"pconstant.h" #include"string.h" extern"C"_declspec(dllexport)boolsetup(char*address, intport_lcn[2],DTERoutTbaleTypeDTERoutTbale[]) {for(inti=0;i {for(intj=0;j {if(DTERoutTbale[i].Address[j]! =0) {if(! strcmp(DTERoutTbale[i].Address[j],address)) {port_lcn[0]=i; for(intk=0;k if(! DTERoutTbale[i].lcn_state[k]) {DTERoutTbale[i].lcn_state[k]=true; port_lcn[1]=k; returntrue; } } } } } returnfalse; } #include"pconstant.h" #include"string.h" extern"C"_declspec(dllexport)boolclean(char*address,intport_lcn[2],DTERoutTbaleTypeDTERoutTbale[]) {for(intl=0;l {if(! strcmp(DTERoutTbale[port_lcn[0]].Address[l],address)) {if(DTERoutTbale[port_lcn[0]].lcn_state[port_lcn[1]]) {DTERoutTbale[port_lcn[0]].lcn_state[port_lcn[1]]=false; returntrue; } } } returnfalse; } #include"pconstant.h" extern"C"_declspec(dllexport)boolpack_switch(intIn_port_lcn[],intOut_port_lcn[],RoutTableTypeTable[]) { for(inti=0;i { if(Table[i].in_port==In_port_lcn[0]) { Out_port_lcn[0]=Table[i].out_port; Out_port_lcn[1]=Table[i].out_lcn; returntrue; } } returnfalse; } 实验仿真 实验心得 通过本次实验与课程设计的学习,我充分了解了分组交换系统的原理以及过程,并且,在这次的设计过程中,由于对各个过程的代码不熟悉,在设计过程中有搁置的想法,后来在老师和同学的帮助下,我明白了分组交换的各个过程中仿真代码的各个含义以及应用函数代码的含义和应用格式。 在写设计时,由于不知道该怎么写设计报告,在通过老师的课程设计指导书的参考下,我们按上面的指定的实验步骤来完成的。 由于不知道分组交换的各个过程中应该要用什么函数,在老师的帮助下,明白应该怎么用函数,怎么设计以及仿真。 在这里,我要感谢老师和同学的帮助,以后,我会尽我的力量来提升自己的知识水平,争取做得更好。 参考文献 [1]卞佳丽等著.现代交换原理与通信网技术.北京邮电大学出版社 [2]原荣.光纤通信网络.北京: 电子工业出版社,1999 [3]金传升.通信技术.1992年第2期 [4]刘立陈俊壁.通信技术与发展.1990年第6期 [5]刘冉.科技信息.2012年第8期 [6]陈亮孟李林.西安邮电学院学报.2011年第6期 东华理工大学 课程设计评分表 学生姓名: 班级: 学号: 课程设计题目: 分组交换系统的设计与仿真 项目内容 满分 实评 选 题 能结合所学课程知识、有一定的能力训练。 符合选题要求 (5人一题) 10 工作量适中,难易度合理 10 能 力 水 平 能熟练应用所学知识,有一定查阅文献及运用文献资料能力 10 理论依据充分,数据准确,公式推导正确 10 能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等 10 能体现创造性思维,或有独特见解 10 成 果 质 量 总体设计正确、合理,各项技术指标符合要求。 10 说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰 10 设计说明书栏目齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范准确,符合国家标准 10 有一定篇幅,字符数不少于5000 10 总分 100 指导教师评语: 指导教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分组 交换 仿真