logo资料库

华为公司三层以太网交换机基本原理及转发流程(华为认证技术文章)..doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
1.二层转发流程
1.1.MAC地址介绍
1.2.二层转发介绍
1.3.VLAN二层转发介绍
华为公司三层以太网交换机基本原理及转发流程 华为认证技术文章 本文简要介绍了华为公司三层以太网交换机的二三层转发机制,主要 目的是帮助读者进一步了解华为交换机的基本原理及转发流程,以期有利 于更好的从事设备维护工作和建立于进一步学习的索引。 三层以太网交换机的转发机制主要分为两个部分:二层转发和三层交 换。 1. 二层转发流程 1.1. MAC地址介绍 MAC 地址是 48 bit 二进制的地址,如:00-e0-fc-00-00-06。 可以分为单播地址、多播地址和广播地址。 单播地址:第一字节最低位为 0,如:00-e0-fc-00-00-06 多播地址:第一字节最低位为 1,如:01-e0-fc-00-00-06 广播地址:48 位全 1,如:ff-ff-ff-ff-ff-ff 注意: 1)普通设备网卡或者路由器设备路由接口的 MAC 地址一定是单播的 MAC 地址才能保证其与其它设备的互通。 2) MAC 地址是一个以太网络设备在网络上运行的基础,也是链路层 功能实现的立足点。 1.2. 二层转发介绍 交换机二层的转发特性,符合 802.1D 网桥协议标准。 交换机的二层转发涉及到两个关键的线程:地址学习线程和报文转发 线程。 学习线程如下: 1
1)交换机接收网段上的所有数据帧,利用接收数据帧中的源 MAC 地 华为认证技术文章 址来建立 MAC 地址表; 2)端口移动机制:交换机如果发现一个包文的入端口和报文中源 MAC 地址的所在端口不同,就产生端口移动,将 MAC 地址重新学习到新的端口; 3)地址老化机制: 如果交换机在很长一段时间之内没有收到某台主 机发出的报文,在该主机对应的 MAC 地址就会被删除,等下次报文来的时 候会重新学习。 注意: 老化也是根据源 MAC 地址进行老化。 报文转发线程: 1)交换机在 MAC 地址表中查找数据帧中的目的 MAC 地址,如果找 到,就将该数据帧发送到相应的端口,如果找不到,就向所有的端口发送; 2)如果交换机收到的报文中源 MAC 地址和目的 MAC 地址所在的端 口相同,则丢弃该报文; 3)交换机向入端口以外的其它所有端口转发广播报文。 1.3. VLAN二层转发介绍 报文转发线程: 引入了 VLAN 以后对二层交换机的报文转发线程产生了如下的影响: 1)交换机在 MAC 地址表中查找数据帧中的目的 MAC 地址,如果找 到(同时还要确保报文的入 VLAN 和出 VLAN 是一致的),就将该数据帧 发送到相应的端口,如果找不到,就向(VLAN 内)所有的端口发送; 2)如果交换机收到的报文中源 MAC 地址和目的 MAC 地址所在的端 口相同,则丢弃该报文; 3)交换机向(VLAN 内)入端口以外的其它所有端口转发广播报文。 以太网交换机上通过引入 VLAN,带来了如下的好处: 1)限制了局部的网络流量, 在一定程度上可以提高整个网络的处理 能力。 2)虚拟的工作组,通过灵活的 VLAN 设置,把不同的用户划分到工作 2
组内; 3)安全性,一个 VLAN 内的用户和其它 VLAN 内的用户不能互访, 提高了安全性。 华为认证技术文章 另外,还有常见的两个概念 VLAN 的终结和透传, 从字面意思上就可 以很好的了解这两个概念。所谓 VLAN 的透传就是某个 VLAN 不仅在一台 交换机上有效,它还要通过某种方法延伸到别的以太网交换机上,在别的 设备上照样有效;终结的意思及相对,某个 VLAN 的有效域不能再延伸到 别的设备,或者不能通过某条链路延伸到别的设备。 VLAN 透传可以使用 802.1Q 技术,VLAN 终结可以使用 PVLAN 技术。 IEEE802.1Q 协议是 VLAN 的技术标准,主要是修改了标准的帧头,添 加了一个 tag 字段,其中包含了 VLAN ID 等 VLAN 信息,具体实现这里不 谈,如果有兴趣可以看相关的标准和资料。 注意:在 Trunk 端口转发报文的时候,如果报文的 VLAN Tag 等于端 口上配置的默认 VLAN ID,则该报文的 Tag 应该去掉,对端收到这个不带 Tag 信息的报文后, 从端口的 PVID 获得报文的所属 VLAN 信息,因此配 置的时候必须保证连接两台交换机之间的一条 Trunk 链路两端的 PVID 设 置相同。 为什么要去 Tag 呢? 这样做是为了保证一般的用户插到 Trunk 上以后,仍旧可以正常通信, 因为普通用户无法识别带有 802.1Q Vlan 信息的报文。 使用 802.1Q 技术可以很好的实现 VLAN 的透传,可是有的时候需要把 VLAN 终结掉,也就是说这个 VLAN 的边界在哪里终止,PVLAN 技术可以 很好的实现这个功能, 同时达到节省 VLAN 的目的。cisco 的 PVLAN 意 思是 private vlan,而我们的 PVLAN 意思是 primary vlan。 这里的 VLAN 有两类:Primary vlan 和 secondary vlan(子 VLAN)。 实现了接入用户二层报文的隔离,同时上层交换机下发的报文可以被 每一个用户接收到,简化了配置,节省了 VLAN 资源。具体实现这里不谈, 如果有兴趣可以相关资料。 3
华为认证技术文章 下面谈谈三层交换流程。 用 VLAN 分段,隔离了 VLAN 间的通信,用支持 VLAN 的路由器(三 层设备)可以建立 VLAN 间通信。但使用路由器来互联企业园区网中不同 的 VLAN 显然不合时代的潮流。因为我们可以使用三层交换来实现。 差别 1(性能):传统的路由器基于微处理器转发报文,靠软件处理, 而三层交换机通过 ASIC 硬件来进行报文转发,性能差别很大; 差别 2(接口类型):三层交换机的接口基本都是以太网接口,没有路 由器接口类型丰富;差别 3:三层交换机,还可以工作在二层模式,对某 些不需路由的包文直接交换,而路由器不具有二层的功能。 首先让我们看一下设备互通的过程: 如图所示:交换机上划分了两个 VLAN,在 VLAN1,VLAN 2 上配置了 路由接口用来实现 vlan1 和 vlan 2 之间的互通。 A 和 B 之间的互通(以 A 向 B 发起 ping 请求为例): 1) A 检查报文的目的 IP 地址,发现和自己在同一个网段; 2) A---->B ARP 请求报文,该报文在 VLAN1 内广播; 3) B---->A ARP 回应报文; 4) A---->B 5) B---->A icmp request; icmp reply; A 和 C 之间的互通(以 A 向 C 发起 ping 请求为例): 1) A 检查报文的目的 IP 地址,发现和自己不在同一个网段; 2) A---->switch(int vlan 1) ARP 请求报文,该报文在 VLAN1 内 广播; 4
华为认证技术文章 3) 网关---->A ARP 回应报文; 4) A---->switch icmp request(目的 MAC 是 int vlan 1 的 MAC, 源 MAC 是 A 的 MAC,目的 IP 是 C,源 IP 是 A); 5) switch 收到报文后判断出是三层的报文。检查报文的目的 IP 地址, 发现是在自己的直连网段; 6) switch(int vlan 2)---->C ARP 请求报文,该报文在 VLAN2 内 广播; 7) C--->switch(int vlan 2) ARP 回应报文; 8) switch(int vlan 2)---->C icmp request (目的 MAC 是 C 的 MAC,源 MAC 是 int vlan 2 的 MAC,目的 IP 是 C,源 IP 是 A)同步骤 4) 相比报文的 MAC 头进行了重新的封装, 而 IP 层以上的字段基本上不变; icmp reply,这以后的处理同前面 icmp request 的过程 9) C---->A 基本相同。 以上的各步处理中,如果 ARP 表中已经有了相应的表项,则不会给对 方发 ARP 请求报文。 怎么样来区分二和三层的数据流? 3526 产品是三层以太网交换机,在其处理流程中既包括了二层的处理 功能,又包括了三层的处理功能。 区别二三层转发的基本模型: 如图所示: 三层交换机划分了 2 个 VLAN, A 和 B 之间的通信是在一个 VLAN 内 5
完成,对与交换机而言是二层数据流,A 和 C 之间的通信需要跨越 VLAN, 华为认证技术文章 是三层的数据流。 上面提到的是宏观的方法,具体到微观的角度,一个报文从端口进入 后,Swtich 设备是怎么来区分二层包文,还是三层报文的呢? 从 A 到 B 的报文由于在同一个 VLAN 内部, 报文的目的 MAC 地址将 是主机 B 的 MAC 地址,而从 A 到 C 的报文,要跨越 VLAN,报文的目的 MAC 地址是设备虚接口 VLAN1 上的 MAC 地址。 因此交换机区分二三层报文的标准就是看报文的目的MAC 地址是否等 于交换机虚接口上的 MAC 地址。 以华为 S3526 交换机为例,三层交换机整个处理流程中分成了三个大 的部分: 1)平台软件协议栈部分 这部分中关键功能有: 运行路由协议,维护路由信息表; IP 协议栈功能,在整个系统的处理流程中,这部分担负着重要的功能, 当硬件不能完成报文转发的时候,这部分可以代替硬件来完成报文的三层 转发。另外对交换机进行 telnet, ping, ftp,snmp 的数据流都是在这部分来 处理。 举例: show ip route: Routing Tables: Destination/Mask 0.0.0.0/0 10.110.48.0/21 10.110.48.1/32 10.110.255.8/30 10.110.255.10/32 127.0.0.0/8 127.0.0.1/32 Proto Static Direct Direct Direct Direct Direct Direct Pre Metric 60 0 0 0 0 0 0 0 0 0 0 0 0 0 6 Interface Nexthop 10.110.255.9 10.110.48.1 127.0.0.1 VLAN-Interface2 VLAN-Interface1 InLoopBack0 10.110.255.10 VLAN-Interface2 InLoopBack0 InLoopBack0 InLoopBack0 127.0.0.1 127.0.0.1 127.0.0.1
Mac_Address VLAN ID 维护 ARP 表 show arp: IpAddress 10.110.255.9 00e0.fc00.5518 10.110.51.75 0010.b555.f039 10.110.54.30 0800.20aa.f41d 10.110.51.137 0010.a4aa.fce6 10.110.50.90 0010.b555.e04f 2 1 1 1 1 华为认证技术文章 Port Name GigabitEthernet2/1 Ethernet0/9 Ethernet0/10 Ethernet0/12 Ethernet0/8 Type Dynamic Dynamic Dynamic Dynamic Dynamic 2)硬件处理流程 主要的表项是:二层 MAC 地址表,和三层的 ip fdb 表,这两个表中用 于保存转发信息,在转发信息比较全的情况下,报文的转发和处理全部由 硬件来完成处理,不需要软件的干预。 这两个表的功能是独立的,没有相 互的关系,因为一个报文只要一进入交换机,硬件就会区分出这个包是二 层还是三层。非此即彼。 PORT INDEX VLAN ID STATE Learned Learned Learned 例如:show mac all: MAC ADDR 0000.21cf.73f4 0002.557c.5a79 0004.7673.0b38 0005.5d04.9648 0005.5df5.9f64 MAC 地址表是精确匹配的 IVL 方式, 其中关键的参数是:Vlan ID, Port index。 AGING TIME(s) 266 225 Ethernet0/19 Ethernet0/12 Ethernet0/9 Ethernet0/16 Ethernet0/16 Learned Learned 262 232 300 1 1 1 1 1 例如:show ipfdb all: 0: System 1: Learned Ip Address 10.11.83.77 10.11.198.28 10.63.32.2 10.72.255.100 2 2 2 2 2 2 2 2 2: UsrCfg Age RtIf Vtag VTValid 3: UsrCfg noAge Other: Error Port Mac Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 Status 1 1 1 2 7
10.75.35.103 10.75.35.106 2 2 华为认证技术文章 2 2 路由接口索引(RtIf):该索引用来确定该转发表项位于哪个路由接口 Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 2 2 下面,对 3526 产品来讲,支持的路由接口数目是 32; Vlan tag: 该值用来表明所处的 VLAN,该 VLAN 和路由接口是对应的; Vlan tag 有效位(VTValid):用来标识转发出去的报文中是否需要插入 Vlan tag 标记。 端口索引(Port):用来说明该转发表项的出端口; 下一跳 MAC:三层设备每完成一跳的转发,会重新封装报文中的 MAC 头,硬件 ASIC 芯片一般依据这个域里面的数值来封装报文头。 两个重要的概念: 解析,未解析,每次收到报文,ASIC 都会从其中提取出源和目的地址 在 MAC Table 或者 IP Fdb Table 中进行查找,如果地址在转发表中可以找 到,则认为该地址是解析的,如果找不到,则认为该地址是未解析的。根 据这个地址是源,还是目的,还可以有源解析,目的未解析等等的组合。 对于二层未解析,硬件本身可以将该报文在 VLAN 内广播,但是对于 三层报文地址的未解析报文硬件本身则不对该报文进行任何的处理,而产 生 CPU 中断,靠软件来处理。 硬件部分的处理可以用这句话来描述: 收到报文后,判断该报文是二或是三层报文,然后判断其中的源,目 的地址是否已经解析,如果已经解析,则硬件完成该报文的转发,如果是 未解析的情况,则产生 CPU 中断,靠软件来学习该未解析的地址。 3)驱动代码部分 其中关键的核心有: 地址解析任务:在该任务中对已经报上来的未解析的地址进行学习, 以便硬件完成后续的报文的转发而不需软件干预。 地址管理任务:为了便于软件管理和维护,软件部分保存了一份同硬 件中转发表相同的地址表 copy。 8
分享到:
收藏