Riverbed Modeler(OPNET) SITL 모듈을 사용하면 Riverbed Modeler(OPNET) 시뮬레이터와 실세계 장비를 연결하는 SITL 게이트웨이 노드(sitl_virtual_gateway_to_real_world)에서는 시뮬레이션 패킷과 실세계 패킷 간의 변환이 일어난다. 이 때 OPNET 17.5 PL5 버전("OPNET Modeler 17.5 PL5 발표" 참조)을 기준으로 SITL에서 패킷 변환이 지원되는 프로토콜 및 관련된 Riverbed Modeler(OPNET) 패킷 포맷은 다음과 같다. IPv6, ICMPv6, IGMPv2, WLAN 프로토콜에 대한 지원은 15.0 PL0 버전에서, BGP 프로토콜에 대한 지원은 17.1 PL1 버전("OPNET Modeler 17.1 PL1 발표" 참조)에서 추가된 것이다.

 

- Ethernet : ethernet_v2
- ARP : arp_v2
- IPv4 : ip_dgram_v4
- IPv6 : ip_dgram_v6
- ICMPv4/v6 : ip_icmp_echo
- IGMPv2 : ip_igmp
- TCP : tcp_seg_v2
- UDP : udp_dgram_v2
- RIPv1/v2 : rip_message2
- OSPFv2 : ospf_hello_v2, ospf_dbase_desc_v2, ospf_ls_request_v2, ospf_ls_update_v2, ospf_ls_ack_v2
- BGP : bgp_keepalive_packet, bgp_notification_packet, bgp_open_packet, bgp_update_packet
- WLAN : wlan_mac

 

이외에 SITL에서 패킷 변환을 지원하지 않는 프로토콜 패킷에 대한 전달이 요구되는 경우에는 unformatted 패킷을 사용하여 변환되지 않은 형태로 전달한다.

 

Posted by 신상헌
,

"SITL 사용시 NetBIOS 트래픽 처리"에서 설명한 것처럼 SITL 시뮬레이션 수행시에 Riverbed Modeler(OPNET)에서 처리할 수 없는 패킷이 실세계 장비로부터 유입되면 에러를 발생시키며, NetBIOS 패킷은 이러한 문제를 일으키는 대표적인 사례 이다.
Riverbed Modeler(OPNET)에서 처리할 수 없는 실세계 트래픽 문제를 해결하는 한가지 방법은 SITL 패킷 필터를 사용하여 해당 패킷들이 Riverbed Modeler(OPNET)으로 유입되지 않도록 차단하는 것이다. 그런데, 이 방법의 경우 문제를 일으키는 패킷들을 일일히 SITL 패킷 필터에 정의해주어야 한다는 불편함이 있다. 즉, NetBIOS 트래픽처럼 문제를 일으키는 패킷들이 있다면, 해당 패킷의 특성을 분석해서 SITL 패킷 필터에 추가해 주어야 한다.
이러한 불편함 없이 Riverbed Modeler(OPNET)에서 처리할 수 없는 실세계 트래픽 문제를 해결하는 또 다른 방법은 해당 패킷들이 수신되면 폐기하도록 Riverbed Modeler(OPNET) 프로세스 모델을 수정하는 것이다. Riverbed Modeler(OPNET)에서 처리할 수 없는 실세계 트래픽들 중에서도 실제로 문제를 일으키는 트래픽들은 대부분 UDP를 사용하는 브로드캐스트 트래픽이다. 따라서, UDP 프로세스 모델에 수신된 패킷들 중 Riverbed Modeler(OPNET)에서 정상적으로 처리할 수 없는 패킷들만 미리 골라서 폐기시키는 기능을 추가해주면 시뮬레이션이 중단되는 에러를 근본적으로 해결할 수 있다.

물론 완벽한 해결을 위해서라면 TCP 프로세스 모델에도 동일한 기능을 추가해주어야 한다. 하지만, 브로드캐스트 트래픽은 일반적으로 TCP를 사용하지 않으므로, 사용자가 의도적으로 발생시키지 않으면 Riverbed Modeler(OPNET) 시나리오 상의 노드를 목적지로 하는 TCP 트래픽이 있는 경우는 거의 없다.

 

Posted by 신상헌
,

SITL을 사용한 시뮬레이션 수행시 다음과 같이 패킷 억세스 에러 및 이와 연속된 Invalid Memory Access 에러로 인하여 시뮬레이션이 중단되는 경우가 있다.

 


이러한 문제가 발생하는 원인은 OPNET에서 처리할 수 없는 패킷이 실세계 장비로부터 유입되었기 때문이다. NetBIOS 패킷은 이러한 문제를 일으키는 대표적인 사례인데, 단순히 윈도우즈 PC를 SITL 포트에 연결시켜 두기만 해도 발생한다. 하지만, 대부분의 경우 NetBIOS 패킷은 시뮬레이션 목적과는 관련이 없는 경우가 많다. 이런 경우에는 NetBIOS 패킷이 OPNET으로 유입되지 않도록 SITL 패킷 필터("SITL 패킷 필터" 참조)를 설정해주면 간단히 문제를 해결할 수 있다.

 

Posted by 신상헌
,

SITL 시뮬레이션을 위한 sitl_virtual_gateway_to_real_world 노드 모델은 사용자가 설정할 수 있는 몇가지 속성들을 제공하는데, 그 중 한 가지가 "Incoming Packet Filter String" Attribute이다.

 


Incoming Packet Filter String 속성은 해당 시뮬레이션에 필요하지 않은 패킷들을 차단하고 필요한 패킷들만을 시뮬레이션에 사용하기 위한 것이며, 필터 기술 방식은 BPF(Berkely Packet Filter) 문법을 따른다.
BPF 문법은 TcpDump[1], WinPCap[2], Wireshark[3] 등에서도 사용되고 있으므로, 해당 도구의 매뉴얼을 참고하여도 된다. 다음은 TcpDump, WinPCap, Wireshark의 필터링 문법에 대한 설명 페이지 이다.

- http://www.tcpdump.org/tcpdump_man.html
- http://www.winpcap.org/docs/docs_412/html/group__language.html
- http://wiki.wireshark.org/CaptureFilters

 

한가지 주의해야할 사항은 Wireshark의 경우 2 종류의 필터(Capture Filter와 Display Filter)가 사용되고 있으며, 이중 Capture FIlter만이 BPF 문법을 사용한다. 즉, Display Filter에 사용되는 표현은 SITL 패킷 필터에 사용할 수 없다.

 

[1] http://www.tcpdump.org/
[2] http://www.winpcap.org/
[3] http://www.wireshark.org/

 

Posted by 신상헌
,

SITL 게이트웨이를 포함하는 시나리오 수행시 다음 그림과 같이 bufferoverflowu.lib 파일을 찾을 수 없다는 에러가 발생하는 경우가 있다.

 

 

여기에서 에러의 원인에 대한 주요한 메시지는 다음과 같다.

----
Errors reported by the binder program follow
(these messages have been saved in (C:\Users\opnet\op_admin\tmp\bind_err_7972):
LINK : fatal error LNK1104: 'bufferoverflowu.lib' 파일을 열 수 없습니다.

이 에러는 bufferoverflowu.lib 라이브러리 파일을 무시하도록 Common Network Repositories Flags를 설정하면 해결된다.

Posted by 신상헌
,