본문 바로가기

IT/OMNET++

[OMNET++] Messages and Packets(3)

<본 게시글은 OMNET++SimualtionManual을 공부하면서 개인적으로 저장해놓은 글입니다>

Information About the Last Transmission

아래 함수들은 packet을 전송하는 동안 걸린 시간을 구하는 함수인 getDuration()과 수신이 시작되었는지를 알려주는 bool형태의 isReceptionStart() 함수다.

<getDuration 함수는 패킷의 전송 시간을 측정할 때 유용하다>

 

Identifying the Protocol

dynamic_cast 연산자를 사용하면 해당 메시지가 특정 프로토콜인지 판별이 가능하며 사용법은 아래와 같다.

<해당 message(msg)가 IPv6Datagram이면 해당 메시지를 IPv6Datagram으로 변환하는 예시> 

 

Encapsulating Packets

encapsulationdecapsulation에 관련된 함수는 다음과 같다.

<encapsulation과 decapsulation>

encapsulate()를 통해 encapuslatespacket은 해당 packetlength를 포함한 packet이 된다. 가령, A packetB packetencapuslate 되었다면 AlengthA+B가 된다.

만일 encapsulate()를 두 번 할 경우, 에러가 발생하게 되며, 모듈에 의해 소유되지 않은 encapsulated packet 또한 에러가 발생한다.

반대로 decapsulation의 경우, encapsulate된 패킷의 길이를 제거한다.(zero length제외)

만일 결과값이 음수인 경우, 에러가 발생한다.

getEncapsulatedPacket() 함수는 encapsulated packet의 포인터를 반환하거나, 아무 packetencapsulate되지 않은 경우 nullptr을 반환한다.

 

다음은 위 함수들의 사용 예제이다.

<encapsulation 된 packet은 해당 packet만큼 length가 추가된다>

 

다음은 payload를 구하는 방법이다.

<decapsulate하면 payload를 구할 수 있다>

'IT > OMNET++' 카테고리의 다른 글

[OMNET++] 시뮬레이션 도중 발생한 문제  (0) 2020.04.21
[OMNET++] Messages and Packets(2)  (0) 2020.04.06
[OMNET++] Messages and Packets(1)  (0) 2020.04.04