Мне это кажется вполне возможным.
Модули tun / tap, которые вы обнаружили, выглядят так, как будто они справятся со своей работой.Twisted будет иметь высокую производительность, а затраты на то, чтобы ушибить голову, заставят все это работать.
Что касается разделения пакетов, вам не нужно каким-либо образом интерпретировать данные, просто рассматривайте их как двоичный двоичный объект.данных, разделите их на две части и добавьте заголовок - я бы не стал использовать для этого сторонние модули, просто обычную обработку строк Python.
Или вы можете использовать netstrings , если хотитепростой в использовании формат инкапсуляции пакетов.
Я не думаю, что это пойдет как ракета, но я уверен, что вы многому научитесь, делая это!