как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?
Для этого тебе надо понять, что такое
"потоки" о которых ты говоришь, где находится информация о принадлежности пакета потоку и как до неё добираться.
Если ограничиться определением по ссылке, то тебе надо будет разбирать сырые пакеты до сетевого уровня, откидывать не-IP, из IP извлекать IP-протокол, адрес источника, адрес назначения и тип сервиса, для протоколов TCP и UDP дополнительно извлекать порт источника и порт назначения. Всё это довольно просто сделать самому вооружившись RFC по упомянутым протоколам. Также надо будет понять, что делать с фрагментированными IP-пакетами.