8 Ryu BGP speaker library helps you to enable your code to speak BGP
9 protocol. The library supports IPv4, IPv4 MPLS-labeled VPN, IPv6
10 MPLS-labeled VPN and L2VPN EVPN address families.
15 The following simple code creates a BGP instance with AS number 64512
16 and Router ID 10.0.0.1. It tries to establish a bgp session with a
17 peer (its IP is 192.168.177.32 and the AS number is 64513). The
18 instance advertizes some prefixes.
20 .. code-block:: python
24 # BGPSpeaker needs sockets patched
25 eventlet.monkey_patch()
27 # initialize a log handler
28 # this is not strictly necessary but useful if you get messages like:
29 # No handlers could be found for logger "ryu.lib.hub"
32 log = logging.getLogger()
33 log.addHandler(logging.StreamHandler(sys.stderr))
35 from ryu.services.protocols.bgp.bgpspeaker import BGPSpeaker
37 def dump_remote_best_path_change(event):
38 print 'the best path changed:', event.remote_as, event.prefix,\
39 event.nexthop, event.is_withdraw
41 def detect_peer_down(remote_ip, remote_as):
42 print 'Peer down:', remote_ip, remote_as
44 if __name__ == "__main__":
45 speaker = BGPSpeaker(as_number=64512, router_id='10.0.0.1',
46 best_path_change_handler=dump_remote_best_path_change,
47 peer_down_handler=detect_peer_down)
49 speaker.neighbor_add('192.168.177.32', 64513)
50 # uncomment the below line if the speaker needs to talk with a bmp server.
51 # speaker.bmp_server_add('192.168.177.2', 11019)
55 prefix = '10.20.' + str(count) + '.0/24'
56 print "add a new prefix", prefix
57 speaker.prefix_add(prefix)