菜鸡咕咕叫

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

在上述拓扑中,实现多径。

在环路解决实验的基础上,利用组表实现。

在原arp代理的代码中添加如下代码:

从port4接收,则转发给其他port 1 2 3

复制代码
 1     def send_group_mod(self, datapath):
 2         ofproto = datapath.ofproto
 3         parser = datapath.ofproto_parser
 4 
 5         actions1 = [parser.OFPActionOutput(1)]
 6         actions2 = [parser.OFPActionOutput(2)]
 7         actions3 = [parser.OFPActionOutput(3)]
 8 
 9         buckets = [parser.OFPBucket(actions=actions1),
10                    parser.OFPBucket(actions=actions2),
11                    parser.OFPBucket(actions=actions3)]
12 
13         req = parser.OFPGroupMod(datapath, ofproto.OFPGC_ADD, ofproto.OFPGT_ALL, 50, buckets)
14 
15         datapath.send_msg(req)
复制代码

同时开启S1的接口终端,eth1, eth2, eth3

 

 在mininet中进行连通测试:

出现了dupliacte报文

 

 

 

 

 在各终端端口,都可以捕捉到:

 

 

 

 

 

查看h1 h2的ip信息:

复制代码
 1 mininet> h1 ip a
 2 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 3     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 4     inet 127.0.0.1/8 scope host lo
 5        valid_lft forever preferred_lft forever
 6     inet6 ::1/128 scope host 
 7        valid_lft forever preferred_lft forever
 8 2: h1-eth0@if47: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
 9     link/ether 82:55:f0:86:fb:43 brd ff:ff:ff:ff:ff:ff link-netnsid 0
10     inet 10.0.0.1/8 brd 10.255.255.255 scope global h1-eth0
11        valid_lft forever preferred_lft forever
12     inet6 fe80::8055:f0ff:fe86:fb43/64 scope link 
13        valid_lft forever preferred_lft forever
14 mininet> h2 ip a
15 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
16     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
17     inet 127.0.0.1/8 scope host lo
18        valid_lft forever preferred_lft forever
19     inet6 ::1/128 scope host 
20        valid_lft forever preferred_lft forever
21 2: h2-eth0@if54: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
22     link/ether fa:86:b9:ac:94:db brd ff:ff:ff:ff:ff:ff link-netnsid 0
23     inet 10.0.0.2/8 brd 10.255.255.255 scope global h2-eth0
24        valid_lft forever preferred_lft forever
25     inet6 fe80::f886:b9ff:feac:94db/64 scope link 
26        valid_lft forever preferred_lft forever
复制代码

查看交换机的流表:

 

复制代码
 1 mininet> sh ovs-ofctl dump-flows s1
 2 NXST_FLOW reply (xid=0x4):
 3  cookie=0x0, duration=1843.442s, table=0, n_packets=108, n_bytes=14937, idle_age=554, priority=1,ipv6 actions=drop
 4  cookie=0x0, duration=1828.364s, table=0, n_packets=47, n_bytes=4214, idle_age=826, priority=1,in_port=1,dl_dst=82:55:f0:86:fb:43 actions=output:4
 5  cookie=0x0, duration=1828.362s, table=0, n_packets=46, n_bytes=4116, idle_age=826, priority=1,in_port=4,dl_dst=fa:86:b9:ac:94:db actions=output:1
 6  cookie=0x0, duration=1623.076s, table=0, n_packets=70, n_bytes=6356, idle_age=362, priority=1,in_port=3,dl_dst=82:55:f0:86:fb:43 actions=output:4
 7  cookie=0x0, duration=1623.074s, table=0, n_packets=35, n_bytes=3150, idle_age=362, priority=1,in_port=4,dl_dst=1a:fd:60:af:a0:b0 actions=output:3
 8  cookie=0x0, duration=1843.484s, table=0, n_packets=21, n_bytes=1598, idle_age=813, priority=0 actions=CONTROLLER:65535
 9 mininet> sh ovs-ofctl dump-flows s2
