Simple Network Management Protocol (בראשי תיבות:SNMP; בתרגום חופשי: פרוטוקול פשוט לניהול רשת) הואפרוטוקול תקשורת לניהול התקני רשת (Network elements) ברשתותIP. הפרוטוקול מאפשר להגדיר את תצורת ההתקן (Configuration), ולאסוף מידע מהתקן הרשת לגבי מצבו (Status) ולגבי הגדרות התצורה שלו. רשת המנוהלת באמצעות SNMP מורכבת מתחנות ניהול רשת (Network Management Stations) הכוללות יישום לניטור ולשליטה בהתקני הרשת. התקני רשת הם התקנים כגוןמתגים,נתבים,שרתים ועוד, הכולליםסוכני ניהול המתקשרים עם תחנת ניהול הרשת, באמצעות פרוטוקול SNMP, ומבצעים את הוראותיה[1].
פרוטוקול SNMP פועל בשכבת היישום במודל OSI. והוא משתמש בפרוטוקולTCP/IP ועובד מעלUDP בפורטים 161 ו-162. הפרוטוקול פועל במודלשרת–לקוח, כאשר צד הסוכן הוא השרת ותחנת הניהול היא הלקוח.
למרות יכולותיו, השימוש בפרוטוקול ברוב המקרים הוא לקבלת נתונים ולא לשינוי הגדרות תצורה.
בפרוטוקול זה מדברים ביניהם שני צדדים:
- סוכן SNMP - זוהי תוכנה שרצה על ההתקנים המנוהלים ברשת. הסוכן הוא זה שנגיש אל המידע המקומי של ההתקן המנוהל.
- תחנת הניהול הראשית (Network Management Station או בקיצורNMS), המשמשת כתחנה מרכזית לניטור ואיסוף מידע. ה-NMS יכול לשלוח בקשות אל סוכן ה-SNMP לקבלת או שינוי המידע עבור ההתקן הספציפי עליו הוא יושב. המידע המבוקש יתקבל בהודעת תגובה מהסוכן.
במודל הקלאסי של הפרוטוקול, ישנו NMS אחד ברשת, ועל כל רכיב מנוהל יושב סוכן. בפועל, במקרים רבים ישנם מספר NMS ברשת, בעיקר לצורכי נוחות ונגישות.
לפרוטוקול קיימת גם גרסה מאובטחת (secure SNMP) הפועלת בפורטים 10161 ו-10162.
פרוטוקול SNMP פותח בשנות השמונים של המאה ה-20. גרסת התקן הראשונה שנקראתRFC 1067 שוחררה על ידי ארגוןIETF בשנת 1988. בשנת 1989 בוצעו תיקונים בתקן שפורסמו ב-[[RFC 1098]] שהחליף אתRFC 1067. בשנת 1990 הוחלף שוב התקן על ידיRFC 1157. בדיעבד קיבלה גרסה זו של הפרוטוקול את הכינוי SNMPv1. השימוש בגרסה זו נפוץ ביותר. SNMPv1 זכה לביקורת רבה בגלל ההתעלמות של הפרוטוקול מסוגיות הקשורות לאבטחת מידע.
בשנת 1993 פורסמה גרסה שנייה לפרוטוקול הנקראת SNMPv2 ב-RFC 1441,RFC 1452 ו-RFC 1448. בגרסה השנייה נוספו שתי בקשות לפרוטוקול Inform Request ו-Get Bulk Request. מבנה הבקשה שונה ולמבנה הבקשה נוספו הנתונים הנחוצים עבור הבקשות החדשות. כמו כן, שופר קלות הטיפול באבטחת מידע ונוספה תמיכה במונים בגודל 64סיביות. SNMPv2 נעדר תאימות אחורה ל-SNMPv1. ארגוןIETF הגדיר אסטרטגיות לניהול רשת המכילה את שתי הגרסאות בו זמנית בעזרת תחנות ניהול "דו לשניות" וסוכניפרוקסי[2].
בשנת 1996 פורסם תיקון ל-SNMPv2 שהחליף את התקן מ-1993.
בשנת 1998 פורסם התקן ל-SNMPv3. בגרסה זו הושם דגש רב על נושא אבטחת המידע והיא כוללת מנגנונים חזקים לאימות משתמשים,בקרת גישה,והצפנה.
התקני רשת המנוהלים בעזרת SNMP, משמשים לפונקציות שונות ומיוצרים על ידי יצרנים שונים. על כן ייתכן שחלק מהמידע המשמש להגדרות תצורת ההתקן או המידע המשקף את מצב התקן יהיה שונה מהתקן להתקן. כדי ליצור שפה משותפת לתחנת הניהול ולהתקן הרשת, יש צורך ליצור מודל המיצג את המידע בהתקן הרשת ולהכיר את אותו מודל לתחנת הניהול.
ייצוג המידע בהתקן הרשת נעשה על ידי מודל נתונים הנקראManagement Information Base, או בקיצורMIB. מסתכלים על כלל המידע המשמש לניהול (הגדרות התצורה, ומידע של מצב ההתקן) כאוסף של אובייקטים מנוהלים. ה-MIB הוא אוסף של כל האובייקטים ומכיל הגדרה פורמלית של המידע בכל אובייקט. לכל אובייקט יש מזהה ייחודי, הנקרא Object Identifier, ובקיצור OID. ה-MIB ממדל את אוסף האובייקטים כעץ היררכי, בו כל עלה הוא אובייקט המיוצג על ידי ה-OID שלו. מזהה האובייקט הואמחרוזת המורכבת ממספרים המפורדים על ידי נקודות; המחרוזת מתארת את המסלול שיש לבצע כדי להגיע אל העלה משורש העץ: כל מספר מייצג בתורו לאיזה צומת יש לעבור בשלב זה של המסלול. למשל, 1.2.4 הוא ה-OID המתאים לעלה אליו מגיעים אם בוחרים במסלול המוביל מהשורש (1) אל הצומת השני המחובר ישירות אל השורש (2) ומשם אל הצומת הרביעי (4).
כאשר רוצה NMS לקבל מידע מסוכן כלשהו, הוא שולח אליו בקשה ובה הוא מציין את ה-OID אותו הוא רוצה לקבל. כעת, הסוכן ניגש אל המקום הרלוונטי המאחסן את המידע של האובייקט המבוקש ושולף משם את המידע הנחוץ, אותו הוא מחזיר אל ה-NMS. ה-NMS, באמצעות ההגדרה הפורמלית המופיעה ב-MIB, יודע גם לבצע את התרגום בין OID לערך קריא וברור, ובכך מאפשר להשתמש בו בצורה מובנת.
בעת פעילות סטנדרטית של הפרוטוקול, מתבצעים השלבים הבאים:
- ה-NMS שולח בקשה אל סוכן ספציפי (ב-UDP אל פורט 161) תוך שימוש בכתובת ה-IP של הסוכן.
- הסוכן מקבל את הבקשה, שולף את המידע הנחוץ ומחזיר אותו אל ה-NMS.
- ה-NMS מקבל אליו את התשובה של הסוכן.
בשליחת בקשה אל סוכן, ה-NMS צריך לציין את הפרטים הבאים:
- גרסה - Version : גרסת ה-SNMP
- מידע הקשור לאבטחת מידע : ב-SNMPv3 בלבד. לדוגמה מידע הקשור לבקרת גישה.
- סוג הבקשה - PDU Type : (ראו בהמשך).
- מזהה קהילה - Community name: מחרוזת המשמשת לזיהוי
- מזהה בקשה - Request ID :מזהה ייחודי לבקשה. משמש להתאמה בין הבקשה לבין התשובה עליה
- מצב שגיאה - Error status : אינדיקציה לכך שארעה שגיאה בזמן עיבוד הבקשה על ידי הסוכן.
- זיהוי השגיאה - Error Index : מידע נוסף לגבי השגיאה ואיזה משתנה גרם לשגיאה.
- רשימה משתנה של מזהים - Variable binding list : רשימת OID עם הערכי המידע המתייחס אליהם
סוכן SNMP תומך במספר סוגים של בקשות עבור OID או רשימת OID נתונה:
- GET - בקשה, הנשלחת על ידי תחנת הניהול, לקבלת ערכיהם של אובייקטים על פי ה-OIDs המופיעים בבקשה.
- GET-NEXT - בקשה, הנשלחת על ידי תחנת הניהול, לקבלת ערכו של האובייקט הבא על פי סדר הזיהוי של האובייקטים. מאפשר לטייל (WALK) על תת-עץ לקבלת את ערכיהם של כל האובייקטים אותם הוא מכיל, על פי סדר.
- SET - בקשה, הנשלחת על ידי תחנת הניהול, לשינוי ערכו של אובייקט על פי ה-OIDs שבקשה. משמש לשינוי הגדרת התצורה של תקן הרשת.
- GET-RESPONSE - תשובת הסוכן לבקשת תחנת הניהול. מכילה את מספר הבקשה עליה מגיב הסוכן.
- TRAP - זוהי הודעה על מאורע חריג שאירע בהתקן הרשת. ההודעה תשלח באופן עצמאי על ידי הסוכן אל תחנת הניהול בפורט 162. בהודעה זו יישלח הזמן שעבר מאז שהרכיב נדלק לראשונה, OID שמגדיר את ה-trap, ומידע נוסף במידת הצורך.
- GET-BULK - נתמכת מ-SNMPv2. בקשה, הנשלחת על ידי תחנת הניהול, המשמשת לקבלת כמות גדולה של נתונים כתגובה לבקשה אחת. כאשר ניתן עבור קבוצת הנתונים בבקשה, לקבל בתשובה רשימה של נתונים כפי המספר שצוין בבקשה (Max Repetitions).יכול להוות תחליף למספר בקשות של GET-NEXT.
- INFORM - נתמכת מ-SNMPv2. בקשה, הנשלחת על ידי הסוכן, מודיעה על אירוע חריג שאריע בהתקן הרשת (בדומה ל-TRAP). תחנת הניהול אמורה לשילוח הודעת אישור על כך שקיבלה את בקשת ה-INFORM. אם לא התקבל אישור ניתן לשוב ולשלוח את הבקשה.
- Total SNMP: Exploring the Simple Network Management Protocol, sean J Harnedy, Prentice Hall PTR, 1998
- ^RFC 1157 - A Simple Network Management Protocol (SNMP), IETF, מאי 1990
- ^[https://tools.ietf.org/html/rfc3584 Coexistence between Version 1, Version 2, and Version 3- of the Internet-standard Network Management Framework], IETF, אוגוסט 2003