Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221340
  • 博文数量: 25
  • 博客积分: 4085
  • 博客等级: 上校
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-30 02:09
文章分类

全部博文(25)

文章存档

2011年(1)

2009年(2)

2008年(22)

我的朋友

分类: 系统运维

2008-06-29 00:17:57

一、前言
本文是一次用Linux进行以太网桥接(Ethernet bridging)的实验记录。关于桥接的原理及实现,可参阅如下资料:
1. Benvenuti, C. "Understanding Linux Network Internals", Part IV "Briding", 东南大学出版社影印
2. network bridge

3. bridging
%28networking%29

二、实验过程
2.1 网络拓扑及设备

PC0 --- (eth0) PC_bridge (eth1) --- PC1

PC0: 2.6.22-14-generic  x86_64 (Ubuntu 7.10)
PC1: 2.6.24-16-server i686 (Ubuntu server 8.04)
PC_bridge: 2.6.22-14-generic i686 (Ubuntu 7.10)

注:由于没有交叉直连网线,因而实际在PC0(或PC1)和PC_bridge之间分别使用了一个以太网交换机进行连接。

2.2 PC_bridge配置
$ sudo ip link set eth0 down
$ sudo ip addr flush dev eth0
$ sudo ip addr add 0.0.0.0 dev eth0
$ sudo ip link set eth0 promisc
$ sudo ip link set eth0 up
(对eth1作同样的配置)

$ sudo brctl add br0
$ sudo brctl addif eth0
$ sudo brctl addif eth1


2.3 PC0配置
$ sudo ip link set eth0 down
$ sudo ip addr flush dev eth0
$ sudo ip addr add 192.168.1.244/24 dev eth0
$ sudo ip link set eth0 up

检查并确认配置
$ ip addr show eth0
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:03:0d:3e:3b:0a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.244/24 scope global eth0


2.4 PC1配置
$ sudo ip link set eth0 down
$ sudo ip addr flush dev eth0
$ sudo ip addr add 192.168.1.245/24 dev eth0
$ sudo ip link set eth0 up

2.5 实验与观测
以下从PC0观测结果。

在PC0发起PING命令,通过tcpdump和PING程序的返回查看结果。

$ ping 192.168.1.245
PING 192.168.1.245 (192.168.1.245) 56(84) bytes of data.
64 bytes from 192.168.1.245: icmp_seq=1 ttl=64 time=0.256 ms
64 bytes from 192.168.1.245: icmp_seq=2 ttl=64 time=0.247 ms
64 bytes from 192.168.1.245: icmp_seq=3 ttl=64 time=0.236 ms

$ sudo tcpdump -nn
输出结果如下
arp who-has 192.168.1.245 tell 192.168.0.245
arp reply 192.168.1.245 is-at 00:0a:eb:9b:2c:c8
 
IP 192.168.0.245 > 192.168.1.245: ICMP echo request, id 7702, seq 1, length 64
IP 192.168.1.245 > 192.168.0.245: ICMP echo reply, id 7702, seq 1, length 64
IP 192.168.0.245 > 192.168.1.245: ICMP echo request, id 7702, seq 2, length 64
IP 192.168.1.245 > 192.168.0.245: ICMP echo reply, id 7702, seq 2, length 64
IP 192.168.0.245 > 192.168.1.245: ICMP echo request, id 7702, seq 3, length 64
IP 192.168.1.245 > 192.168.0.245: ICMP echo reply, id 7702, seq 3, length 64

另外访问192.168.1.245上的WWW服务,也可以正常运行。

在PC_Bridge上用Wireshark捕捉数据包,可以看到相关的数据包经过两个网卡。


2.6 简析
本实验中利用PING业务检查网络可达性,从而确定网桥是否工作正常。

PING程序将使用ICMP协议,IP协议,以太网协议。IP协议首先查询IP路由表,确定采用的路由。默认情况下,当发现目的主机在本网络中,就调用ARP协议进行地址解析,得到目的主机的以太网标识。最后便是以太网上的通讯。

两端主机的业务可以正常运行,说明基于Linux配置出来的网桥工作正常。

从PING的延迟来看,平均延迟为0.2+ ms。只使用家用商品级的以太网交换机时,平均延迟为0.1+ ms。增加的部分由Linux网桥引起。因为没有交叉直连网线,无法构建只用Linux网桥的拓扑,从而大概比较一下Linux网桥和商品级交换机的延迟。


三、附录
附录中的实验是关于两端主机的IP路由的配置,与网桥没有联系。

在本实验中将修改两端主机的IP地址,使它们处于两个不同的IP网络。然后配置IP路由,保证可达性。

在PC0上修改地址:
$ sudo ip addr flush
$ sudo ip addr add 192.168.0.245/24 dev eth0

在PC0上配置IP路由:
$ sudo ip route del default
$ sudo ip route add default via 192.168.0.245

在PC1上配置IP路由(地址保持为第二章中设置的地址):
$ sudo ip route del default
$ sudo ip route add default via 192.168.1.245

从PC0向PC1发起PING业务,运行正常。


阅读(1786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~