10 NXST_FLOW reply (xid=0x4):
11  cookie=0x0, duration=2064.896s, table=0, n_packets=66, n_bytes=9744, idle_age=16, priority=1,ipv6 actions=drop
12  cookie=0x0, duration=2050.093s, table=0, n_packets=47, n_bytes=4214, idle_age=1048, priority=1,in_port=2,dl_dst=82:55:f0:86:fb:43 actions=output:1
13  cookie=0x0, duration=2050.088s, table=0, n_packets=46, n_bytes=4116, idle_age=1048, priority=1,in_port=1,dl_dst=fa:86:b9:ac:94:db actions=output:2
14  cookie=0x0, duration=2065.210s, table=0, n_packets=21, n_bytes=1546, idle_age=1035, priority=0 actions=CONTROLLER:65535
15 mininet> sh ovs-ofctl dump-flows s3
16 NXST_FLOW reply (xid=0x4):
17  cookie=0x0, duration=2069.160s, table=0, n_packets=66, n_bytes=9744, idle_age=20, priority=1,ipv6 actions=drop
18  cookie=0x0, duration=2069.242s, table=0, n_packets=19, n_bytes=1358, idle_age=1039, priority=0 actions=CONTROLLER:65535
19 mininet> sh ovs-ofctl dump-flows s4
20 NXST_FLOW reply (xid=0x4):
21  cookie=0x0, duration=2071.492s, table=0, n_packets=65, n_bytes=9674, idle_age=22, priority=1,ipv6 actions=drop
22  cookie=0x0, duration=1851.181s, table=0, n_packets=70, n_bytes=6356, idle_age=590, priority=1,in_port=2,dl_dst=82:55:f0:86:fb:43 actions=output:1
23  cookie=0x0, duration=1851.175s, table=0, n_packets=35, n_bytes=3150, idle_age=590, priority=1,in_port=1,dl_dst=1a:fd:60:af:a0:b0 actions=output:2
24  cookie=0x0, duration=2071.586s, table=0, n_packets=20, n_bytes=1504, idle_age=1041, priority=0 actions=CONTROLLER:65535
25 mininet> sh ovs-ofctl dump-flows s5
26 NXST_FLOW reply (xid=0x4):
27  cookie=0x0, duration=2075.400s, table=0, n_packets=140, n_bytes=17712, idle_age=26, priority=1,ipv6 actions=drop
28  cookie=0x0, duration=2060.288s, table=0, n_packets=47, n_bytes=4214, idle_age=1058, priority=1,in_port=4,dl_dst=82:55:f0:86:fb:43 actions=output:1
29  cookie=0x0, duration=2060.279s, table=0, n_packets=46, n_bytes=4116, idle_age=1058, priority=1,in_port=1,dl_dst=fa:86:b9:ac:94:db actions=output:4
30  cookie=0x0, duration=1855s, table=0, n_packets=36, n_bytes=3248, idle_age=594, priority=1,in_port=6,dl_dst=82:55:f0:86:fb:43 actions=output:3
31  cookie=0x0, duration=1854.990s, table=0, n_packets=35, n_bytes=3150, idle_age=594, priority=1,in_port=3,dl_dst=1a:fd:60:af:a0:b0 actions=output:6
32  cookie=0x0, duration=1819.533s, table=0, n_packets=33, n_bytes=3066, idle_age=1045, priority=1,in_port=5,dl_dst=82:55:f0:86:fb:43 actions=output:3
33  cookie=0x0, duration=1819.526s, table=0, n_packets=12, n_bytes=1008, idle_age=1045, priority=1,in_port=1,dl_dst=ee:1c:26:6a:2c:89 actions=output:5
34  cookie=0x0, duration=1819.524s, table=0, n_packets=12, n_bytes=1008, idle_age=1045, priority=1,in_port=3,dl_dst=ee:1c:26:6a:2c:89 actions=output:5
35  cookie=0x0, duration=1819.524s, table=0, n_packets=12, n_bytes=1008, idle_age=1045, priority=1,in_port=2,dl_dst=ee:1c:26:6a:2c:89 actions=output:5
36  cookie=0x0, duration=2075.403s, table=0, n_packets=18, n_bytes=1080, idle_age=1819, priority=0 actions=CONTROLLER:65535
复制代码

查看h1的ip netns:

 

 控制器如下:

 

arp learning中,只学到arp request的src_ip和in_port,没有学习arp reply的src_ip和in_port,所以dst_mac到哪里仍然不知道,只能Flood

定义以下流规则,安装到s1上,将1 2 3口加入到组中,从组转发:

 

 在s5上,安装如下规则:所有访问h1的报文,都从1端口转发

 

 此时,h1 ping h2只能在s1-eh1上抓取报文。

 

posted on   菜鸡咕咕叫  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
 
点击右上角即可分享
微信分享提示