动态路由协议:
动态路由协议分类:
- IGP -> RIPv2/EIGRP(distance vector)道听途说
OSPF/ISIS (link state) 自行计算 - EGP-> BGPv4
distance vector:
水平分割、路由毒化、路由定时器(使用这些机制来有效避免路由环路)注意:路由环路是三层环路
RIPv2
EIGRP(思科私有)
- 快速收敛
- 没有环路(三层环路)
- 支持多协议(除了支持IP协议,还支持很多其他协议。屠龙术)
- 可靠的路由协议(DUAL弥散更新算法)
- 支持非等价负载均衡(等价负载均衡是默认机制)
EIGRP的特性:
- successor 路由收敛稳定之后的最优next-hop节点
- feasible successor 仅次于路由收敛稳定之后的最优next-hop节点(是否存在有判断条件)
- advertised distance 本地的next-hop到达目的网络的metric
- feasible distance advertised distance + metric to neighbor(实际就是本地到达目的网络的metric)
feasible successor存在的判断条件是:
备份路径的advertised distance是否小于当前路径的feasible distance:
是:存在
否:不存在
EIGRP的三张表:
- 邻居表. show ip eigrp neighbor
- 拓扑表. show ip eigrp topology
- 路由表. show ip route eigrp
Link state:
OSPF. Open Shortest Path First
- 建立邻居。相互同步LSA信息(link state advertisement),最终实现每个路由器的LSA信息同步
- 维护数据库。每个路由器节点都将收到的和自己发送的所有LSA信息维护在本地的LSDB中。
- 计算路由表。area内,每个节点以自己为root,使用LSDB中的信息作为原料,以SPF算法(迪杰斯特拉算法)作为指导方针,计算SPF-TREE。最终每个路由器节点基于以自己为root的那棵SPF-TREE计算本地的最优路由表。
OSPF的三张表:
- 邻居表. show ip ospf neighbor
- 拓扑表(LSDB). show ip ospf database
- 路由表. show ip route ospf
OSPF的多area:
- ABR、ASBR
- area是接口级概念
OSPF的报文类型:
- hello
- DBD
- LSR
- LSU
- LSAck
OSPF的状态机:
- down
- init
- 2-way
- exstart
- exchange
- loading
- full
OSPF的router-id:
是一个IPv4地址格式的字符串,每个路由器节点其router-id都不能一样。
推荐手工指定。
邻居和邻接:
- 邻居:彼此之间发现对方的存在即为邻居。
- 邻接:不仅彼此发现对方的存在,还彼此之间有深入了解。
DR/BDR/DR-other:
是在MA环境中才会出现的一种角色。设计这种角色的目的是为了减少MA环境中大量存在的不必要更新。
IPv6:
IPv4 | IPv6 |
---|---|
点分十进制 | 冒号分十六进制 |
总长度32bit | 总长度128bit |
192.168.11.22 | 2001:0DB8:010F:0001:0000:0000:0000:0ACD |
2^32个地址 | 2^128个地址 |
世界上的每一粒沙都能得到一个IPv6地址。
IPv6地址太长了,输入时太耗时耗力,是否有缩略表达方式呢?(每个十六进制位对应4个二进制位)
进行IPv6地址缩略的基本前提是要保证缩略后的地址精确性。
- 前导零缩略
- 连续零缩略。IPv6地址中不同段的连续零,可以使用::来代替。但是::只可以出现一次。
2001:0DB8:010F:0001:0000:0000:0000:0ACD
2001:DB8:10F:1:0:0:0:ACD
2001:DB8:10F:1::ACD
错误示范:
2001:0000:0000:010F:0001:0000:0000:0ACD
2001:0:0:10F:1:0:0:ACD
2001::10F:1::ACD
IPv6地址分类:
unicast:
global unicast:全局单播地址,这种地址可以跨跳通信。
link-local unicast:链路本地地址,只能在本链路上通信,不可以跨跳通信。
R1的f0/0口,已经开启了Ipv6,这个接口上link-local地址是必须的。
FE80::(NETWORK-ID)
xxxxx (INTERFACE-ID)
路由器会使用EUI-64这种方法,来自动生成成INTERFACE-ID。
EUI-64这种方法的步骤如下:
- 将本接口的MAC地址从中间一分为二
- 在中间填充FFFE
- 从高到低第七位取反
0030.f2a6.0201
0030:f2a6:0201
0030:f2ff:fea6:0201
(00000010)
0230:f2ff:fea6:0201
如何区分一条流?flow
IPv4确定是否属于同一条流是基于五元组:
- source-ip
- destination-ip
- protocol
- source-port
- destination-port
IPv6确定是否属于同一条流是基于flow label,这个flow label是一个三层字段。只需要识别三层信息就够了!
ICMPv6
邻居发现ndp:
NS 邻居请求
NA 邻居通告
在IPv6中类似于ARP的协议是什么呢?
因此在IPv6中是使用ICMPv6的NS和NA报文来实现二层地址解析的!
假设ApingB:A发送NS,B恢复NA:
NS报文中携带:A的MAC和B的IP
NA报文中携带:B的MAC、A的IP和B的IP。
B收到A的NS后,B可以明确:A的MAC,B的MAC,A的IP、B的IP
A收到B的NA后,A可以明确:A的MAC,B的MAC,A的IP、B的IP
因为IPv6中没有ARP协议,因此以上的这些信息,会被保存在IPv6的邻居表中:
show ipv6 neighbors
无状态自动获取SLAAC(Stateless Address Auto Configuration) :
RS 路由器请求:由终端发出,向自己的网关进行请求
RA 路由器通告:有网关接口发出,其中携带prefix/mak以及时间等相关信息
当终端收到RA消息后,会使用其中的prefix/mask终端自己再生成interface-id,合成自己所需要的IPv6地址,这样就可以正常通信了!
与之相对的被称为有状态自动获取(DHCPv6),这个东西是为了方便管理!
IPv6静态路由配置:
ipv6 route 2021:192:168:22::/64 FastEthernet0/1 FE80::20B:BEFF:FE8B:A302
ipv6 route 2021:192:168:11::/64 FastEthernet0/0 FE80::201:97FF:FE41:501
IPv6动态路由协议配置:
RIPng:
ipv6 router rip cisco
interface fastEthernet 0/0
ipv6 rip cisco enable
interface fastEthernet 0/1
ipv6 rip cisco enable
EIGRP for IPv6:
ipv6 router eigrp 100
eigrp router-id 1.1.1.1
no shutdown
passive-interface FastEthernet0/1
interface FastEthernet0/0
ipv6 eigrp 100
interface FastEthernet0/1
ipv6 eigrp 100
OSPFv3:
ipv6 router ospf 100
router-id 1.1.1.1
passive-interface FastEthernet0/1
interface FastEthernet0/0
ipv6 ospf 100 area 0
interface FastEthernet0/1
ipv6 ospf 100 area 0
以太交换原理:
各种设备所处层级:by default,默认情况。
- hub:一层设备,只对信号负责。来了信号hub不管是什么内容,只负责信号的复制和发送。
- switch:二层设备,只对数据帧负责。来了数据后,只是别数据帧的二层信息。二层以上信息看都不看。
- router:三层设备,只对数据包负责。来了数据后,会识别三层以下信息。三层以上新看都不看。
以太网交换机的转发行为主要分为三种:
- flooding(交换机会将来向数据帧由1份复制成多份,并向外发送出去。因此flooding是比价消耗switch资源的)
当以太网交换机收到一个数据帧,其D-MAC为广播或组播时,交换机会对该数据帧执行flooding动作。
即,将该数据帧向着除来向端口之外的其他所有端口发送出去。
当以太网交换机收到一个数据帧,其D-MAC为单播,且该D-MAC在mac address table中没有找到匹配项,交换机将执行flooding动作。即,将该数据帧向着除来向端口之外的其他所有端口发送出去。
注:此情况为flooding的一种特例,被称为”未知单播泛洪“。 - forwarding
当以太网交换机收到一个数据帧,其D-MAC为单播时,且该D-MAC在mac address table中可以找到匹配项时,交换机会对该数据帧执行forwarding动作。即,将该数据帧向着mac address table中匹配项的指定端口发送出去。 - filtering
当以太网交换机收到一个数据帧,其D-MAC为单播,且通过mac address table查询发现该数据帧的D-MAC和S-MAC在交换机的同一个端口下连接,交换机将执行filtering动作。即,将该数据帧直接丢弃,不向任何端口发送出去。
避免交换机被mac address flooding attack:port-security
在交换机的端口下,设定可以学习到的mac地址的最大数目。如果超过这个数目,则产生应激动作。
一般选择这个应激动作为shutdown端口。
端口安全配置:
interface FastEthernet0/1
switchport access vlan 10
switchport mode access
switchport port-security
switchport port-security maximum 2
switchport port-security mac-address sticky
switchport port-security mac-address sticky 0001.C741.6006
switchport port-security mac-address sticky 0001.C90E.4A35
switchport port-security violation shutdown
VLAN Virtual LAN
提问:广播域如果非常大,好不好?
回答:不好,容易出现安全隐患。
因此人们期望把广播域可以逻辑地划分成多个。因此诞生了VLAN技术。
一般的终端,譬如像PC、printer、AP、camera,其网卡都是不支持vlan的。
因为这些设备的网卡不支持vlan,所以这些设备发出的或者接收的数据帧都是untagged!
关于vlan-tag的一些细节:
- 从access口入:tagged,tag-id取决于该access隶属于哪个vlan
- 从trunk口出:tagged,tag-id取决于该数据帧在交换机内部携带的tag-id
- 从trunk口入:tagged,tag-id取决于该数据帧在trunk链路上携带的tag-id
- 从access口出:untagged。
VLAN分割广播域实验:
SW01的配置:
vlan 10 # 创建VLAN10
vlan 20 # 创建VLAN20
interface FastEthernet0/11
switchport mode access # 将该端口定义为access工作模式
switchport access vlan 10 # 将该端口划入到VLAN10中
interface FastEthernet0/12
switchport mode access # 将该端口定义为access工作模式
switchport access vlan 20 # 将该端口划入到VLAN20中
interface FastEthernet0/1
switchport mode trunk # 将该端口定义为trunk工作模式
switchport trunk allowed vlan 10,20 # 将该trunk端口放行VLAN10和VLAN20的流量
SW02的配置:
vlan 10 # 创建VLAN10
vlan 20 # 创建VLAN20
interface FastEthernet0/13
switchport mode access # 将该端口定义为access工作模式
switchport access vlan 10 # 将该端口划入到VLAN10中
interface FastEthernet0/14
switchport mode access # 将该端口定义为access工作模式
switchport access vlan 20 # 将该端口划入到VLAN20中
interface FastEthernet0/1
switchport mode trunk # 将该端口定义为trunk工作模式
switchport trunk allowed vlan 10,20 # 将该trunk端口放行VLAN10和VLAN20的流量
Native-vlan:本征vlan
- 在trunk链路上,native-vlan的数据帧是untagged
- 在trunk链路上,native-vlan默认是vlan1,但是可以手工修改
- 在trunk链路上,两端的trunk口,需要保持相同的native-vlan
- 每个trunk口,只可以存在一个native-vlan
提问:Native-vlan的设计初衷是什么?
回答:其设计初衷是为了兼容傻瓜交换机(不支持vlan的交换机就是傻瓜交换机)!
VTP vlan trunking protocol 用来传输vlan信息的。
在交换网络中,所有交换机上的VLAN信息,必须同步!
VTP的工作模式:
工作模式 | 修改VLAN信息 | 传递VLAN信息 | VLNA信息的学习 |
---|---|---|---|
SERVER | 可以 | 可以 | 会学习 |
CLIENT | 不可以 | 可以 | 会学习 |
TRANSPARENT | 可以 | 可以 | 不学习 |
VTP的修订号:
- VTP的修订号会随着对VLAN的修改而增大。这个修改指的是新建或者删除VLAN。
- VTP的修订号在TRANSPARENT模式下,永远是0
- 所有交换机都会向修订号更大的那台交换机去学习VLAN信息。
VTP的配置:
vtp mode transparent
vtp domain ccna
vtp password cisco
vtp version 2
跨VLAN通信:
- 每个不同的VLAN都是一个独立的广播域
- 跨VLAN通信就是跨广播域通信
- 因此,跨VLAN通信必须跨路由器
单臂路由解决方案配置:
R1的配置:
interface FastEthernet0/1 # 使主接口up
no shutdown
interface FastEthernet0/1.100 # 创建子接口
encapsulation dot1Q 10 # 将该子接口对应到VLAN10
ip address 10.1.1.1 255.255.255.0 # 指定该子接口的IP地址,作为终端的网关
interface FastEthernet0/1.200 # 创建子接口
encapsulation dot1Q 20 # 将该子接口对应到VLAN20
ip address 20.1.1.1 255.255.255.0 # 指定该子接口的IP地址,作为终端的网关
SW01的配置:
vlan 10
vlan 20
interface FastEthernet0/11
switchport access vlan 10
switchport mode access
interface FastEthernet0/12
switchport access vlan 20
switchport mode access
interface FastEthernet0/1
switchport trunk allowed vlan 10,20
switchport mode trunk
三层交换机解决方案配置:
MLS的配置:
vlan 10
vlan 20
interface FastEthernet0/11
switchport access vlan 10
switchport mode access
switchport nonegotiate # 关闭cisco的DTP协商
interface FastEthernet0/12
switchport access vlan 20
switchport mode access
switchport nonegotiate # 关闭cisco的DTP协商
interface Vlan10 # 创建SVI接口作为VLAN10的网关
mac-address 00e0.b0ec.6201
ip address 10.1.1.1 255.255.255.0
interface Vlan20 # 创建SVI接口作为VLAN20的网关
mac-address 00e0.b0ec.6202
ip address 20.1.1.1 255.255.255.0
ip routing # 开启三层交换机的路由能力