三层以太网交换机ip fdb表及其代码示例,三层以太网交换机关于受到硬件处理流程的问题,将在下面的文字中涉及到,如何访问列表过滤进出报文,搜集证据并联系安全部门或机构呢?
硬件处理流程:
主要的表项是:二层MAC地址表,和三层以太网交换机的ip fdb表,这两个表中用于保存转发信息,在转发信息比较全的情况下,报文的转发和处理全部由硬件来完成处理,不需要软件的干预。这两个表的功能是独立的,没有相互的关系,因为一个报文只要一进入交换机,硬件就会区分出这个包是二层还是三层以太网交换机。非此即彼。
三层以太网交换机例如:display mac-address:
MAC ADDR VLAN IDSTATEPORT INDEX AGING TIME(s)
0000.21cf.73f4 1 Learned Ethernet0/19 266
0002.557c.5a791 Learned Ethernet0/12 225
0004.7673.0b381 Learned Ethernet0/9 262
0005.5d04.96481 Learned Ethernet0/16 232
0005.5df5.9f64 1 Learned Ethernet0/16 300
MAC地址表是精确匹配的IVL方式, 其中关键的参数是:Vlan ID, Port index。
三层以太网交换机例如:show ipfdb all:
0: System 1: Learned 2: UsrCfg Age 3: UsrCfg noAge Other: Error
Ip Address RtIf VTag VTValid Port Mac Status
10.11.83.77 22Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 1
10.11.198.2822Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 1
10.63.32.2 22Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 1
10.72.255.100 22Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 2
10.75.35.10322Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 2
10.75.35.10622Invalid GigabitEthernet2/1 00-e0-fc-00-55-18 2
路由接口索引(RtIf):
该索引用来确定该转发表项位于哪个路由接口下面,对3526产品来讲,支持的路由接口数目是32;Vlan tag: 该值用来表明所处的VLAN,该VLAN和路由接口是对应的;Vlan tag有效位(VTValid):用来标识转发出去的报文中是否需要插入Vlan tag标记。
端口索引(Port):
用来说明该转发表项的出端口;下一跳MAC:三层以太网交换机设备每完成一跳的转发,会重新封装报文中的MAC头,硬件ASIC芯片一般依据这个域里面的数值来封装报文头。两个重要的概念:
解析,未解析,每次收到报文,ASIC都会从其中提取出源和目的地址在MAC Table或者 IP Fdb Table中进行查找,如果地址在转发表中可以找到,则认为该地址是解析的,如果找不到,则认为该地址是未解析的。
根据这个地址是源,还是目的,还可以有源解析,目的未解析等等的组合。对于二层未解析,硬件本身可以将该报文在VLAN内广播,但是对于三层以太网交换机报文地址的未解析报文硬件本身则不对该报文进行任何的处理,而产生CPU中断,靠软件来处理。
硬件部分的处理可以用这句话来描述:
收到报文后,判断该报文是二或是三层以太网交换机报文,然后判断其中的源,目的地址是否已经解析,如果已经解析,则硬件完成该报文的转发,如果是未解析的情况,则产生CPU中断,靠软件来学习该未解析的地址。
驱动代码部分:
其中关键的核心有:地址解析任务:在该任务中对已经报上来的未解析的地址进行学习,以便硬件完成后续的报文的转发而不需软件干预。地址管理任务:为了便于软件管理和维护,软件部分保存了一份同硬件中转发表相同的地址表copy。fib(forwarding information base)表: 这个表的信息来源于ip route table中的路由信息,之所以把它放在了driver部分, 是为了地址解析任务在学IP地址时查找的方便。
三层以太网交换机举例:
display fib:
Destination/MaskNexthopFlag Interface
0.0.0.0/0 10.110.255.9 IVLAN-Interface2
10.110.48.0/21 10.110.48.1 D VLAN-Interface1
10.110.48.1/32 127.0.0.1 D InLoopBack0
10.110.255.8/3010.110.255.10 D VLAN-Interface2
10.110.255.10/32 127.0.0.1 D InLoopBack0
127.0.0.0/8127.0.0.1 D InLoopBack0
三层以太网交换机转发主要涉及到两个关键的线程:地址学习线程和报文转发线程,这个和二层的线程是类似的;报文转发线程主要根据地址学习线程生成的转发表(ipfdb table)信息来对报文进行转发,如果里面的信息足够多,这个转发的过程全部由硬件来完成,如果信息不够。
则会要求地址学习线程来进行学习,同时该报文硬件不能转发,会交给软件协议栈来进行转发。地址学习线程主要用来生成硬件转发表(ipfdb table)其实ipfdb table和二层的MAC地址表也是类似的,只不过里面的具体表项所代表的含义和所起的作用不同罢了。
有一个问题:在路由器等软件转发引擎中,每收一个报文都会去查路由表查下一跳,然后再查ARP表找下一跳的MAC,可是在三层以太网交换机(如S3526)中,报文转发的时候不需要去查路由表和ARP表,这样的话,这两个表是不是就没有什么作用了?
回答当然是否定的,在S3526的三层以太网交换机转发流程中,过程一般都是这样的,第一个报文硬件无法转发,要进行IP地址的学习,同时为了保证不丢包,该报文也由软件来进行转发,在学习完成以后。
第二,第三个报文以后就一直是由硬件来完成转发了,这个过程也可以套用“一次路由,多次交换”来形象的进行总结,在一次路由中,要利用路由表和ARP表来学习IP地址,和转发第一个报文,在以后的多次交换过程中,则只要有ipfdb table就可以了。