Artikel ini membuka serangkaian publikasi dengan terjemahan buku teks ""pada simulator jaringan ns-3.

Dokumen ini merupakan terjemahan dari dokumen asli berbahasa Inggris yang ditulis dalam bahasa Inggris untuk dan disimpan di direktori dok/tutorial kode sumber ns-3.
1 Kata Pengantar
1.1 Tentang ns-3
1.2 Untuk pengguna ns-2
1.3 Partisipasi dalam proyek
1.4 Organisasi pengelola
2 Sumber informasi
2.1 Jaringan
2.2 Git
2.3 WAF
2.4 Lingkungan pengembangan
2.5 Pemrograman soket
Dokumentasi utama untuk proyek ns-3 tersedia dalam lima bentuk:
- Dokumentasi API simulator:ns-3 .
- Tutorial, panduan dan perpustakaan model untuk и .
- ns-3.
Bab 1
kata pengantar
Simulator ns-3 adalah simulator jaringan peristiwa terpisah yang ditujukan terutama untuk penggunaan penelitian dan pendidikan. Proyek pengembangan ns-3 dimulai pada tahun 2006 dan merupakan proyek open source.
Tujuan dari panduan ini adalah untuk memperkenalkan ns-3 kepada pengguna baru secara sistematis dan terstruktur. Terkadang sulit bagi seorang pemula untuk memperoleh informasi yang diperlukan dan menerjemahkannya ke dalam simulasi kerja. Dalam tutorial ini, kami menerapkan beberapa contoh simulasi, menunjukkan dan menjelaskan konsep dan fitur utama.
Seiring berjalannya waktu, kami akan memberikan dokumentasi lengkap untuk ns-3 dan menyediakan tautan ke kode sumber bagi mereka yang tertarik untuk memahami secara mendalam cara kerja sistem.
Ada beberapa poin penting yang perlu diperhatikan di awal:
- ns-3 adalah open source, dan proyek ini berupaya mempertahankan lingkungan terbuka di mana peneliti dapat berkontribusi dan berbagi karya perangkat lunak mereka.
- ns-3 bukan ekstensi ns-2 yang kompatibel, ini adalah simulator baru. Kedua simulator tersebut ditulis dalam C++, tetapi ns-3 adalah simulator baru yang tidak mendukung API ns-2.
1.1 Tentang ns-3
Simulator ns-3 dirancang untuk menyediakan platform terbuka dan dapat diperluas untuk simulasi jaringan, penelitian jaringan, dan pendidikan. Singkatnya, ns-3 menyediakan model bagaimana jaringan data paket diimplementasikan dan dioperasikan serta memberikan pengguna mesin simulator untuk melakukan eksperimen simulasi. Alasan penggunaan ns-3 mencakup situasi di mana diperlukan untuk melakukan penelitian yang sulit atau tidak mungkin dilakukan pada sistem nyata, kemampuan untuk mempelajari perilaku sistem dalam lingkungan yang sangat terkontrol, lingkungan yang dapat direproduksi, dan untuk mempelajari cara kerja jaringan. .
Pengguna akan memperhatikan bahwa rangkaian model yang disediakan dalam ns-3 difokuskan pada simulasi pengoperasian protokol dan jaringan Internet, namun ns-3 tidak terbatas pada sistem Internet; beberapa pengguna menggunakan ns-3 untuk memodelkan sistem berbasis non-Internet.
Ada banyak alat pemodelan jaringan yang tersedia. Berikut adalah beberapa cara ns-3 dibandingkan dengan alat lain.
- ns-3 dirancang sebagai sekumpulan perpustakaan yang dapat digabungkan bersama-sama serta dengan perpustakaan perangkat lunak eksternal lainnya. Sementara beberapa platform simulasi menyediakan lingkungan tunggal yang terintegrasi dengan antarmuka pengguna grafis yang mengelola semua pekerjaan kepada pengguna, ns-3 lebih modular dalam hal ini. Beberapa animator eksternal, analisis data, dan alat visualisasi dapat digunakan dengan ns-3. Namun, pengguna dapat bekerja pada baris perintah dan dengan alat pengembangan perangkat lunak C++ dan/atau Python.
- ns-3 terutama digunakan dalam sistem Linux или macOS, meskipun ada dukungan untuk sistem BSD serta platform Windows, mampu mengkompilasi kode untuk LinuxSeperti Windows Subsistem untuk Linux atau Cygwin. Asli dari Windows Visual Studio saat ini belum didukung, meskipun pengembang sedang berupaya mengimplementasikan fitur ini. Pengguna Windows juga dapat menggunakan mesin virtual dengan Linux.
- ns-3 bukanlah produk perangkat lunak yang didukung secara resmi oleh perusahaan mana pun. Dukungan untuk ns-3 dilakukan dengan efisiensi maksimum di forum pengguna ns-3 (ns-3-users@googlegroups.com).
1.2 Untuk pengguna ns-2
Bagi mereka yang familiar dengan ns-2 (alat populer sebelum ns-3), perubahan eksternal yang paling mencolok saat berpindah ke ns-3 adalah perubahan dalam bahasa skrip. Program di ns-2 ditulis dalam OTcl, dan hasil simulasi dapat divisualisasikan menggunakan nam network animator. Di ns-2 tidak mungkin menjalankan simulasi hanya dari C++ (yaitu, sebagai program main() tanpa OTcl apa pun). Selain itu, beberapa komponen ns-2 ditulis dalam C++, sementara yang lain ditulis dalam OTcl. Di ns-3, simulator seluruhnya ditulis dalam C++ dengan binding Python opsional. Oleh karena itu, skrip simulasi dapat ditulis dalam C++ dan Python. Animator dan renderer baru telah tersedia dan terus dikembangkan. Karena ns-3 menghasilkan file jejak paket pcap, utilitas lain juga dapat digunakan untuk menganalisis jejak tersebut. Dalam tutorial ini, pertama-tama kita akan fokus pada skrip yang diimplementasikan dalam C++ dan menafsirkan hasilnya melalui analisis file jejak.
Namun ada juga kesamaan (misalnya, kedua alat didasarkan pada objek C++, beberapa kode ns-2 di-porting ke ns-3). Seiring berjalannya waktu, kami akan mencoba menunjukkan perbedaan antara ns-2 dan ns-3.
Pertanyaan yang sering kita dengar adalah: “Haruskah saya tetap menggunakan ns-2 atau mengupgrade ke ns-3?” Menurut penulis, jika pengguna tidak terikat dengan ns-2 (berdasarkan kenyamanan pribadi dan pengetahuan ns-2 yang ada, atau berdasarkan model simulasi tertentu yang hanya tersedia di ns-2), maka dengan ns- 3 dia akan lebih produktif karena alasan berikut:
- ns-3 dipelihara secara aktif dengan milis pengguna yang aktif dan responsif, sedangkan ns-2 hanya didukung sedikit dan belum melihat perubahan signifikan pada pohon kode utamanya selama lebih dari satu dekade.
- ns-3 menyediakan fitur yang tidak tersedia di ns-2, seperti runtime kode implementasi (memungkinkan pengguna menjalankan kode implementasi nyata di simulator).
- ns-3 memberikan tingkat abstraksi dasar yang lebih rendah dibandingkan ns-2, sehingga memungkinkannya lebih cocok dengan cara sistem nyata berinteraksi. Beberapa keterbatasan yang ditemukan di ns-2 (seperti mendukung beberapa tipe antarmuka pada sebuah node dengan benar) telah diperbaiki di ns-3.
Karena sejarahnya yang panjang, ns-2 memiliki rangkaian modul yang didukung lebih beragam daripada ns-3. Namun, ns-3 memiliki model yang lebih detail di beberapa area penelitian populer (termasuk model LTE dan WiFi yang kompleks), dan dukungan kode implementasinya memungkinkan berbagai macam model dengan fidelitas tinggi. Pengguna mungkin akan terkejut mengetahui bahwa seluruh tumpukan jaringan Linux dapat dienkapsulasi dalam node ns-3 menggunakan kerangka kerja eksekusi kode langsung (DCE). Model ns-2 terkadang dapat diporting ke ns-3, terutama jika diimplementasikan dalam C++.
Jika ragu, rekomendasi yang baik adalah dengan melihat kedua simulator (dan juga simulator lainnya), khususnya model yang tersedia untuk penelitian Anda, namun perlu diingat bahwa hasil Anda mungkin lebih baik jika menggunakan alat yang saat ini sedang aktif. dikembangkan dan didukung (ns-3).
1.3 Partisipasi dalam proyek
ns-3 adalah simulator ilmiah dan pendidikan untuk komunitas riset. Hal ini akan memanfaatkan kontribusi komunitas yang berkelanjutan untuk mengembangkan model baru, melakukan debug atau mempertahankan model yang sudah ada, dan membagikan hasilnya. Ada beberapa kebijakan yang kami harap dapat mendorong masyarakat untuk berkontribusi pada ns-3 seperti yang mereka lakukan pada ns-2:
- Lisensi open source berdasarkan kompatibilitas dengan lisensi GNU GPLv2.
- wiki.
- Halaman , mirip dengan halaman populer untuk ns-2.
- Menggunakan GitLab.com, termasuk sistem pelacakan masalah:
Kami memahami bahwa meskipun Anda membaca dokumen ini, Anda mungkin tidak berencana untuk berkontribusi pada tahap ini. Namun kami ingin Anda tahu bahwa memberikan kontribusi adalah semangat proyek dan kami akan menghargai masukan Anda, bahkan tentang pengalaman awal Anda dengan ns-3 (misalnya, "bagian tutorial ini tidak jelas..." ), melaporkan tentang dokumentasi yang ketinggalan jaman atau komentar dalam kode, dll... Cara yang lebih disukai untuk mengirimkan koreksi adalah dengan membuat cabang (garpu) pada dengan koreksi Anda dan buat permintaan penggabungan, atau buat permintaan di pelacak kami dan tambahkan tambalan.
1.4 Organisasi pengelola
Panduan ini mengasumsikan bahwa pengguna baru mungkin awalnya mengikuti sesuatu seperti ini:
- Coba unduh dan kumpulkan salinannya;
- Cobalah untuk menjalankan beberapa contoh program;
- Lihatlah hasil simulasi dan coba sesuaikan.
Pada akhirnya, kami mencoba mengatur presentasi menurut langkah-langkah berikut.
Bab 2
Sumber informasi
2.1 Jaringan
Ada beberapa sumber daya penting yang harus diketahui oleh setiap pengguna ns-3. Situs web utama terletak di:
dan menyediakan akses ke informasi dasar tentang sistem ns-3. Dokumentasi terperinci tersedia melalui situs web utama di: .
Di halaman web yang sama ini Anda juga dapat menemukan dokumen yang berkaitan dengan arsitektur sistem.
Terdapat halaman wiki yang melengkapi situs utama ns-3, yang dapat Anda temukan di: .
Di sana Anda akan menemukan jawaban atas pertanyaan umum bagi pengguna dan pengembang, serta panduan pemecahan masalah, kode pihak ketiga, dokumen, dan banyak lagi.
Kode sumber dapat ditemukan dan dilihat di GitLab.com:
.
Ada di repositori dengan nama ns-3-dev pohon pengembangan saat ini berada. Rilis sebelumnya dan repositori eksperimental dari pengembang kernel juga dapat ditemukan di Mercurial di situs proyek lama di:
.
2.2 Git
Sistem perangkat lunak yang kompleks memerlukan cara untuk mengelola organisasi dan mengubah kode dan dokumentasi yang mendasarinya. Ada banyak cara untuk mencapai hal ini, dan Anda mungkin pernah mendengar tentang beberapa sistem yang umum digunakan untuk mencapai hal ini. Sampai saat ini, proyek ns-3 menggunakan Mercurial sebagai sistem kontrol kode sumbernya, namun pada bulan Desember 2018, kami beralih menggunakan Git. Meskipun Anda tidak perlu tahu banyak tentang Git untuk membaca panduan ini, kami menyarankan Anda untuk membiasakan diri dengannya dan menggunakannya untuk mengakses kode sumber. GitLab.com menyediakan sumber daya untuk menguasai keterampilan inti di: .
2.3 WAF
Setelah Anda mengunduh kode sumber ke komputer Anda, Anda perlu mengkompilasinya agar program siap dijalankan. Seperti halnya manajemen kode sumber, ada banyak alat yang tersedia untuk menjalankan fungsi ini. Mungkin alat yang paling terkenal adalah make. Meskipun alat ini adalah yang paling terkenal, perlu dicatat bahwa alat ini paling rumit bila digunakan dalam sistem yang sangat besar dan sangat dapat dikonfigurasi. Hal ini menyebabkan berkembangnya banyak alternatif. Baru-baru ini, sistem seperti itu telah dikembangkan menggunakan bahasa Python.
Proyek ns-3 menggunakan sistem build Waf. Ini adalah bagian dari sistem pembangunan berbasis Python generasi baru. Untuk membangun sistem ns-3 yang sudah ada, Anda tidak perlu mengetahui Python.
Bagi yang berminat mengetahui detail penggunaan Waf, tersedia bukunya di:
dan kode saat ini:
.
2.4 Lingkungan pengembangan
Seperti disebutkan di atas, skrip di ns-3 dijalankan dalam C++ atau Python. Sebagian besar API ns-3 tersedia dalam Python, tetapi modelnya tetap ditulis dalam C++. Tutorial ini mengasumsikan bahwa Anda sudah familiar dengan pemrograman berorientasi objek di C++. Seiring berjalannya waktu, kita akan meluangkan waktu untuk meninjau beberapa konsep yang lebih maju dan mungkin fitur bahasa yang asing seperti idiom dan pola desain. Kami tidak ingin panduan ini menjadi tutorial C++, jadi kami mengharapkan pemahaman dasar tentang bahasa tersebut. Ada banyak sumber informasi tentang C++ yang tersedia online atau cetak.
Jika Anda baru mengenal C++, pelajari dasar-dasar bahasanya dengan tutorial atau situs tutorial atau resep sebelum melanjutkan. Misalnya seperti ini: .
Bawah LinuxSistem ns-3 menggunakan beberapa komponen dari toolchain GNU. Toolchain adalah seperangkat alat pemrograman yang tersedia dalam lingkungan perangkat lunak tertentu. Untuk gambaran singkat tentang apa yang termasuk dalam toolchain GNU, lihat .
Simulator ns-3 menggunakan gcc, GNU binutils dan gdb. Pada saat yang sama, kami tidak menggunakan make atau autotools dari alat GNU untuk membangun proyek. Untuk fungsi ini kami menggunakan Waf.
В macOS Toolchain Xcode digunakan. Pengguna ns-3 di Mac sangat disarankan untuk menginstal Xcode dan paket alat baris perintah dari Apple App Store, dan untuk informasi lebih lanjut, kunjungi halaman wiki instalasi ns-3: ().
Biasanya, penulis ns-3 bekerja di Linux atau lingkungan mirip Unix. Bagi mereka yang bekerja di bawah WindowsTerdapat lingkungan yang meniru lingkungan alami hingga berbagai tingkatan. LinuxBagi pengguna seperti itu, proyek ns-3 secara historis (tetapi tidak saat ini) mendukung pengembangan di lingkungan Cygwin. Untuk detail unduhan dan informasi lebih lanjut tentang Cygwin dan ns-3, kunjungi halaman wiki ns-3:
.
MinGW saat ini tidak didukung secara resmi. Alternatif lain untuk Cygwin adalah menginstal lingkungan virtual, seperti VMware Server, tempat Anda dapat menginstal Linux.
2.5 Pemrograman soket
Contoh-contoh dalam tutorial ini akan memanfaatkan kemampuan dasar API Berkeley Sockets. Jika Anda baru mengenal socket, kami sarankan untuk membiasakan diri dengan API dan beberapa kasus penggunaan umum. Untuk gambaran umum yang baik tentang pemrograman socket, TCP/IP Kami menyarankan untuk menggunakan: "TCP/IP Soket dalam C", Donahoo dan Calvert.
Terdapat link website yang memuat sumber contoh-contoh dalam buku tersebut, yang dapat Anda temukan di:
.
Jika Anda memahami empat bab pertama buku ini (atau bagi mereka yang tidak memiliki akses ke salinan buku tersebut, klien dan server gema yang ditampilkan di situs web yang tertaut di atas), ini sudah cukup untuk memahami tutorialnya. Ada buku serupa
"Soket Multicast, Soket Multicast", Makofske dan Almeroth.
Ini mencakup materi yang mungkin Anda perlukan jika Anda mempelajari contoh multicast dalam distribusi.
Lanjutan:
Sumber: www.habr.com
