SDN(四) RYU控制器下ping命令的具體執行過程

1 引言

積跬步以至千里,積怠情以至深淵。

本人將在此文檔中介紹在SDN網絡中ping命令的具體執行過程。若有不足,望讀者能在共同學習的同時,批評指正。

2 ping命令在傳統網路中的執行過程

首先,如果主機A,要去ping主機B,那麼主機A,就要封裝二層報文,他會先查自己的MAC地址表,如果沒有B的MAC地址,就會向外發送一個ARP廣播包,具體ARP報文格式請自行查閱。交換機會收到這個報文後,交換機有學習MAC地址的功能,所以他會檢索自己有沒有保存主機B的MAC地址,如果有,就返回給主機A,如果沒有,就會向所有端口發送ARP廣播,其它主機收到後,發現不是在找自己,就紛紛丟棄了該報文,不去理會。直到主機B收到了報文後,就立即響應,我的MAC地址是多少,同時學到主機A的MAC地址,並按同樣的ARP報文格式返回給主機A。主機A學到了主機B的MAC地址,就把這個MAC地址封裝到ICMP協議的二層報文中向主機B發送。即在ping命令過程中,主要執行兩個過程,當沒有MAC地址表的時候,先進行廣播,廣播後得到MAC地址,則進行發送ICMP過程。

3 ping命令在SDN網路中的執行過程

3.1 ARP交互

當H1 ping H2時,H1的ARP 緩存表爲空,因此會產生APR Request數據包發送至交換機S1,當交換機S1收到ARP Request數據包時,對初始的流表項(當控制器鏈接交換機後,會對交換機下發初始流表,且此流表優先級最低,當數據包沒有對應的流表項進行匹配時,匹配此流表,將其發送至控制器)進行匹配,並通過Packet-in方式發送給控制器。

控制器對接收到的packet-in數據包在mac-to-port中查找是否存在對應的MAC地址和端口。若不存在,則發送packet-out,對除源端口之外的所有端口進行泛洪處理,並將H1的對應MAC地址和端口信息存儲到mac-to-port 表中,這個過程控制器並不下發流表。

當H2收到泛洪信息後,將會回覆一條ARP Reply,因H2中也不存在MAC地址緩存表,且此時控制器沒有下發流表,所以ARP Reply也會執行packet-in發送到控制器,在控制器的mac-to-port 中存在了H1的信息,所以控制器會通過packet-out直接發送到端口1,同時下發關於入端口2,目的地址H1,輸出端口1的流表項,並且記錄H2相應的信息到mac-to-port表中。

在這裏插入圖片描述

3.2 ICMP交互

H1收到H2的迴應後,發送ICMP報文,但交換機中並不存在流表項來處理ICMP數據包,因此會用同樣的方式將報文發送到控制器,但此時,控制器中的mac-to-port表中存在了H2的相應信息,所以通過packet-out直接發送到端口,並同時下發關於入端口爲1,目的地址H2,輸出端口2的流表項,增加交換機流表中的流表項。
在這裏插入圖片描述

3.3 總體交互

在這裏插入圖片描述

發佈了13 篇原創文章 · 獲贊 28 · 訪問量 6625
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章