收藏 分销(赏)

galileo二三层转发芯片的工作原理.pptx

上传人:a199****6536 文档编号:4607212 上传时间:2024-10-06 格式:PPTX 页数:56 大小:129.87KB
下载 相关 举报
galileo二三层转发芯片的工作原理.pptx_第1页
第1页 / 共56页
galileo二三层转发芯片的工作原理.pptx_第2页
第2页 / 共56页
点击查看更多>>
资源描述
GALILEO 二三层转发芯片的工作原理内容概要芯片的种类设备号的划分虚设备的引入芯片的BUFFER芯片之间进行通信的过程芯片中的VLAN表芯片中的VLAN表项的建立芯片中的MAC地址表软件上如何得到FDB数据包如何进行转发Prefix tree的匹配同VLAN内数据通信的过程不同VLAN间数据通信的过程芯片的种类二层芯片:该种芯片不具备路由功能,对应到我们的实际应用中就是只能在位于同一个VLAN内的端口间进行通信。如果两个二层芯片的位于不同VLAN内的端口要进行通信,必须要借助三层芯片的路由功能或者由CPU来处理。350:8个100M电口360:一个1000M光口三层芯片:510:8个100M电口520:一个1000M光口设备号的划分对应于一个转发芯片,我们要给该芯片分配一个设备号来唯一的标志该芯片,以便以后用该设备号来访问相应的芯片。由于芯片的设计,决定了系统中最多有32个设备,031。CPU也相当于一个设备,也要占用一个设备号。在实际的通信中,可以将CPU看做是一个能够进行数据处理和转发的芯片。FLEX上设备的划分:FLEX上的crossbar芯片是48303,共有一个PCI端口和6个GLINK端口。PCI端口用于连接CPU,GLINK端口用于连接实际的转发设备。因为FLEX上只有一个crossbar,所以在设备号的划分上没有什么限制,只要在031之间就可以。现在系统中用了5个GLINK端口,设备号为04,CPU占用的设备号为7。BIG800上设备的划分:BIG800上的crossbar芯片是48302,共有一个PCI端口和8个GLINK端口。BIG800上最多可以插8个插板,每个插板都有一个302crossbar。各个插板之间的通信要通过背板,备板上共有4个302crossbar。在物理上,每个插板都要将自己的crossbar的1,2,6,7共4个GLINK端口分别与备板上的4个crossbar进行连接已保证插板间的通信。由于备板上的crossbar的8个GLINK端口的缺省配置以及物理上的连接方式,决定了各个插板上的设备号缺省按如下的方式分布:1:各个插板上都只有4个设备2:设备号的范围为slot*4(slot+1)*4-1)3:slot0/slot1可以作为主控板。如果作为主 控板,要给CPU分配一个设备号。由于 插板上只有4个设备号可用,所以实际中 主控板上只有3个转发芯片。slot0上的 CPU分配的设备号为0,slot1上为4。BIG400上设备的划分:BIG400上的crossbar芯片是48302/48304,共有一个PCI端口和8/12个GLINK端口。BIG400上最多可以插4个插板,每个插板都有一个302/304crossbar。各个插板之间的通信要通过背板,备板上共有2个302crossbar。在物理上,每个插板都要将自己的crossbar的1,2,6,7共4个GLINK端口分别与备板上的2个crossbar进行连接已保证插板间的通信。每两个GLINK端口连接到一个备板。由于备板上的crossbar的8个GLINK端口的缺省配置以及物理上的连接方式,决定了各个插板上的设备号按如下的方式分布:1:各个插板上都有8个设备号。如果 crossbar是302则有4个设备,304则有8 个设备。2:设备号的范围为 slot0:03,2831 slot1:411 slot2:1219 slot3:20273:slot0为主控板。CPU分配的设备号为0。虚设备的引入 由于二层芯片不具有三层芯片的路由功能,所以三层芯片在设计时提供了允许二层芯片借助它的路由功能的特性(当然,二层芯片也可以通过CPU来实现三层的转发,但速度要慢得多)。但前提是此三层设备除了本身已经占有的设备号之外还要再分配给它另外一个设备号,我们称这个设备号为虚设备号。如果我们为某个三层设备分配了一个虚设备号并使能借助路由功能,则该三层设备将二层设备以此虚设备为目的设备号送到它的数据包送到它的路由单元,然后进行转发。FLEX上虚设备的引入因为FLEX上只有一个crossbar,所以占用的设备号最多有7个(6个GLINK端口和一个PCI端口)。所以我们可以从剩余的设备号中任意挑选一个作为一个三层设备的虚设备号。目前选择的虚设备号是8。BIG800上虚设备的引入由于BIG800上可以插8个插板,而每个板上有4个设备,所以如果BIG800满插的话则32个设备号都被占了,将无法再获得一个虚设备号。所以,程序上目前的处理是看slot7是否有插板。如果有,三层设备将不向二层设备提供路由功能;如果没有插则提供路由功能。目前二层芯片借助的三层芯片是主控板上的一个设备。如果是slot0则借用的三层设备是3,如果是slot1则设备号为7。无论主控在哪个插板使用的虚设备都是原来在slot7上的30设备号。(要对主控板和备板的crossbar进行一些设置的改变)BIG400上虚设备的引入由于BIG400上的主控板上有8个设备号可以用,而实际上只有4个设备存在(占用的设备号为03),所以我们可以将没有使用的30做为虚设备号分配给主控板上的3设备(要对主控板的crossbar进行一些设置的改变,但备板不需要变化)。对于400上的虚设备的借用没有800上的限制。芯片的BUFFER二层与三层芯片都有GLINK BUFFER和网络端口BUFFER。BUFFER与我们软件中的BUFFER实际上是一样的,用来存储传输的数据。GLINK BUFFER与网络端口BUFFER是一个芯片的数据传输的两个方向的BUFFER。GLINK BUFFER:用于存储向端口传输的数据。网络端口BUFFER:用于存储从端口接收的数据。350:GLINK与网络端口共用160个BUFFER,它们 之间不能共享,但它的8个网络端口之间可以 共享BUFFER。这就是说8个端口的BUFFER的 总和可以大于整个分配给端口的BUFFER。360:GLINK与网络端口共用80个BUFFER,之间不 能共享。510:GLINK与网络端口各有2K个BUFFER,8个网 络端口之间可以共享BUFFER。520:GLINK与网络端口各有2K个BUFFER。芯片之间进行通信的过程假设我们有A向B发送数据,流程如下:首先向设备A发送数据包,这时要看A设备的对应的端口的port buffer pool中是否还有可用的buffer。如果没有,则数据包在此端口就将被drop掉。如果有,则此数据包将被存放在port buffer pool中。然后准备向目的方B进行传输。在向B发送数据之前要先看B端是否有BUFFER可以进行接收。因此,A要先向B发送一个buffer request的请求。在将此buffer request请求放到B端的buffer request queue中之前要看queue中是否已经满了。如果queue已经满了,则B将向A发送一个packet reject消息。A端在接收到此消息之后将drop掉已经存储在port buffer pool中的数据包,并释放占用的buffer。如果B端的buffer request queue没有满,则还要看port transmit queue中的还没有传输的队列的长度是否已经达到了我们设置的threshold的值:HOLhead of line。如果已经达到了HOL的值,B端也会同样向A端发送packet reject消息,A端也会进行同样的操作。如果没有达到HOL的值,则此buffer request请求才会被放到buffer request queue中。放入buffer request queue中并不意味着立即就可以得到处理。因为只有当B端的GLINK buffer pool中有可用的空间并且已经分配还没有释放的buffer的数量小于我们设置的GLINK buffer的threshold的值时,B端才会从buffer request queue中取出一个消息来进行处理:分配buffer,并向A端发送start of packet消息。A端接到此消息后,会将数据包发送到B端的GLINK分配的buffer中,并释放在本地的port buffer pool中占有的buffer。现在数据包已经在B端的GLINK buffer pool中。此时B要看port transmit queue中的队列的长度是否小于HOL的值。如果不小于,则此数据包将仍旧在GLINK buffer pool中存放,直到port transmit queue中的队列的长度小于HOL。然后,对应此数据包的描述符会发送到port transmit queue中,准备向外传输。但此时GLINK buffer pool中的被此数据包占用的buffer并没有释放。当port transmit queue处理到数据包对应的描述符时,此数据包将最终从目的端口传送出去,在GLINK buffer pool中占用的buffer也将被释放。对于二层的芯片,我们要使用芯片提供的buffer aging的检测机制。因为在某些特定的情况下会将buffer用光,比如GLINK buffer。这样,其他发向本设备的buffer request请求都将被存放到buffer request queue中而得不到处理,从而导致发送端的port buffer pool中的buffer得不到释放,最终可能会导致发送端的port buffer pool被用光,则后续的所有的包都将在接收端口就被drop掉。对于三层芯片没有提供自动的buffer aging机制,需要用程序来模拟消息来释放buffer。两个SWITCH之间的数据转发流程图crossbarBuffer requestPacket transferEnd of packetBuffer request queueGLINK buffer poolport transmit queueBAPort buffer pool芯片中的VLAN表不同的芯片中支持的VLAN entry的数量350:支持4095个VLAN entry360:支持4096个VLAN entry510:支持4095的VLAN entry520:支持4095的VLAN entryVLAN entry的组成 芯片中的VLAN表与我们软件上用SHOW VLAN命令看到的内容实际上是一样的,主要的内容如下:Valid:VLAN entry是否有效Port:当前设备位于此VLAN内的本地端口号PFORMAT:本地端口号是以tag还是非tag模式属于此 VLANDEV:位于此VLAN内的其他的设备号这样,在此设备上产生的新地址消息就会根据此VLAN表项的DEV域发送到其他的设备;而数据包也将根据DEV和port域转发到本地端口和其他的设备,到其他设备的数据包将根据所在设备的此VLAN表项中的port转发到该设备在VLAN中的本地端口,这样数据包就被转发到一个VLAN内的所有端口。芯片中的VLAN表项的建立芯片中VLAN的建立是通过我们执行CREATE VLAN来建立的,并通过添加/删除端口对其中的DEV,PORT,PFORMAT等域进行相应的变化。对于我们软件上创建的每一个VLAN,在所有的设备中都存在一个对应于该VLAN的自己的表项。软件上会将命令行中加入/删除的端口转化为实际的设备与设备上的端口号,然后以tag或非tag对entry进行设置的改变。每一次对VLAN的改变都会导致对所有的设备的该VLAN的表项进行重新的设置。芯片中的MAC地址表不同的芯片中支持的地址entry的数量350:支持8K个地址entry360:支持8K个地址entry510:支持24K的地址entry520:支持64K的地址entry地址entry的组成 芯片中的MAC地址表与我们软件上用SHOW FDB命令看到的内容实际上是一样的,主要的内容如下:Valid:地址entry是否有效Aging:地址是否老化。1:正常;2:老化Address:MAC地址VID:VLAN的IDDEV:设备号PORT:端口号ST:是否是静态的地址。1:静态;0:动态对于三层芯片,还有下面一个重要的内容:Route:目的地址匹配此entry的数据包是否送到路由 单元。1:送;0:不送地址的学习地址的学习都是指源地址而不是目的地址的学习。一个地址是否是新地址要由4部分来决定:MAC,VID,DEV,PORT。当一个数据包到达端口之后,端口要取出包中的源地址和VID在地址表中进行匹配。VID的获得通过下面的途径:1:如果数据包是tag的并且VID域不为0,则就用此 VID的值。2:如果数据包是tag的并且VID域为0或者数据包是非 tag的,则VID取端口的缺省的VID值。该值由软件对端口的寄存器进行设置,对应的值为此端口以非tag模式属于的VLAN的ID。在取得VID之后,用源MAC和VID在地址表中进行匹配的查找,如果没有找到匹配的表项 或找到匹配的表项当表项中的DEV和PORT不是接收此数据包的DEV和PORT,则此地址就是一个新地址,要根据当前端口所处的状态进行如下的操作:端口处于LOCK模式:则仅仅发送新地址消息到CPU,之后地址是否要学习由软件来实现。如果要学习,则先将此地址存放在软件的数据结构中,然后再写入设备中。端口处于非LOCK模式:在地址表中创建一个新的地址表项或者修改已经存在的地址表项中的DEV和PORT,同时向与该设备在同一个VLAN内的所有的设备发送新地址消息(如果CPU在此VLAN中也要发向CPU),这样其他的设备的地址表项中也会自动产生与此设备一样的地址表项。否则,如果找到匹配的表项并且表项中的DEV 和 PORT 与接收包的DEV和PORT是一样的,则此数据包就不会产生一个新地址消息,而只是将aging标志为设置为1,以防止该地址表项被老化。地址的老化我们现在采用的地址老化机制是由完全由设备来自动实现的。由程序在设备的寄存器中设置好时间间隔,然后每隔一个间隔设备就会自动将所有地址表项的aging标志设置为0。如果在下一次检查时aging标记仍然为0则次地址就将被老化掉。一旦地址老化之后,新地址消息将会由源设备发向系统中所有的设备(包括CPU),而不再区分VLAN的关系。这样,所有设备中的该地址表项的skip位都将被设置为1,从而达到该地址的老化。地址表项的aging位的set/reset只能由产生此新地址的特定设备的特定端口来设置。如果我们将地址老化时间设置为0,则地址将不会老化,就象静态地址一样。软件上如何得到FDB 软件上处理FDB的方式在FLEX与BIG上不同,处理的方式如下:FLEX:CPU存在于所有的VLAN中,所以所有的新地址消息(包括老化消息)都会送到CPU。软件上开辟了一块内存区域,并将该区域的首地址写到crossbar中,这样硬件上产生的新地址消息就会自动放到这个区域中,从而软件能得到由硬件产生的新地址消息。BIG:CPU只与一个我们称做自环的设备在所有的VLAN内,而自环设备相当于FLEX中CPU的位置,存在于所有其他设备的不同的VLAN中。这样,所有的新地址消息(不包括老化的)在自环设备中都存在,但却不会向CPU发送新地址消息。所以,对于这些新地址消息不会放到软件开辟的空间中,而是由软件通过一个任务不断的到这个设备中去查找来获得这些新地址(所以,对于新地址的处理,FLEX上要比BIG上快)。对于老化的新地址消息的处理与FLEX上是一样的,这些新地址消息将被放到软件为他们开辟的空间中。数据包如何进行转发首先我们要根据DA+VID/SA+VID在设备的地址表中进行查找。如果DA是一个单播地址并且地址entry存在:1:如果此地址entry中的DEV和PORT号就是当前接 收数据包的设备和端口,则丢弃。2:否则数据将按照entry中的内容转发到DEV设备的 PORT号端口。如果DA是一个单播地址并且地址entry没有发现(也就是说这是一个未知单播包),则设备将根据包中的VID找到此设备中的对应的VLAN表项,然后转发数据包到所有的在此VLAN中的端口(当然这些端口在设置上必须允许未知单播包向它们转发才可以)。如果CPU也在此VLAN中并且此设备在设置上可以向CPU发送未知单播包,则数据包也将发向CPU。程序中现在的设置未知单播包不会送到CPU。如果DA是一个多播地址并且地址entry没有发现,则设备将根据包中的VID找到此设备中的对应的VLAN表项,然后转发数据包到所有的在此VLAN中的端口。如果CPU也在VLAN中,数据包也将向CPU转发。如果DA是一个多播地址并且地址entry存在,则设备将根据entry中的VIDX域(而不是VID)找到此设备中的对应的VLAN表项,然后转发数据包到所有的在此VLAN中的端口。如果CPU也在VLAN中,数据包也将向CPU转发。Prefix tree的匹配IP route entry这些entry就是在best match模式下的next-hop entry。主要内容如下:VALID:route entry是否有效TRG_DEV:要转发到的设备TRG_PORT:要转发到的端口MAC_SA:转发的数据包中要设置的源MACMAC_DA:转发的数据包中要设置的目的MACDA_CMD:000-正常路由 001-路由后送到流分类单元 100-drop数据包 101-送到CPU对于DA_CMA,如果包是送到CPU则对应的值为101;在BIG上为0,并且TRG_DEV=2,TRG_PORT=0。也就是说送到自环设备然后再送到CPU,而不是直接送到CPU。PREFIX TREE NODE的内容VALID:next-hop被发现LEN:匹配节点的真实长度NEXT-HOP:next-hop entry的index对于level1与level2节点还有CON:还可以进行比当前更长的匹配MIN:在更长的匹配中的最小的index值MAX:在更长的匹配中的最大的index值level1节点有L2-BASE:当CON为1时*8是二层表的起始地址level2节点有L3-BASE:当CON为1时*8是三层表的起始地址level1level3 node在设备中的分布。level1共有64K(256*256)的entry,在每个三层设备的寄存器中有一个基地址,entry的查找直接用DIP的前16bit在此基地址上进行索引。所有的level2和level3表都是被动态分配的。PREFIX TREE的匹配过程匹配是一个最多为3步(从level1到level3)的过程。Level1用DIP的前16bit,level2用1724bits,level3用2532bits。在进行匹配之前,next-hop为缺省路由的entry。每次如果一个有效的节点在tree中被发现则将取代前一个next-hop。匹配总是从level1用DIP的前16开始,如果发现匹配的节点并且节点是有效的,则next-hop为节点中的next-hop的值。然后看此节点的continue是否为1:如果为1,并且DIP的1724对应的值在该节点的MIN和MAX之间,则说明有可能(可能没有,因为level1节点只是指明在level2表中有节点,这些节点在MIN和MAX之间,但并不一定之间所有的值都存在)有更长的可以匹配。然后会根据在level1节点的L2_BASE中记录的level2的基地址以DIP的1724对应的值进行索引。如果存在并且节点是有效的,则用此level2中的next-hop的值取代在level1中的next-hop。然后在level2中进行同样的操作。最后,按next-hop指定的entry的内容进行指定的操作。在三层设备中设置prefix tree的过程sh vlVLAN ID :2047Name :defaultVLAN Type :NormalIP Address :10.5.4.249/24Mac address :00:05:3b:00:00:00Tagged Ports :Untagged Ports:0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32 Harbour(config)#sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8Harbour(config)#sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 table:index valid cont len nextHop min max hPtr 4 1 0 7 16385 0 0 0 x0Harbour(config)#sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 entry:index valid cont len nextHop min maxhPtr 4 1 0 7 16385 0 0 0 x0The given level2 entry does not point to any level3 table.Harbour(config)#sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.4.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP ENTRY:1Harbour(config)#sh arpARP TABLE LIST:IP ADDRESS MAC ADDRESS TYPE REFERENCE USETOTAL:0Harbour(config)#sh fdb-Begin of Mac Address Table Information(all)-Mac address Port Vlan name Flags 00:05:3b:00:00:00 default System CPU Permanent Harbour(config)#ping 10.5.4.99PING 10.5.4.99:56 data bytes.Reply from 10.5.4.99:bytes=56:icmp_seq=0 ttl=127 time=0 msHarbour(config)#sh arpARP TABLE LIST:IP ADDRESS MAC ADDRESS TYPE REFERENCE USE10.5.4.99 00:10:dc:0d:f8:a4 DYNAMIC 0 2Harbour(config)#sh fdb-Begin of Mac Address Table Information(all)-Mac address Port Vlan name Flags -00:10:dc:0d:f8:a4 default Age 00:05:3b:00:00:00 default System CPU Permanent-Total 2 mac address entry showed.Harbour(config)#sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8Harbour(config)#sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 table:index valid cont len nextHop min max hPtr 4 1 1 7 16385 99 99 0 x18be84Harbour(config)#sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 4 4 0 x18bfe8level2 entry:index valid cont len nextHop min max hPtr 4 1 1 7 16385 99 99 0 x18be84level3 table:index valid len nextHop 99 1 7 16386Harbour(config)#sh ip route caGET INFO FROM DEVICE(3)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.4.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 16 0 2047 0 00:10:dc:0d:f8:a4 00:05:3b:00:00:00TOTAL IP ENTRY:2Harbour(config)#Harbour(config)#sh fdb-Begin of Mac Address Table Information(all)-Mac address Port Vlan name Flags -00:10:dc:0d:f8:a4 default Age 00:05:3b:00:00:00 default System CPU Permanent-Total 2 mac address entry showed.-End of Mac Address Table Information-Harbour(config)#sh fdb-Begin of Mac Address Table Information(all)-Mac address Port Vlan name Flags -00:05:3b:00:00:00 default System CPU Permanent-Total 1 mac address entry showed.-End of Mac Address Table Information-Harbour(config)#sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP ENTRY:2sh vlVLAN ID :2047Name :defaultVLAN Type :NormalIP Address :10.5.4.1/14Mac address :00:05:3b:00:00:00Tagged Ports :Untagged Ports:0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32 Harbour(config)#sh pre l1index valid cont len nextHop min max hPtr 2564 1 0 13 16385 0 0 0 x0 2565 1 0 13 16385 0 0 0 x0 2566 1 0 13 16385 0 0 0 x0 2567 1 0 13 16385 0 0 0 x0sh vlVLAN ID :2047Name :defaultVLAN Type :NormalIP Address :10.5.4.1/20Mac address :00:05:3b:00:00:00Tagged Ports :Untagged Ports:0:1 0:2 4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 4:10 4:11 4:12 4:13 4:14 4:15 4:16 4:17 4:18 4:19 4:20 4:21 4:22 4:23 4:24 4:25 4:26 4:27 4:28 4:29 4:30 4:31 4:32Harbour(config)#sh pre l1index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008Harbour(config)#sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 table:index valid cont len nextHop min max hPtr 0 1 0 3 16385 0 0 0 x0 1 1 0 3 16385 0 0 0 x0 2 1 0 3 16385 0 0 0 x0 3 1 0 3 16385 0 0 0 x0 4 1 0 3 16385 0 0 0 x0 5 1 0 3 16385 0 0 0 x0 6 1 0 3 16385 0 0 0 x0 7 1 0 3 16385 0 0 0 x0 8 1 0 3 16385 0 0 0 x0 9 1 0 3 16385 0 0 0 x0 10 1 0 3 16385 0 0 0 x0 11 1 0 3 16385 0 0 0 x0 12 1 0 3 16385 0 0 0 x0 13 1 0 3 16385 0 0 0 x0 14 1 0 3 16385 0 0 0 x0 15 1 0 3 16385 0 0 0 x0Harbour(config)#sh ip route caGET INFO FROM DEVICE(1)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:00TOTAL IP ENTRY:1Harbour(config)#ping 10.5.4.99Reply from 10.5.4.99:bytes=56:icmp_seq=0 ttl=127 time=0 msHarbour(config)#sh pre l2 2565level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 table:index valid cont len nextHop min max hPtr 0 1 0 3 16385 0 0 0 x0 1 1 0 3 16385 0 0 0 x0 2 1 0 3 16385 0 0 0 x0 3 1 0 3 16385 0 0 0 x0 4 1 1 3 16385 99 99 0 x18befc 5 1 0 3 16385 0 0 0 x0 6 1 0 3 16385 0 0 0 x0 7 1 0 3 16385 0 0 0 x0 8 1 0 3 16385 0 0 0 x0 9 1 0 3 16385 0 0 0 x0 10 1 0 3 16385 0 0 0 x0 11 1 0 3 16385 0 0 0 x0 12 1 0 3 16385 0 0 0 x0 13 1 0 3 16385 0 0 0 x0 14 1 0 3 16385 0 0 0 x0 15 1 0 3 16385 0 0 0 x0Harbour(config)#sh pre l3 2565 4level1 entry:index valid cont len nextHop min max hPtr 2565 0 1 0 0 0 15 0 x18c008level2 entry:index valid cont len nextHop min max hPtr 4 1 1 3 16385 99 99 0 x18befclevel3 table:index valid len nextHop 99 1 7 16386Harbour(config)#sh ip route caGET INFO FROM DEVICE(3)Index nextHopIP DevNo PortNo VID DA_CMD MAC_DA MAC_SA16385 10.5.0.0 2 0 2047 0 00:05:3b:00:00:00 00:00:00:00:00:0016386 10.5.4.99 16 0 2047 0 00:10:dc:0d:f8:a4 00:05:3b:00:00:00TOTAL IP ENTRY:2Harbour(config)#同VLAN内数据通信的过程假设A,B两台PC机在同一个VLAN内,我们从A PING B。则A会先发一个ARP 请求包,此包会在此VLAN内广播,所以会到达B所连接的设备,进而到达B。在A发送ARP请求包时会产生一个新地址消息,此消息将被写入switch1中,并且向VLAN内所有的设备发送此新地址消息,所以switch2也会在MAC地址表添加同样的entry(该entry的地址为A的地址,并指明了A所连接的设备和端口)。当B发送ARP回应报文时,目的MAC为A的MAC地址,按转发原理将会匹配刚添加的MAC entry。这样,switch2将会自动将包送到A而不会在VLAN内全部发送。同样,B在发送ARP回应报文时也会产生新地址消息,也同样会在swith1中添加新的MAC entry。这样,A在发送ICMP报文时就会匹配该entry而直接发送到B(同样不会在VLAN内全部发送),同样B会进行回复。对于同一个VLAN内的数据的通信不需要CPU的干预。同VLAN内的两个设备的通信流程图crossbarswitch2switch1ARP requestICMP requestARP replyICMP replyARP request包将产生新地址消息ARP reply包将产生新地址消息PC:APC:B不同VLAN间数据通信的过程 假设A的IP地址为1.1.1.10,所在的VLAN的IP地址为1.1.1.1/24。B的IP地址为2.2.2.20,所在的VLAN的IP地址为2.2.2.2/24。这样在两个VLAN都UP之后,在三层设备中将存在两个route entry,指明凡是送到路由单元的DIP符合1.1.1.0/24和2.2.2.0/24的数据包都被送到CPU(通过2自环设备,它与CPU在一个VLAN内)。当然,A,B的网关都要设置为对应的VLAN的IP地址。A想要与B通信,由于不在同一个网段内,所以要将数据包送到网关。因为当前还没有网关的MAC地址,所以A会发送一个ARP请求包,目的IP为1.1.1.1。因为是一个广播包,所以会送到自环2设备(因为自环
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服