Presentation is loading. Please wait.

Presentation is loading. Please wait.

TERM PROJECT 설명 문서 Subject : SNMP Manager NETWORK PROGRAMING.

Similar presentations


Presentation on theme: "TERM PROJECT 설명 문서 Subject : SNMP Manager NETWORK PROGRAMING."— Presentation transcript:

1 TERM PROJECT 설명 문서 Subject : SNMP Manager NETWORK PROGRAMING

2 SNMP의 개요 SNMP는 Simple Network Management Protocol의 약자
네트워크 관리를 위해 사용되는 간단한 프로토콜 1970년대 후반 네트워크 장치인 연결 정보를 얻기 위해 ICMP가 사용되었으나, 네트워크의 발전과 함께 지금은 기존의 프로토콜을 향상 시킨 SNMP가 사용 SNMP는 응용계층에서 동작하고 전송 계층 프로토콜로는 UDP(User Datagram Protocol)를 사용

3 SNMP의 구성 Management Station SNMP Client
SNMP Manager SNMP Agent SNMP Agent SNMP Agent SNMP Client SNMP Manager는 정보를 수집하기 위해서 Request 메시지를 SNMP Agnet에게 전송하고 Agent는 Response 메시지를 Manager에게 전송한다.

4 SNMP의 구성 SNMP는 Manager 와 Agent의 구조로 이루어짐
SNMP Agent는 각 네트워크 장치(대부분의 workstation과 bridge, router, switch, hub 등)에 포함되어 정해 놓은 규격에 따라 장치의 정보를 수집하고 보관하는 역할 SNMP Manager는 SNMP Agent에게 정보를 요청하여 그 정보를 가지고 네트워크를 관리 하는 역할 SNMP Agent 는 Client 역할을 하게 되고 SNMP Manager는 Server 역할

5 MIB(Management Information Base)
관리객체 : SNMP가 관리해야 할 네트워크 상의 요소들 MIB : 관리객체를 효과적으로 관리하기 위해서 이를 분류한 것 MIB에는 시스템 정보, 네트워크 사용량, 네트워크 인터페이스 정보 등이 포함 MIB 객체들은 관리하기 편하도록 Tree 구조를 가짐

6 MIB의 구조                                                                             ※ ()안의 숫자는 해당 관리객체의 번호를 나타냄

7 OID(Object IDentifier)
각 MIB옆에 붙어 있는 숫자가 MIB의 OID번호 예를 들어 ‘internet’의 OID값은 ※ OID 표기법 (3종류의 표기법) internet OBJECT IDENTIFIER := { iso(1) org(3) dod(6) internet(1) } internet OBJECT IDENTIFIER := { } internet OBJECT IDENTIFIER :=

8 SNMP 명령어 SNMPGET : SNMP Manager에서 SNMP Agent로 특정 정보를 요청하기 위해서 사용
System.sysDescr.0 에 저장되어 있는 시스템 사양 정보를 가져옴

9 SNMP 명령어 SNMPGETNEXT : 기본적으로는 GET과 동일. SNMP에서 각 정보들은 계층적 구조로 관리. 동일 계층의 다음 정보들을 가지고 오고 싶을 때 GETNEXT를 사용. MIB 트리에서 system.sysDescr.0 다음 노드에 저장되어 있는 System.sysObjectID.0 의 정보를 가져 옴

10 SNMP 명령어 SNMPWALK : 기본적으로 GET 명령어를 확장한 형태. 트리 구조에서 그 바로 아래 자식 노드의 정보를 한번에 가져 올 때 사용. system 관리객체 그 하위에 있는 sysDescr,sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices 의 정보를 한꺼번에 가져옴

11 SNMP 명령어 SNMPSET : SNMP Manager에서 SNMP Agent로 특정 값을 설정하기 위해서 사용
System.sysContact.0 관리객체의 정보를 로 변경함

12 SNMP 명령어 SNMPTRAP : SNMP Agent에서 통보해야 될 어떤 정보가 발생했을 때(임계치를 넘는 네트워크 자원 사용 등) SNMP Manager에게 해당 상황을 알리기 위해서 사용.(SNMP Agent의 명령어)

13 Message 송/수신 SNMP 프로토콜은 기본적으로 어떤 정․보를 요청하는 메시지와
이에 대한 응답메시지로 이루어 지며 그 모습은 아래와 같음                                                         

14 SNMP Packet 구조 Version : SNMP의 버전번호
요즘은 Version 2c 를 많이 사용. Community : 인증, 접근방침, proxy의 특성을 정의하는 하나의 SNMP Agent와 여러 SNMP Manager 사이의 관계 한 SNMP Agent는 여러 Community를 가질 수 있으나, 그 Agent내에서 Community 각각의 이름은 서로 달라야 함 Community의 이름은 패스워드의 역할을 하므로, SNMP Manager로부터의 모든 메시지는 이름을 포함해야 함

