Twisted

  • Twisted

    Twisted是以高性能为目标的异步网络编程框架。每一个路由器对应一个reactor
    twisted是一个用python语言写的事件驱动的网络框架,他支持很多种协议,包括UDP,TCP,TLS和其他应用层协议

  • Reactor
    reactor是事件管理器,用于注册、注销事件,运行事件循环,当事件发生时调用回调函数处理。
    1. Twisted的reactor只有通过调用reactor.run()来启动。
    2. reactor循环是运行在主进程中。
    3. 一旦启动,就会一直运行下去。reactor就会在程序的控制下(或者具体在一个启动它的线程的控制下)。
    4. reactor循环并不会消耗任何CPU的资源。
    5. 不需要显式的创建和安装reactor,只需要引入就OK了
    6. 在Twisted中,reactor是Singleton(也就是单例模式),即在一个程序中只能有一个reactor,并且只要你引入它就相应地创建一个
    7. reactor是管理twisted框架的核心
    8. 所有的事件都会触发reactor,然后他会开启服务,初始化factory,factory再初始化protocol。

  • Factory

    保存的是连接方的信息,当有链接过来时,factory会初始化一个protocol与对方建立连接,所以factory中有protocol. 因为protocol的方法经常会用到factory里的属性变量,所以protocol类中也有factory。这里就有一个循环引用的问题

protocol说白了就是你自己编的程序

  • 应用场景:
    控制器的探针把自己模拟成一台路由器,不停的与拓扑中的其他路由器发送和接收bgp报文,并根据收到的不同报文做响应处理,python使用struct来处理二进制报文,struct.pack(二进制数)解析成各种类型

  • FSM:
    类似etcd,当收到keep alive报文的类型是ST_OPENCONFIRM后,将status状态改为EST,并记录下当前时间保存在数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值