日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SNMP功能开发简介 六 snmp功能开发阶段性总结

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SNMP功能开发简介 六 snmp功能开发阶段性总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先說客戶需求:能夠通過SNMP協議獲取設備信息便于管理。客戶提出的需求信息轉化成MIB結點都是Get類請求。

背景&方案:我們的產品業務層是使用Go語言開發的,系統層基于OpenWrt(一個嵌入式的 Linux 發行版)。SNMP功能一年前在上家公司里接觸過,當時是因為生產產品的時候需要通過snmp去進行相關的升級操作,那個時候還專門學測試了一下MIB結點的添加,也能夠成功運行。雖說接觸過,但也僅僅是MIB結點的添加,這次的任務是是設備支持snmp功能,從頭開始設計snmp的話有點不現實,一方面協議很多內容很多,要設計的話考慮方方面面,短期內無法完成,另外一個方面,感覺還是有點困難,⊙﹏⊙‖∣

老板的建議是找一下相關的庫進行移植,去github上逛了一圈,Golang的SNMP版本目前還沒有完善的版本,大部分的Golang SNMP項目都是開發NMS(網絡管理工作站)而不是SNMP Agent代理,所以就采用C版本的net-snmp,net-snmp是開源的SNMP項目,功能完善而且易于二次開發,基本方案是將net-snmp里面的代理功能嵌入到我們的程序中,然后在根據客戶需求添加私有MIB結點。代碼采用CGO編寫,即Go代碼調用net-snmp庫的形式。

方案架構:啟動一個獨立的代理線程處理外部snmp請求,代理線程執行net-snmp庫的代理入口(snmpd.c/SnmpDaemonMain()),net-snmp程序默認是讀取配置文件的方式來啟動,根據需求要能夠允許用戶通過web頁面進行配置,所以這里采用的方案是主進程監聽web配置刷新事件,如果收到配置刷新的話,將配置更新到全局變量中,然后通過發送信號通知線程刷新配置,代理線程收到信號會進行相關的操作。這里的操作需要對net-snmp庫代碼做一些修改,即增加一些API用于從共享變量中讀取數據。

功能開發:

  • .添加私有MIB結點,采用的方式是靜態添加的方式,預編譯到庫中,使用mib2c工具生成MIB結點代碼框架然后根據業務需求編寫相應的結點回調處理函數,之后在代理的MIB初始化函數( init_mib_modules(); )中將我們私有結點的初始化函數添加進去。
  • 動態端口,net-snmp代理線程啟動后默認是不能刷新端口的,除非線程退出重新執行。根據測試結果發現,線程重新執行會失敗,因為某些靜態變量已經初始化的原因,這里采取的方案是將net-snmp庫代碼做了些修改,如果刷新端口的話,僅僅釋放舊的資源而不是所有資源,然后根據新的配置重新創建資源( netsnmp_transport_open_server)即可
  • 支持IPv6
  • 待開發功能:

  • trap功能,這一塊因為客戶沒有需求,暫時沒做,不過根據未來產品發展來看,是有必要開發trap功能進行相關上報工作。
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的SNMP功能开发简介 六 snmp功能开发阶段性总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。