python 实现 IP LPM

  • python 实现 IP LPM,一些坑.

  • 资料来源:

    https://medium.com/the-elegant-network/implementing-ip-lpm-in-pandas-6983671caddb
    https://github.com/jsommers/pytricia

  • 更新

    1
    2021.08.01 初始

导语

突然来活,要求实现一个 ip lpm(最长优先匹配) 函数,还有速度要求.不限制语言…那 py 找库?>

向说在前面,以下实现的 lpm 仅做了简单验证,完全不推荐直接使用.

正文

非 Win

如果可选的运行环境是非 win,直接装 PySubnetTree 这个库就好了.

代码的示例足够简单.

Win

推荐使用 pytricia 库,虽然没有明确说支持 win ,但是 win 下完美使用.

只是需要 win 下有 VS c++ 15 的编译环境…这玩意要占 4G…

这是 win 64 下打包后的 pytricia-1.0.2-cp39-cp39-win_amd64.whl,下载安装即可.

安装完毕后示例代码也简单,组一个 pytricia.PyTricia,将所有信息输入 pytricia.PyTricia. 最后返回 pyt[ip] 索引访问结果.

其他

如果不使用这些库,还有一个参考文章 Implementing IP LPM in Pandas