ارائه دهنده : سید ایمان علویان استاد : مهندس مهدی زمانیان بهار 90 2 فهرست مطالب •مقدمه 4............................................ •فصل اول : تاریخچه 7...............SNMP • فصل دوم : پروتکل.
Download
Report
Transcript ارائه دهنده : سید ایمان علویان استاد : مهندس مهدی زمانیان بهار 90 2 فهرست مطالب •مقدمه 4............................................ •فصل اول : تاریخچه 7...............SNMP • فصل دوم : پروتکل.
1
ارائه دهنده :سید ایمان علویان
استاد :مهندس مهدی زمانیان
بهار 90
2
فهرست مطالب
•مقدمه4............................................
•فصل اول :تاریخچه 7...............SNMP
• فصل دوم :پروتکل 9...............SNMP
•فصل سوم :دستورات موجود و تعریف متغیر در
15....................................... SNMP
•فصل چهارم :نمونه کد استفاده از SNMPدر
جاوا20..............................................
•منابع26............................................
3
مقدمه
4
مقدمه
مدیریت شبکه های کامپیوتری
مدیریت شبكه مفهومی است كه از ابزارها و تكنیك
های مختلف به منظور مدیریت شبكه ها و سیستم ها
استفاده میكند .مدیریت شبكه شامل پنج عملكرد اصلي
است كه عبارتند از :مدیریت خطا ،مدیریت تنظیمات،
مدیریت حسابداری ،مدیریت اجرا و مدیریت امنیت
5
مقدمه
در شبكه های كامپیوتری كه تركیبی از روترها،
سوییچ ها و سرورها هستند ،به منظور مدیریت همه
ابزارها در شبكه باید كاری انجام شود تا از كاركرد
بهینه آنها آگاه شد.
اینجاست كه ،SNMPپروتكل ساده مدیریت شبكه،
می تواند كمك كند.
6
فصل اول
تاریخچه SNMP
7
تاریخچه
در آغاز سال 1988نیاز به یک ابزار مدیریت
برای شبکهاي مبتني بر TCP/IPوجود داشت
در سال 1991به طور رسمی SNMP V1ثبت
و منتشر شد.
در سال 1993پس از رفع ایرادات موجود در
SNMP V2 ،SNMP V1ارائه شد.
8
فصل دوم
پروتکل SNMP
9
اجزاء پروتکلSNMP
(Simple Network Management
Protocol)
:Manager
نقش اعمال دستورات را به عهده دارد
:Agent
درون سیستم تحت مدیریت مستقر میشود
:MIB
واحدی که اشیاء تحت مدیریت را برای
این مجموعه معرفی میکند.
10
پروتکلSNMP
Agentو Managerاز طریق Ethernet
با یکدیگر در ارتباط هستند.
پیامهای SNMPدر قالب فریمهای UDP/IP
مبادله میگردند.
Protocol Data unit
پروتکلSNMP
CRC
SNMP Message
UDP
Datagram
IP
Packet
Ethernet
Frame
12
شناسه نوع پیام خطا
مقدار متغیر
شناسه متغیر
)(OID
شناسه نوع درخواست
متغیر
رشته حفاظت
قسمت اصلي پیام ) ،(PDUحاوي یک نوع درخواست
ذکر نسخه پروتکل SNMP
اجزاي پیام پروتکل SNMP
1
SNMPپروتکل
Manager وAgent ارتباط
161 پورت
Trap
162 پورت
13
آیا پروتکل SNMPش یء گراست؟
SNMPیک مدل شئ گرا نیست زیرا در آن هیچ
مفهومی تحت عنوان کالس وجود ندارد اما شیوه
برخورد با عناصر تحت مدیریت به گونهای است که
میتوان آنرا یک ساختار شبه شئ گرا نامید .در این
پروتکل صرفا ً متغیرهایی شناخته شده هستند که MIB
را تشکیل دادهاند .هر عضو MIBبه کمک یک
شناسه منحصر بفرد تحت عنوان OIDشناخته می
شود.
14
فصل سوم
دستورات موجود
و تعریف متغیر در
SNMP
15
تعریف متغیر
هر متغیر داراي یک نوع ) (typeمعینی
است .در SNMPانواع محدودی تعریف شدهاند
که مجموع متغیرهای مورد نظر باید در محدوده
آنها تعریف شوند.
16
متغیرهاي
عموميSNMP
:INTEGERمتغیري که به یک عدد 32بیتي یعني حداکثر تا منتسب ميشود.
:OCTET STRINGمتغیري بایتي که براي دنبالههاي متني یا آدرسهاي فیزیکي استفاده
ميشود.
:OBJECT IDENTIFIERدنبالهاي از اعداد که با نقطه از هم جدا شده و نشان دهنده موقعیت
مورد اشاره در یک نمودار درختي سلسله مراتبي ميباشد كه OIDنیز نامیده ميشود.
:BOOLEANمتغیر دو حالته.
متغیرهاي اختصاصي
درSNMPv2
:BITSهنگامي که ارجاع به چند حالت از یک متغیر را با شماره گذاري و اشاره به آنها
تعریف نمائیم.
:Integer32همان Integerاست.
:Counter32متغیري که به حالت شمارشگري و با خاصیت افزایش پیوسته ،تا مقدار
حداکثر تغییر ميکند و سپس به صفر بر ميگردد.
:Gauge32متغیري که قابلیت افزایش و کاهش داشته باشد.
:NSAPAddressآدرسي از نوع
OSI
:Counter64متغیري که به حالت شمارشگري و با خاصیت افزایش پیوسته ،تا مقدار
حداکثر 17تغییر مي کند و سپس به صفر بر ميگردد.
64
232
1
1
systemStatusCode
OBJECT-TYPE
SYNTAX
OCTET STRING
MAX-ACCESS
read-only
STATUS
current
DESCRIPTION
"Description"
::= { dwdm32chMIB 1 }
eventIdentification
OBJECT-TYPE
SYNTAX
Integer32 ( -2147483648 .. 2147483647)
MAX-ACCESS
read-only
STATUS
current
DESCRIPTION
"Column Description"
::= { eventEntry 2 }
18
دستورات موجود در SNMP
دستوراتي که بین Managerو Agentدر قالب
SNMPو بر روي متغیرها قابل اعمال هستند در
جدول زیرآمده است.
Get
GetNext
Set
Response
Trap
19
دستوري که براي فراخواني مقادیر یک یا چند متغیر mibاستفاده ميشود.
دستوري که براي فراخواني مقادیر یک یا چند متغیر mibکه از نظر آدرس به صورت
متوالي قرار گرفتهاند مورد استفاده قرار ميگیرد( .مثالً متغیرهاي یک جدول)
دستوري که براي تغییر مقادیر یک یا چند متغیر mibاستفاده ميشود.
شکل خاص پاسخ به دستورات
Get, GetNext, Set
شکلي از پیام خودانگیخته که سیستم هنگام وقوع رخدادهایي معین به مدیریت ارسال
ميکند.
فصل چهارم
نمونه کد استفاده
ازSNMPدر جاوا
20
SNMP4j
این ابزار یک ابزار متنباز مبتنی بر زبان
جاوا تحت لیسانس apacheبوده که
کتابخانه ای شامل کالس ها و متدها برای
استفاده از پروتکل SNMPدر محیط برنامه
نویسی جاوا را فراهم می نماید .با استفاده از
این ابزار برنامه نویس می تواند فرامین
پروتکل SNMPرا درون کد برنامه
فراخواني نماید.
21
Mibble
این ابزار یک ابزار متنباز مبتنی بر جاوا
بوده که قابلیت تجزیه کردن فایلهای MIBرا
دارد .این ابزار کمک می کند تا دستگاه ها و
کارت های جدید را به نرم افزار شناسانده و
اطالعات آن ها را دریافت نماییم.
22
Snmp snmp;
public void initialize() throws IOException {
if (snmp == null) {
OctetString readCommunityOctetString = new OctetString(readCommunity);
OctetString writeCommunityOctetString = new OctetString(writeCommunity);
String address = this.sysIPAddress + "/" + 161;
Address targetaddress = new UdpAddress(address);
transport = new DefaultUdpTransportMapping();
transport.listen();
readComtarget = new CommunityTarget();
readComtarget.setCommunity(readCommunityOctetString);
readComtarget.setVersion(SnmpConstants.version2c);
readComtarget.setAddress(targetaddress);
readComtarget.setRetries(this.retry);
readComtarget.setTimeout(this.timeOut);
writeComtarget = new CommunityTarget();
writeComtarget.setCommunity(writeCommunityOctetString);
writeComtarget.setVersion(SnmpConstants.version1);
writeComtarget.setAddress(targetaddress);
writeComtarget.setRetries(this.retry);
writeComtarget.setTimeout(this.timeOut);
snmp = new org.snmp4j.Snmp(transport);
snmp.listen();
}
}
23
public void loadMib() {
MibLoader loader = new MibLoader();
File f = new File(Constants.MIB_FILE);
try {
mib = loader.load(f);
} catch (IOException ex) {
ex.printStackTrace();
} catch (MibLoaderException ex) {
ex.printStackTrace();
}
}
24
public void getSamplePdu() throws Exception {
PDU pdu = getMyPduByType(PDU.GET);
addTablePdu("systemStatusCode", 0, pdu);
if (getPduResponse(pdu).get(0) == null) {
throw new ServiceSnmpInstantiationException("Connection to agent can not
be established");
}
}
public void setSamplePdu (String val) {
PDU p = getMyPduByType(PDU.SET);
addSetPdu(Constants.SYS_DESCRIPTION, p, val);
setPduResponse(p);
System.out.println("sysDescription set to " + val);
}
public void closeSnmpConnection () {
try {
snmp.close();
} catch (IOException e) {
e.printStackTrace();
}
}
25
منابع
• Internet Standards 15, 16 and 17
• ASN.1 Complete, J. Larmouth, Open Systems Solutions,
1999 (available online)
• SNMP : a guide to network management, S. Feit,
McGraw-Hill, 1995
26
27
28
29