SNMP (Simple Network Management Protocol - Basit Ağ Yönetim Protokolü) adında da anlaşılacağı gibi ağı yönetirken, ağ yöneticisine yardımcı olan basit bir uygulama katmanı protokolüdür. Temel anlamda, geniş ağlarda cihazların yönetimini ve denetimini kolaylaştırmak için tasarlanmıştır. SNMP kullanılarak ağda bulunan Yönlendirici (Router), Anahtarlayıcı (Switch), Erişim Sunucusu (Access Server), Köprü (Bridge) ve hatta bilgisayar gibi cihazların sıcaklık, cihaza bağlı kullanıcılar, İnternet bağlantı hızı, cihaz çalışma süresi gibi temel bilgiler elde edilebilir. Bu şekilde ağın performansı artırılabilir, ağdaki problemler bulunup çözülebilir ya da ağda büyüme için önceden planlama yapılabilir. TCP/IP protokolünün bir parçası olan SNMP, IP adreslerini kullandığı için sadece kendi fiziksel ağını değil yönlendiricilerin diğer arayüzlerinin de kontrol edilmesini sağlar.
SNMP, ajan uygulama, yönetici uygulama ve ağ yönetim sistemi adı verilen 3 bileşenden oluşmaktadır.
- Ajan Uygulama: Ağdaki cihazlar üzerinde çalışan uygulamadır. Bu uygulama ile cihazın gerekli bilgileri alınır ve kayıtlı tutularak yönetici uygulamaya aktarılır. Aynı şekilde yöneticiden gelen değişklikler bu uygulama tarafından cihaza uygulanır. Yani kısacası bu uygulama, SNMP’nin, kullanılacağı cihazlar üzerinde çalışan bileşenidir.
- Yönetici Uygulama: Ajan uygulama ile ağ yöneticisi arasındaki bilgi akışını sağlayan uygulamadır. Yani, ajan uygulamadan aldığı cihaz bilgilerini yöneticiye, yöneticiden aldığı yapılandırma değişiklik isteklerini de ajan uygulamaya ileten bileşendir.
- Ağ Yönetim Sistemi: Yönetici birimde çalışan ve tüm ağdaki cihazların bilgilerinin eş zamanlı olarak izlenmesini ve yönetimini sağlayan yazılımdır.
Yöneticinin, ajan uygulamadan almak istediği bilgiler hiyerarşik bir şekilde tutulmaktadır. Her bir bilgi için önceden tanımlanmış parametreler vardır. Bu bilgilerin saklandığı birime Yönetim Bilgi Birimleri (Management Information Base - MIB) adı verilir. SNMP’de herhangi bir değişkenin değerine ulaşmak için evrensel olarak belirlenmiş birimlerce ulaşılır. Örneğin, cihazın üreticisi tarafından atanan cihaz açıklaması 1.3.6.1.2.1.2 numaralı bilgi biriminde tutulur. Ağaç yapısında bu rakamlar, ISO (İnternational Standart Organization - Uluslararası Standart Organizasyonu) . identified-organization (organization name - organizasyon ismi). Dod (depertmant of defence - savunma bölümü). İnternet (ip based internet - ip tabanlı İnternet). Mgmt (network management entries - ağ yönetim bilgileri). mib-2 (managemant information base - yönetim bilgi birimleri). değerlerine karşılık gelmektedir. MIB adreslerinin ilk dört sayısı standartlar gereği aynıdır. Ve 1.3.6.1 şeklinde başlar. MIB adresleri bilgi içermezler, sadece cihaz üstünde bulunan bilginin yolunu belirtirler. Bu şekilde tüm adresler cihazlara özeldir. Yani kısaca ajan uygulama ile yönetici arasında geçen bilgiler MIB’lerde tutulmaktadır.
Ağ yöneticisi, yönetilen cihazları SNMP’de 4 komut ile gerçekleştirir. Bunlar: read, write, trap ve traversal komutlarıdır, ve tamamı ağ yönetim sistemi yazılımında kullanılır.
- read: Ağ yönetim sistemi tarafından ajan uygulamanın olduğu cihaz bilgilerini gösterir.
- write: Ağ yönetim sistemi tarafından cihazlar üzerinde yapılandırma yapmaya yarar.
- trap: Cihazda meydana gelecek olan değişiklikleri ağ yönetim sistemine bildirmeye yarar. Trap mesajları UDP 162. porttan gönderilir.
- traversal: Ajan uygulamanın çalıştığı cihaz üzerinde hangi değişkenlerin MIB’de barındırdığını öğrenmek için kullanılır.
SNMP’nin temel olarak çalışma prensibi istek gönderme ve gönderilen isteğe cevap alma şeklinde olur. Transport (Ulaşım) katmanında UDP protokolü kullanılır. Yani gönderilen bilgiler adrese ulaşıp ulaşmadığı kontrol edilmez. Bunun avantajı ise, gereksiz paket trafiğinden kurtulacağı için veri aktarımının hızlı olmasıdır. Ağ yöneticisi, ajan uygulamanın çalıştığı cihaza ihtiyaç duyduğu bilgi isteğini gönderir buna karşılık cihaz da istenilen bilgileri yönetici uygulama sayesinde ağ yöneticisine gönderir. Bu işlemler yapılırken kullanılan yöntemler şunlardır:
GET: Ağ yöneticisi tarafından, yönetilen cihazlardaki bir veya birden fazla cihaz bilgisini elde etmek için gönderilen istektir. Buradan elde edilecek değer Yönetim Bilgi Birimindeki ilgili değerlerdir.
GETNEXT: Get komutu ile elde edilen bilginin bir sonrakini elde etmek için kullanılır.
SET: Yönetici tarafından kontrol edilen cihaz üzerinde yapılacak olan değişiklikler için gönderilen komuttur.
TRAP: Bu komut ajan uygulamanın çalıştığı cihazda herhangi bir değişiklik olması durumunda yöneticiye otomatik olarak bilgi değişikliğini haber vermeye yarayan işlemdir. Bu işlemde diğerlerinden farklı olarak, yönetim sisteminden herhangi bir istek gönderilmez. Cihazda değişiklik algılanınca yöneticiden bir istek gelmeksizin değişikliği rapor eden bir paket yöneticiye gönderilir.
GETBULK: Bu istek büyük boyutlu bilgilerin daha verimli bir şekilde görüntülenebilmesi için kullanılır. Yani, bu işlemle beraber aynı tabloda birden fazla sütun görüntüsü almak münkündür.
INFORM: Bir yönetim sisteminden diğer yönetim sistemini bilgilendirmek için kullanılır.
SNMP’nin de değişik sürümleri vardır. Bunlar SNMPv1, SNMPv2 ve SNMPv3 olmak üzere 3 tanedir. Yukarıda anlatılan işlemler tüm sürümler tarafından kullanılmamaktadır. SNMPv1 de sadece GET, GETNEXT, SET ve TRAP gibi temel SNMP işlemleri yapılabilir. Bunlara ek olarak yapılabilen GETBULK ve INFORM işlemleri diğer iki sürümde mevcuttur. Ayrıca son sürümün diğerlerinden farkı güvenlik açıklarının kapatılmış olması şeklinde düşünülebilir. Son sürümde yönetici ile ajan uygulama arasındaki bilgiler şifreli bir şekilde gönderilir. Son sürümün bir diğer avantajı da kimlik denetimini münkün kılmasıdır.
SNMP ile gönderilen paketlerin içeriği genel anlamda iki bölümden oluşur. Bunlar başlık (header) ve protokol veri bileşeni (Protokol Data Unit - PDU) dir. Başlık kısmında, kullanılan SNMP sürümünün adı ve topluluk bilgileri belirtilir. PDU’nun içerdiği bilgiler, PDU çeşidi (PDU type), İstek numarası (Request ID), Hata durumu (Error status), Hata tipi (Error Index) ve PDU’nun Veri kısmı (object value) şeklindedir. Bu biçim get komutu ile alınan bir SNMP paketi formatıdır. Ayrıca trap ve getbulk komutları ile elde edilecek olan paket içeriği farklıdır.