Не получено уведомление BGP с ошибкой необязательного атрибута - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю с реализацией BGP с Ubuntu, для целей тестирования я хочу получить «уведомление», указывающее «необязательную ошибку attribbute».

#!/usr/bin/env python3

import socket
import time
BGP_IP = '20.0.0.20'

MSG1 = (b'\xff\xff\xff\xff\xff\xff\xff\xff'
        b'\xff\xff\xff\xff\xff\xff\xff\xff'
        b'\x00\x35'
        b'\x01'                  #open message
        b'\x04'
        b'\x00\x64'
        b'\x00\xb4'
        b'\x01\x01\x01\x01'
        b'\x18'
        b'\x02\x06\x01\x04\x00\x01\x00\x01\x02\x02\x80'
        b'\x00\x02\x02\x02\x00\x02\x06\x41\x04\x00\x00\x00\x64')

MSG2 = (b'\xff\xff\xff\xff\xff\xff\xff\xff'
        b'\xff\xff\xff\xff\xff\xff\xff\xff'
        b'\x00\x13'
        b'\x04')                #keepalive 

MSG3 = (b'\xff\xff\xff\xff\xff\xff\xff\xff'     # First 8 bytes of marker
        b'\xff\xff\xff\xff\xff\xff\xff\xff'     # last 8 bytes
        b'\x00\x36'                             # length
        b'\x02'                                 # update packate
        b'\x00\x00'                             # withdrawn routes
        b'\x00\x1c'
        b'\x40\x01\x01\x00'
        b'\x50\x02\x00\x06\x02\x01\x00\x00\x00\x64'
        b'\x40\x03\x04\x14\x00\x00\x0a'
        b'\x80\x04\x04\x00p\x00\x00\x00'  #(malformed optional attribs)
        b'\x10\x0a\00')


def main():
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     print("Socket created")
     sock.connect((BGP_IP, 179))
     print("Socket connected")
     sock.send(MSG1)   #open message
     time.sleep(5)
     sock.send(MSG2)   #keepalive
     time.sleep(5)
     print("connection has been established")
     sock.send(MSG3)   #malformed update
     while True:
         data = sock.recv(1)
         if data==b'':
             print("Connection closed or reset")
             break
         print("Received:", data)

sock.close()

if __name__ == "__main__":
    main()

Я использую программирование сокета Python.код, я сначала отправляю открытое сообщение, чем получаю ответ с точки зрения open-keepalive и затем отправляю keepalive, чтобы установить сеанс bgp между маршрутизатором A и DUT.

в любом случае, после установления соединения я отправляю искаженный пакет обновления(с ошибкой в ​​необязательном атрибуте), он должен отправить уведомление с ошибкой «ошибка необязательного атрибута», но это сообщение об ошибке не отправляется.Теперь меня интересует, как получить это «Уведомление» с кодом ошибки «Ошибка необязательного атрибута».

......

...