Click软件路由器实验

Click路由器的官方 站

目标:构建一台软件路由器

 

测试1:实现发包与接收

第一步:安装VMware,在VMware里安装两个Ubuntu虚拟机A和B(可以利用克隆的方式减少空间占用),按照下图为主机、虚拟机添加 卡并配置 卡的IP。

 

第二步:下载源代码,放在虚拟机里,编译click。

编译命令:进入click目录,

 

 

 

 

 

 

第三步:修改click配置文件。

1.修改VM1中的发送配置文件 /conf/zxzconf/pspgen.click

将源MAC、源IP均设为VM1的Eth1(注意:IP为倒字节序)

将目的MAC、目的IP设为VM2的Eth1。

 

2.修改VM2中的接收配置文件 /conf/zxzconf/printpsp.click

FromDevice(eth1)

 

第四步:进行发送与接收的测试。

 

在VM1中运行 pspgen.click, 在VM2中运行printpsp.click

———————————————————————————

测试2:实现数据包的转发

在测试1的基础上进行以下操作:

1.修改VM1中的发送配置文件 /conf/zxzconf/pspgen.click

将源MAC、源IP均设为VM1的Eth1(注意:IP为倒字节序)

将目的MAC设为VM2的Eth1( 络中的下一跳);

将目的IP设为VM1的Eth2(真实的目的主机)。

 

PS:在这里为什么目的MAC和目的IP不是同一个 卡/p>

解答:MAC层协议对于PSP协议层是透明的,也就是说,源主机想把数据包发送给真实的目的主机,所以 文中的目的IP地址是真实目的主机的IP,但是由于需要经过路由器进行转发,所以数据包中的目的MAC地址实际上是路由器的MAC地址而不是真实目的主机的MAC。数据包到达路由器后,路由器会根据目的IP查询路由表得到真实目的主机MAC,然后将数据包中的目的MAC修改为真实的主机的MAC,从而将数据包转发给真实主机,达到本次通信的目的。这就是为什么上述目的MAC与目的IP不是同一个 卡的原因。

 

2.修改VM1中的接收配置文件 /conf/zxzconf/printpsp.click

 

FromDevice(eth2)

3.修改VM2中的 /conf/zxzconf/simple_psp_router.click ,参考下面代码中的注释部分。

 

按照上面三步修改配置完后应该能够实现转发的功能了,但是经过测试发现,VM2能收到数据包,但是VM1并不能收到VM2转发过来的数据。这是因为在click软件路由器中,路由表默认是静态的,也就是被写死的,所以,需要手动修改IP才行。下面的第4步就是进行修改。

 

4.修改VM2中的 /elements/local/psproutetable.cc

第37行,改为VM1的Eth2的IP(注意为倒字节序)

 

5.make

 

6.在A中运行pspgen.click  和 printpsp.click , 在B中运行 simple_psp_router.click

 

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年10月15日
下一篇 2015年10月16日

相关推荐