标签:-o mac地址 .com 打开 install 退出 逻辑地址 执行 无法
MAC(media access control,介质访问控制)地址是识别LAN节点的标识。MAC对设备(通常是网卡)接口是全球唯一的,MAC地址为48位,用12个16进制数表示。前6个16进制数字由IEEE管理,用来识别生产商或者厂商,构成OUI(Organization Unique Identifier,组织唯一识别符)。后6个包括网卡序列号,或者特定硬件厂商的设定值。对于一个网卡来说,MAC地址是它的一个物理地址,是不可变的,而IP地址是它对应的一个逻辑地址,是可以更改的。
我们设想一个模型,有A、B、C、D这四台PC接在一台交换机上, 首先交换机最初加电时它里面的MAC地址表为空,也就是还没学习,在学习的最初状态。首先,比如A发给D一个数据, 这个时候交换机首先在连接A那台PC的端口上学习到A的MAC地址,并且把这个MAC地址记录到交换机里的MAC地址表里, 但是这个时候交换机并不知道D是在哪,因为MAC表里还没有D的MAC. 这个时候怎么办呢?交换机会复制多份这个数据(多帧复制),向交换机的所有端口都转发这个数据(除A接的那个端口外),这个称为泛洪,flooding 。当B和C接到这个数据时,首先检查目的地址,发现不是发给我的,那么就丢弃这个帧。 当D接到这个帧时,发现这是发给自己的,然后D便会发给A数据,这个时候交换机在D的接口又学习到了D的MAC地址 , 这个时候交换机学习到了两条MAC地址。
本次实验采用一个模拟二层交换机和两个主机拓扑图如下:
1.启动mininet创建一个线性拓扑,这里我们是使用screen来创建,可以在两个窗口之间切换。如果系统没有screen,可以直接sudo apt install screen。 screen mn --topo linear --mac --switch ovsk --controller=none
这里控制器设置为无,ovsk表示虚拟交换机为ovs Kernel mode。 ps:这里建议直接使用管理员root来执行screen,我用自己的账户执行screen会直接退出。或者在之前加上一个sudo。 sudo screen mn -topo linear --mac --switch ovsk --controller=none
然后得到下图,拓扑创建完毕。
2.输入nodes查看全部结点,理论上会返回两台交换机和两个主机。
3.输入net查看链路信息,按照拓扑,两台交换机之间相连,下分别挂载一个主机。
4.输入dump查看节点信息。
5.因为此时交换机s1和交换机s2是两个SDN交换机,而在启动Mininet时我们没有指定任何控制器,交换机中没有流表的存在,无法进行转发操作。此时主机h1和主机h2是无法进行通信的。我们需要按ctl+a+d跳出当前Mininet窗口,在主窗口命令行中输入如下命令来打开交换机s1和交换机s2的二层。操作完成后,s1和s2就是两台普通的二层交换机了。 然后我们回到主窗口命令行输入:
1 #ovs-vsctl del-fail-mode s1 2 #ovs-vsctl del-fail-mode s2
打开两个交换机的二层。接着我们可以ping一下两台主机得到下图:
6.接着我们查看数据帧转发表
1 # ovs-ofctl dump-flows s1 2 # ovs-ofctl dump-flows s2
可以看出来交换机已经进行过了mac地址学习。
原lab上还有关于学习过程的分析,就先不黏贴以后自己再写吧。
标签:-o mac地址 .com 打开 install 退出 逻辑地址 执行 无法
原文地址:https://www.cnblogs.com/pullself/p/10314857.html