Кто-нибудь знает, как мы можем получить подписи для различных протоколов, например. BGP, DHCP, VxLAN и т. Д.?
Под подписями я на самом деле имею в виду шаблон (например, что-то вроде 0x234557888), используемый для сопоставления с шаблоном в механизме глубокой проверки пакетов. Я хочу написать код DPI для обнаружения некоторых протоколов (например, упомянутых выше).
Есть какой-то алгоритм поиска подписей?
Зачем изобретать велосипед, если другие, такие как проект с открытым исходным кодом nDPI, уже создали код DPI для обнаружения упомянутых вами протоколов (BGP, DHCP). VLAN - это не протокол, а VTP.
http://www.ntop.org/products/ndpi/
nDPI - это расширенный набор популярной библиотеки OpenDPI, поддерживаемый ntop. Выпущенный под лицензией GPL, его цель - расширить исходную библиотеку путем добавления новых протоколов, которые в остальном доступны только в платной версии OpenDPI. Помимо платформ Unix, мы также поддерживаем Windows, чтобы предоставить вам кроссплатформенный интерфейс DPI. Кроме того, мы модифицировали nDPI, который больше подходит для приложений мониторинга трафика, отключив определенные функции, которые замедляют работу механизма DPI, но не являются необходимыми для мониторинга сетевого трафика.
nDPI загружается автоматически при сборке ntop и nProbe. Однако ничто не мешает вам использовать его как отдельную библиотеку DPI. Исходный код можно скачать с nTOP SVN.
Вы также спрашивали об алгоритмах, вот несколько PDF-файлов, с которых можно начать:
Алгоритм глубокой проверки пакетов с несколькими гигабитными скоростями с использованием TCAM