As a UMTS system enters an all-IP stage, a packet switching scheme is used to forward packets from all UMTS applications within a UMTS core network. Since four types of UMTS traffic defined by the 3GPP are supported by the UMTS; each type of UMTS traffic has its QoS features and requirements. However, bandwidth resource of a UMTS core network is limited; it might be insufficient for UMTS applications to receive their required QoS. For satisfying most of UMTS applications’ QoS requirements, a queuing scheme should be adopted to handle UMTS packet forwarding process in a DiffServ way within a gateway over a UMTS core network.
This study proposes a priority-based queuing scheme to support differentiated packet forwarding behaviors among UMTS traffic within a UMTS core network. In the proposed queuing scheme, two queuing buffer allocations, the DQB and OQB, are adopted to handle packet enqueuing and dequeuing processes. These two allocations base on QoS features of UMTS traffic to divide a physical queuing buffer into several logical queuing buffers; each logical queuing buffer is used to enqueue arrival UMTS packets. In the DQB allocation, four logical queuing buffers are corresponding to four types of UMTS traffic. And, each logical queuing buffer can be subdivided into a guaranteed buffer and a dynamic buffer; a guaranteed buffer is one type of guaranteed buffers and a dynamic buffer is one type of shared buffers. In the OQB allocation, five logical queuing buffers are used; four logical queuing buffers are guaranteed buffers which are corresponding to four types of UMTS traffic and one overflow logical queuing buffer is a shared buffer.
Usually, a logical queuing buffer with higher packet transmission
priority can allow to enqueue more packets be enqueued with the DQB
and OQB allocations.
55
In the proposed queuing scheme, a priority-based packet enqueuing module is adopted to process an arrival packet enqueuing job with either the DQB allocation or the OQB allocation. Since two types of queuing buffers, guaranteed buffer and shared buffer, are used to enqueue arrival packets; FIFO scheme is used in a guaranteed buffer and RED-based scheme is used in a shared buffer. The priority-based packet enqueuing module bases on packet transmission priorities of four types of UMTS traffic to assign parameter settings to logical queuing buffers in a differentiated way. With the differentiated parameter settings, the proposed packet enqueuing module can support a differentiated packet enqueuing behavior among UMTS traffic. Moreover, a WRR-based packet dequeuing module is used to manipulate a packet dequeuing process among logical queuing buffers. The SWRR scheme is proposed in the packet dequeuing module; it bases on packet transmission priorities of UMTS packets which are enqueued in logical queuing buffers to assign differentiated packet dequeuing turns to logical queuing buffers. According to received packet dequeuing turns, it is easier for the SWRR scheme to dequeue UMTS packets with higher packet transmission priorities from logical queuing buffers. A differentiated packet dequeuing process can be supported by the SWRR scheme.
In this study, several C++ programs and TCL scripts are coded and
implemented in the ns2 to simulate several scenarios. Two types of
scenarios, continuous and intermittent transmission patterns, are
simulated to understand packet forwarding performance of the proposed
queuing scheme with the DQB and OQB allocations. According to the
simulation results, we can find several important points. First, the
proposed queuing scheme can support four types of UMTS traffic to
receive their deserved packet forwarding performance either with the
DQB allocation or with the OQB allocation in both a continuous
transmission pattern and an intermittent transmission pattern. Secondly,
examining the simulation results, we can find that the overall packet
56
forwarding performance of UMTS traffic which is supported by the
proposed queuing scheme either with the DQB allocation or with the
OQB allocation is close. Different types of UMTS traffic receive better
packet forwarding performance either with the DQB allocation or with
the OQB allocation in different scenarios; neither the DQB allocation
nor with the OQB allocation can let four types of UMTS traffic receive
better packet forwarding performance in all scenarios. Thirdly, about the
two queuing buffer allocations, some issues need to be refined. For the
DQB allocation, UMTS traffic with the lowest packet transmission
priority might receive a packet forwarding starvation in a continuous
transmission pattern; but this issue seems not exist in an intermittent
transmission pattern. For the OQB allocation, disorder transmission
packets occur among four types of UMTS traffic in both a continuous
transmission pattern and an intermittent transmission pattern; this issue
results from the overflow logical queuing buffer operation in the SWRR
scheme.
57
References
1. UMTSWorld.com , 3G Tutorial, Overview of The Universal Mobile Telecommunication System (draft), available at
http://www.umtsworld.com/technology/overview.htm, Jul. 2002.
2. 3GPP TS 23.101, General Universal Mobile Telecommunications System (UMTS) architecture, V9.0.0, Dec. 2009.
3. 3GPP TR 23.922, Architecture for an All IP network, Oct. 1999.
4. UMTS Forum, Enabling UMTS Third Generation Services and Applications (Report 11), available at
http://www.tik.ee.ethz.ch/~mobydick/related_work/umts-forum/umt s-forum_report11.pdf, Oct. 2000.
5. Heikki Kaaranen, Ari Ahtiainen, Lauri Laitinen, Siammak Naghian and Valtteri Niemi, UMTS Networks: Architecture, Mobility and Services (2
nded.), John Wiley & Sons, Inc., New Jersey, 2005.
6. 3GPP TS 23.002, Network Architecture, V8.3.0, Sep. 2008.
7. ETSI TS 123 002, Digital cellular telecommunications system
(Phase 2+); Universal Mobile. Telecommunications System (UMTS);
Network Architecture, V7.1.0, Mar. 2006.
8. Farshid Agharebparast and Victor C. M. Leung, QoS Support in the UMTS/GPRS Backbone Network Using DiffServ, Proc. of IEEE GLOBECOM, Nov. 2002.
9. Daniel Collins and Clint Smith, 3G Wireless Networks, McGraw-Hill Professional, Sep. 18, 2001.
10. 3GPP, TS 23.207 v8.0.0, End-to-End QoS Concept and Architecture, Dec. 2008.
11. Neal Seitz, ITU-T QoS standards for IP-based networks, IEEE Communication Magazine, Vol. 41, No. 6, pp. 82-89, Jun. 2003.
12. Alan Clark, Packet loss Distributions and Packet loss Models, ITU-T Contribution COM 12-D97-E, ITU, Telchemy Incorporated 2003.
13. Wenyu Jiang and Henning Schulzrinne, Modeling of Packet Loss
58
and Delay and their Effect on Real-Time Multimedia Service
Quality, In ACM International Workshop on Network and Operating Systems Support for Digital Audio and Video (NOSSDAV), Chapel Hill, North Carolina, Jun. 2000.
14. Thomas Pliakas, George Kormentzas and Charalabos Skianis,
Scalable Video Streaming Traffic Delivery in IP/UMTS Networking Environments, Journal of Multimedia, Vol. 2, No. 2, pp. 37-46, Apr.
2007.
15. David J. Goodman and Robert A. Myers, Mobile Video Telephony:
for 3G Wireless Networks, McGraw-Hill Professional, Nov. 2004.
16. 3GPP TS 23.107 V6.4.0, QoS Concept and Architecture, Release 6, Mar. 2006.
17. ETSI TS 122 105, V6.4.0, UMTS; Services and Service Capabilities, available at http://www.etsi.org, Sep. 2005.
18. Robert Lloyd Evans, QoS in Integrated 3G Networks, Artech House, New York, 2002.
19. Santiago Alvarez, QoS for IP/MPLS Networks, Cisco Press, July 2006.
20. Dimitrios Stiliadis and Anujan Varma, Efficient fair queueing algorithm for packet-switched networks, IEEE/ACM Transactions on Networking, Vol. 6, pp. 175-185, Apr. 1998.
21. IETF Differentiated Services (DiffServ) working group, available at:
http://www.ietf.org/html.charters/diffserv-charter.html
22. S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, and W. Weiss, An Architecture for Differentiated Services, IETF RFC 2475, Dec.
1998.
23. Paul P. White, RSVP and integrated services in the internet: A tutorial, IEEE Communications Magazine, Vol. 35, No.5, pp.
100-106, May 1997.
24. Dovrolis Constantinos and Ramanathan Parameswaran, A case for
relative differentiated services and the proportional differentiation
59
model, IEEE Network, Vol. 13, pp. 26-34, Sep./Oct. 1999.
25. Tham Chen Khong, Yao Qi, and Jiang Yuming, Achieving differentiated services through multi-class probabilistic priority scheduling, Computer Networks, Vol.40, No. 4, pp. 577-593, 2002.
26. Y. Bernet, J. Binder, S. Blake, M. Carlson, S. Keshav, E. Davies, B.
Ohlman, D. Verma, Z. Wang and W. Weiss, A Framework for Differentiated Service, Internet Draft, available at
http://tools.ietf.org/id/draft-ietf-diffserv-framework-01.txt, Oct.
1998.
27. Ikjun Yeom and A. L. Narasimha Reddy, Modeling TCP Behavior in a Differentiated Services Network, IEEE/ACM Transactions on Networking, pp. 31-46, Vol. 9, No. 1, Feb. 2001.
28. Van Jacobson, Kathleen Nichols and Kedar Poduri, An expedited forwarding PHB. Request for Comments 2598, Internet Engineering Task Force, Jun. 1999.
29. Dana Arash and Malekloo Ahmad, Performance Comparison between Active and Passive Queue Management, IJCSI
International Journal of Computer Science Issues, Vol. 7, Issue 3, No. 5, May 2010.
30. Bob Braden, David Clark, Jon Crowcroft, Bruce Davie, Steve
Deering, Deborah Estrin, Sally Floyd, Van Jacobson, Greg Minshall, Craig Partridge, Larry Peterson, Kadangode Ramakrishnan, Scott Shenker, John Wroclwski, and Lixia Zhang, Recommendations on Queue Management and Congestion Avoidance in the Internet, IETF RFC 2309, Apr. 1998.
31. Sally Floyd, References on RED (Random Early Detection) Queue Management, available at http://www.icir.org/floyd/red.html
32. James Aweya, Michel Ouellette and Delfin Y. Montuno, A multi-queue TCP window control scheme with dynamic buffer allocation, Journal of Systems Architecture, Vol. 49, No. 7-9, pp.
369-385, Oct. 2003.
60
33. Sally Floyd, RED: discussions of setting parameters, available at http://www.icir.org/floyd/REDparameters.txt, Nov. 1997.
34. Thomas Ziegler, Christof Brandauer and Serge Fdida, A Quantitative Model for the Parameter Setting of RED with TCP Traffic, IWQoS, LNCS 2092, Vol. 2092, pp. 202-216, 2001.
35. David Clark and Wenjia Fang, Explicit Allocation of Best Effort Packet Delivery Service, IEEE/ACM Transactions on Networking, Vol. 6, No. 4, pp. 362-373, Aug. 1998.
36. Dong Lin and Robert Morris, Dynamic of Random Early Detection, In Proceedings of ACM SIGCOMM97, pp. 127-137, Cannes, France, Sep. 14-18, 1997.
37. Jaiswal N.K., Priority Queue, Academic Press, Net York, 1968.
38. Eitan Altman and Tania Jiménez, Simulation analysis of RED with short lived TCP connections, Computer Networks, Vol. 44, Issue 5, pp. 631-641, Apr. 2004.
39. Mohamed Ashour and Tho Le-Ngoc, Priority queuing of long-range dependent traffic, In Proceedings of the 2004 IEEE Global
Telecommunications Conference (GLOBECOM’04), Vol. 6, pp.
3025-3029, 2003.
40. Hoon Lee, Anatomy of delay performance for the strict priority scheduling scheme in multi-service Internet, Computer
Communications, Vol. 29, No. 1, pp. 69-76, 1 Dec. 2005.
41. Chung G. Kang and Harry H. Tan, Queueing analysis of explicit priority assignment buffer access scheme for ATM networks,
Computer Communications, Vol. 21, No. 11, pp. 996-1009, 10 Aug.
1998.
42. Takahiro Matsuda, Akira Nagata, and Miki Yamaoto, Performance Analysis and Improvement of HighSpeed TCP with TailDrop/RED Routers, IEICE Transactions on Communications, Vol.E88–B, No.6 , pp. 2495-2507, Jun. 2005.
43. Long Bao Le, Ekram Hossain and Attahiru Sule Alfa, Service
61
differentiation in multirate wireless networks with weighted round-robin scheduling and ARQ-based error control, IEEE
Transactions on Communications, vol.54, No.2, pp.208–215, Feb.
2006.
44. Christoph Lindemann and Axel Thummler, Evaluating the GPRS radio interface for different quality of service profiles, Proceeding 12th GI/ITG Fachtagung Kommunikation in Verteilten System, pp.
291-301, Hamburg, Germany, Feb. 2001.
45. Robert Braden, David Clark, and Scott Shenker, Integrated Services in the Internet Architecture: an Overview, IETF RFC 1633, Jul.
1994.
46. Sally Floyd and Van Jacobson, Random Early Detection Gateways for Congestion Avoidance, IEEE/ACM Transactions on Networking, Vol 1, No. 4, pp. 397-413, Aug. 1993.
47. Fengyuan Rena, Chuang Lina and Bo Wei, A nonlinear control
theoretic analysis to TCP–RED system, Computer Networks, Vol. 49, Issue 4, No.15, pp. 580-592, Nov. 2005.
48. Chait Hollot, Vishal Misra, Don Towsley and Wei-Bo Gong, A control theoretic analysis of RED, IEEE Infocom’01, Anchorage, Alaska, USA, 2001.
49. Juha Heinanen and Kalevi Kilkki, A fair buffer allocation scheme, Computer Communications, Vol. 21, No. 3, pp. 220-226, 25 Mar.
1998
50. Gianluca Mazzini, Riccardo Rovatti and Gianluca Setti, A closed from solution of Bernoullian two-classes priority queue, Computer Communications, vol. 9, No. 3, pp. 264-266, 2005.
51. Xiao Yang, Performance analysis of priority schemes for IEEE 802.11 and IEEE 802.11e wireless LANs, IEEE Transactions on Wireless Communications, Vol.4, No.4, pp. 1506-1515, 2005.
52. Steven McCanne and Sally Floyd, The Network Simulator – ns2,
available at: http://nsnam.isi.edu/nsnam/index.php/Main_Page
62
Appendix
63
Appendix A: The DQB Source Code
#include "umtspred-queue.h"
static class UmtsPredQueueClass : public TclClass {
phy_q_length_ = con_q_ -> length() + str_q_ -> length() + int_q_ -> length() + bac_q_->length();
switch (iph->prio_) {
// If IPv6 priority = 15 (UMTS conversation traffic IP packet) then enqueue to con-queue case 15:
64
// If IPv6 priority = 11 (UMTS interactive traffic IP packet) then enqueue to int-queue case 11:
65
/* to generate a seed of random generator by timer */
if (gettimeofday(&tv, &tz) == 0) {
bool UmtsPredQueue::overflow_pkt_enqueue_by_red(int enq_min, int enq_max, int enq_pkt_num, double redenque_prob)
{
unsigned long rseed;
double random_prob;
66
67
68
69
70
// To print out the statistics information of UMTS priority queueing discipling // Unit : packet void UmtsPredQueue::printstats()
{
printf("\n*** UMTS priority queueing discipline operation statistics ***\n");
printf("======================================================\n");
71
printf("Interactive %7d %7d
%7d\n",int_enq_ctr_,int_deq_ctr_,int_dpq_ctr_);
printf("Background %7d %7d
%7d\n",bac_enq_ctr_,bac_deq_ctr_,bac_dpq_ctr_);
printf("\n---\n");
printf("Total UMTS dequeue packet number : %d\n",packet_deque_ctr_);
}
// Commands from the ns file are interpreted through this interface.
int UmtsPredQueue::command(int argc, const char*const* argv) {
if (strcmp(argv[1], "printstats") == 0) {
printstats();
return (TCL_OK);
}
return(Queue::command(argc, argv));
}
72
bool overflow_pkt_enqueue_by_red(int enq_min, int enq_max, int enq_pkt_num, double redenque_prob);
Packet* deque();
void printstats();
PacketQueue *con_q_; // the FIFO queue for UMTS conversation traffic PacketQueue *str_q_; // the FIFO queue for UMTS stream traffic PacketQueue *int_q_; // the FIFO queue for UMTS interactive traffic PacketQueue *bac_q_; // the FIFO queue for UMTS background traffic bool con_enable_enque_; // boolean for UMTS conversational packet enqueue bool str_enable_enque_; // boolean for UMTS streaming packet enqueue bool int_enable_enque_; // boolean for UMTS interactive packet enqueue bool bac_enable_enque_; // boolean for UMTS background packet enqueue int packet_deque_ctr_; // to count the sent packets
int pkt_deque_cycle_; // to mod the sent packets
int umts_deq_turn_; // 1 for con_q, 2 for str_q, // 3 for int_q, 4 for bac_q int phy_q_length_; // used queue buffer length
int con_enq_ctr_; // UMTS conversation application enqueue packet counter int str_enq_ctr_; // UMTS stream application enqueue packet counter
int int_enq_ctr_; // UMTS interactive application enqueue packet counter int bac_enq_ctr_; // UMTS background application enqueue packet counter int con_deq_ctr_; // UMTS conversation application dequeue packet counter int str_deq_ctr_; // UMTS stream application dequeue packet counter int int_deq_ctr_; // UMTS interactive application dequeue packet counter int bac_deq_ctr_; // UMTS background application dequeue packet counter int con_dpq_ctr_; // UMTS conversation application packet drop by queue int str_dpq_ctr_; // UMTS stream application packet drop by queue int int_dpq_ctr_; // UMTS interactive application packet drop by queue int bac_dpq_ctr_; // UMTS background application packet drop by queue int con_queue_limit_; // UMTS conversational application queue limit int str_queue_limit_; // UMTS streaming application queue limit int int_queue_limit_; // UMTS interactive application queue limit int bac_queue_limit_; // UMTS background application queue limit int c_enq_min_; // UMTS conversational application min queue limit int c_enq_max_; // UMTS conversation application max queue limit int s_enq_min_; // UMTS streaming application min queue limit int s_enq_max_; // UMTS streaming application max queue limit int i_enq_min_; // UMTS interactive application min queue limit int i_enq_max_; // UMTS interactive application max queue limit int b_enq_min_; // UMTS background application min queue limit int b_enq_max_; // UMTS background application max queue limit
double con_redenque_prob_; //UMTS conversational aplication packet enqueue probability by red scheme
double str_redenque_prob_; //UMTS streaming aplication packet enqueue probability by red scheme double int_redenque_prob_; //UMTS interactive aplication packet enqueue probability by red scheme double bac_redenque_prob_; //UMTS background aplication packet enqueue probability by red scheme };
73
Appendix C: The OQB Source code
#include "umtspdb-queue.h"
static class UmtsPdbQueueClass : public TclClass { public:
74
if ((fp = fopen("con_pkt_forwarding_delay_rec_pdb","w")) != NULL) {
fclose(fp);
}
if ((fp = fopen("str_pkt_forwarding_delay_rec_pdb","w")) != NULL) {
fclose(fp);
}
if ((fp = fopen("int_pkt_forwarding_delay_rec_pdb","w")) != NULL) {
fclose(fp);
}
if ((fp = fopen("bac_pkt_forwarding_delay_rec_pdb","w")) != NULL) {
phy_q_length_ = con_q_->length() + str_q_->length() + int_q_->length() + bac_q_->length() + ovb_q_->length();
switch (iph->prio_) {
// If IPv6 priority = 15 (UMTS conversation traffic IP packet) then enqueue to con-queue case 15:
75
// If IPv6 priority = 11 (UMTS interactive traffic IP packet) then enqueue to int-queue case 11:
76
// printf("Not an UMTS traffic packet!! Be dropped by UmtsPi queue.\n");
break;
/* to generate a seed of random generator by timer */
if (gettimeofday(&tv, &tz) == 0) {
bool UmtsPdbQueue::overflow_pkt_enqueue_by_prob(int enq_min, int enq_max, int enq_pkt_num, double dbenque_prob)
77
int packet_forwarding_cycle = 15;
umts_deq_turn_ = 0;
switch (packet_deque_ctr_ % packet_forwarding_cycle) {
78
79
80
81
82
83
84
85
// To record UMTS packets forwarding delay time
void UmtsPdbQueue::output_packet_forwarding_delay(int packet_type_)
pkt_forwarding_delay_rec_fp=fopen("con_pkt_forwarding_delay_rec_pdb","a+");
cur_clock = Scheduler::instance().clock();
cur_pkt_forwarding_delay_time = cur_clock - prev_con_pkt_forwarding_clock;
fprintf(pkt_forwarding_delay_rec_fp,"%f\n",cur_pkt_forwarding_delay_time);
prev_con_pkt_forwarding_clock = cur_clock;
break;
} case STR:
{
pkt_forwarding_delay_rec_fp=fopen("str_pkt_forwarding_delay_rec_pdb","a+");
cur_clock = Scheduler::instance().clock();
86
case INT:
{
pkt_forwarding_delay_rec_fp=fopen("int_pkt_forwarding_delay_rec_pdb","a+");
cur_clock = Scheduler::instance().clock();
pkt_forwarding_delay_rec_fp=fopen("bac_pkt_forwarding_delay_rec_pdb","a+");
cur_clock = Scheduler::instance().clock();
// To print out the statistics information of UMTS priority queueing discipling// Unit : packet void UmtsPdbQueue::printstats()
{
printf("\n*** UMTS priority queueing discipline operation statistics ***\n");
printf("======================================================\n");
printf("Total UMTS dequeue packet number from overflow buffer : %d\n",ovb_deq_ctr_);
printf("Total UMTS dequeue packet number : %d\n",packet_deque_ctr_);
printf("Total UMTS enqueue overflow buffer packet number : %d\n",ovb_enq_ctr_);
}
// int command(int argc, const char*const* argv)
// Commands from the ns file are interpreted through this interface.
int UmtsPdbQueue::command(int argc, const char*const* argv) { if (strcmp(argv[1], "printstats") == 0) {
87
PacketQueue *con_q_; // the FIFO queue for UMTS conversation traffic PacketQueue *str_q_; // the FIFO queue for UMTS stream traffic PacketQueue *int_q_; // the FIFO queue for UMTS interactive traffic PacketQueue *bac_q_; // the FIFO queue for UMTS background traffic PacketQueue *ovb_q_; // the FIFO queue for UMTS overflow buffer bool con_enable_enque_; // boolean for UMTS conversational packet enqueue bool str_enable_enque_; // boolean for UMTS streaming packet enqueue bool int_enable_enque_; // boolean for UMTS interactive packet enqueue bool bac_enable_enque_; // boolean for UMTS background packet enqueue bool ovb_enable_enque_; // boolean for UMTS overflow buffer packet enqueue int packet_deque_ctr_; // to count the sent packets
int pkt_deque_cycle_; // to mod the sent packets
int umts_deq_turn_; // 1 for con_q, 2 for str_q, 3 for int_q, 4 for bac_q
double prev_con_pkt_forwarding_clock; // Previous conversational packet forwarding clock double prev_str_pkt_forwarding_clock; // Previous streaming packet forwarding clock double prev_int_pkt_forwarding_clock; // Previous nteractive packet forwarding clock double prev_bac_pkt_forwarding_clock; // Previous background packet forwarding clock
int phy_q_length_; // used queue buffer length
int con_enq_ctr_; // UMTS conversation application enqueue packet counter int str_enq_ctr_; // UMTS stream application enqueue packet counter int int_enq_ctr_; // UMTS interactive application enqueue packet counter
int bac_enq_ctr_; // UMTS background application enqueue packet counter int ovb_enq_ctr_; // UMTS overflow buffer enqueue packet counter
int con_deq_ctr_; // UMTS conversation application dequeue packet counter int str_deq_ctr_; // UMTS stream application dequeue packet counter int int_deq_ctr_; // UMTS interactive application dequeue packet counter
int bac_deq_ctr_; // UMTS background application dequeue packet counter int ovb_deq_ctr_; // UMTS overflow buffer dequeue packet counter int con_dpq_ctr_; // UMTS conversation application packet drop by queue int str_dpq_ctr_; // UMTS stream application packet drop by queue int int_dpq_ctr_; // UMTS interactive application packet drop by queue int bac_dpq_ctr_; // UMTS background application packet drop by queue int con_queue_limit_; // UMTS conversational application queue limit int str_queue_limit_; // UMTS streaming application queue limit int int_queue_limit_; // UMTS interactive application queue limit
88
int bac_queue_limit_; // UMTS background application queue limit int c_enq_min_; // UMTS conversational application min queue limit int c_enq_max_; // UMTS conversation application max queue limit int s_enq_min_; // UMTS streaming application min queue limit int s_enq_max_; // UMTS streaming application max queue limit int i_enq_min_; // UMTS interactive application min queue limit int i_enq_max_; // UMTS interactive application max queue limit int b_enq_min_; // UMTS background application min queue limit int b_enq_max_; // UMTS background application max queue limit
double con_dbenque_prob_; //UMTS conversational aplication packet enqueue probability double str_dbenque_prob_; //UMTS streaming aplication packet enqueue probability
double int_dbenque_prob_; //UMTS interactive aplication packet enqueue probability double bac_dbenque_prob_; //UMTS background aplication packet enqueue probability };
89
Appendix E: Simulation scenarios for DQB in a continuous traffic pattern
set NSHOME "$USERHOME/ns2/ns-allinone-2.30"
set XGRAPH "$NSHOME/bin/xgraph"
set GETDRT "$NSHOME/ns-2.30/bin/getdrt"
exec $PERL $GETDRT -s 0.0 -d 6.0 -f 1 umts-pred-out-a.tr > predumtscdrta.tr exec $PERL $GETDRT -s 1.0 -d 7.0 -f 2 umts-pred-out-a.tr > predumtssdrta.tr exec $PERL $GETDRT -s 2.0 -d 8.0 -f 3 umts-pred-out-a.tr > predumtsidrta.tr exec $PERL $GETDRT -s 3.0 -d 9.0 -f 4 umts-pred-out-a.tr > predumtsbdrta.tr exit 0
$ns duplex-link $node_(s1) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s2) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s3) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s4) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(g1) $node_(g2) 3.0Mb 100ms UmtsPredQueue
$ns duplex-link $node_(r1) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r2) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r3) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r4) $node_(g2) 2.0Mb 1ms DropTail set umtspredqueue [[$ns link $node_(g1) $node_(g2)] queue]
#Setup UmtsPdbQueue queue parameter
90
91
set umtscapp_s [new Application/UMTSCApp]
set umtscapp_r [new Application/UMTSCApp]
$umtscapp_s attach-agent $udp_s1
$umtscapp_r attach-agent $udp_r1
$umtscapp_s set pktsize_ 1000
$umtscapp_s set random_ false
#Setup a UMTS stream Application
set umtssapp_s [new Application/UMTSSApp]
set umtssapp_r [new Application/UMTSSApp]
$umtssapp_s attach-agent $udp_s2
$umtssapp_r attach-agent $udp_r2
$umtssapp_s set pktsize_ 1000
$umtssapp_s set random_ false
#Setup a UMTS Interactive Application set umtsiapp_s [new Application/UMTSIApp]
set umtsiapp_r [new Application/UMTSIApp]
$umtsiapp_s attach-agent $udp_s3
$umtsiapp_r attach-agent $udp_r3
$umtsiapp_s set pktsize_ 1000
$umtsiapp_s set random_ false
#Setup a UMTS Background Application set umtsbapp_s [new Application/UMTSBApp]
set umtsbapp_r [new Application/UMTSBApp]
$umtsbapp_s attach-agent $udp_s4
$umtsbapp_r attach-agent $udp_r4
$umtsbapp_s set pktsize_ 1000
$umtsbapp_s set random_ false
set start_all_time 0.0 set stop_all_time 30.0
$ns at $start_all_time "$umtscapp_s start"
$ns at $start_all_time "$umtssapp_s start"
$ns at $start_all_time "$umtsiapp_s start"
$ns at $start_all_time "$umtsbapp_s start"
$ns at $stop_all_time "$umtscapp_s stop"
$ns at $stop_all_time "$umtssapp_s stop"
$ns at $stop_all_time "$umtsiapp_s stop"
$ns at $stop_all_time "$umtsbapp_s stop"
$ns at 31.0 "$umtspredqueue printstats"
$ns at 31.0 "finish"
$ns run
92
Appendix F: Simulation scenarios for OQB in a continuous traffic pattern
$ns duplex-link $node_(s1) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s2) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s3) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s4) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(g1) $node_(g2) 3.0Mb 100ms UmtsPdbQueue
$ns duplex-link $node_(r1) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r2) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r3) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r4) $node_(g2) 2.0Mb 1ms DropTail set umtspdbqueue [[$ns link $node_(g1) $node_(g2)] queue]
#Setup UmtsPdbQueue queue parameter
$ns queue-limit $node_(g1) $node_(g2) 40
93
94
95
$ns at $stop_all_time "$umtssapp_s stop"
$ns at $stop_all_time "$umtsiapp_s stop"
$ns at $stop_all_time "$umtsbapp_s stop"
$ns at 31.0 "$umtspdbqueue printstats"
$ns at 31.0 "finish"
$ns run
96
Appendix G: Simulation scenarios for DQB in a intermittent traffic pattern
global udp_r1 udp_r2 udp_r3 udp_r4
global con_xmit_period str_xmit_period int_xmit_period bac_xmit_period global udp_con_pktsize udp_str_pktsize udp_int_pktsize udp_bac_pktsize set con_app_rbytes [$udp_r1 set con_rbytes]
set str_app_rbytes [$udp_r2 set str_rbytes]
set int_app_rbytes [$udp_r3 set int_rbytes]
set bac_app_rbytes [$udp_r4 set bac_rbytes]
puts " "
puts "con_xmit_period : $con_xmit_period"
puts "str_xmit_period : $str_xmit_period"
puts "int_xmit_period : $int_xmit_period"
puts "bac_xmit_period : $bac_xmit_period"
puts "Conversation application transmission volume : $con_app_rbytes"
puts "Stream application transmission volume : $str_app_rbytes"
puts "Interactive application transmission volume : $int_app_rbytes"
puts "Background application transmission volume : $bac_app_rbytes"
set con_app_xmit_performance_byte [expr $con_app_rbytes / $con_xmit_period]
set str_app_xmit_performance_byte [expr $str_app_rbytes / $str_xmit_period]
set int_app_xmit_performance_byte [expr $int_app_rbytes / $int_xmit_period]
set bac_app_xmit_performance_byte [expr $bac_app_rbytes / $bac_xmit_period]
puts " "
puts "Conversation application transmission performance by bytes : $con_app_xmit_performance_byte"
puts "Stream application transmission performance by bytes : $str_app_xmit_performance_byte"
puts "Interactive application transmission performance by bytes : $int_app_xmit_performance_byte"
puts "Background application transmission performance by bytes : $bac_app_xmit_performance_byte"
set con_app_xmit_performance_pkt [expr [expr $con_app_rbytes / $udp_con_pktsize] /
$con_xmit_period]
set str_app_xmit_performance_pkt [expr [expr $str_app_rbytes / $udp_str_pktsize] / $str_xmit_period]
set int_app_xmit_performance_pkt [expr [expr $int_app_rbytes / $udp_int_pktsize] / $int_xmit_period]
set bac_app_xmit_performance_pkt [expr [expr $bac_app_rbytes / $udp_bac_pktsize] / $bac_xmit_period]
puts " "
puts "Conversation application transmission performance by packets : $con_app_xmit_performance_pkt"
puts "Stream application transmission performance by packets : $str_app_xmit_performance_pkt"
puts "Interactive application transmission performance by packets : $int_app_xmit_performance_pkt"
puts "Background application transmission performance by packets : $bac_app_xmit_performance_pkt"
}
set USERHOME [exec env | grep "^HOME" | sed /^HOME=/s/^HOME=//]
97
exec $PERL $GETDRT -s 0.0 -d 6.0 -f 1 umts-pred-out-p.tr > predumtscdrtp.tr exec $PERL $GETDRT -s 1.0 -d 7.0 -f 2 umts-pred-out-p.tr > predumtssdrtp.tr exec $PERL $GETDRT -s 2.0 -d 8.0 -f 3 umts-pred-out-p.tr > predumtsidrtp.tr exec $PERL $GETDRT -s 3.0 -d 9.0 -f 4 umts-pred-out-p.tr > predumtsbdrtp.tr exit 0
$ns duplex-link $node_(s1) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s2) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s3) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s4) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(g1) $node_(g2) 3Mb 100ms UmtsPredQueue
$ns duplex-link $node_(r1) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r2) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r3) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r4) $node_(g2) 2.0Mb 1ms DropTail set umtspredqueue [[$ns link $node_(g1) $node_(g2)] queue]
#Setup UmtsPdbQueue queue parameter
98
99
set con_xmit_period [expr [expr $stop_con_time1 - $start_all_time] + [expr $stop_con_time2 -
$start_con_time1 ] + [expr $stop_con_time3 - $start_con_time2 ] + [expr $stop_all_time -
$start_con_time3]]
set str_xmit_period [expr [expr $stop_str_time1 - $start_all_time] + [expr $stop_str_time2 -
$start_str_time1 ] + [expr $stop_str_time3 - $start_str_time2 ] + [expr $stop_all_time - $start_str_time3]]
set int_xmit_period [expr [expr $stop_int_time1 - $start_all_time] + [expr $stop_int_time2 -
$start_int_time1 ] + [expr $stop_int_time3 - $start_int_time2 ] + [expr $stop_all_time - $start_int_time3]]
set bac_xmit_period $stop_all_time
100
$ns at $stop_all_time "$umtssapp_s stop"
$ns at $stop_all_time "$umtsiapp_s stop"
$ns at $stop_all_time "$umtsbapp_s stop"
$ns at 31.0 "$umtspredqueue printstats"
$ns at 31.0 "output"
$ns at 31.0 "finish"
$ns run
101
Appendix H: Simulation scenarios for OQB in a intermittent traffic pattern
global udp_r1 udp_r2 udp_r3 udp_r4
global con_xmit_period str_xmit_period int_xmit_period bac_xmit_period global udp_con_pktsize udp_str_pktsize udp_int_pktsize udp_bac_pktsize
set con_app_rbytes [$udp_r1 set con_rbytes]
set str_app_rbytes [$udp_r2 set str_rbytes]
set int_app_rbytes [$udp_r3 set int_rbytes]
set bac_app_rbytes [$udp_r4 set bac_rbytes]
puts " "
puts "con_xmit_period : $con_xmit_period"
puts "str_xmit_period : $str_xmit_period"
puts "int_xmit_period : $int_xmit_period"
puts "bac_xmit_period : $bac_xmit_period"
puts "Conversation application transmission volume : $con_app_rbytes"
puts "Stream application transmission volume : $str_app_rbytes"
puts "Interactive application transmission volume : $int_app_rbytes"
puts "Background application transmission volume : $bac_app_rbytes"
set con_app_xmit_performance_byte [expr $con_app_rbytes / $con_xmit_period]
set str_app_xmit_performance_byte [expr $str_app_rbytes / $str_xmit_period]
set int_app_xmit_performance_byte [expr $int_app_rbytes / $int_xmit_period]
set bac_app_xmit_performance_byte [expr $bac_app_rbytes / $bac_xmit_period]
puts " "
puts "Conversation application transmission performance by bytes : $con_app_xmit_performance_byte"
puts "Stream application transmission performance by bytes : $str_app_xmit_performance_byte"
puts "Interactive application transmission performance by bytes : $int_app_xmit_performance_byte"
puts "Background application transmission performance by bytes : $bac_app_xmit_performance_byte"
set con_app_xmit_performance_pkt [expr [expr $con_app_rbytes / $udp_con_pktsize] / $con_xmit_period]
set str_app_xmit_performance_pkt [expr [expr $str_app_rbytes / $udp_str_pktsize] / $str_xmit_period]
set int_app_xmit_performance_pkt [expr [expr $int_app_rbytes / $udp_int_pktsize] / $int_xmit_period]
set bac_app_xmit_performance_pkt [expr [expr $bac_app_rbytes / $udp_bac_pktsize] / $bac_xmit_period]
puts " "
puts "Conversation application transmission performance by packets : $con_app_xmit_performance_pkt"
puts "Stream application transmission performance by packets : $str_app_xmit_performance_pkt"
puts "Interactive application transmission performance by packets : $int_app_xmit_performance_pkt"
puts "Background application transmission performance by packets : $bac_app_xmit_performance_pkt"
}
102
$ns duplex-link $node_(s1) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s2) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s3) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(s4) $node_(g1) 2.0Mb 1ms DropTail
$ns duplex-link $node_(g1) $node_(g2) 3Mb 100ms UmtsPdbQueue
$ns duplex-link $node_(r1) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r2) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r3) $node_(g2) 2.0Mb 1ms DropTail
$ns duplex-link $node_(r4) $node_(g2) 2.0Mb 1ms DropTail set umtspdbqueue [[$ns link $node_(g1) $node_(g2)] queue]
#Setup UmtsPdbQueue queue parameter
103
104
set con_xmit_period [expr [expr $stop_con_time1 - $start_all_time] + [expr $stop_con_time2 -
$start_con_time1 ] + [expr $stop_con_time3 - $start_con_time2 ] + [expr $stop_all_time -
$start_con_time3]]
set str_xmit_period [expr [expr $stop_str_time1 - $start_all_time] + [expr $stop_str_time2 -
$start_str_time1 ] + [expr $stop_str_time3 - $start_str_time2 ] + [expr $stop_all_time - $start_str_time3]]
set int_xmit_period [expr [expr $stop_int_time1 - $start_all_time] + [expr $stop_int_time2 -
$start_int_time1 ] + [expr $stop_int_time3 - $start_int_time2 ] + [expr $stop_all_time - $start_int_time3]]
set bac_xmit_period $stop_all_time
105
$ns at $start_str_time2 "$umtssapp_s start"
$ns at $stop_con_time3 "$umtscapp_s stop"
$ns at $stop_str_time3 "$umtssapp_s stop"
$ns at $stop_int_time3 "$umtsiapp_s stop"
$ns at $start_str_time3 "$umtssapp_s start"
$ns at $start_int_time3 "$umtsiapp_s start"
$ns at $start_con_time3 "$umtscapp_s start"
$ns at $stop_all_time "$umtscapp_s stop"
$ns at $stop_all_time "$umtssapp_s stop"
$ns at $stop_all_time "$umtsiapp_s stop"
$ns at $stop_all_time "$umtsbapp_s stop"
$ns at 31.0 "$umtspdbqueue printstats"
$ns at 31.0 "output"
$ns at 31.0 "finish"
$ns run
106
Responses to commitee comments
口試委員問題與建議回覆
Prof. Chi-Chun Lo(羅濟群教授)
項次 問題與建議 問題回覆
1.
現行 UMTS 怎麼做?為什麼 要用你的方法?你的貢獻在 那 ? 如 果 你 已 知 道 應 用 的 packet type 你就可以選擇最 好 的 方 法 管 理 queuing system?
已請教專家回覆信:All-IP 於 UMTS LTE 才 會實現,目前 UMTS 的環境 QoS 有在做 本研究所提出二種佇列空間配置,主要是 能夠做到差別性服務的特性,並可實現在 不同網路型態上,採用 UMTS 是因為 UMTS 有明確的定義差異性服務等級,可以作為 差別性服務的代表
我 的 貢 獻 在 於 只 需 要 小 成 本 的 方 式 在 Router 上採用這個機制,所得的結果可與 DiffServ Domain 近似甚至有些服務類型優 於 DiffServ,節省許多建置上的成本 真實世界的網路環境,並無法事先預知何 種 Packet Type 會送達,所以無法事先選擇 最好的 Queuing System 管理,因此選擇最 好的管理方式常是兩難的情況
Prof. Taoi Hsu(徐道義教授)
項次 問題與建議 問題回覆
1. 應參考 Benchmark 的演算機制進 行效能的比較優劣?
模擬後比較結果,請參考表 1, 2 和 3.
Prof. Chyan
Ynag(楊 千教授)項次 問題與建議 問題回覆
1. 程式碼也需附在附錄中 論文初稿中已修正
Prof. Duen-Ren Liu(劉敦仁教授)
項次 問題與建議 問題回覆
1. 與現有的 DiffServ 架構之效能 比較
如上,同徐教授問題
107
Router, Egress/Ingress Router, Core Router)組 成,可能是一個 ISP 或一個企業網路,建置108
PRI and WRR DiffServ Scheduling Mechanisms for Real-Time Services on UMTS Environment”, 2nd IFIP International Conference on NewVoIP Video Streaming Web Browsering
(HTTP) FTP
Application
Protocol Exponential CBR HTTP FTP
Transport Protocol UDP UDP TCP TCP
Packet Size (bytes) 372 540 500 500
Rate (bps) 12.2(x7 source)=85 47.7(x7 source)=333 160 484
Rate (%) 8 31 15 46
Interleaving(ms) 20 2 7 20
Voice: 372bytes: 10 frames per packets: 20(IPv4)+8(UDP)+12(RTP)+332(max RTP payload for 10 AMR frames). It can be modelized by the two Markov process as suggested by ITU-T.
Video: 540bytes: 20(IPv4) + 8(UDP) + 12(RTP) + 500(max AMR RTP payload).
The most of commercial videos are CBR.
Web Browser: 500bytes: Based on large packet sizes used in Internet.
FTP: FTP sessions behave similar to HTTP requests but without the page
FTP: FTP sessions behave similar to HTTP requests but without the page