CCN-lite是CCN的一个轻量实现。
最新源码:https://github.com/cn-uofbasel/ccn-lite/releases/tag/0.3.0
Ubuntu下的安装:
1.需要openssl的库支持:
sudo apt-get install libssl-dev
2.设置环境变量
export CCNL_HOME="`pwd`/ccn-lite"
export PATH=$PATH:"$CCNL_HOME/bin"
其中pwd是ccn-lite的上层目录。
这里利用export设置的环境变量是临时的,一旦关机重启失效,可以利用修改profile文件永久保存该环境变量,具体方法自行百度。
3.编译安装
cd $CCNL_HOME/src
make clean all
CCN-lite实际运行:
场景:
场景分析:
需要三台pc,分别作为client, relayA,relayB。content store存在relayB的内存中。其中relayA需要双网卡支持,分别连接client和relay
B,可以看出relayA作为路由转发。
client配置:设置静态IP,修改interfaces文件即可。假设IP为192.168.0.6
relayB配置:设置静态IP: 192.168.0.10
relayA配置:两个网口设置dhcp而不是静态IP,然后利用brctl命令建立网桥,将eth0和eth2连接在一起,并设置网桥的IP:192.168.0.100
relayA interfaces文件配置:
auto eth0
iface eth0 inet dhcp
auto eth2
iface eth2 inet dhcp
网桥搭建:
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo brctl addif br0 eth2
sudo ifconfig br0 192.168.0.100 netmask 255.255.255.0 up
以上就是准备工作。
接下来是利用ccn命令实现数据传输:
relayB:
1.建立content store:
$CCNL_HOME/bin/ccn-lite-mkC -s ndn2013 "/ndn/test/mycontent" > $CCNL_HOME/test/ndntlv/mycontent.ndntlv
2.开启relay模式:
$CCNL_HOME/bin/ccn-lite-relay -v trace -s ndn2013 -u 9999 -x /tmp/mgmt-relay-b.sock \
-d $CCNL_HOME/test/ndntlv
这里的-u 9999表示9999端口作为UDP监听端口,也就是A发送interest给B时要输入9999端口号。
relayA:
1.开启relay模式:
$CCNL_HOME/bin/ccn-lite-relay -v trace -s ndn2013 -u 9998 -x /tmp/mgmt-relay-a.sock
2.添加转发规则
FACEID=`$CCNL_HOME/bin/ccn-lite-ctrl -x /tmp/mgmt-relay-a.sock newUDPface any 192.168.0.10 9999 \
| $CCNL_HOME/bin/ccn-lite-ccnb2xml | grep FACEID | sed -e 's/^[^0-9]*\([0-9]\+\).*/\1/'`
这里的newUDPface是 要发往下一跳的IP和端口,也就是relayB的IP和端口号9999.
$CCNL_HOME/bin/ccn-lite-ctrl -x /tmp/mgmt-relay-a.sock prefixreg /ndn $FACEID ndn2013 \
| $CCNL_HOME/bin/ccn-lite-ccnb2xml
client:
1.发送interest to A
$CCNL_HOME/bin/ccn-lite-peek -s ndn2013 -u 192.168.0.100/9998 "/ndn/test/mycontent" \
| $CCNL_HOME/bin/ccn-lite-pktdump
这里的-u就是A的IP和端口。与上面的类似。
以上就是本人对于CCN的场景的实现,转载请说明出处。