Đồ án Triển khai dịch vụ IPTV trên công nghệ Wimax

• Vào thời điểm bắt đầu mô phỏng, các SS tiến hành quét các kênh trong dải tần đã được định nghĩa để tìm một kênh downlink thích hợp và đồng bộ. Sau đó, các SS nhận các thông báo mô tả kênh vật lý DCD (downlink) và UCD (uplink) để lấy các thông số cần thiết. • Tiếp đó, các SS gửi yêu cầu ranging (thông báo RNGREQ) đến BS.

doc149 trang | Chia sẻ: lylyngoc | Ngày: 28/11/2013 | Lượt xem: 1442 | Lượt tải: 5download
Bạn đang xem nội dung tài liệu Đồ án Triển khai dịch vụ IPTV trên công nghệ Wimax, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MO: mạng là module Modem, phụ trách truyền, O&M và xử lý dải nền. Module RFCO: 4 module chuyển đổi RF, có chức năng chuyển đổi tín hiện số thành tín hiệu RF và ngược lại. Module FEU: bao gồm các khối khuếch đại công suất (PA), lọc tạp âm thấp (LNA), và bộ lọc anten. Module cung cấp nguồn: có chức năng cung cấp nhiều nguồn DC tới các module bên trong. Hình 3.13: Sơ đồ khối chức năng của BS Chức năng khối mạng và Modem: có 3 chức năng chính 802.16e MAC: dựa trên nền tảng xử lý mạng linh hoạt. 802.16e PHY: bao gồm tất cả các yêu cầu xử lý tín hiệu số, thực hiện trên sự kết hợp giữa DSP và FPGA. Chức năng giám sát O&M. Hình 3.14: Module NEMO Chức năng module RF RFCO: bao gồm 4 bộ chuyển đổi RF. FEU: PA sử dụng trong tuyến phát tín hiệu, cung cấp công suất phát trung bình 35dBm tới anten. LNA sử dụng cho tuyến nhận tín hiệu, khuếch đại tín hiệu thu từ anten. Bộ lọc RF sử dụng cho cả 2 tuyến phát/thu. Nguồn cung cấp: cung cấp điện áp cần thiết cho BS, tùy thuộc vào yêu cầu mạng lưới mà đầu vào có thể là 220/110VAC, 48VDC và cung cấp điện áp đầu ra cho từng module bên trong. Băng tần, dạng điều chế và ghép song công Băng tần: Dải 2.5 GHz và 3.5GHz Kích thước FFT: 1024&512 Điều chế: ở cả tuyến lên/xuống, tùy thuộc vào năng lực và điều kiện đường truyền vô tuyến (AMC) mà sử dụng kiểu điều chế khác nhau: QPSK ½ & ¾ 16QAM ½&¾ 64QAM 2/3&¾ 64QAM ½ & 5/6 Băng thông kênh và kích thước FFT: Dạng ghép song công: sử dụng dạng TDD Tỷ lệ khung DL/UL được cấu hình ở trung tâm vận hành và bảo dưỡng theo 3 bước: 3/1, 2/1, 1/1 2. WAC của Alcatel WAC cung cấp kết nối cho SS/MSS với phần còn lại của mạng (internet, mạng lõi...). WAC đóng vai trò quan trọng trong quá trình xác thực và cấp phép cho người sử dụng. Dựa vào kết quả chứng thực, nó sẽ cho phép người sử dụng truy cập vào mạng, truy cập vào một số dịch vụ giới hạn hay không cho phép truy cập. WAC bao gồm các cabinet sau: Nhóm điều khiển truy nhập bao gồm Switch WAC và Server WAC. Tùy thuộc vào chức năng mạng lõi trung tâm mà WAC có thể bao gồm: HA/Router Máy chủ AAA Máy chủ DHCP Session Border Controller Trong khối RAN, WAC có trách nhiệm điều khiển truy nhập cho thuê bao, kết nối IP, định tuyến lưu lượng bên trong RAN và bên ngoài mạng. Ngoài ra, WAC cung cấp di động, hỗ trợ an ninh trong RAN và hỗ tợ QoS trong RAN phối hợp với mạng Core. Điều khiển truy nhập: Chứng thực người sử dụng với mục tiêu truy cập mạng. Điều khiển, kiểm soát thuê bao truy cập vào tài nguyên mạng (Cấp phép theo hồ sơ thuê bao). Cung cấp thông tin trong quá trình vận hành mạng. Kết nối IP: cung cấp địa chỉ IP cho thiết bị người dung. WAC sẽ hoạt động như một thực thể chuyển tiếp DHCP, theo cấu hình khác nhau mà địa chỉ cung cấp cho thuê bao có thể là địa chỉ chung hay riêng. Hỗ trợ di động WAC bao gồm các chức năng chính sau: Chức năng Proxy MIP:WAC thiết lập đăng ký với HA thay cho khách hang. Chức năng FA: WAC chuyển các gói của người sử dụng tới HA. Chuyển tiếp mạch dữ liệu người dung trong khi chuyển giao giữa BS nguồn và BS đích. Chức năng điều khiển Paging: WAC ghi nhớ thông tin lien quan đến MS trong chế độ rỗi Idle. Định tuyến lưu lượng: Định tuyến lưu lượng của thuê bao giữa BS và nhà cung cấp dịch vụ mạng. Thiết lập tuyến truyền dẫn liên WACs trong trường hợp nhiều WAC kết nối với nhau. Hỗ trợ bảo mật: sử dụng khóa AK để tính toán và truyền tới BS. Hỗ trợ QoS: CAC kiểm soát đăng nhập ở mức WAC. Chuyển lệnh điều khiển QoS từ mạng lõi và thực hiện CAC kết hợp với BS (chức năng PDF), và tạo luồng dịch vụ thích hợp qua giao diện vô tuyến (chức năng PEF). Kiến trúc mạng Wimax với đa kết nối tới một CSN: Hình 3.15: Kết nối RAN tới CSN và ASP Hình trên cho thấy mạng truy nhập vô tuyến RAN kết nối tới đơn vị mạng dịch vụ lõi (CSN) và mạng cung cấp dịch vụ (ASP). Trạm gốc BS và các WACs được cấp địa chỉ IP thông qua máy chủ DHCP và DNS. Thành phần của mạng CSN bao gồm: Router có hay không có chức năng HA Chức năng HA bắt buộc có khi dịch vụ di động được cung cấp. Đối với dịch vụ cố định không dây thì chức năng HA không cần thiết. Máy chủ DHCP: sử dụng để cấp phát địa chỉ IP cho MS. Máy chủ DNS: sử dụng để ánh xạ URIs. Firewall: phục vụ cho quá trình an ninh. Cabinet Wimax Access Control (WAC) bao gồm các thành phần sau: Thành phần cơ bản: 24 khe đặt thiết bị, module. Một WAC Switch/Router Alcatel Một WAC Server Thành phần tùy chọn: 1 tới 3 WAC server bổ sung Một HA/Router Một Server AAA Một Server DHCP Hình 3.16: Cabinet WAC của Alcatel Sơ đồ kết nối được trình bày như hình sau: Hình 3.17: Sơ đồ kết nối WAC Chương 4: CHƯƠNG TRÌNH MÔ PHỎNG Tổng quan về chương trình NS NS là bộ công cụ mô phỏng mạng điều khiển theo các sự kiện rời rạc, được xây dựng và phát triển bởi trường đại học Berkeley – Mỹ, cho phép mô phỏng nhiều kiểu mạng IP khác nhau. NS thực thi các giao thức mạng như giao thức điều khiển truyền tải (TCP) và giao thức gói người dùng (UDP); các dịch vụ nguồn lưu lượng như giao thức truyền tập tin (FTP), Telnet, Web, tốc độ bit cố định (CBR) và tốc độ bit thay đổi (VBR); các kỹ thuật quản lý hàng đợi như vào trước ra trước (Drop Tail), dò sớm ngẫu nhiễn (RED) và CBQ; các thuật toán định tuyến như Dijkstra… NS cũng thực thi multicasting và một số giao thức lớp điều khiển truy cập đường truyền (MAC) đối với mô phỏng LAN. NS được xây dựng bằng ngôn ngữ lập trình hệ thống C++ và ngôn ngữ mô phỏng OTcl. Otcl là dạng ngôn ngữ kịch bản Tcl được mở rộng theo mô hình hướng đối tượng. Hình 4.1: Tổng quan về NS dưới góc độ người dùng Theo quan điểm người dùng thuần túy, NS là một bộ thông dịch các kịch bản Tcl hướng đối tượng. NS gồm có các bộ định trình các sự kiện mô phỏng, các thư viện đối tượng thành phần mạng và thư viện các module tạo lập mạng. Khi sử dụng NS, người dùng phải lập trình bằng ngôn ngữ kịch bản Tcl. Để tạo lập và triển khai một mạng mô phỏng, người dùng viết một kịch bản Tcl để khởi tạo một bộ định trình sự kiện, thiết lập topo mạng thông qua việc sử dụng các đối tượng thành phần mạng và các thành phần liên kết trong các thư viện của NS. Việc thiết lập một mạng là ghép nối các đường dữ liệu giữa các đối tượng mạng bằng cách đặt con trỏ của một đối tượng này tới địa chỉ của một đối tượng khác tương ứng. Khi muốn tạo một đối tượng mạng mới, thì người dùng có thể tạo ra đối tượng đó bằng cách xây dựng một đối tượng mới hoặc tổ hợp các đối tượng có sẵn trong các thư viện đối tượng của NS và tạo ra các đường liên kết dữ liệu giữa chúng. Một thành phần quan trọng của NS (bên cạnh các đối tượng mạng) là bộ định trình sự kiện. Một sự kiện trong NS là một mã nhận dạng gói, mã này là duy nhất đối với một gói, sự kiện được định thời và gắn với một con trỏ trỏ đến đối tượng sẽ xử lý sự kiện đó. Trong NS, bộ định trình sự kiện giám sát toàn bộ thời gian mô phỏng, quản lý và kích hoạt các sự kiện theo một hàng đợi. Khi một sự kiện được kích hoạt, bộ định trình sẽ gọi tới thành phần đối tượng mạng xử lý tương ứng (thường cũng là đối tượng tạo ra sự kiện đó), cho phép đối tượng này thực hiện các tác vụ thích hợp lên gói gắn với sự kiện. Các thành phần đối tượng mạng truyền thông với nhau bằng cách trao đổi các gói. Một ứng dụng nữa của bộ định trình sự kiện là tạo ra các bộ định thời. VD: giao thức TCP cần bộ định thời để giám sát thời gian chờ khi phát đi một gói nhằm thực hiện việc phát lại gói. Hình 4.2: Mô hình kiến trúc của NS Khi mô phỏng kết thúc, nếu có yêu cầu từ các script Tcl (OTcl) đầu vào thì NS sẽ tạo ra các file text lưu chi tiết dữ liệu mô phỏng. Dữ liệu đó có thể được dùng cho việc phân tích hay được dùng như đầu vào cho các công cụ trình diễn mô phỏng đồ họa NAM. Các tính năng của NAM: Cung cấp trình diễn ảo cho mạng đã được tạo Có thể thi hành trực tiếp từ kịch bản Tcl NAM có giao diện đồ hoạ bắt mắt của CD player với các điều khiển bao gồm play, stop, fast forward, rw, pause, điều khiển tốc độ trình diễn và tính năng giám sát packet Biểu diễn thông tin như thông lượng, số packet trên từng link Cung cấp giao diện rê và thả cho việc tạo ra các topology. Xgraph Xgraph là một chương trình dùng để trình bày kết quả mô phỏng của bạn dưới dạng đồ thị. Bạn có thể tạo các file output trong kịch bản Tcl của mình được xem như là dữ liệu cho Xgraph. Hình 4.4 mô tả một cửa sổ của Xgraph. Hình 4.3: Cửa sổ minh họa NAM Hình 4.4: Giao diện đồ họa người dùng của Xgraph Hình 4.5: Nam file mô tả chế độ Unicast Hình 4.6: Nam file mô tả chế độ Multicast Module WiMAX trong kiến trúc NS-2 Hình 4.7: Module WiMAX trong kiến trúc NS-2 Module WiMAX được tích hợp vào kiến trúc sẵn có của một nút wireless trong NS-2. Trong kiến trúc trên, một nút wireless bao gồm các thành phần: Traffic Generating Agent (address classifier, port classifier, agent protocol, agent routing), lớp LL (Link Layer), lớp MAC, hàng đợi và kênh vật lý. Các classifier chịu trách nhiệm phân phối các gói tương ứng với các agent. Agent protocol biểu diễn cho lớp application và agent routing biểu diễn cho lớp IP. Khi một packet đi từ agent protocol đến agent routing, agent routing sẽ đặt địa chỉ của đích vào gói và chuyển tiếp đến lớp LL. Lớp LL sử dụng giao thức phân giải địa chỉ ARP (Address Resolution Protocol) để xác định địa chỉ MAC của đích. Lớp LL đặt địa chỉ MAC của đích vào gói và chuyển đến lớp MAC. Lớp MAC sẽ thực hiện các chức năng tương ứng và xác định thời điểm gửi gói trên kênh. Sau đó, chuyển gói đến lớp vật lý. Lớp vật lý chịu trách nhiệm gửi gói trên kênh wireless đến nơi nhận. Module WiMAX thực hiện mô phỏng lớp con phần chung MAC chuẩn IEEE 802.16 trong NS-2. Cụ thể, các thành phần được thực thi trong module: Cơ chế cấp phát băng thông GPC (Grant per Connection). UCD, DCD, DL-MAP, UL-MAP, RNG-REQ, RNG-RSP, BW-REQ. Tạo và truyền MAC PDU (tại BS và SS), phân mảnh và đóng gói. Cơ chế lập lịch (trên kênh uplink, downlink) bốn kiểu dịch vụ (UGS, rtPS, nrtPS, BE). Module thực thi lớp MAC IEEE 802.16 có vai trò tương tự như module IEEE 802.11 và được đặt trong cùng thư mục ~/mac trong NS-2. EvalVid trong mô phỏng NS-2 Hình dưới đây minh họa khung hoạt động đánh giá QoS cho luồng video thiết lập bởi công cụ bao gồm EvalVid và NS-2. Ba kết nối mô phỏng bao gồm MyTrafficTrace, MyUDP, và MyUDPSink được thực thi giữa EvalVid và NS-2. Giao diện được thiết kế để đọc file trace video hay tạo ra dữ liệu cần thiết để đánh giá chất lượng truyền video. Hình 4.8: Khung hoạt động giữa EvalVid và NS-2 Cách tạo file bám vết Trace và cấu trúc file Trace Để thực hiện lưu giử dấu vết ta thiết lập như sau: set tracefd [open out.tr w] set namtrace [open out.nam w] $ns_ trace-all $tracefd $ns_ namtrace-all-wireless $namtrace $val(x) $val(y) Đối với một trace giữa các liên kết hữu tuyến thì bao gồm các trường như hình 4.9: Hình 4.9: Các trường xuất hiện trong một trace Loại sự kiện là một trong bốn ký hiệu r, +, -, d tương ứng phù hợp với nhận (tại đầu ra của link), đã cho vào hàng đợi, đã xuất khỏi hàng đợi và bị mất. Thời điểm xảy ra sự kiện Cho node vào của link Cho node ra của link Loại packet (ví dụ như Tcp, CBR) Kích thước packet Cờ Mã luồng Địa chỉ nguồn trong dạng “node port” Địa chỉ đích trong dạng “node port” Số thứ tự gói tin trong giao thức lớp mạng Id duy nhất của packet Còn đối với trace trong wireless thì có thể phân tích qua mẩu trace sau: r 160.093884945 _6_ RTR --- 5 tcp 1492 [a2 4 6 800] ------- [65536:0 16777984:0 31 16777984] [1 0] 2 0 Trường đầu tiên là một từ nằm trong r, s, f, D tương ứng với đã nhận, gửi, chuyển tiếp và bị mất. Trường thứ hai là thời gian Trường thứ ba là số node Trường thứ tư để chỉ hoặc gói tin liên quan đến lớp MAC, hoặc AGT để chỉ một gói tin lớp truyền dẫn, hoặc RTR để chỉ một gói tin định tuyến và nó cũng có thể là IFQ. Sau các kí hiệu là đến số thứ tự các gói tin tổng thể (khác với số thứ tự của Tcp). Trường tiếp theo là thông tin về loại gói tin. Tiếp theo là kích cở của gói tin tính theo byte. Bốn số trong ngoặc vuông thứ nhất liên quan đến thông tin lớp MAC. Số thập lục phân đầu tiên a2(162 hệ thập phân) là thời gian mong đợi chuyển gói tin trong kênh vô tuyến. Số thứ hai và thứ ba lần lượt là MAC-id của node gửi và node nhận, số thứ tư chỉ loại MAC. Các số trong ngoặc vuông thứ hai lần lượt là địa chỉ IP nguồn và đích, tiếp theo là TTL của gói tin. Ngoặc vuông cuối cùng là thông tin về Tcp: số thứ tự và số xác nhận. II. Thiết lập kịch bản mô phỏng wimax di động Chúng ta sẽ tạo các thực thể của một Mobile IP cơ bản gồm một MobileNode với địa chỉ 1.0.1, một HA với địa chỉ 1.0.0, một FA với địa chỉ 2.0.0, một CN với địa chỉ 0.0.0 và bao hàm một hệ thống trung gian gồm bốn node W(1) đến W(4) tương ứng các địa chỉ 0.1.0 đến 0.4.0 được liên kết như hình 4.1. CN sẽ luôn gửi dữ liệu cho MN dưới dạng các gói Tcp, nhưng MN không cố định tại HA. Đầu tiên nó hoạt động tại HA, tiếp theo nó di chuyển tới FA và hoạt động tại đây một thời gian, rồi cuối cùng trở lại HA. 1. Tạo Mobile Node Mobile Node là đối tượng nsNode cơ sở cùng với các chức năng như sự di chuyển, khả năng truyền và nhận trên một kênh cho phép tạo môi trường mô phỏng wireless. Mobile Node là một đối tượng tách biệt. Các tính năng như di chuyển node, cập nhập vị trí định kỳ, duy trì đường biên của topo... được thực thi trong Otcl bên trong của Mobile Node (như các phân lớp demux, LL, Mac, Channel…). set val(nn) 1 ;# Số MN set num_wired_nodes 5 set val(x) 300 ;# Chiều ngang của Topo set val(y) 300 ;# Chiều dọc của Topo set val(ftp1-start) 2.0 ;# Thời gian bắt đầu thực hiện ftp set val(stop) 60 ;# time to stop simulation set val(tr-xgr) son-out.tr ;#file trace xgraph set val(tr-nam) son-out.nam ;#file trace NAM set val(chan) Channel/WirelessChannel ;# Loại kênh set val(prop) Propagation/TwoRayGround ;# Mode vô tuyến phổ biến set val(netif) Phy/WirelessPhy ;# Loại giao tiếp mạng set val(mac) Mac/802_11 ;# Loại MAC set val(ifq) Queue/DropTail/PriQueue ;# Loại hàng đợi giao tiếp set val(ll) LL ;# Loại lớp liên kết set val(ant) Antenna/OmniAntenna ;# Mode anten set val(ifqlen) 50 ;# Số gói tin lớn nhất trong Ifq set val(rp) DSDV ;# Giao thức định tuyến set chan [new $val(chan)] $ns_ node-config -mobileIP ON \ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON \ -wiredRouting OFF \ -channel $chan set HA [$ns_ node 1.0.0] set FA [$ns_ node 2.0.0] Thủ tục trên tạo ra một đối tượng Mobile Node, tạo một agent định tuyến adhoc-routing, tạo ngăn xếp mạng gồm: lớp link, giao diện ngăn xếp, lớp MAC, và giao diện mạng với một antenne, sử dụng định nghĩa mô hình phổ biến, tương kết (interconnects) các thành phần này và kết nối ngăn xếp đến kênh. Mobile Node hiện nay trông giống như lược đồ trong hình 4.6. *Link Layer LL: có mô đun ARP kết nối đến nó, giải quyết tất cả các quá trình chuyển đổi địa chỉ IP sang địa chỉ MAC. Thông thường đối với tất cả các packet đi ra từ kênh, chúng được đưa vào LL nhờ agent định tuyến Routing Agent, sau đó đưa vào hàng đợi giao tiếp. Đối với các packet gửi vào, lớp MAC đưa chúng lên LL sau đó dừng tại node_entry_ point. *ARP (Address Resolution Protocol) giao thức phân giải địa chỉ, thực thi ở dạng BSD, giải quyết các câu hỏi từ lớp Link. Nếu ARP có địa chỉ của đích đến, nó ghi địa chỉ đích đến vào header của gói tin MAC. Ngược lại, nó gửi broadcasts truy vấn ARP. Đối với mỗi đích đến không biết được địa chỉ, có một bộ đệm đơn cho packet. Khi gửi thêm các packet đến đích mà đã gửi ARP thì packet ban đầu trong bộ đệm sẽ bị hủy. Khi biết được địa chỉ của packet, packet được thêm vào hàng giao tiếp (interface queue). Hình 4.10: Lược đồ của một MN dưới chuẩn wireless của CMU mở rộng ra NS *Interface Queue Lớp PriQueue thực thi như một hàng đợi ưu tiên đưa ra các quyền ưu tiên để định tuyến các packet, thêm chúng vào đầu hàng đợi. *Mac Layer IEEE 802.11 phân phối chức năng tọa độ DCF (distributed coordination function). Nó sử dụng khuôn dạng RTS/CTS/DATA/ACK cho tất cả các packet unicast và đơn giản là gửi dữ liệu cho tất cả các gói broadcast. *Network Interfaces Lớp giao tiếp mạng, đáp ứng giao tiếp phần cứng sử dụng bởi MN để truy xuất đến kênh truyền thông. Meta-data trong header của gói tin được sử dụng bởi mô hình chung trong giao tiếp nhận của mạng để xác định khi nào gói tin có nguồn điện nhỏ nhất để có thể nhận được từ đó tiến hành giữ lại hoặc dò tìm (cảm nhận sóng mang) bởi node đảm nhận việc nhận. *Mô hình truyền bá Radio Sử dụng công thức tính sự suy giảm đối với khoảng cách gần là 1/r2 và đối với khoảng cách xa là 1/r4 . *Antenna Antenna omni-directional với mục đích dùng chung cho các MN. Trong kịch bản này, chúng ta sẽ sử dụng giao thức định tuyến DSDV (Destination-Sequenced Distance-Vector Routing). Với giao thức này, các bản tin được chuyển đổi giữa các MN lân cận. Các quá trình cập nhập được thực hiện nhanh chóng khi thông tin từ một lân cận thay đổi trong bảng định tuyến. Một packet được gửi theo tuyến đến đích của nó không biết rằng nó được giữ lại trong khi yêu cầu được gửi đi. Nó được hủy bỏ khi có hồi đáp route-replies của địa chỉ đích. Tất cả các packet dự định cho MN được định tuyến trực tiếp bằng địa chỉ demux đến port demux của nó. Port demux điều khiển các packet đến các agent đích tương ứng. Port 225 được gắn kèm với định tuyến agen trong MN. Các MN cũng sử dụng đích mặc định (default-target) trong phân lớp của nó, trong trường hợp đích không tìm thấy trong phân lớp (ngẫu nhiên xảy ra khi đích của packet không phải là MN). Định tuyến agent gán hop kế tiếp vào packet và gửi nó xuống lớp link. Địa chỉ phân lớp được sử dụng và thiết lập như sau: set ns_ [new Simulator] $ns_ node-config -addressType hierarchical AddrParams set domain_num_ 3 lappend cluster_num 5 1 1 AddrParams set cluster_num_ $cluster_num lappend eilastlevel 1 1 1 1 1 2 1 AddrParams set nodes_num_ $eilastlevel Có 3 domains được sử dụng: domain 0.x.x cho các node có dây gồm 5 nhóm 0.0.x, 0.1.x … 0.4.x; domain 1.x.x cho HA và MN chỉ có một nhóm 1.0.x và domain cuối cùng 2.x.x cho FA có một nhóm 2.0.x. Các nhóm 0.0.x … 0.4.x lần lượt có một node, nhóm 1.0.x có 2 node và nhóm 2.0.x có một node. Ta cấu hình địa chỉ cho W(0), W(0) … W(4) như sau: set temp {0.0.0 0.1.0 0.2.0 0.3.0 0.4.0 0.5.0} for { set I 0 } { $i < $num_wired_nodes } { incr i } { set W($i) [ $ns_ node [ lindex $temp $i ] ] } Đối với MN ta cấu hình thuộc tính và quá trình di chuyển của nó như sau: $ns_ node-config -wiredRouting OFF set MN [ $ns_ node 1.0.1 ] set HAaddress [ AddrParams addr2id [ $HA node-addr ] ] [ $MN set regagent_ ] set home_agent_ $Haaddress # MN bắt đầu di chuyển tới FA $ns_ at 10.00 "$MN setdest 260.00 260.00 30.00" # quay trở lại HA $ns_ at 30.00 "$MN setdest 3.00 1.00 30.00" 2. Tạo Link Lớp Link là một lớp độc lập trong OTcl. Lớp SimpleLink cung cấp khả năng kết nối hai node với link điểm tới điểm. Các mô tả sau đây trình bày cú pháp của link đơn giản: set ns [new Simulator] $ns simplex-link Lệnh tạo ra một linh từ đến , với ký hiệu đặc tả và . Link sử dụng một hàng đợi dạng . Năm biến cụ thể xác định link là: head_ : Điểm nhập của link, nó chỉ đến đối tượng đầu tiên trong link. queue_ : Tham chiếu đến hàng đợi chính của link. Các link đơn giản thường có một hàng đơị trên một link. Các dạng phức tạp khác cũng có nhiều phần tử link trong link. link_ : Tham chiếu đến phần tử đặc trưng delay và bandwidth của link. ttl_ : Tham chiếu đến phần tử điều khiển ttl trong mỗi packet. drophead_ : Tham chiếu đến một đối tượng chủ chốt của hàng đợi, các phần tử xử lý huỷ. Hơn nữa, nếu biến của trình mô phỏng $traceAllFile_ được xác định, thủ tục sẽ thêm các phần tử vết (trace) để kiểm tra khi một packet được đưa vào hay lấy ra khỏi queue_. Hình 4.11: Cấu trúc hổn hợp của Link một hướng Các biến sau đây kiểm tra các phần tử vết (trace): enqT_ : Tham chiếu đến phần tử vết (trace) các packet nhập vào queue_. deqT_ : Tham chiếu đến phần tử vết (trace) các packet lấy ra khỏi queue_. drpT_ : Tham chiếu đến phần tử vết (trace) các packet huỷ khỏi queue_. rcvT_ : Tham chiếu đến phần tử vết (trace) các packet nhận bởi node kế tiếp. Chúng ta sẽ tạo ra các link liên kết như hình 4.1 như sau: $ns_ duplex-link $W(0) $W(1) 5Mb 2ms DropTail $ns_ duplex-link $W(0) $W(4) 10Mb 2ms DropTail $ns_ duplex-link $W(0) $W(2) 10Mb 2ms DropTail $ns_ duplex-link $W(1) $W(2) 5Mb 2ms DropTail $ns_ duplex-link $W(1) $W(4) 5Mb 2ms DropTail $ns_ duplex-link $W(1) $HA 5Mb 2ms DropTail $ns_ duplex-link $W(2) $W(3) 10Mb 2ms DropTail $ns_ duplex-link $W(2) $HA 5Mb 2ms DropTail $ns_ duplex-link $W(2) $FA 5Mb 2ms DropTail $ns_ duplex-link $W(3) $FA 10Mb 2ms DropTail $ns_ duplex-link $W(4 ) $FA 10Mb 2ms DropTail $ns_ duplex-link $W(4) $HA 5Mb 2ms DropTail Ở đây duplex-link tạo ra một link kép từ hai link đơn giản, một từ node1 đến node2 và một từ node2 đến node1. Cú pháp của link kép giống như link đơn giản được trình bày ở trên. Dạng hàng đợi DropTail được sử dụng với chức năng thực thi lập trình FIFO và việc quản lí bộ đệm trên luồng (drop-on-overflow). Định nghĩa dưới đây sẽ trình bày các lớp và kết nối Otcl của nó: class DropTail : public Queue { protected: void enque(Packet*); Packet* deque(); PacketQueue q_; }; Hàm enque đầu tiên lưu trữ gói tin trong hàng đợi và sau đó kiểm tra kích thước của hàng đợi thông qua qlim_. Drop-on-overflow được thực thi bằng cách bỏ đi hầu hết các gói tin vừa được thêm vào hàng đợi gói tin nếu đã đạt đến hay vượt qua giới hạn. Lập trình FIFO đơn giản được thực thi trên hàm deque bởi việc thường xuyên trả về gói tin đầu tiên trong hàng đợi gói tin. 3. Tạo Agent Agents tượng trưng cho những điểm kết thúc nơi mà các gói lớp mạng được xây dựng hay hủy bỏ và được sử dụng trong phần thực thi của các giao thức ở nhiều lớp khác nhau. Lớp Agent trong C++ chứa đủ các trạng thái bên trong để phân chia thành nhiều trường khác nhau cho một gói mô phỏng trước khi gửi đi. Những trạng thái đó bao gồm: addr_ : địa chỉ nguồn dst_ : địa chỉ đích size_ : kích thước của gói tính theo byte (đặt trong phần đầu của một gói thông thường) type_ : kiểu gói (trong phần đầu thông thường, xem trong packet.h) fid_ : định danh luồng IP (lớp trước đây trong ns-1) prio_ : trường ưu tiên IP flags_ : các cờ của gói (tương tự như ns-1) defttl_ : giá trị IP ttl mặc định Những biến này có thể được thay đổi bởi bất cứ lớp dẫn xuất nào từ Agent, mặc dù là không phải tất cả chúng đều được cần đến bởi một agent cụ thể nào đó. Agent được sử dụng trong phần thực thi của các giao thức ở nhiều lớp khác nhau. Do đó trong một vài phương thức truyền tải (ví dụ như UDP) sự sắp xếp kích thước các gói và thời gian bắt đầu có thể được điều khiển bởi một vài thực thể (object) thể hiện các yêu cầu của ứng dụng. Trong phần cuối agent đưa ra một giao diện lập trình ứng dụng (Application programming interface-API) cho một ứng dụng. Với những agent được sử dụng trong phần thực thi của các giao thức lớp thấp hơn (ví dụ như agent định tuyến) thì kích thước và thời gian bắt đầu thường được điều khiển bởi chính agent khi xử lý những thông điệp của giao thức. Các agent có thể được tạo trong OTcl và trạng thái bên trong của agent có thể thay đổi được bằng cách sử dụng tập hợp các hàm của Tcl và bất cứ chức năng nào của một Agent (hay những lớp cơ sở của nó). Chú ý rằng một số trạng thái bên trong của Agent chỉ có thể tồn tại trong OTcl, và do đó nó không được truy cập trực tiếp từ C++. Chúng ta sẽ tạo một TCP agent và thiết lập nó lên (up): set tcp1 [new Agent/TCP] set sink1 [new Agent/TCPSink] $ns_ attach-agent $W(0) $tcp1 $ns_ attach-agent $MN $sink1 $ns_ connect $tcp1 $sink1 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at $val(ftp1-start) "$ftp1 start" 4. Chạy chương trình và kết quả Chạy kịch bản của chúng ta bằng lệnh: $ns wimax.tcl Sau một thời gian sẽ xuất hiện cửa sổ NAM như hình 4.12 và thông lượng trên kênh vô tuyến qua cửa sổ Xgraph như hình 4.13. Hình 4.12: Kết quả sau khi chạy kịch bản Hình 4.13: Thông lượng trên kênh vô tuyến Hình 4.14: Việc truyền dữ liệu khi bắt đầu thực hiện ftp Hình 4.15: MN bắt đầu di chuyển đến FA Hình 4.16: MN mất kết nối tới HA và đi vào vùng FA Hình 4.17: MN hoạt động tại FA Hình 4.18: MN quay trở lại HA Mô phỏng phương thức truyền Unicast Kịch bản mô phỏng: mô hình bao gồm 6 node với 6 link kết nối giữa các node. Node 0 là node nguồn, node 5 là node nhận. Tại thời điểm 1.0s, gói tin sẽ được định tuyến theo giao thức định tuyến động, tức là gói tin sẽ tới đích theo đường ngắn nhất, ở đây sẽ từ node 0, 1, 4, 5. Code thiết lập định truyến động trong kịch bản là: $ns rtproto DV Tại thời điểm 4.5s, khi tuyến [0,1,4,5] ngắt kết nối, tín hiệu sẽ bị loại bỏ tại node 1, Các node phát tín hiệu xác định đường, lúc này tuyến [0,1,2,3,5] được thiết lập. Hình 4.19: Kết quả chạy kịch bản Unicast Hình: Mất gói tin tại node 1 khi kết nối bị ngắt Hình: Node5 nhận gói tin theo kết nối mới Hình 4.20: Đồ thị trễ đường truyền tại node đích (node 5) Hình 4.21: Thông lượng kênh truyền tại node 5 Mô phỏng phương thức truyền Multicast Kịch bản mô phỏng: Mô hình bao gồm 6 node với 8 kết nối. Node 0 & 1 là node nguồn dữ liệu udp1 & udp2. Các node còn lại là các node trạm nhận dữ liệu. Sử dụng code thiết lập giao thức Multicast cho tất cả các node bằng lệnh: DM set CacheMissMode dvmrp set mproto DM set mrthandle [$ns mrtproto $mproto] Tại từng thời điểm (trong kịch bản), các node 2,3,4,5 sẽ tham gia và rời khỏi nhóm multicast, thiết lập bằng tập lệnh sau: $ns at 0.6 "$n(3) join-group $rcvr $group" $ns at 1.3 "$n(4) join-group $rcvr $group" $ns at 1.6 "$n(5) join-group $rcvr $group" $ns at 1.9 "$n(4) leave-group $rcvr $group" $ns at 2.3 "$n(6) join-group $rcvr $group" $ns at 3.5 "$n(3) leave-group $rcvr $group" Hình 4.22: Kết quả chạy kịch bản Multicast Như hình trên, gói tín hiệu tham gia nhóm (màu xanh) được gửi từ node2 yêu cầu gia nhập nhóm multicast. Sau đó node2 sẽ nhận được tín hiệu từ nguồn (node 0). Hình: Node 2 tham gia và nhận dữ liệu Tương tự cho các trường hợp node 3,4,5 tham gia vào nhóm multicast. Tại thời điểm 1.9s, node 3 sau khi tham gia nhóm multicast gửi tín hiệu rời khỏi nhóm (tín hiệu màu tím), lúc này node3 ngừng nhận dữ liệu từ nhóm. Hình: Node3 gửi tín hiệu rời khỏi nhóm Hình 4.24: Thông lượng kênh truyền tại node 2 Như hình trên cho ta thấy thông lượng kênh truyền tại node2. Node 2 tham gia vào nhóm tại thời điểm 0.6s, nên thông lượng ở node 2 đạt 0.3Mb/s, tại thời điểm 3.5s node2 rời khỏi nhóm nên thông lượng giảm về 0. Hình 4.25: Thông lượng kênh truyền tại node 3 Như hình trên cho ta thấy thông lượng kênh truyền tại node3. Node 3 tham gia vào nhóm tại thời điểm 1.3s, nên thông lượng ở node 3 đạt đỉnh 0.5Mb/s, tại thời điểm 1.9s node3 rời khỏi nhóm nên thông lượng giảm về 0. Nhưng vì node3 được thiết lập có hỗ trợ multicast nên vẫn còn tín hiệu truyền qua node này. Hình 4.26: Thông lượng kênh truyền tại node 4 Như hình trên cho ta thấy thông lượng kênh truyền tại node4. Node 4 tham gia vào nhóm tại thời điểm 1.6s, nên thông lượng ở node 4 đạt đỉnh 0.3Mb/s, do node4 không rời khỏi nhóm trong thời gian mô phỏng nên thông lượng được giữ nguyên. V. Kịch bản truyền video qua mạng Cấu trúc liên kết mô phỏng bao gồm 4 nút và 3 liên kết kết nối giữa các nút. Node 0 truyền luồng video tới node 3 thông qua các node 1 và 2. Các link kết nối giữa node 0 và node 1, node 2 và node 3 có băng thông là 10Mb/s và link kết nối giữa node 1 và node 2 có băng thông là 0.18Mb/s. Luồng video có băng thông lớn hơn 0.18 Mb/s nên khi đi qua mạng, sẽ có các gói tin bị loại bỏ. Video được sử dụng là foreman_qcif.yuv và có 400 khung hình. Hình 4.27: Topo mô phỏng Hình 4.28: Cấu trúc mô hình mô phỏng Bước đầu tiên trong kịch bản mô phỏng là mã hóa luồng video trên thành dạng dữ liệu MPEG4, quá trình này thực hiện bằng lệnh: mpeg4encoder.exe example.par Sử dụng lệnh MP4.exe –send 224.1.2.3 5555 1000 foreman_qcif.cmp > st để ghi lại quá trình gửi video, mỗi khung sẽ được chia nhỏ thành 1000 byte để truyền. Chạy chương trình mô phỏng ns be.tcl để tạo ra 2 file sd_be và rd_be, đây là 2 file ghi lại thời gian gửi và thời gian nhận của mỗi gói tin. Sử dụng lệnh et.exe sd_be rd_be st foreman_qcif.cmp err_be.cmp 1 để tạo ra luồng video nhận (luồng này bị lỗi do có gói tin bị loại bỏ trong quá trình truyền), file này có tên err.cmp. Giải mã video nhận được thành dạng yuv bằng lệnh mpeg4decoder.exe err_be.cmp err_be  176  144  >  df_be, quá trình giải mã được lưu trong file df_be. Fix chuỗi video giải mã được bằng lệnh sau và lưu trong file myfix_be.yuv myfixyuv.exe  df_be  qcif  400  err_be.yuv  myfix_be.yuv Bây giờ chúng ta tiến hành tính toán thông số PSNR (Peak Signal Noise Ratio), là một thông số đánh giá chất lượng truyền video. PSNR[dB] MOS >37 31-37 25-31 20-25 <20 5 (Rất tốt) 4 (Tốt) 3 (Khá tốt) 2 (Trung bình) 1 (Xấu) psnr.exe  176  144  420  foreman_qcif.yuv  myfix_be.yuv > psnr_myfix_be Hình 4.29: Thông số PSNR cho từng khung video Nhận xét: hình trên cho thấy, truyền 80 khung video đầu tiên mang lại chất lượng chấp nhận được, chất lượng đạt tốt ở các khung [100 - 120], [140 - 160], [220 - 250], tỷ số PSNR đạt xấp xỉ 34dB. Chất lượng truyền video xấu trong các khung [260 - 370], với tỉ lệ PSNR đạt dưới 16dB. Nguyên nhân là khi đánh giá chất lượng video số ta phải đánh giá chất lượng từng khung một, tổng số khung ở bên nhận bao gồm cả các khung lỗi phải tạo lại giống như các khung ở bên gởi. Khi bên thu nhận thiếu khung thì bộ phận Codec không thể thực hiện được, vì vậy thành phần FV (Fix Video) sẽ được sử dụng để giải quyết vấn đề này bằng cách chèn các khung giải mã thành công cuối cùng vào vị trí khung bị mất mới nhất để che dấu khung bị mất. Chất lượng video được miêu tả như hình sau: Hình 4.30: Chất lượng khung 290 với PSNR=11dB Hình 4.31: Chất lượng khung 180 với PSNR=20dB Hình 4.32: Chất lượng khung 40 với PSNR=35dB Kịch bản thứ 2 là cùng topo mạng như bài trên, nhưng các gói khung I được đánh dấu trước với xác suất mất gói thấp nhất ở lớp ứng dụng tại nguồn, khung P với xác suất mất gói trung bình và khung B được đánh dấu trước với xác suất mất gói cao nhất. Lặp lại các lệnh như trên, với file mô phỏng ‘qos.tcl’ ta thu được đồ thị PSNR như sau: Hình 4.33: Đồ thị PSNR cho từng khung video Dựa vào đồ thị PSNR, chúng ta thấy rằng giá trị PSNR trung bình được cải thiện so với trường hợp trước, điều này cũng đồng nghĩa với chất lượng video tốt hơn ở máy thu. Chất lượng hình ảnh như sau: Hình 4.34: Chất lượng khung 290 Hình 4.35: Chất lượng khung 180 Hình 4.36: Chất lượng khung 40 VI. Kịch bản mô phỏng hệ thống wimax 1. Giả thuyết Các giả thuyết được sử dụng trong mô phỏng: Chỉ thực thi lớp con phần chung MAC chuẩn IEEE 802.16, không thực thi cơ chế bảo mật được thực hiện bởi lớp con MAC bảo mật. Không đề cập đến khoảng thời gian để một trạm SS đồng bộ với BS. Tất cả các trạm BS và SS đều sử dụng kiểu anten omni-directional được thiết lập sẵn trong lớp vật lý của NS-2 để truyền thông. Không thực thi lớp vật lý chuẩn IEEE 802.16. Nhưng sử dụng lại các thành phần sẵn có của lớp vật lý chuẩn IEEE 802.11 được hỗ trợ trong NS-2 như các kiểu kênh truyền, kiểu anten, mô hình truyền sóng vô tuyến… Kiểu hàng đợi là Droptail (FIFO – First In First Out). Giả sử trong quá trình truyền giữa BS và SS hoặc ngược lại không xảy ra hiện tượng mất gói, do đó không thực thi cơ chế ARQ (Automatic Repeat Request). 2. Kịch bản mô phỏng Mô hình mạng được sử dụng để mô phỏng dựa trên kiến trúc Point-to- Multipoint (chuẩn IEEE 802.16) bao gồm: một trạm gốc BS (node_0) và 2 trạm thuê bao SS (node_1, và node_2), được đặt cố định tại các tọa độ cho trước. Hình 4.37: Kiến trúc mạng mô phỏng Trong kịch bản mô phỏng trên: SS_1 gửi các thông báo ranging, thông báo BWREQ và bắt đầu truyền dữ liệu đến BS (kênh uplink). Sau đó, SS_2 gửi dữ liệu đến BS. Các quá trình truyền kết thúc tại thời điểm 10s. Các thông số sử dụng: Băng thông kết nối: 10 Mbps/ sector. Độ trễ trên kết nối: 10 ms. Phạm vi mô phỏng: 1000 x 1000. Giao thức định tuyến: DSDV (Destination Sequence Distance Vector). Kích thước tối đa của hàng đợi là 50 (số gói tối đa chứa trong hàng đợi). Lớp dịch vụ được thiết lập trên kết nối giữa BS và SS_1 là UGS (biểu diễn cho các ứng dụng VOIP) và lớp dịch vụ thiết lập trên kết nối giữa BS và SS_2 là rtPS (biểu diễn cho ứng dụng video, MPEG4). Drop packet rate: < 5%. Thời gian thực hiện mô phỏng: 10s. 3. Hoạt động Vào thời điểm bắt đầu mô phỏng, các SS tiến hành quét các kênh trong dải tần đã được định nghĩa để tìm một kênh downlink thích hợp và đồng bộ. Sau đó, các SS nhận các thông báo mô tả kênh vật lý DCD (downlink) và UCD (uplink) để lấy các thông số cần thiết. Tiếp đó, các SS gửi yêu cầu ranging (thông báo RNGREQ) đến BS. Hình 4.38: Các SS gửi yêu cầu ranging Tiếp đó, BS gửi lại các đáp ứng ranging (thông báo RNGRSP) và các thông báo ULMAP, DLMAP chứa các thông tin lớp MAC như thời điểm truy cập và các thông tin khác trên cả hai kênh uplink và downlink. Hình 4.39: BS gửi đáp ứng ranging Sau khi đã nhận được thông báo RNGRSP từ BS. Tại thời điểm 1, SS_1 gửi yêu cầu cấp phát băng thông (thông báo BWREQ) cho BS, sau khi nhận được băng thông cấp phát, SS_1 bắt đầu truyền dữ liệu đến BS. Hình 4.40: SS_2 gửi yêu cầu băng thông Hình 4.41: SS_2 gửi dữ liệu (rtPS) cho BS 4. Tính lượng băng thông được sử dụng trên BS Các thông tin mô phỏng được ghi lại trong file ~.tr bao gồm kiểu sự kiện (send, receive, drop, forward), thời điểm xảy ra sự kiện, nút thực hiện sự kiện, thông tin gói và kích thước gói, kiểu trace được sử dụng… Tổng số gói (packet) trong quá trình mô phỏng mà node 0 (BS) đã xử lý: 9259. Trong đó Tổng số gói nhận (r): 2712. Tổng số gói gửi (s): 6305. Tổng số gói drop (d): 240. Tổng dung lượng trong quá trình mô phỏng mà node 0 (BS) đã xử lý: 794347 byte. Trong đó: Dung lượng nhận (r): 274148 byte. Dung lượng gửi (s): 375404 byte. Dung lượng drop (d): 144795 byte. Băng thông trung bình node 0 (BS) sử dụng trong thời gian mô phỏng: 794347*8/10/(1000)2 = 0.606 Mbps NHẬN XÉT Băng thông trung bình node 0 (BS) sử dụng trong suốt quá trình mô phỏng nằm trong giới hạn đề ra (10Mbps). Tỷ lệ gói drop (d) chấp nhận được (dưới 5%). Hệ thống hoạt động tốt. Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI TÀI LIỆU THAM KHẢO [1] Seamus O’Leary, Understanding Digital Terrestrial Broadcasting. [2] Gerard O’Driscoll, Next Generation IPTV Services and Technologies, NXB WILEY. [3] Alcatel-Lucent Wimax, 9160 Wimax Access Control. [4] Alcatel-Lucent Wimax, 9116 Compact Wimax Base Station. [5] Mobile Wimax – Part 1: A Technical Overview and Performance Evaluation, August, 2006. [6] Jeffrey G. Andrews, Ph.D., Arunabha Ghosh, Ph.D., Rias Muhamed “Fundamentals of WiMAX - Understanding Broadband Wireless Networking” [7] Kitti Wongthavarawat. “IEEE 802.16 WiMAX Security”. July 1, 2005. [8] Michel Barbeau. “WiMAX 802.16 Threat Analysis”. 2006. [9] NIST, The Network Simulator NS-2 NIST add on IEEE 802.16 model (MAC + PHY), January, 2009. [10] [11] [12] www.wimaxforum.org [13] [14] [15] PHỤ LỤC Mã nguồn bài 1 : #=================================== # KHAI BAO GIA TRI BAN DAU #=================================== set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_16 ;# MAC type set val(ifq) Queue/DropTail/PriQueue ;# interface queue type set val(ll) LL ;# link layer type set val(ant) Antenna/OmniAntenna ;# antenna model set val(ifqlen) 50 ;# max packet in ifq set val(nn) 3 ;# number of mobilenodes set val(rp) DSDV ;# routing protocol set val(x) 400 ;# X dimension of topography set val(y) 400 ;# Y dimension of topography set val(stop) 10.0 ;# time of simulation end #=================================== # #=================================== #GHI RA file trace set ns [new Simulator] set tracefd [open UGS-RTPS.tr w] set namtrace [open UGS-RTPS.nam w] $ns trace-all $tracefd $ns namtrace-all-wireless $namtrace $val(x) $val(y) set topo [new Topography] $topo load_flatgrid $val(x) $val(y) create-god $val(nn) #«Ø¥ßchannel set chan0 [new $val(chan)] #=================================== # CAU HINH MobileNode #=================================== #MobileNode $ns node-config -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -channel $chan0 \ -topoInstance $topo \ -agentTrace OFF \ -routerTrace OFF \ -macTrace ON \ -movementTrace OFF #=================================== # CAU HINH CAC TRAM (Node) #=================================== #TRAM BS: Node 0 set node_(0) [$ns node] $node_(0) set X_ 200 $node_(0) set Y_ 200 $node_(0) set Z_ 0.0 $ns initial_node_pos $node_(0) 20 #TRAM SS_1: Node 1 set node_(1) [$ns node] $node_(1) set X_ 100 $node_(1) set Y_ 200 $node_(1) set Z_ 0.0 $ns initial_node_pos $node_(1) 20 #TRAM SS_1: Node 1 set node_(2) [$ns node] $node_(2) set X_ 300 $node_(2) set Y_ 200 $node_(2) set Z_ 0.0 $ns initial_node_pos $node_(2) 20 #=================================== # MO PHONG HOAT DONG #=================================== #(CBR-UDP) set udp0 [new Agent/UDP] $ns attach-agent $node_(1) $udp0 set null0 [new Agent/Null] $ns attach-agent $node_(0) $null0 $ns connect $udp0 $null0 set cbr0 [new Application/Traffic/UGS] $cbr0 attach-agent $udp0 $ns at 0.0 "$cbr0 start" $ns at 10.0 "$cbr0 stop" #(CBR-UDP) set udp2 [new Agent/UDP] $ns attach-agent $node_(2) $udp2 set null2 [new Agent/Null] $ns attach-agent $node_(0) $null2 $ns connect $udp2 $null2 set cbr2 [new Application/Traffic/rtPS] $cbr2 attach-agent $udp2 $ns at 0.0 "$cbr2 start" $ns at 10.0 "$cbr2 stop" #(CBR-UDP) set udp8 [new Agent/UDP] $ns attach-agent $node_(0) $udp8 set null8 [new Agent/Null] $ns attach-agent $node_(1) $null8 $ns connect $udp8 $null8 set cbr8 [new Application/Traffic/rtPS] $cbr8 attach-agent $udp8 $ns at 0.0 "$cbr8 start" $ns at 10.0 "$cbr8 stop" #(CBR-UDP) set udp10 [new Agent/UDP] $ns attach-agent $node_(0) $udp10 set null10 [new Agent/Null] $ns attach-agent $node_(2) $null10 $ns connect $udp10 $null10 set cbr10 [new Application/Traffic/ertPS] $cbr10 attach-agent $udp10 $ns at 0.0 "$cbr10 start" $ns at 10.0 "$cbr10 stop" #=================================== # #=================================== #recv function Agent/Ping instproc recv {from rtt} { $self instvar node_ puts "node [$node_ id] received ping answer from $from with round-trip-time $rtt ms." } #MobileNode for {set i 0} {$i < $val(nn) } { incr i } { $ns at $val(stop) "$node_($i) reset"; } #nam $ns at $val(stop) "$ns nam-end-wireless $val(stop)" $ns at $val(stop) "stop" $ns at 10.0 "puts \"end simulation\" ; $ns halt" #stop function proc stop {} { global ns tracefd namtrace $ns flush-trace close $tracefd close $namtrace exec nam UGS-RTPS.nam & exit 0 } $ns run Mã nguồn bài 2 : set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the Trace file set file1 [open out.tr w] $ns trace-all $file1 #Open the NAM trace file set file2 [open out.nam w] $ns namtrace-all $file2 #Define a 'finish' procedure proc finish {} { global ns file1 file2 $ns flush-trace close $file1 close $file2 exec nam out.nam & exec awk -f delay.awk out.tr > delay.dat exec xgraph delay.dat & exec awk -f fil-tcp.awk out.tr > th.xgr exec xgraph th.xgr & exit 0 } # Next line should be commented out to have the static routing $ns rtproto DV #Create six nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #Create links between the nodes $ns duplex-link $n0 $n1 0.3Mb 10ms DropTail $ns duplex-link $n1 $n2 0.3Mb 10ms DropTail $ns duplex-link $n2 $n3 0.3Mb 10ms DropTail $ns duplex-link $n1 $n4 0.3Mb 10ms DropTail $ns duplex-link $n3 $n5 0.5Mb 10ms DropTail $ns duplex-link $n4 $n5 0.5Mb 10ms DropTail #Give node position (for NAM) $ns duplex-link-op $n0 $n1 orient right $ns duplex-link-op $n1 $n2 orient right $ns duplex-link-op $n2 $n3 orient up $ns duplex-link-op $n1 $n4 orient up-left $ns duplex-link-op $n3 $n5 orient left-up $ns duplex-link-op $n4 $n5 orient right-up #Setup a TCP connection set tcp [new Agent/TCP/Newreno] $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink/DelAck] $ns attach-agent $n5 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Setup a FTP over TCP connection set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP $ns rtmodel-at 1.0 down $n1 $n4 $ns rtmodel-at 4.5 up $n1 $n4 $ns at 0.1 "$ftp start" $ns at 6.0 "finish" $ns run Mã nguồn bài 3 : set ns [new Simulator] $ns multicast set f [open out.tr w] $ns trace-all $f $ns namtrace-all [open out.nam w] $ns color 1 red # the nam colors for the prune packets $ns color 30 purple # the nam colors for the graft packets $ns color 31 green # allocate a multicast address; set group [Node allocaddr] # nod is the number of nodes set nod 6 # create multicast capable nodes; for {set i 1} {$i <= $nod} {incr i} { set n($i) [$ns node] } #Create links between the nodes $ns duplex-link $n(1) $n(2) 0.3Mb 10ms DropTail $ns duplex-link $n(2) $n(3) 0.3Mb 10ms DropTail $ns duplex-link $n(2) $n(4) 0.5Mb 10ms DropTail $ns duplex-link $n(2) $n(5) 0.3Mb 10ms DropTail $ns duplex-link $n(3) $n(4) 0.3Mb 10ms DropTail $ns duplex-link $n(4) $n(5) 0.5Mb 10ms DropTail $ns duplex-link $n(4) $n(6) 0.5Mb 10ms DropTail $ns duplex-link $n(5) $n(6) 0.5Mb 10ms DropTail # configure multicast protocol; DM set CacheMissMode dvmrp set mproto DM # all nodes will contain multicast protocol agents; set mrthandle [$ns mrtproto $mproto] set udp1 [new Agent/UDP] set udp2 [new Agent/UDP] $ns attach-agent $n(1) $udp1 $ns attach-agent $n(2) $udp2 set src1 [new Application/Traffic/CBR] $src1 attach-agent $udp1 $udp1 set dst_addr_ $group $udp1 set dst_port_ 0 $src1 set random_ false set src2 [new Application/Traffic/CBR] $src2 attach-agent $udp2 $udp2 set dst_addr_ $group $udp2 set dst_port_ 1 $src2 set random_ false # create receiver agents set rcvr [new Agent/LossMonitor] # joining and leaving the group; $ns at 0.6 "$n(3) join-group $rcvr $group" $ns at 1.3 "$n(4) join-group $rcvr $group" $ns at 1.6 "$n(5) join-group $rcvr $group" $ns at 1.9 "$n(4) leave-group $rcvr $group" $ns at 2.3 "$n(6) join-group $rcvr $group" $ns at 3.5 "$n(3) leave-group $rcvr $group" $ns at 0.4 "$src1 start" $ns at 2.0 "$src2 start" $ns at 4.0 "finish" proc finish {} { global ns f $ns flush-trace exec nam out.nam & exec awk -f fil-tcp.awk out.tr > th.xgr exec xgraph th.xgr & exit 0 } $ns run Mã nguồn bài 4 : ====================================================================== # Options # ====================================================================== set val(nn) 1 ;# number of mobilenodes set num_wired_nodes 5 set val(x) 300 ;# x coordinate of topology set val(y) 300 ;# y coordinate of topology set val(ftp1-start) 5.0 set val(stop) 100 ;# time to stop simulation set data_interval 0.2 ;# CBR Traffic Interval set val(tr-xgr) son-out.tr set val(tr-nam) son-out.nam set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type set val(ifq) Queue/DropTail/PriQueue ;# interface queue type set val(ll) LL ;# link layer type set val(ant) Antenna/OmniAntenna ;# antenna model set val(ifqlen) 50 ;# max packet in ifq set val(rp) DSDV ;# routing protocol set chan [new $val(chan)] # ====================================================================== # Common Nodes # ====================================================================== set ns_ [new Simulator] $ns_ node-config -addressType hierarchical AddrParams set domain_num_ 3 ;# Cac loai node(co day,ko day(MN+HA;FA)) lappend cluster_num 5 1 1 ;# So mang trong moi loai AddrParams set cluster_num_ $cluster_num lappend eilastlevel 1 1 1 1 1 2 1 ;# So node trong moi mang AddrParams set nodes_num_ $eilastlevel set tracefd [open $val(tr-xgr) w] set namtrace [open $val(tr-nam) w] $ns_ trace-all $tracefd $ns_ namtrace-all-wireless $namtrace $val(x) $val(y) set topo [new Topography] $topo load_flatgrid $val(x) $val(y) create-god [expr $val(nn) + 2] ;# 2 for HA and FA #----------------------------------------------------------- # wired nodes #----------------------------------------------------------- set temp {0.0.0 0.1.0 0.2.0 0.3.0 0.4.0 0.5.0} for {set i 0} {$i < $num_wired_nodes} {incr i} { set W($i) [$ns_ node [lindex $temp $i]] } #----------------------------------------------------------- # hybrid and wireless nodes #----------------------------------------------------------- $ns_ node-config -mobileIP ON \ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(ant) \ -propType $val(prop) \ -phyType $val(netif) \ -topoInstance $topo \ -agentTrace ON \ -routerTrace ON \ -macTrace ON \ -movementTrace ON \ -wiredRouting ON \ -channel $chan # Create Home Agent and Foreign Agent set HA [$ns_ node 1.0.0] set FA [$ns_ node 2.0.0] $HA shape box $FA shape box $HA set X_ 14.000000000000 $HA set Y_ 14.000000000000 $HA set Z_ 0.0000000000000 $FA set X_ 250.00000000000 $FA set Y_ 250.00000000000 $FA set Z_ 0.0000000000000 # create links between wired and BaseStation nodes $ns_ duplex-link $W(0) $W(1) 5Mb 2ms DropTail $ns_ duplex-link $W(0) $W(4) 10Mb 2ms DropTail $ns_ duplex-link $W(0) $W(2) 10Mb 2ms DropTail $ns_ duplex-link $W(1) $W(2) 5Mb 2ms DropTail $ns_ duplex-link $W(1) $W(4) 5Mb 2ms DropTail $ns_ duplex-link $W(1) $HA 5Mb 2ms DropTail $ns_ duplex-link $W(2) $W(3) 10Mb 2ms DropTail $ns_ duplex-link $W(2) $HA 5Mb 2ms DropTail $ns_ duplex-link $W(2) $FA 5Mb 2ms DropTail $ns_ duplex-link $W(3) $FA 10Mb 2ms DropTail $ns_ duplex-link $W(4) $FA 10Mb 2ms DropTail $ns_ duplex-link $W(4) $HA 5Mb 2ms DropTail $ns_ duplex-link-op $W(0) $W(1) color "green" $ns_ duplex-link-op $W(0) $W(1) label " 5 Mb " $ns_ duplex-link-op $W(0) $W(4) color "green" $ns_ duplex-link-op $W(0) $W(4) label " 10 Mb " $ns_ duplex-link-op $W(0) $W(2) color "green" $ns_ duplex-link-op $W(0) $W(2) label " 10 Mb " $ns_ duplex-link-op $W(1) $W(2) color "green" $ns_ duplex-link-op $W(1) $W(2) label " 5 Mb " $ns_ duplex-link-op $W(1) $W(4) color "green" $ns_ duplex-link-op $W(1) $W(4) label " 5 Mb " $ns_ duplex-link-op $W(1) $HA color "green" $ns_ duplex-link-op $W(1) $HA label " 5 Mb " $ns_ duplex-link-op $W(2) $W(3) color "green" $ns_ duplex-link-op $W(2) $W(3) label " 10 Mb " $ns_ duplex-link-op $W(2) $HA color "green" $ns_ duplex-link-op $W(2) $HA label " 5 Mb " $ns_ duplex-link-op $W(2) $FA color "green" $ns_ duplex-link-op $W(2) $FA label " 5 Mb " $ns_ duplex-link-op $W(3) $FA color "green" $ns_ duplex-link-op $W(3) $FA label " 10 Mb " $ns_ duplex-link-op $W(4) $FA color "green" $ns_ duplex-link-op $W(4) $FA label " 10 Mb " $ns_ duplex-link-op $W(4) $HA color " green " $ns_ duplex-link-op $W(4) $HA label " 5 Mb " # create a mobilenode (in the domain of the HA) # that is moving between HA and FA. $ns_ node-config -wiredRouting OFF set MN [$ns_ node 1.0.1] $MN shape box set HAaddress [AddrParams addr2id [$HA node-addr]] [$MN set regagent_] set home_agent_ $HAaddress $ns_ initial_node_pos $MN 10 $MN set X_ 2.000000000000 $MN set Y_ 2.000000000000 $MN set Z_ 0.000000000000 $ns_ at 0.0 "$W(0) label CN" $ns_ at 0.0 "$W(1) label W(1)" $ns_ at 0.0 "$W(2) label W(2)" $ns_ at 0.0 "$W(3) label W(3)" $ns_ at 0.0 "$W(4) label W(4)" $ns_ at 0.0 "$HA label HA" $ns_ at 0.0 "$FA label FA" $ns_ at 0.0 "$MN label MN" # MN starts to move towards FA $ns_ at 10.00 "$MN setdest 260.00 260.00 40.00" # goes back to HA $ns_ at 60.00 "$MN setdest 3.00 1.00 40.00" #================================================================== # Agents #================================================================== set tcp1 [new Agent/TCP] $tcp1 set class_ 2 set sink1 [new Agent/TCPSink] $ns_ attach-agent $W(0) $tcp1 $ns_ attach-agent $MN $sink1 $ns_ connect $tcp1 $sink1 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at $val(ftp1-start) "$ftp1 start" $ns_ color 2 Blue #================================================================== # End #================================================================== $ns_ at $val(stop).0 "$MN reset"; $ns_ at $val(stop).0 "$HA reset"; $ns_ at $val(stop).0 "$FA reset"; $ns_ at $val(stop).0002 "puts \"NS EXITING...\" ; $ns_ halt" $ns_ at $val(stop).0001 "finish" proc finish {} { global ns_ tracefd namtrace close $tracefd close $namtrace exec rm -f son-tcp.xgr exec awk -f fil-tcp.awk son-out.tr > son-tcp.xgr exec xgraph son-tcp.xgr & exec nam son-out.nam & exit 0 } puts "Starting Simulation..." $ns_ run

Các file đính kèm theo tài liệu này:

  • doc82760277_datn_trien_khai_iptv_tren_wimax_2281.doc
Luận văn liên quan