15 SNMP Packet 구조 GetRequest/GetNextRequest/SetRequest Packet 구조
PDU type : Get, GetNext, Response, Set 등 PDU 종류 ( GetRequest : 0, GetNextRequest : 1, SetRequest : 2, GetResponse : 3, Trap : 4 ) Request ID : 순서번호로서, 요청과 응답을 일치시키는데 사용 3번째 필드와 4번째 필드는 사용하지 않으므로 0 으로 초기화

16 SNMP Packet 구조 GetResponse 구조
PDU type : Get, GetNext, Response, Set 등 PDU 종류 표시 ( GetRequest : 0, GetNextRequest : 1, SetRequest : 2, GetResponse : 3 ) Request ID : 순서번호로서, 요청과 응답을 일치시키는데 사용 Error Status : SNMP Agent가 전송한 Error 종류 Error index : 오류를 발생시킨 변수가 어는 것인가를 식별. 응답 만 사용. 상태 이름 설명 noError 에러 없음 1 tooBig SNMP Agent 가 받을 수 있는 메시지의 크기를 초과 2 noSuchName 존재하지 않는 변수가 지정 3 badValue 무효인 값이나 문맥이 포함 4 readOnly 읽기전용 정보를 변경하려 함 5 genErr 그 밖의 에러

17 SNMP Packet 구조 Trap Packet 구조 PDUtype : PDU의 종류가 무엇인지 알림
enterprise : trap 을 생성하는 네트워크 관리 서브시스템임을 인식. 이 값은 시스템 그룹의 sysObjectID로부터 결정 agent-addr : trap을 생성하는 오브젝트의 IP 주소 generic-trap : 미리 정의된 trap 형식 중의 하나 specific-trap : 세분화된 trap의 성질 혹은 명세 time-stamp : 초기화 시간에서부터 trap이 발생한 시간까지를 기록 variable-binding : trap과 관련된 추가 정보. trap은 송신자의 상태를 알리는데 도움이 될 수 있는 추가의 변수 리스트를 포함

18 Generic trap 필드의 속성값 coldStart(0) : 송신하는 SNMP 개체는 에이전트의 구성이나 프로토콜 개체의 구현이 변경되어지는 경우에 스스로 재초기화 할 수 있음. 전형적으로 이것은 충돌이나 주요 결함에 의한 예기치 않은 재시작임. warmStart(1) : 송신하는 SNMP 개체는 에이전트의 구성이나 프로토콜 개체의 구현이 변경되어지는 경우와 관계없이 스스로 재초기화 할 수 있음. 전형적으로 이것은 정해진 재시작임. linkDown(2) : 에이전트의 통신 링크 중 하나에 결함이 생겼음을 알림. variable binding의 처음은 참조하고자 하는 인터페이스의 ifIndex의 이름과 값임. linkUp(3) : 에이전트의 통신 링크가 가동되었음을 알림. variable binding의 처음은 참조하고자 하는 인터페이스의 ifIndex의 이름과 값을 말함.  authenticationFailure(4) : 송신하는 프로토콜 개체가 인증에 실패했다는 메시지를 받았음을 알림. egpNeighborLoss(5) : EGP이웃이 사라졌거나 이웃 관계가 더 이상 존재하지 않을 때 이를 알림 enterpriseSpecific(6) : enterpriseSpecific은 표준 Trap을 제외한 그 밖의 상태를 알리고자 하는데 사용.

19 SNMP Agent 설치 (Windows)

20 SNMP Agent 설치 (Windows)
제어판 -> 관리도구 -> 서비스 SNMP Service의 상태가 ‘시작됨’ 상태인지 확인 SNMP Service 의 속성창을 선택

21 SNMP Agent 설치 (Windows)
SNMP Service 의 속성창을 선택 로그온 탭에서 ‘계정지정’ 을 선택하고 윈도우의 사용자 이름과 암호를 입력 에이전트 탭에서 임의의 연락처와 위치를 입력

22 SNMP Agent 설치 (Linux) 에서 알맞은 버전의 SNMP Release 를 다운 (리눅스 버전이 낮으면 너무 높은 버전의 snmp는 설치가 안될 수 있음) 혹은 리눅스의 패키지 관리자를 통해 설치가 가능 터미널에서 설치 설치도 가능 : yum – y install net-snmp

23 SNMP Agent 설치 (Linux) 정상적인 설치가 이루어 졌다면 설정 -> 서비스 를 통해 Snmp Agent가 제대로 돌아 가고 있는지 확인 가능

