P4 初体验之p4factory

好久木有写博客了,这也说明我在技术上的尝试和总结的时间和投入在减少,这不是个好现象,反省。。。

P4 进来在SDN的数据平面可以算是大行其道,无论是Nick 大神的Barefoot 公司的成立,还是美国高校和产业界几乎半年一次的workshop 和讨论,都让从事网络研究的人特别是年轻人趋之若鹜。之前,我的一些工作更关注与控制平面,关注点也更多的在控制器。 p4, 我最早的接触还是当时follow Nick Feamster 教授的SDN公开课时, 后来陆陆续续看了些相关的文章。 但是数据平面的工作一直让我有些望而却步,直到上周末的p4 在深圳的一个小型的研讨会,听着产业界对于P4的热情,对着现有数据平面不接地气的抱怨,让我觉得是时候入坑了。

既然是初体验,当然是从p4factory开始。 本以为 照着git , 一小时尝试完毕,结果直接陷入坑中一个周日加大半个周一,其中气恼,繁琐之事不断,遂决定记录成文共享之,已避免大家重复弯路。

  1. 第一个submodule 各种报错,或者未执行完全。 其实,我参考别人的博客,很多人提出的原因是要git 到本地仓库,git 上传ssh 秘钥云云。。 这些固然可能给大家造成困扰,但其实更大的问题还是 gfw 带来的困扰。 由于之前我一直觉得s 非常好用,所以花了半天时间,想搞s5的的全局代理,然后再用http代理转一下。 弄了半天,未果,十分的不好用。尤其是中间的代理,管了http ,就漏了https。 最后果断放弃, 用了个pptp 的, git submodule update –init –recursive 这个不走毫无问题。

    1. ./install_deps.sh 这一部最大的问题是 thrift 这个库。 可以说周末的一天是和thrift斗争的一天, 真是不堪回首。第一个问题就是无论怎么样 wget 下来 0.9.2 这个包, 装起来必然2个error, 而且遍寻google,无法解决。 大怒, 改了脚本,换成 0.9.3, 依然出错。 期间,怀疑人生一般的去了thrift的官网,去按照提示安装依赖包。sudo apt get 那堆包居然还报错,排查了一下 ibboost1.55-all-dev 的问题,没有管他,直接手动安装新版本 auto make 和boost 然后,果然有有错,auto make 版本不对,改为automake_1.15-4。 依赖安装完毕,重新对thrift make 依然失败。。。。悲催。 这里不敢肯定,这些依赖包的重要性,小伙伴要是编译出错,不让都装上 。
    2. 这时候博客园的Wasdns大神的文章成了我的灯塔。 源码安装 thrift , 我果断修改了 ./install_deps.sh的文件, 贴上截图,亲测木有问题。。。
      P4 初体验之p4factory_第1张图片
    3. 按照 git 的步骤做下去,没有错误。 sudo p4factory/tools/veth_setup.sh 中可能有一些不能修改,off 之类的东西,但并没有出错,不予理会。
    4. 然后就是 跑实验测试,悲剧来了。。。 首先, 模块加载错误, TFrozenDict 模块加载出错. google了一圈,并没有好的解决办法,怒而把测试文件中头文件引入这个模块都删了,反正后面也没用上。 然后悲剧的发现,并不能解决问题。 __decode 类似的模块又出错。。。 怀疑人生一样的sudo apt-get install python-thrift。 完蛋了,版本不知道退回到多低的版本了。。。。升级,再升级pip ,再用 pip 升级thrift.,版本回到 0.9.1 ,还是太低,各种报错。 绝望中,反而冷静下来,约好小伙伴去打篮球钱,在看了下thrift。 然后想了下,我是不是太信任 sudo make install 了,于是进入 py 的目录,手动 sudo python ./setup install ,安装了一下。 然后,去跑了一下测试用例,居然都成功了。
    5. 展示一下成果 ,算是给初体验来一个结尾吧。
      1) basic routing
      P4 初体验之p4factory_第2张图片

P4 初体验之p4factory_第3张图片

2) 结合mininet 的 simple router

P4 初体验之p4factory_第4张图片

P4 初体验之p4factory_第5张图片
P4 初体验之p4factory_第6张图片

你可能感兴趣的:(SDN,网络研究)