本周重点
①交换机&路由器的基本配置(eNSP的使用)
1、交换的基本配置
2、路由器的基本配置(划分网段、静态路由、指定线路)
②虚拟局域网VLAN的基本运用-交换机
1、VLAN的基本概念
2、VLAN实验(实现虚拟局域网、单臂路由、三层交换)
③STP生成树和MSTP多生成树
1、STP生成实验(CE系列开启STP)
2、MSTP分流实验(CE系列)
3、VRRP虚拟路由实验(路由主备切换)
④动态路由协议
1、RIP协议(运用性差,只能16跳)
2、OSPF协议(**重点关注,会计算最短路径。)
Python代码
1、二维数组
2、图的遍历(BFS)
本周主要内容
DAY1 交换机&路由器的基本配置(eNSP的使用)
①交换机 实验1 HUB
②交换机 实验2 LSW
查看mac和interface(port)对应的关系
dis mac-addr
③路由器-实验3 划分网段
PC1和PC2要设置网关。
AR4的设置:
sys #进入系统视图 int g0/0/0 #进入0/0/0这个接口 ip add 192.168.10.254 24 #对g0/0/0添加一个ip地址 int g0/0/1 #进入0/0/1这个接口 ip add 192.168.20.254 24 #对g0/0/1添加一个ip地址
查看路由信息:
dis ip routing-table
④路由器-实验4 配置静态路由
AR5配置-静态路由
ip route-static 192.168.30.0 24 192.168.20.2
AR6配置-静态路由
ip route-static 192.168.10.0 24 192.168.20.1
⑤路由器-实验5 配置指定路线的静态路由
PC1 —-> AR5 —-> AR6 —-> PC2
PC2 —-> AR6 —-> AR8 —-> AR5 —->PC1
ar5 sys int g0/0/0 ip add 192.168.10.254 24 int g0/0/1 ip add 192.168.20.1 24 int g0/0/2 ip add 192.168.40.1 24 ar6 sys int g0/0/0 ip add 192.168.20.2 24 int g0/0/1 ip add 192.168.30.254 24 int g0/0/2 ip add 192.168.50.1 24 ar8 sys int g0/0/0 ip add 192.168.40.2 24 int g0/0/1 ip add 192.168.50.2 24 ar5上配路由 sys ip route-static 192.168.30.0 24 192.168.20.2 ar6上配路由 sys ip route-static 192.168.10.0 24 192.168.50.2 ar8上配路由 sys ip route-static 192.168.10.0 24 192.168.40.1
⑥*Python代码(二维数组)
十六进制
十进制转二进制,二进制转十六进制
概念,逢16进1:
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
一个十六进制得数字需要几个二进制位来表示?
4位二进制数能够完整的表示一个十六进制的数字 0x: 代表后面的数字是16进制。 0x01 = 0000 0001 0x10 = 0001 0000 0x30 = 0011 0000 0xA0 = 1010 0000 0xF0 = 1111 0000 0xFF = 1111 1111
图的表示-二维数组
arr = [[0,1,3,10], [1,0,5,2], [3, 5, 0, 7], [10, 2, 7, 0]] #print(len(arr[1])) def traceEdge(arr): #表示大数组里面有几个小数组 m = len(arr) for i in range(m): #每一个小数组的长度是n n = len(arr[i]) for f in range(n): print(arr[i][f]) traceEdge(arr)
DAY2 VLAN的基本运用-交换机
①VLAN的概念(虚拟局域网)
随着公司规模的扩大,局域网会越来越大:
1. 难维护;2. 广播风暴;3. 安全。
对局域网进行划分,划分成不同的网络,可以使用路由器。但是路由器,成本高,性能相对低。所以可以进行vlan划分(可以看教材)。vlan的基本原理是在数据链路层插入新的【标签】。
虚拟vlan的的端口设置一般有三种:
1. access: 一般是用于PC和交换机进行连接的 2. trunk:一般是用于交换机和交换机(路由器)之间连接的 3. hybrid:暂时用不到,可以不用去管
②VLAN 实验(实现虚拟局域网)
实验-1(虚拟局域网的分隔access)
PC1-PC4的设置
略
LSW1的设置
vlan 10 vlan 20 int g0/0/1 port link-type access port default vlan 10 #把g0/0/2设置到vlan20里 #把g0/0/3按照图里面的进行设置 #设置g0/0/4
实验-2 (模拟划分虚拟局域网trunk)
PC1-PC4
略
命令
LSW2 sys vlan batch 10 20 int g0/0/1 p l a p d v 10 int g0/0/2 p l a p d v 20 int g0/0/3 p l trunk port trunk allow-pass vlan 10 20 LSW3 sys vlan batch 10 20 int g0/0/2 p l ap d v 10 int g0/0/3 p l ap d v 20 int g0/0/1 p l trunkport trunk allow-pass vlan 10 20
③access和trunk的接收与发送
access接口接收:
情况1:不带标签,会自动的加上vlan默认的标签,就是我们设置的default vlan。
情况2:带标签的,判断标签和vlan接口是否一致,如果不一样,就不对其进行转发,如果一样,就转发。
access发送:
情况3:如果数据和default vlan一致,就进行去标签转发;
情况4:如果不一致,就不转发。
trunk的接收:
情况1:如果数据帧是untagged(没又打标签),会打上pvid的标签进行发送。
情况2:如果数据帧是tagged(打过标签),会和trunk的allow list进行比对,查看该帧的tag是否在allow list。
trunk的发送:
情况3:交换机拿数据帧和pivd做比较,如果一样,就去掉tag后发送;
情况4:如果不一样,就检查是否在allow list里面,如果在,就直接发送;
④单臂路由(路由器虚拟网关)
为了实现不同vlan之间的通信,可以把一个物理的接口划分成不同的子接口,现在基本上已经不用了。
LSW2 sys vlan batch 10 20 int g0/0/1 p l ap d v 10 int g0/0/2 p l ap d v 20 int g0/0/3 p l t p t a v 10 20 AR2设置 sys int g0/0/0.1 dot1q termination vid 10 ip add 192.168.10.254 24 arp broadcast enable int g0/0/0.2 dot1q termination vid 20 ip add 192.168.20.254 24 arp broadcast enable
⑤三层交换 (交换机配置vlan的网关Ip)
通过交换机实现:
1. 划分广播域;2. 不同网段之间进行通信。
概念
-
具备路由功能的交换机(二层物理转发+三层路由转发)
-
传统三层交换机:一次路由多次转发。
-
基于CEF的三层交换:维护两张表,邻接表,路由表。
LSW1
和单臂路由的配置一样
LSW2
sys int g0/0/1 vlan batch 10 20 p l t p t a v all #允许所有的vlan int vlan 10 ip add 192.168.10.254 24 (配置vlan10的网关) int vlan 20 ip add 192.168.20.254 24 (配置vlan20的网关)
⑥Python代码(图的遍历)
图的另一种表达方式
图的遍历(BFS)
图的表达方式又两种:
1. 矩阵(n x n);2. 邻接表
邻接表-表示
def initGraph(V, edges, noOfEdges): adj = [0] * V for i in range(0, len(adj)): adj[i] = [] for i in range(0, noOfEdges): addEdge(adj, edges[i][0], edges[i][1]) # adjacencylist(adj, V) return adj def addEdge(adj, u, v): adj[u].append(v) def adjacencylist(adj, V): for i in range(0, V): print(i, "->", end="") for x in adj[i]: print(x, " ", end="") print() V = 6 edges = [[0, 1], [1, 2], [1,3],[2, 3],[3,0],[4,5]] noOfEdges = len(edges); graph=initGraph(V, edges, noOfEdges) print(graph)
图的广度遍历BFS
def BFS(graph,s): queue=[ ] visited=[False] * len(graph) queue.append(s) while len(queue) > 0: s = queue.pop(0) print(s, end = " ") for i in graph[s]: if visited[i] == False: queue.append(i) visited[i] = True BFS(graph,0)
DAY3 STP和MSTP
①STP的生成实验
STP(Spanning Tree Protocol)是生成树协议,其基本原理是通过交换机传递一种特殊的协议报文。 主要按照“树”的结构建立网络拓扑,以防止网桥中的网络形成冗余链路。 STP协议虽然在不同厂商网络设备的配置和体现功能强度上会有所差异,但原理和应用效果是一致的。
汇聚层交换机做了冗余备份,可能会产生环路,STP协议破环。
1. 选根桥(网桥ID最小的就是根桥,通过dis stp这个命令查看【CIST Bridge】); 2. 选根端口(同一个交换机上) 2-1. 离根桥近的为根端口; 2-2. 比较直连网桥id的大小,小的为根端口; 2-3. 比较端口大小,端口小的为指定端口; 3. 选指定端口(同一条链路上) 3-1. 根桥上的端口都是指定端口(可以省略); 3-2. 离根桥近的为指定端口; 3-3. 比网桥id; 3-4. 比较端口短小。 4. 剩下的为阻塞端口; #查看端口信息可以使用:dis stp brief
练习:
②CE系列交换机开启STP实验
CE系列操作
CE1 sys int g1/0/0 undo shutdown #开启接口 commit #保存配置 int g1/0/1 undo shutdown commit stp enable #开启STP服务 stp mode stp #开启STP commit CE2 sys int g1/0/0 undo shutdown commit int g1/0/1 undo shutdown commit stp enable stp mode stp commit 如果不开启STP,会出现广播风暴。
③MSTP分流实验
多生成树协议MSTP(Multiple Spanning Tree Protocol)
只使用STP,所有的压力都会在一个交换机上,所以需要使用MSTP。
目的:为了实现分流,需要根据vlan构造两颗虚拟的树。
LSW1 sys vlan batch 10 20 int g0/0/3 p l a p d v 10 int g0/0/4 p l a p d v 20 int g0/0/1 p l t p t a v 10 20 int g0/0/2 p l t p t a v 10 20 ----------LSW1配置多生成树---------- sys stp region-configuration region-name RG1 instance 1 vlan 10 instance 2 vlan 20 active region-configuration LSW2 sys vlan batch 10 20 int g0/0/3 p l a p d v 10 int g0/0/4 p l a p d v 20 int g0/0/1 p l t p t a v 10 20 int g0/0/2 p l t p t a v 10 20 ----------LSW2配置多生成树---------- sys stp region-configuration region-name RG1 instance 1 vlan 10 instance 2 vlan 20 active region-configuration CE1 sys int g1/0/0 undo shutdown commit int g1/0/1 undo shutdown commit q stp enable y commit stp mode mstp sys vlan batch 10 20 commit int g1/0/0 p l t p t a v all commit int g1/0/1 p l t p t a v all commit int g1/0/2 p l t p t a v all commit ----------CE1配置多生成树---------- sys stp region-configuration region-name RG1 instance 1 vlan 10 instance 2 vlan 20 commit ----------CE1设置根桥---------- stp instance 1 root primary commit CE2 sys int g1/0/0 undo shutdown commit int g1/0/1 undo shutdown commit q stp enable y commit stp mode mstpsys vlan batch 10 20 commit int g1/0/0 p l t p t a v all commit int g1/0/1 p l t p t a v all commit int g1/0/2 p l t p t a v all commit ----------CE2配置多生成树---------- sys stp region-configuration region-name RG1 instance 1 vlan 10 instance 2 vlan 20 commit ----------CE2设置根桥---------- stp instance 2 root primary commit
一个区域可以按照vlan划分成不同的实例(instance 1和2)。
查看dis stp brief
可以抓包看流量的走向;
可以断掉一个CE交换机,查看主备的切换。
④VRRP虚拟路由实验
virtual router redundancy protocal(虚拟路由协议),可以做主备切换,但是不能分流。
实验
设置AR2和AR3以及PC1和PC2的IP地址
略
AR2设置VRRP
int g0/0/1 vrrp vrid 21 virtual-ip 192.168.10.254 vrrp vrid 21 priority 120 #优先级默认是100,提高到120,代表设置当前的路由器为MASTER
AR3设置VRRP
int g0/0/1 vrrp vrid 21 virtual-ip 192.168.10.254
查看vrrp状态
dis vrrp
关闭AR2后,查看流量走向,并且查看vrrp的状态。
DAY4 *动态路由(待续)
①RIP协议
RIP(Routing Information Protocol,路由信息协议) 是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。 RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。
地址范围
A类:
范围:1.0.0.0 到126.0.0.0子网掩码是:8位,255.0.0.0
B类:
范围:128.0.0.0到191.255.255.255子网掩码是:16位,255.255.0.0
C类地址:
范围:192.0.0.0到223.255.255.255子网掩码是:24位,255.255.255.0
如果4.0链路断开了,可能会产生环路。
解决环路:
水平分割解决环路(RIP协议自带的):从某个口接收到的路由信息,就不会再从该口发出。
缺点:
1. 跳数由限制;2. 宣告进rip协议的网络部分要按照标准的ABC类来写。
实验
设置IP地址
略
设置RIP
#AR1 rip 21#21是自己定的 network 192.168.10.0 (C类地址) network 172.16.0.0(B类地址) #AR2 rip 21 #21是自己定的 network 192.168.30.0 (C类地址) network 172.16.0.0(B类地址)
还由一个RIP2,可以不按照固定的地址类型来设置的。
②OSPF的基本概念
1、概述
动态路由协议,没由”跳数“的限制,会计算最短路径。
Dijkstra algorithm,迪杰斯特拉最短路径。
2、表(table)
邻居表
路由器A的邻居有哪些。
dis ospf peer
拓扑表
一个完整的拓扑信息。
dis ospf lsdb
路由表
路由表可以通过最短路径算法(dijkstra)计算出最优的路径。
dis ospf routingdis ip routing-table
②OSPF的基本使用实验
基本使用
#AR1的设置 router id 1.1.1.1 #给路由器取名字 ospf 110 area 0 network 10.0.12.1 0.0.0.255 #AR2的设置 router id 2.2.2.2 给路由器取名字 ospf 110 area 0 network 10.0.12.2 0.0.0.255 查看三张表的信息
③OSPF报文的类型(过程)
Hello
发现邻居,建立邻接关系。
DBDs(database descriptor packets)
两个功能
1. 选取MASTER, SLAVE 2. 交换LSDB的summarie(摘要)
AR1:
以下内容为拓扑表(lsdb),里面的每一个条目就叫LSA。
Type LinkState ID AdvRouter Age Len Sequence Metric Router 10.0.23.3 10.0.23.3 1553 48 80000008 1 Router 2.2.2.22 2.2.2.22 31 48 8000000F 1 Router 10.0.34.4 10.0.34.4 1208 48 80000006 1 Router 1.1.1.1 1.1.1.1 1205 48 8000000B 1 Router 3.3.3.3 3.3.3.3 2949 36 80000003 1 Network 10.0.14.1 1.1.1.1 1205 32 80000002 0 Network 10.0.23.2 2.2.2.22 31 32 80000003 0 Network 10.0.12.1 1.1.1.1 1366 32 80000003 0 Network 10.0.34.3 10.0.23.3 1553 32 80000002 0
AR2:
Type LinkState ID AdvRouter Age Len Sequence Metric Router 10.0.23.3 10.0.23.3 1508 48 80000008 1 Router 2.2.2.22 2.2.2.22 1786 48 8000000E 1 Router 10.0.34.4 10.0.34.4 1166 48 80000006 1 Router 1.1.1.1 1.1.1.1 1162 48 8000000B 1 Router 3.3.3.3 3.3.3.3 2905 36 80000003 1 Network 10.0.14.1 1.1.1.1 1162 32 80000002 0
LSRs(link state Request)
请求发送缺失的LSA,LSDB里面的每一条记录叫LSA(link state advertisement);
LSU(link state Update)
更新信息。
LSAcks
确认。
④OSPF路由器种类
IR:区域内路由器 ABR:区域间路由器(ospf区域) BR:骨干区域的路由器 ASBR:自治系统边界路由器(OSPF和其它区域)
⑤OSPF的通信过程(实验)
两个路由器之间的通信过程
1、发现彼此
down:还没有启动的时候。
init:有了邻居,但还没有完全同步;
2-way:知道了彼此,并且知道了对方【知道自己】。
2、了解彼此的缺陷
3、修补彼此的缺陷
区域内的通信过程
AR1:是DR AR2:是BDR AR3:是OR(other router,其它路由) AR4:是OR
AR3和AR4是不会彼此交换数据(只会发现彼此),因为所有的数据都是通过DR来进行交换的,AR3和AR4会发现彼此,而且状态就是2-way。
dis ospf peerR3和R4的状态是:2-way
组播地址区分:
224.0.0.5(代表的是该区域内所有的路由器) 224.0.0.6(代表的是DR和BDR)
如果DR有更新的时候
DR会发送LSU到224.0.0.5 BDR会发送LSAcks到224.0.0.5 OR会发送LSAcks到224.0.0.6
如果BDR有更新的时候
BDR会发送LSU到224.0.0.5 DR会发送LSACks到224.0.0.5 OR会发送LSACks到224.0.0.6
如果OR有更新的时候
OR会发送LSU到224.0.0.6 DR会发送LSU到224.0.0.5 BDR会发送LSACK到224.0.0.5
⑥OSPF-LSA的Type(拓扑表的类型实验)
dis ospf lsdb #查看拓扑表 dis ospf peer #查看邻居表 ospf dr-priority 100 #设置优先级 AR1 sys router id 1.1.1.1 int g0/0/0 ip add 10.0.12.1 24 int g0/0/1 ip add 10.0.13.1 24 q ospf 110 area 0 network 10.0.12.1 0.0.0.255 network 10.0.13.1 0.0.0.255 AR2 sys router id 2.2.2.2 int g0/0/0 ip add 10.0.12.2 24 int g0/0/1 ip add 10.44.24.2 24 q ospf 110 area 0 network 10.0.12.2 0.0.0.255 area 44 network 10.44.24.2 0.0.0.255 AR3 sys router id 3.3.3.3 int g0/0/0 ip add 10.0.13.3 24 int g0/0/1 ip add 10.55.35.3 24 q ospf 110 area 0 network 10.0.13.3 0.0.0.255 area 55 network 10.55.35.3 0.0.0.255 AR5 sys router id 5.5.5.5 int g0/0/0 ip add 10.55.35.5 24 q ospf 110 area 55 network 10.55.35.5 0.0.0.255 AR4 sys router id 4.4.4.4 int g0/0/0 ip add 10.44.24.4 24 int g0/0/1 ip add 10.44.46.4 24 q ospf 110 area 44 network 10.44.24.4 0.0.0.255 area 44 network 10.44.46.4 0.0.0.255 AR6 sys router id 6.6.6.6 int g0/0/0 ip add 10.44.46.6 24 int g0/0/1 ip add 192.168.67.6 24 q ospf 110 area 44 network 10.44.46.6 0.0.0.255 import-route rip 21 #给路由增加rip 21 rip 21 network 192.168.67.0 AR7 sys router id 7.7.7.7 int g0/0/0 ip add 192.168.67.7 24 rip 21 network 192.168.67.0
Typer 1-5
⑦OSPF区域类型的基本概念
标准区域
如果area88是标准区域,那么该区域内的路由器包含130条相关的路由条目。
area包含type:1,2,3,4,5
STUB末梢区域
如果area88是末梢(stub)区域,那么该区域内的路由器包含31条相关的路由条目。
0.0.0.0 ABR
把区域33变成stub区域
如果是stub区域,area33包含type:1,2,3
完全STUB末梢区域
把区域33变成【完全stub区域】,区域33的路由信息会发生变化。
area33包含type:1,2,[3] (3会减少,变成一条)
非完全末梢区域(NSSA)
not so stubby area
如果88是NSSA,那么一共有81条路由信息。
非完全末梢,如果把area44变成【非完全末梢区域】
area44包含Type:1,2,3,7(纠正图101)
完全NSSA
area44包含type:1,2,[3],7(纠正图101)
⑧OSPF区域类型(实验)
STUB(末梢区域)实验
把AR3和AR5设置成STUB
AR3设置STUB之前的LSDB
AR3上设置:
ospf 110 area 55 stub
只设置AR3,邻居会变少(不知道AR5的存在),是因为AR5还是在标准区域里面。
AR5上设置:
ospf 110 area 55 stub
area55变成stub之后的LSDB
结论:type 5 的lsa消失了,变成了一条typr3的
完全STUB实验
把AR3和AR5设置成完全STUB
在AR3和AR5上分别设置:
ospf 110 area 55 stub no-summary
查看LSDB
结论:type3会合并成一条
NSSA(非完全末梢)实验
AR2设置NSSA之前的LSDB
在AR1上设置会报错:
[Huawei]ospf 110 [Huawei-ospf-110]area 0 [Huawei-ospf-110-area-0.0.0.0]nssa Error: Configuring the backbone area as a NSSA area is prohibited.
报错的原因是因为骨干区域不能当作NSSA(骨干区域也不能设置成STUB)
把区域44设置成NSSA后的LSDB
结论:type7,合并成了一条默认的路由
type7,和自己相邻的内容(实验环境外部只有一条子网)
完全NSSA-实验
把区域44设置成完全nssa:
ospf 110 area 44 nssa no-summary
查看AR2的LSDB
结论:type3合并成了一条默认路由