使用c语言,维护开发无线AC设备上的应用程序,如dhcp server,dhcpwrap,dhcprelay等
改造 ISC DHCP:多线程优化(20 → 700 IP/s)、冗余备份、老化机制红黑树化
开发 dhcpwrap CLI 工具与配置管理模块
点击空白处退出提示
使用c语言,维护开发无线AC设备上的应用程序,如dhcp server,dhcpwrap,dhcprelay等
改造 ISC DHCP:多线程优化(20 → 700 IP/s)、冗余备份、老化机制红黑树化
开发 dhcpwrap CLI 工具与配置管理模块
使用c语言,系统为linux,对isc dhcp程序进行改造,使其有更高性能,便于下发配置,维护和其它模块的交互等
主要职责:针对dhcp server
1)优化性能,先使用gprof分析程序,得到耗时多的函数,然后进行针对性的优化。添加多线程支持,一个接收线程,三个处理线程。把dhcp pool池里面的资源,平均分给这3个处理线程。接收线程收到dhcp请求以后把请求平均分给这3个处理线程。最后修复改造多线程引起的bug,改造完毕以后达到700个每秒的分配ip速率,修改之前只有大约20个每秒的速率。
2)添加dhcp redundancy(冗余备份)功能,使用hash表来存储binding表,如果hash表中的node内容有更新,就把这个node加到一个发送链表上面,然后向对方发送链表里面的内容,发送一个就等待对方回一个ack,回了ack以后把这个node从链表里面移除,然后再发下一个。
3)优化dhcp的老化机制。以前使用的是链表,维护排序的链表太耗时,改为使用红黑树来老化,红黑树插入删除是O(lgN)的算法,而且node是排序的。
4)使用epoll替代select,因为使用select会遇到侦听描述符过多的化会有select溢出的bug。设备上面网络接口需要设置信任,dhcp server才会监听。
新写一个dhcpwrap程序,主要工作有:
1)注册cli命令,下发配置
2)维护dhcp的配置文件等
3)请求dhcp server的信息,如ip binding表信息,然后进行处理,或显示在cli上面。
我主要负责维护开发这个改造的dhcp程序,添加了dhcp redundancy,优化了老化机制,用epoll替代select,新写一个dhcpwrap程序




评论