三層轉發原理
1.二層設備查的是MAC地址表,三層設備查的是路由表;
如果在路由表里面有多條路由,怎么轉發?
最長匹配原則;通過最長匹配可以找到下一跳,如果下一跳並不是直連網段,還需要根據下一跳查直連網段,直到找到直連網段,這種方法叫做迭代或者遞歸。
RIB->控制層面(路由條目的收斂和維護)FIB->轉發;FIB表是有RIB表生成的。


設備分為盒式和框式的
盒式設備:控制層面和轉發層面在一起的,統稱為集中式設備;
框式設備:MPU-主控板 ,用於控制層面的處理 ;
LPU-接口板用於轉發;一個IP包來了以后,可以直接查接收板卡的FIB表項,通過FIB表直接轉發,減輕 控制層面的壓力
2.FIB表
FIB表里面,掩碼長度從大到小對IP包進行排序;減輕查表的壓力和速度;FIB表是關聯鄰接表的
(show adjac ency),通過查一張表實現IP包的快速轉發。
所以,在FIB表里面,有目的MAC,源MAC,以太類型。


*******************************************************************************
AD管理距離
直連網段

EIGRP有3個AD值;
協議優先級
在什么情況下需要比較AD值?
如果同一條路由通過多種路由協議學習,需要比較AD值選出最優的一條
是有RIB來選的決定誰最優;


OSPF-110; EIGRP-90;
RIB表項會選取AD值小的路由條目;
*****************************************************************************
Metric值,度量值-距離產生的時間,時間最短的一個。
什么情況下才需要比較度量值?
如果同一條路由通過同一種路由協議的不同鄰居學到,需要比較metric值,優選metric值


[AD/ME]
例子:都是通過EIGRP學到的,比較metric是由路由協議來選的,路由器A通過同一種路由協議,不同的鄰居,收到同一條路由條目,A需要算,哪個鄰居到達目標哪個最短最優。B到達,100,C到達,1000,B勝出;
metric是通過綜合帶寬來算的;帶寬越大,cost值越小;


IP包轉發只看路由表做最長匹配;和AD/METRIC值沒有任何關系
作業:【綜合實驗】
PC1想訪問PC4的報文轉發過程?
PC1/PC2/PC3/PC4能收到哪些報文?
物理層設備
數據鏈路層設備
網絡層設備
1.PC1->PC4
第一個包:ARP包:PC1發送的ARP請求, 請求路由器0接口的MAC地址。
PC1/PC4不在同一網段(路由器每一個接口處於不同的廣播域,廣播是不能跨網段的,在路由器接口終止;每一個接口都是不同的網段),之間是不可能二層可達的,要通過三層轉發;
(看是否在同一網段:做一個與運算,用自己的接口掩碼和目標IP地址做一個與運算);
通過與運算,網絡位與自己一樣,處於同一網段;
網絡位與自己不一樣,處於不同的網段;
如果在同一網段,是可以直接二層轉發互通的;如果在不同網段就需要查路由表,看有沒有到達目標網段的路由;
PC1網關的地址——路由器0口的地址;通過查表可以得到一跳默認路由;可以匹配默認路由;
再看,默認路由的下一跳是路由器0的IP地址;
所以,把包給網關,看有沒有到達網關的MAC。
第二步:HUB泛洪
廣播報文,HUB是物理層設備,看不到數據鏈路層的MAC地址的,HUB收到電信號以后,會泛洪處理,從2、3口發出去,PC2是可以收到ARP請求的
第三步:交換機泛洪
信號被交換機收到,交換機收到會根據目的MAC查MAC地址表;由於現在交換機的MAC地址表是空的,交換機會做一個數據幀的泛洪;泛洪會從2口和3口發出去,
同時將源MAC地址綁定到1口上面;PC3會收到ARP請求。
第四步:路由器0口收到交換機3口的ARP請求
由於數據幀的MAC地址是個廣播MAC,通過二層是無法分析是給誰的?需要拆了2層看上層協議,發現是一個ARP協議,交給ARP進程處理,發現ARP報文里面的目標地址是自己接口的IP,說明ARP請求是發給自己的;路由器會回送一個ARP的應答,同時將發送源的IP地址和MAC地址綁定到ARP表里面;
ARP應答到SW,由於目的MAC已經綁定到1口上了,會做一個轉發而非泛洪;
在路由器里面會生成一個
ARP表項,去綁定發送源的IP地址和MAC地址;
第五步:路由器回送給PC1的單播ARP應答
源MAC:路由器接口的MAC
目的MAC:PC1的MAC
這個報文PC3收不到,回復報文因為HUB,PC2\PC1可以收到
第六步:經過這個過程PC1就獲取到了網關的MAC地址,下面就可以封裝一個ICMP報文,PC1發送給PC4的ICMP報文:
二層:DMAC=網關(路由器0口) SMAC=PC1 E-TYPE=0x0800
三層:源IP=PC1 目的IP=PC4 Protocol id=1 (ICMP)
ICMP:type=8 code=0
HUB泛洪,PC2可以收到這個報文; 交換機會做轉發,因為SW收到路由器的單播應答時,源MAC已經綁定到3口了;是直接轉發而不是泛洪。
第七步:數據幀會被路由器收到,checksum檢查報文完整性;
看數據幀目標 MAC地址是不是自己的MAC;
拆了2層看3層,需要通過三層轉發,獲取到目標的IP地址,根據IP地址查本地的路由表項,找到路由表,找到出接口,找到下一跳;
能找到一個直連的路由,找到一個出接口;轉發IP包,
找到一個直連的路由,
重寫二層,需要獲取到目的IP的MAC地址,路由器會查自己ARP表項,看ARP表項里面是否有目的IP的MAC?
沒有的話,發送ARP請求,獲取MAC;
??!!!
PC1發送一次ARP請求,路由器也會發送一次ARP請求
第八步:路由器向PC4發送ARP請求,這個請求報文只有PC4能收到
PC4會回復ARP應答,同時在本地ARP表項里面去綁定網關和MAC地址的對應關系
第九步:PC4 向路由器發送的ARP應答
生成ARP的綁定表,綁定PC4和MAC地址
因為路由器需要先查再轉發,這個ICMP報文會被路由器丟棄掉,PC1會繼續發ICMP請求報文
第十步:PC1向PC4的ICMP請求
路由器收到以后拆了2層看3層,通過目標IP地址進行查表轉發;
現在有了目標地址的MAC,可以重新寫二層發給PC4
PC2\PC4可以收到
第十一步:PC4回送一個ICMP應答
PC4->PC1
二層:DMAC=網關(路由器1口) SMAC=PC4 E-TYPE=0x0800
三層:源IP=PC4 目的IP=PC1 Protocol id=1 (ICMP)
ICMP:type=0 code=0
這個報文會被路由器收到,路由器也是拆了2層看3層,從0口發出去,並且重寫二層
重寫二層:源MAC=路由器0口的MAC地址;
目標MAC=PC1的MAC地址;
PC2照樣可以收到
一共發了7個報文,PC2都可以收到;
經過路由器,要重寫二層
每一個報文的報文結構要寫出來,作業案例要求發給我
PC1/PC2/PC3/PC4能收到哪些報文?


<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">