ارائه دهنده : سید ایمان علویان استاد : مهندس مهدی زمانیان بهار 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