24 SNMP Agent 설치 (Linux) Snmpd의 설정을 변경 해주어야 함.
터미널에서 # find / -name snmpd.conf 를 통해 파일의 위치를 찾음. 문서 에디터 툴을 사용해 snmpd.conf 의 다음 부분을 아래와 같이 바꿈.

25 SNMP Agent 설치 (Linux) Snmpd의 설정을 변경 해주어야 함.
터미널에서 # find / -name snmpd.conf 를 통해 파일의 위치를 찾음. 문서 에디터 툴을 사용해 snmpd.conf 의 다음 부분을 아래와 같이 바꿈.

26 Term Project 과제 SNMP 기본 명령어 구현 관리할 Agent 등록하기 등록된 SNMP Agent의 리스트 보기
연결된 회선의 정보 받아오기 Agent의 정보 변경하기 Traffic Check 하기 사용중인 회선의 실시간 속도 보기 회선속도가 일정치 이하면 경고 메시지 출력하기 트래픽이 일정 수치 이상/이하가 되면 경고 메세지 출력하기 일정시간 동안의 회선속도 평균 저장하기 일정시간 동안의 Traffic 평균 저장하기 각 Agent들의 통신상태 표시하기 회선속도와 트래픽에 대한 로그파일 기록보기 API 를 사용하지 않고 PDU 생성 (고급기능) Specific Trap 을 생성하는 Client 구현(고급기능)

27 Term Project 과제 1. SNMP 기본 명령어 구현 - SNMPGET, SNMPGETNEXT, SNMPSET,
SNMPWALK 4가지의 기본 명령어를 구현 할 수 있어야 함.

