節(jié)點Node
在網(wǎng)絡術(shù)語中,任何一臺連接到網(wǎng)絡的計算設備被稱為主機,亦稱為終端。NS3是一個網(wǎng)絡模擬器,而非一個專門的因特網(wǎng)模擬器,為此我們避開術(shù)語“主機”,因為這個詞太容易讓人聯(lián)想到因特網(wǎng)和及其相關協(xié)議。因此,我們選用了一個來源于圖論,在其他網(wǎng)絡模擬器中亦廣泛使用的術(shù)語:節(jié)點。
NS3中基本計算設備被抽象為節(jié)點。節(jié)點由用C++編寫的Node類來描述。Node類提供了用于管理計算設備的各種方法。
可以將節(jié)點設想為一臺可以添加各種功能的計算機。為了使一臺計算機有效地工作,我們可以給它添加應用程序,協(xié)議棧,外設卡及驅(qū)動程序等。NS3采用了與此相同的模型。
信道
在現(xiàn)實世界中,人們可以把計算機連接到網(wǎng)絡上。通常我們把網(wǎng)絡中數(shù)據(jù)流流過的媒介稱為信道。當你把以太網(wǎng)線插入到墻壁上的插孔時,你正通過信道將計算機與以太網(wǎng)連接。
在NS3中,可以把節(jié)點連接到代表數(shù)據(jù)交換信道的對象上。在這里,基本的通信子網(wǎng)這一抽象概念被稱為信道,用C++編寫的Channel類來描述。
Channel類提供了管理通信子網(wǎng)對象和把節(jié)點連接至信道的各種方法。信道類同樣可以由開發(fā)者以面向?qū)ο蟮姆椒ㄗ远x。一個信道實例可以模擬一條簡單的線纜(wire),也可以模擬一個復雜的巨型以太網(wǎng)交換機,甚至無線網(wǎng)絡中充滿障礙物的三維空間。
幾個信道模型的實例,包括:CsmaChannel,PointToPointChannel和WifiChannel。舉例來說,CsmaChannel信道模擬了用于一個可以實現(xiàn)載波偵聽多路訪問的信道,這個信道具有和以太網(wǎng)相似的功能。
網(wǎng)絡設備
如果想把一臺計算機連接到網(wǎng)絡上,必須在計算機上安裝有網(wǎng)卡。一張網(wǎng)卡如果缺少控制硬件的軟件驅(qū)動是不能工作的。
在Unix/Linux系統(tǒng)中,外圍硬件被劃為“設備”。設備通過驅(qū)動程序來控制,而網(wǎng)卡通過網(wǎng)卡驅(qū)動程序來控制。在Unix/Linux系統(tǒng)中,網(wǎng)卡被稱為像eth0這樣的名字。
在NS3中,網(wǎng)絡設備這一抽象概念相當于硬件設備和軟件驅(qū)動的總和。NS3仿真環(huán)境中,網(wǎng)絡設備相當于安裝在節(jié)點上,使得節(jié)點通過信道和其他節(jié)點通信。像真實的計算機一樣,一個節(jié)點可以通過多個網(wǎng)絡設備同時連接到多條信道上。
網(wǎng)絡設備由用C++編寫的NetDevice類來描述。NetDevice類提供了管理連接其他節(jié)點和信道對象的各種方法,并且允許開發(fā)者以面向?qū)ο蟮姆椒▉碜远x。我們在本教程中將使用幾個特定的網(wǎng)絡設備的實例,它們分別是CsmaNetDevice,PointToPointNetDevice, 和WifiNetDevice。正如以太網(wǎng)卡被設計成在以太網(wǎng)中工作一樣,CsmaNetDevice被設計成在csma信道中工作,而PointToPointNetDevice在PointToPoint信道中工作,WifiNetNevice在wifi信道中工作。
應用程序
計算機軟件通??煞譃閮纱箢悾合到y(tǒng)軟件和應用軟件。系統(tǒng)軟件根據(jù)計算模型配置,并管理計算機中的各種資源,如內(nèi)存,處理器周期,硬盤,網(wǎng)絡等。系統(tǒng)軟件通常并不直接使用這些資源來完成用戶任務。用戶往往需要運行應用程序來完成一些特定的任務,而應用程序需要使用由系統(tǒng)軟件控制的資源。
通常,系統(tǒng)軟件和應用軟件的界線表現(xiàn)為特權(quán)級別的變化,而這種變化是通過操作系統(tǒng)的自陷功能(operating systemtraps)來實現(xiàn)的。在NS3中并沒有真正的操作系統(tǒng)的概念,更沒有特權(quán)級別或者系統(tǒng)調(diào)用的概念。然而,我們有應用程序的概念。正如“現(xiàn)實世界”中在計算機上運行應用程序以執(zhí)行各種任務一樣,NS3仿真環(huán)境中的應用程序在節(jié)點上運行來驅(qū)動模擬過程。
在NS3中,需要被仿真的用戶程序被抽象為應用。用Application類來描述。這個類提供了管理仿真過程中用戶層應用的各種方法。開發(fā)者應當用面向?qū)ο蟮姆椒ㄗ远x和創(chuàng)建新的應用。在本教程中,我們會使用Application類的兩個實例:UdpEchoClientApplication和UdpEchoServerApplication。這些應用程序包含了一個client應用和一個server應用來發(fā)送和回應仿真網(wǎng)絡中的數(shù)據(jù)包。