Tablesnoop: valós idejű routing lookup nyomkövetés Linuxhoz
Eredetileg blogolni akartam róla, de elég aprócska projekt ezért csak iderakom: https://github.com/EricssonResearch/tablesnoop
A cím leírja a fő funkciót, annyival egészíteném ki, hogy képes tracelni policy lookupokat is (ip rule ...). Például ha van egy olyan ip rule, hogy a 8-as DSCP mezővel érkező csomagok nexthopját a 88-as ID-jó routing táblából lookupolja, akkor ez is látszani is fog. Tud olyat is, hogy a sikertelen lookupokat is kiírja. Eredetileg azért született meg, mert bonyolultabb policy + routing + tunnelezés konfiguráció volt és nem egészen azt láttuk a dróton amit akartunk.
Úgy működik, hogy pár helyen "probe"-okat helyez el a kernelben, azokon a helyeken, amiken a rule/route lookup is történik. Ha ismerős a Dtrace vagy LTTng az jó, nagyjából erről van szó, csak itt most eBPF-ben van elkészítve a nyomkövetési logika. Sajnos vannak adatok, amik nem érhetőek el szépen "direktben". Ezért van az, hogy bár a rule lookup mindig megelőzi a route lookupot kernel szinten, itt mégis fordítva vannak megjelenítve. Ez azért van, mert függvények visszatérése triggereli a probeokat, hogy azt is lássuk, sikeresek voltak-e, vagy nem. De a callstack miatt az tér vissza hamarabb, aki később volt meghívva...
Nyitott vagyok ötletekre, kommentekre. Ami tervben van még az MPLS támogatás, egy branchen van egy WIP SRv6 támogatás is. Szeretnék statikus binárist, mert a buildelése nem triviális sajnos.
- Tovább (Tablesnoop: valós idejű routing lookup nyomkövetés Linuxhoz)
- 137 megtekintés