28 Term Project 과제 2. 관리할 Agent 등록하기 - 3개 이상의 Agent를 등록해서 관리 할 수 있도록 하여야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(Og, s(E)tup, (Q)uit Command> A [A] (L)ist, (A)dd, (D)elete, (B)ack Command> A [A IP주소] 이 등록 되었습니다.(관리번호1) Command> D 1 [D AGENT관리번호(0번일 경우 전체 Agent를 삭제)] 이 삭제 되었습니다.

29 Term Project 과제 3. 등록된 SNMP Agent의 리스트 보기
사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> L [L] 현재 등록된 SNMP Agent IP주소 관리번호

30 Term Project 과제 4. Agent 정보 받아오기
- 등록된 에이전트들의 시스템 정보를 받아 올 수 있어야 함. (시스템 이름, 시스템 사양, 시스템 위치, 관리자 정보 등) 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> I [I] (I)nterface, (S)ystem Command> S 1 [S AGENT관리번호(0번일 경우 전체 Agent를 출력)] 시스템 정보 시스템 이름 : Test Agent 시스템 사양 : Linux localhost. Localdomain fc8 … 시스템 위치 : Networdk Lab. 관리자 정보 :

31 Term Project 과제 5. 연결된 회선의 정보 받아오기
- 에이전트들이 사용하는 회선에 대한 기본 정보를 받아 올 수 있어야 함. (회선속도, MTU 등) 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> I [I] (I)nterface, (S)ystem Command> I 1 [I AGENT관리번호(0번일 경우 전체 Agent를 출력)] 회선 정보 Maximum Transmission Unit is 1500 Byte. 사용하는 회선은 100Mbps 회선입니다.

32 Term Project 과제 6. Agent의 정보 변경하기 – 에이전트들의 시스템 정보 중 몇 개를 변경 할 수 있어야 함. (시스템 이름, 시스템 위치, 관리자 정보) 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> M 1 [M AGENT관리번호(0번일 경우 전체 Agent를 출력)] [수정할 항목] (1) sysName (2) sysLocation (3) sysContact Command> 1 변경할 값을 입력하세요 : TestAgent sysName 의 값이 TestAgent 로 변경되었습니다.

33 ======================== Agent 관리 =======================
Term Project 과제 7. Traffic Check 하기 - Agent가 송수신 하는 데이터의 트래픽을 그래프로 표시 할 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> T 1 [T AGENT관리번호(0번일 경우 전체 Agent를 출력)] 의 트래픽 [12:00:00] |============= (1000 packets) [12:00:30] |================= (1200 packets) [12:01:00] |=============== (1100 packets) [12:01:30] |=============================== (2000 packets) [12:02:00] |============= (1000 packets)

34 Term Project 과제 8. 사용중인 회선의 실시간 속도 보기 - Agent의 속도를 실시간으로 표시해줄 수 있어야 함.
사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> S 1 [S AGENT관리번호(0번일 경우 전체 Agent를 출력)] 의 현재 통신 속도 [12:00:00] |========== (10 bps) [12:00:30] |============ (12 bps) [12:01:00] |=============== (15 bps) [12:01:30] |========== (10 bps) [12:02:00] |=========== (11 bps)

35 Term Project 과제 9. 회선속도가 일정 수치 이하면 경고 메시지 출력하기 - 회선속도가 일정 수치 이하로 떨어지면 화면에 회선속도 저하에 대한 경고 메시지를 출력해 줄 수 있어야 함. 이 때 일정 수치는 사용자로부터 입력 받을 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> [경고] ERROR_LOW_SPEED “에이전트의 회선상태가 양호하지 못합니다.” Command> E S 1 [E S or T Agent관리번호] 회선속도 하한을 입력하시오(bps)> 200

36 Term Project 과제 10. 트래픽이 임계치 이상이 되면 경고 메세지 출력하기
– 회선의 트래픽이 일정 수치 이상이 되거나 이하가 되면 경고 메시지를 출력해 줄 수 있어야 함. 이때 일정 수치는 사용자로부터 입력 받을 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> [경고] ERROR_HGH_TRAFFIC “에이전트의 트래픽이 너무 많습니다.” Command> E T 1 [E S or T Agent관리번호] 회선트래픽 임계치를 입력하시오(packets)> 10000

37 Term Project 과제 11. 일정시간 동안의 회선속도 평균 저장하기
– 각 Agent들의 최근 5분 동안의 해당 링크의 평균 속도가 얼마인지 출력해 줄 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> V [V] (S)peed, (T)raffic Command> S [S Agent관리번호(0번일 경우 전체 Agent를 출력)] [ ] Mbps 의 평균 전송률 [ ] Mbps 의 평균 전송률 [ ] 7.5 Mbps 의 평균 전송률

38 Term Project 과제 12. 일정시간 동안의 Traffic 평균 저장하기
– 각 Agent들의 최근 5분 동안의 해당 링크의 평균 트래픽이 얼마인지 출력해 줄 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> V [V] (S)peed, (T)raffic Command> T [T Agent관리번호(0번일 경우 전체 Agent를 출력)] [ ] 125 packets 의 평균 전송량 [ ] 654 packets 의 평균 전송량 [ ] packets 의 평균 전송량

39 Term Project 과제 13. 각 SNMP Agent들의 통신상태 표시하기
– 각 SNMP Agent들의 통신 상태를 정상, 과부하, coldStart, warmStart, linkDown, linkUp 6가지 상태가 표시되어야 함(평균 5분간의 상태를 이용). 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> U [U] [ ] 전송상태 [정상] [ ] 전송상태 [정상] [ ] 전송상태 [linkDown]

40 Term Project 과제 14. 회선속도와 트래픽에 대한 로그 기록보기 – 회선속도와 트래픽의 평균 기록에 대한 로그를
볼 수 있어야 함. 사용 예 ======================== Agent 관리 ======================= (A)dd, (L)ist, (I)nfo, (M)odify, (T)raffic, (S)peed, a(V)erage, stat(U)s, l(O)g, s(E)tup, (Q)uit Command> L 1 [L Agent관리번호] 의 로그 기록 [12:00:00] 125 bytes 의 평균 전송량, 12.5 Mbps 의 평균 전송률 [12:05:00] 200 bytes 의 평균 전송량, 10 Mbps 의 평균 전송률 [12:10:00] 15 bytes 의 평균 전송량, 11.5 Mbps 의 평균 전송률 [12:15:00] 452 bytes 의 평균 전송량, 15 Mbps 의 평균 전송률 [12:20:00] 620 bytes 의 평균 전송량, 12 Mbps 의 평균 전송률 [12:25:00] 230 bytes 의 평균 전송량, 12.3 Mbps 의 평균 전송률 [12:30:00] 500 bytes 의 평균 전송량, 11 Mbps 의 평균 전송률

41 Term Project 과제 15. API 를 사용하지 않고 PDU 생성 (고급기능)
- 각 메시지의 PDU 형식을 참고하여 직접 PDU 를 생성하는 코드를 구현.

42 Term Project 과제 16. Specific Trap 을 생성하는 Client 구현
(고급기능) - 자신의 과부하 상태를 검사해서 과부하 발생 시 Trap PDU 의 Specific trap 필드에 특정 값을 넣고 SNMP Manager로 송신하는 간단한 Client 를 구현.

43 참조 사이트 http://www.oid-info.com http://www.net-snmp.org
- MIB 객체들에 대한 설명 및 OID - Snmp Agent 제공 및 Manager 구현에 필요한 API 제공.

44 제출물 소스코드, 실행파일, 실행환경 설명서, 설계서 -> CD로 제출
소스코드, 실행파일, 실행환경 설명서, 설계서는 출력해서 제출 소스코드는 자신의 리눅스 계정에 업로드 팀 구성원이름, 전화번호, 이메일을 반드시 기입할 것


Download ppt "TERM PROJECT 설명 문서 Subject : SNMP Manager NETWORK PROGRAMING."

Similar presentations


Ads by Google