Я пытаюсь установить сеанс bgp на маршрутизатор HP-MSR, используя scapy с python. Я успешен в создании сокета TCP. После этого маршрутизатор отправляет мне одно сообщение BGP Open. В ответ я отправляю сообщение BGP Open и подтверждаю BGP Open маршрутизатора. Маршрутизатор также подтверждает мое сообщение об открытии BGP. Наконец, маршрутизатор может достичь состояния «Открытое подтверждение». Когда он достигает состояния подтверждения открытия, он начинает посылать некоторую ошибку [сообщение повторной передачи TCP, группа: последовательность]. Он остается в состоянии «Открыть подтверждение» до истечения времени удержания.
Случай 1) Когда мой идентификатор bgp ниже, чем идентификатор маршрутизатора.
В этом случае маршрутизатор отправляет сообщение Keep alive, но также отправляет ту же ошибку [TCP-сообщение повторной передачи, группа: последовательность].
Когда я отправляю какое-то сообщение активности, я не получаю никакого подтверждения от маршрутизатора, и оно остается в «состоянии подтверждения открытия» до истечения таймера удержания.
В этом случае маршрутизатор также отправляет «Разрешение конфликтов подключения», как и ожидалось.
Случай 2) Когда мой идентификатор bgp больше, чем идентификатор маршрутизатора.
В этом случае маршрутизатор не отправляет ни одно сообщение активности, ни подтверждение моего. Он продолжает отправлять одно и то же сообщение об ошибке [TCP-сообщение о повторной передаче, группа: последовательность], пока не истечет таймер удержания.
Я полагаю, что маршрутизатор должен следовать ниже диаграмме bgp:
-> syn
syn, ack <-
-> ack
Bgp open <-
-> BGP Open
-------------------- Open Confirm
Keep alive <-
-> Keep alive
-------------------- Established
Я ожидаю поведения, объясненного на рисунке выше.