1 / 30

트래픽 발생기

Chapter 12:. 트래픽 발생기. 2003. 3. IP 헤더. 페이로드. IP 데이터그램. 2 계층 프로토콜 헤더. MTU. 2 계층 프로토콜 트레일러. 프레임. 트래픽 발생기 관련 개념 이해. MTU(Maximum Transmission Unit) 프레임에 캡슐화 될 수 있는 데이터의 최대 길이 데이터링크 계층의 MTU 가 데이터그램보다 작을 경우 단편화 하여 전달 물리 네트워크 별 MTU. Ping 테스트를 통한 MTU 확인.

Download Presentation

트래픽 발생기

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 12: 트래픽 발생기 2003. 3.

  2. IP 헤더 페이로드 IP 데이터그램 2계층 프로토콜 헤더 MTU 2계층 프로토콜 트레일러 프레임 트래픽 발생기 관련 개념 이해 • MTU(Maximum Transmission Unit) • 프레임에 캡슐화 될 수 있는 데이터의 최대 길이 • 데이터링크 계층의 MTU가 데이터그램보다 작을 경우 단편화 하여 전달 • 물리 네트워크 별 MTU

  3. Ping 테스트를 통한 MTU 확인 • 예제를 통해 211.180.125.1 의 MTU는 1400 ~1500 바이트 사이임을 확인 • -f 옵션 : 단편화 하지않고 패킷을 전달 • -l 옵션 : 전송할 데이터의 버퍼 사이즈 지정 단편화 하지 않고, 1400 바이트의 데이터 전송 가능 1500바이트 전송 시 단편화 필요

  4. 단편화 (Fragmentation) • IP 헤더의 단편화 관련 필드 • 식별자(Identification) : 16비트 • 단편화 된 데이터그램은 동일한 식별자를 가짐 • 플래그(Flag) : 3비트 • 첫번째 비트 : 사용 안 함 • 두번째 비트 : 1(단편화 할 수 없음), 0(단편화 가능) • 세번째 비트 : 1(단편이 있음), 0(마지막 혹은 단일 단편) • 단편 옵셋(Fragmentation offset) : 13비트 • 단편 조합 시 조각의 위치를 나타냄 • 데이터그램 8바이트 단위로 측정

  5. IP 데이터그램 IP 데이터 (2000바이트) IP 헤더 UDP 헤더 UDP 데이터 (1992바이트) 20바이트 8바이트 IP 헤더 UDP 헤더 1472바이트 IP 헤더 520 바이트 IP 데이터 (1480바이트) IP 데이터 (520바이트) 패킷 패킷 단편화 예제 • 데이터그램의 단편화 예제 • IP 페이로드에 2000바이트의 데이터 실림 • MTU가 1500바이트인 네트워크

  6. 웹서버 3. 응답 S C 웹서버 2. 요청 S 1. 요청 4. 응답 웹클라이언트 - 요청 (인터넷 브라우저) S : 서버(Server) C : 클라이언트(Client) C 서버/클라이언트 구조의 이해 • 클라이언트 : 명시한 기능을 요청 • 데이터 전송 혹은 다양한 기능 수행을 요청 • 서버 : 클라이언트에 의해 명시된 기능을 수행하고 응답 • 데이터 전송 혹은 다양한 기능에 대한 응답

  7. 서버 클라이언트 Real Time T1 서버의 데이터 송신 지점 송신 지연 클라이언트의 데이터 수신 지점 T2 D source = T2 – T1 D destination = T4 – T3 RTT = D source + D destination 클라이언트의 데이터 송신 지점 T3 수신 지연 서버의 데이터 수신 지점 T4 트래픽 지연 • 송/수신 지연 및 일주 지연 • 송신 지연 : 서버에서 전송한 데이터를 클라이언트에서 수신할 때까지 경과 시간 • 수신 지연 : 클라이언트에서 데이터를 보내고 서버에서 받을 때까지 걸리는 시간 • 일주 지연 (RTT, Round Trip Time) : 송신지연 + 수신지연 • 지연 원인 • 전송 시간, 스위칭 시간, 라우터의 경로 설정 시간 등

  8. Real Time 4 3 2 1 서버 클라이언트 4 3 2 1 Delay Jitter Delay Jitter Delay Jitter = discard Delay Jitter 지터 • 지연의 변화량 • 네트워크 상에서 데이터 송/수신 시 지연의 가변적인 변화량을 나타냄 • 지터가 지정된 범위를 초과한 경우 제거

  9. 트래픽 발생기 • 트래픽 생성 및 원하는 양의 데이터 전송 • 트래픽 발생기의 필요성 • QoS(Quality of Service) 측정 • 복잡하고 다양한 네트워크를 연구 시 실험용 • 트래픽 발생기의 용도 • 통신망 관리 시스템 제작 시 • 현재 망의 분석 시 • 망의 대역폭 확인 시 • 다양한 속도의 데이터 전송 시

  10. 프리엠블 & SFD 이더넷 헤더 IP 헤더 UDP 헤더 데이터 이더넷 트레일러 512바이트 4바이트 9바이트 14바이트 20바이트 8바이트 … Tn(sec)+ m1(msec) Tn(sec) + m2(msec) Tn+1(sec) +m1(msec) (double) ReceiveAmount = nReadSum * 8 / 1024; - ReceiveAmount = 수신 데이터량(Kbps) - nReadSum = 초당 수신 Byte 수의 합 트래픽 전송 패킷 및 전송량 • 전송 패킷 포멧 • UDP 기반으로 512 바이트의 데이터 전송 예 • 단위 시간당 전송량 • 초당 입력된 비트 단위의 데이터량 계산

  11. 식별자(16비트) 플래그(3비트) 단편화 오프셋(13비트) IP 데이터그램(5300바이트) IP 헤더 20바이트 … IP 헤더 (20바이트) IP 헤더 (20바이트) 연습 문제 • 사용하는 시스템이 속한 네트워크의 MTU 확인 • 5300 바이트의 IP 데이터그램을 MTU가 1500 바이트인 네트워크로 전달 시 단편화 • 단편화 조각의 개수 • 단편의 IP 데이터그램 식별자, 플래그 단편 옵셋 정보 • 식별자는 00001010에서 1씩 증가 가정

  12. 트래픽 발생기 프로그램 작성

  13. 트래픽 발생기 작성 • 다이얼로그 기반의 프로젝트 생성 • 헤더파일 경로 : C:\AMAN2002\include • 라이브러리 파일 경로 : C:\AMAN2002\lib • Nmtgen 라이브러리 모듈 추가 : nmtgend.lib

  14. 대화상자 디자인 • TGen 메인 대화상자 디자인 Edit Box IPADDRESS 6 1 2 7 8 Button Check Box 3 9 4 10 List Control 5

  15. Control 속성

  16. 이벤트 처리

  17. CNmtGen 객체 생성 • CNmtGen 객체 생성 BOOL CTGenDlg::OnInitDialog() { … m_pNmtGen = new CNmtGen(this->m_hWnd); } • 데이터 전송 이벤트와 매핑 함수 연결 BEGIN_MESSAGE_MAP(CTGenDlg, CDialog) //{{AFX_MSG_MAP(CTGenDlg) … //}}AFX_MSG_MAP // 데이터 전송 시 1초마다 메시지를 호출 ON_MESSAGE(UM_MESSAGE_SEND, OnSend) END_MESSAGE_MAP()

  18. 데이터 전송 시작 void CTGenDlg::OnBUTTONSendStart() { UpdateData(TRUE); GetDlgItemText(IDC_IPADDRESS, m_strIpAddr); if(m_strIpAddr == "0.0.0.0") return; m_pNmtGen-> SetIpAddress(m_strIpAddr); m_pNmtGen-> SetPortNumber(m_EDIT_shPortNumber); if (m_iCheckBestEffort == 1) m_pNmtGen-> SetRequestTransferSpeed(0); else m_pNmtGen-> SetRequestTransferSpeed(m_EDIT_iSpeed); m_pNmtGen-> SendStart(); }

  19. 전송한 시간 및 데이터량 정보 LRESULT CTGenDlg::OnSend(WPARAM wParam, LPARAM lParam) { // lParam에 입력된 주소 값을 t_SendData * 형으로 전달받음 t_SendData *pData = (t_SendData *)lParam; … lvitem.pszText = (LPTSTR)(LPCSTR)(pData->strTime); m_LIST_SendResult.InsertItem(&lvitem); CString data = _T(""); data.Format("%lf", pData->dCount); … lvitem.pszText = (LPTSTR)(LPCSTR)data; lstrcpy(lvitem.pszText, data); m_LIST_SendResult.SetItem(&lvitem); return 0L; }

  20. 전송 종료 및 프로그램 종료 • 데이터 전송 종료 void CTGenDlg::OnBUTTONSendStop() { m_pNmtGen->SendStop(); } • 프로그램 종료 void CTGenDlg::OnOK() { delete m_pNmtGen; CDialog::OnOK(); }

  21. 트래픽 수신기 프로그램 작성 • 다이얼로그 기반의 프로젝트 생성 • 헤더파일 경로 : C:\AMAN2002\include • 라이브러리 파일 경로 : C:\AMAN2002\lib • Nmtrcv 라이브러리 모듈 추가 : nmtrcvd.lib

  22. 대화상자 디자인 • TRcv 메인 대화상자 디자인 3 4 Button 5 List Control 1 2 Edit Box

  23. Control 속성

  24. 이벤트 처리

  25. CNmtRcv 객체 생성 및 이벤트 • CNmtRcv 객체 생성 BOOL CTRcvDlg::OnInitDialog() { … // CNmtRcv 객체 초기화 //GetWndHandle() 함수를 통해 매개 변수로 CWnd의 m_hWnd 변수 전달 m_CNmtRcv.GetWndHandle(this->m_hWnd); … } • 데이터 수신 이벤트와 함수 매핑 BEGIN_MESSAGE_MAP(CTRcvDlg, CDialog) //{{AFX_MSG_MAP(CTRcvDlg) … //}}AFX_MSG_MAP // 사용자 정의 매크로 선언 ON_MESSAGE(UM_MESSAGE_RECEIVE, OnReceive) END_MESSAGE_MAP()

  26. 포트 번호 변경 void CTRcvDlg::OnChangeEDITPortNumber() { CString data = _T(""); m_EDIT_PortNumber.GetWindowText(data); unsigned short port = (unsigned short) atoi(data); m_CNmtRcv.SetPortNumber(port); }

  27. 데이터 수신 이벤트 처리 LRESULT CTRcvDlg::OnReceive(WPARAM wParam, LPARAM lParam) { CString data = _T(""); t_RecvData* tRcvData = (t_RecvData *)lParam; // 리스트 컨트롤에 시간 정보 출력하기 … lvitem.pszText = (LPTSTR)(LPCSTR)tRcvData->strTime; lstrcpy(lvitem.pszText, tRcvData->strTime); m_LIST_ReceiveResult.InsertItem(&lvitem); // 리스트 컨트롤에 데이터량 출력하기 data.Format("%lf", tRcvData->dCount); … lvitem.pszText = (LPTSTR)(LPCSTR)data; lstrcpy(lvitem.pszText, data); m_LIST_ReceiveResult.SetItem(&lvitem); return 0L; }

  28. TGen과 TRcv 실행 모습 • 목적지 211.180.125.117 시스템의 포트 6001번으로 데이터 전송 • 초당 1000Kbps의 데이터 전송

  29. Dummy Hub IP : 211.180.125.122 CPU : x86 Family 6 Model 8 Stepping 10 GenuineIntel ~ 1000 Mhz OS : Windows 98 Memory : 523,760 KB RAM IP : 211.180.125.117 CPU : x86 Family 6 Model 8 Stepping 10 GenuineIntel ~ 1000 Mhz OS : Windows 2000 Professional Memory : 523,760 KB RAM 네트워크 최대 대역폭 검증 • 해당 네트워크의 대역폭은 100Mbps 미만임을 확인

  30. 참고 문헌 • 서승호 외, AMAN2002를 이용한 TCP/IP 프로토콜 분석 및 네트워크 프로그래밍, 정익사, 2002. • Jones Ohlund, “Network Programming Windows”, Microsoft. • Jones Ohlund, “Network programming for Microsoft Windows”, Microsoft. • Schmidt, Huston, “C++ Network Programming”, IN-DEPTH. • Anthony Jones and Jim Ohlund, “Network Programming Windows”, Microsoft. • 김영탁, 김종근, 조유제, 한기준 공저, “데이터 통신 및 컴퓨터 망”, 정익사, 1999. • W. Richard Stevens, “TCP/IP Illustrated, Volume I”, Addison wesley, 1996. • Fred Halsall, “Data Communications, Computer Networks and Open Systems”, Addison-wesley, 1995. • Avi Silberschatz, Peter Galvin, "Operating System concepts", Addison Wesley, 1998.

More Related