Click软件路由器实验

原创 2015年11月18日 08:50:18

Click路由器的官方网站

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


测试1:实现发包与接收

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



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

编译命令:进入click目录,

./weconfig
make


第三步:修改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不是同一个网卡?

解答: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 ,参考下面代码中的注释部分。

// mytest-ip-route.click

//Bob
//local eth1 192.168.64.12 00:0c:29:c7:34:04    
//local eth2 10.129.64.12  00:0c:29:c7:34:0e    

//Alice
//dest  eth1 192.168.64.11 00:0c:29:ea:48:1e
//dest  eth2 10.129.64.11  00:0c:29:ea:48:28


psp :: Print("Forward PSP Pkt") 
    -> rt :: PSPLookup(
          192.168.64.12.0.0.0.0	0,   //这是psp协议的地址格式,后面跟的是端口号,意思是来自于前面那个地址的数据将会被送到0号端口进行处理
          10.129.64.12.0.0.0.0	0, 
	  192.168.64.11.0.0.0.0	1,
	  10.129.64.11.0.0.0.0	2);

c0 :: Classifier(12/0600, -);  //根据类型标记进行分类,忽略数据包的前12个字节,如果第13个字节和第14个字节的内容是 0600,则发到端口0,否则发到端口1
out0 :: Queue(200) -> todevice0 :: ToDevice(eth1);

c1 :: Classifier(12/0600, -);
out1 :: Queue(200) -> todevice1 :: ToDevice(eth2);

FromDevice(eth2) -> c0;       //从eth2网卡接收到的数据会被送到c0分类器进行处理
c0[0]->psp;                   //分类器c0[0]的数据会被送到psp里进行查表转发,c0[1]中的数据会被丢弃
c0[1]->Discard;


FromDevice(eth1) ->c1;
c1[0]->psp;
c1[1]->Discard;

rt[0]->Discard;
rt[1] -> PSPMacap(00:0C:29:EA:48:28)
     -> Print(rt1) 
     -> out0;


// Forwarding path for eth2
rt[2]-> PSPMacap(00:0C:29:EA:48:28) //对于需要转发的数据包,修改报文头中的目的MAC为真实目的主机的MAC
     -> Print(rt2) 
     -> out1;


按照上面三步修改配置完后应该能够实现转发的功能了,但是经过测试发现,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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Click Modular Router

Click Modular Router 特别鸣谢hhsh 下面文章是对自己使用click软件路由器的总结,关于click的具体信息,大家可以在它的网站上获得http://www.read.cs....
  • zhongjishao
  • zhongjishao
  • 2013年03月19日 10:20
  • 2748

Click router 学习资料 小结

首先小结一下学习资料和相关网页:   中文文章: 1, 软件路由器的分析研究 (http://www.dxf1.cn/luntan.asp?id=1916) 2, 基于Click系统的软件路由...
  • perfectfield
  • perfectfield
  • 2010年06月25日 16:06
  • 3863

click 路由器

  • 2013年12月16日 10:03
  • 764KB
  • 下载

Click modular router

  • 2013年08月19日 13:35
  • 367KB
  • 下载

路由模拟仿真软件(计算机网络实验工具)

  • 2008年11月21日 21:22
  • 983KB
  • 下载

华为路由器模拟软件实验

  • 2009年07月09日 07:32
  • 715KB
  • 下载

Click软件路由器实验

Click路由器的官方网站:http://www.read.cs.ucla.edu/click/ 构建一台软件路由器: 第一步:安装VMware、Ubuntu虚拟机A,克隆Ubuntu,按照下图配...
  • rock4you
  • rock4you
  • 2015年11月18日 08:50
  • 1852

实验七 路由器的基本配置

实验七 路由器的基本配置 一、实验目标 掌握路由器几种常用配置方法; 掌握采用Console线缆配置路由器的方法; 掌握采用Telnet方式配置路由器的方法; 熟悉路由器不同的命令行操作...
  • Anne999
  • Anne999
  • 2017年03月24日 10:31
  • 1719

华为路由器模拟器实验七

那天下午上计算机网络实验课,老师先用一节课跟我们介绍了一些关于路由器的知识,又谈到了思科跟华为之间的事,然后又说到今后在中国肯定是华为占的市场比例越来越大,所以叫我们要用华为的路由器模拟器来实验。我们...
  • pianistOfSoftware
  • pianistOfSoftware
  • 2016年07月19日 14:27
  • 1166

《思科网络实验室_路由交换、实验指南》完全版

  • 2014年07月31日 23:58
  • 4.13MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Click软件路由器实验
举报原因:
原因补充:

(最多只允许输入30个字)