xio也就是accelio是一个开源融合网络加速接口。有幸被安排分析该软件并有了一定阶段性成果,先上个架构图,后续再陈述其用途。
以下是其内核部分的架构。
xio_core模块:提供xio内部的基础服务,同时对外提供API。其中黑色线条框的模块提供用户态和内核态的通用特性。
xio_connection:msg管理的载体,一个特定session在一个线程上的连接实例。一个session在一个特定线程上只能有一个连接实例,不同的session可以有多个不同的connection。同一个线程上的connection指向到同一个uri时,共享nexus。
xio_session:session管理,分别实现服务端和客户端的session管理,session是一组connection的集合。session管理提供session对象的创建、修改、查询、删除,以及session事件处理的框架。
xio_ctx:上下文管理模块,负责xio的事件分发,每个线程仅一个。
xio_option:配置设置与获取
xio_nexus:一个具体的传输连接。管理task,从connection接收msg并转换成task提交到传输层。
xio_ev_loop:事件处理相关的功能,提供xio私有的事件处理方法,以及用户定义的事件处理方法的初始化。内核态支持ctx创建时指定事件