Class Hierarchy (Partial)
1. Node and Routing
노드는 아래 그림과 같이 node entry object와 classifiers로 구성된 복합 object이다.
NS에는 두가지 타입의 노드가 있다.
[unicast node]
unicast routing과 port classifier의 역할을 하는 address classifier를 갖는다.
[multicast node]
unicast 패킷으로부터 multicast 패킷을 분류하고 classifier와 multicast routing을 수행하는 multicast classfier를 갖는다.
Node (Unicast and Multicast)
NS에서는 unicast node가 디폴트 노드이다. multicast node를 생성하기 위해 사용자는 OTcl 스크립트를 명확히 알아야 하며 scheduler object를 생성한후 모든 노드들은 multicast node로 생성되어야 한다. 노드 타입을 명확히 한후에 사용자는 디폴트로 사용하던것보다 구체적인 routing protocol을 선택할수 있다.
Unicast
- $ns rtproto [type]
- type : Static, Session, DV, cost, multi-path
Multicast
- $ns multicast (right after set $ns [new Scheduler])
- $ns mrtproto [type]
- type : CtrMcast, DM, ST, BST
2. Link
사용자가 simulator object의 멤버함수인 duplex-link를 사용하여 link를 생성하고자 할때, simplex links는 아래와 같이 생성된다.
Link
한가지 주의할 것은 노드의 output queue는 simplex link object의 일부분으로서 수행된다.
패킷은 link delay를 시뮬레이트하는 Delay object로 넘겨진 queue로부터 dequeue된다. 그리고 queue에서 drop된 패킷들은 Agent/Null로 보내지고 그곳에서 버려진다.
TTL object는 수신된 각 패킷을 위해 Time To Live 파라미터를 계산하고, 패킷의 TTL field를 업데이트한다.
Tracing
NS에서 네트워크의 활동은 simplex links 여기저기를 추적하는 일이다.
만약 시뮬레이터에서 네트워크의 행동을 추적하도록 지시되었다면($ns trace-all file or $ns namtrace-all file), links는 아래 그림에서 보듯이 그 명령이 trace object 다음에 온후에 생성된다. 사용자는 create-trace {type file src dst} 명령을 사용하여 주어진 source와 destination 노드간의 type 형태의 trace objects를 생성할수 있다.
Inserting Trace Objects
각 삽입된 trace object (i.e. EnqT, DeqT, DrpT and RecvT)가 패킷을 수신할때, 다른 어떤 시뮬레이션 시간 소비없이 명시된 trace file을 write하고, 패킷을 다음 네트워크 object에서 넘긴다.
Queue Monitor
근본적으로, tracing objects는 자신이 위치한곳에서 패킷의 도착시간을 기록하도록 고안되었다. 비록 사용자가 trace로부터 충분한 정보를 얻더라도, 누군가가 특정 output queue 내부에서 무엇이 진행중인지 알고싶어한다. 예를들어, RED queue행동에 관심있는 사용자가 평균 queue size의 dynamics(?)와 현재 특정 RED queue의 queue size를 측정하기 바랄수있다.
(즉, queue 모니터링이 필요하다) queue 모니터링은 다음그림과 같이 queue monitor objects와 snoop queue objects를 사용하여 이룰수 있다.
Monitoring Queue
패킷이 도착할때 snoop queue object는 이 상황을 queue monitor object에게 통보한다.
이러한 정보를 사용하는 queue monitor는 queue를 모니터한다.
snoop queue object는 그림에 나오진 않았지만, tracing object와 같이 사용할수 있다는걸 명심해라.
♡ Packet Flow Example
The network consist of two nodes (n0 and n1) of which the network addresses are 0 and 1 respectively. A TCP agent attached to n0 using port 0 communicates with a TCP sink object attached to n1 port 0. Finally, an FTP application (or traffic source) is attached to the TCP agent, asking to send some amount of data.
Packet Flow Example
Note that the above figure does not show the exact behavior of a FTP over TCP. It only shows the detailed internals of simulation network setup and a packet flow.