본문 바로가기

IT/OMNET++

[OMNET++] 시뮬레이션 도중 발생한 문제 위와 같이 queue에서 하나의 message를 받아와서 해당 message를 2개의 message로 나누어서 전송하려고 한다. 이를 위해 새로운 메세지를 하나 만들어서 첫 전송을 하고, 그 후 원래 있던 메세지의 packetLength를 조절하여 후에 보내려고 한다. 하지만, 위와 같은 에러가 발생한다... stackoverflow에 질문을 해봤는데 down vote를 많이 받으면 패널티가 발생하는걸 오늘 처음 알았다... 더보기
[OMNET++] Messages and Packets(3) Information About the Last Transmission 아래 함수들은 packet을 전송하는 동안 걸린 시간을 구하는 함수인 getDuration()과 수신이 시작되었는지를 알려주는 bool형태의 isReceptionStart() 함수다. Identifying the Protocol dynamic_cast 연산자를 사용하면 해당 메시지가 특정 프로토콜인지 판별이 가능하며 사용법은 아래와 같다. Encapsulating Packets encapsulation과 decapsulation에 관련된 함수는 다음과 같다. encapsulate()를 통해 encapuslates된 packet은 해당 packet의 length를 포함한 packet이 된다. 가령, A packet에 B packet이 .. 더보기
[OMNET++] Messages and Packets(2) Control Info protocol layers에서 패킷 교환을 하는 모듈을 구현한다. 하지만 전 게시글에서 설명한 packet의 정보들 외에도 protocol layers들 간의 통신에 있어서는 추가적인 정보가 패킷에 더해져야 한다. 대표적으로는 TCP는 IP에 특정 목적지 IP 주소를 내려 보내야 하고 IP는 IP header를 통해 TCP가 source address를 알도록 해야 하는데 이때 필요한 정보를 설정할 수 있다. 잘 쓰지 않는 기능 같지만, data packet에서 TCP CLOSE 같은 command를 포함하지 않을 시 dummy packet(empty cMessage)가 보내질 수 있다. Information About the Last Arrival packet을 보낸 시간과 도.. 더보기
[OMNET++] Messages and Packets(1) cMessage 와 cPacket cPacket은 통신 네트워크에서 network packets(frame, datagrams, transport packets 등)으로 사용되고 cMessage는 그 외 모든 경우에 사용된다. cMessage Field 1) name : string(const char *) 형의 이름 변수. 2) Message kind : 음수(0>x)인 경우는 시뮬레이션 library에서 값을 받지만, 0 이상(양수인 경우)은 어떠한 목적으로든 사용자가 사용이 가능하다. 메세지별로 기능이나 구분을 할 때 사용한다. 3) scheduling priority : 같은 arrival time값을 가질 경우 시뮬레이션 커널에서 전송 순서를 정할떄 사용하는 값이다. 거의 사용하지 않는다. 4).. 더보기