作者Coming (--_--_-__--__----_-__-_)
看板Soft_Job
標題Re: [請益] 想自學SDN與ONOS 求推薦書籍
時間Sat Feb 27 00:18:54 2016
※ 引述《snsv (子龍出任務)》之銘言:
: 大家好 小弟最近想要自學SDN(Software Defined Network)
: 與ONOS(Open Network Operating System)
: 但發現兩者在網上的教學資源並不多,不像C或Java搜尋後就有一大堆相關的教學
: 之前有先上網看了清華大學OCW 黃能富教授的計算機網路概論
: 還有Coursera上的SDN教學影片
: 也有到onosproject網站上稍微看一下Tutorials
: 不過礙於零基礎的關係 所以看完後大概只知道一些概念性的東西
: 對於實際的操作與潛在的應用 還有該用哪些語言、工具 到現在還是不太了解
: 小弟目前只學過C 跟一點點的C++、一點點的Java
: 想請問板上的大大有沒有比較推薦的書籍或網路資源
: 最好是比較完整,適合從零開始的初學者
: 希望能在半年到一年之間做出一個小小的作品
: 懇請有涉獵這塊領域的大大們幫忙推薦一下 謝謝~
自學 SDN 的話,最好要先補些網路的基礎
L2 的 packet forwarding 主要是看 source/destination mac address 來
決定 switch 收到的 packet 要往哪個 port 丟
所以 switch 內有塊 mac address table 記錄哪個 mac address 是從 哪個
port 上線
1. unicast packet 在 switch 不知道 da 的狀況下,會把 packet flood 到
所有的 port。若 mac address table 已經 da 這筆記錄的話,就會往那個
port 丟
2. multicast/broadcast packet 這類的 packet 主要包含 ARP及 DHCP 等
packet。switch 內部在處理 packet 時,會透過 vlan 來限定 multicast
broadcast 所能轉發的 port。
3. 在 SDN 比較需要處理的 packet 類型有
0x0800 IPv4
0x0806 ARP
0x88CC LLDP (用來偵測網路拓撲)
0x8100 802.1q (VLAN)
L3 的話,則是看 source ip address 及 destination ip address 來決定
routing 的 next hop 問題。假設環境設定如下:
1. Host 1 192.168.10.1, MAC 00:AA
2. Host 2 192.168.10.2, MAC 00:BB
3. Host 3 192.168.20.3, MAC 00:CC
3. Router 10 192.168.10.254, MAC 00:10
4. Router 20 192.168.20.254, MAC 00:20
當 Host 1 要 ping Host 2 時,因為 Host 1 不知道 192.168.10.2 的 mac
address,所以它會先發 arp (broadcast) 來詢問 Host 2。問到 mac address
後,就可以把 DA 填成 00:BB 發 ping 給 Host 2
當 Host 1 要 ping Host 3 時,L3 routing 問題就跑出來了
Host 1 知道 192.168.20.3 與 192.168.10.1 不在同一個網段,所以 Host 1
的 IP packet 需要透過 Router 10 來轉發。通常 Router 10 及 Router 20
是有兩個網孔的同一台機器。ping 的順序如下:
A. Host 1 icmp packet, SA=00:AA, DA=00:01 指定 packet 要送
給 router 10 轉發 (這裡 Host 1 也需要先發 ARP 問 Router 10
的 MAC Address)
B. Router 10 收到 packet 後, 會依 Routing table 把 packet 轉
給另一個網路介面 Router 20。
C. Router 20 發 ARP 問 Host 3 的 MAC Address
4. Router 20 轉發 Host 1 的 icmp packet, 把 SA 改成 00:20,
DA 改成 00:CC。這樣就可以把 packet 送給 Host 3 了。
常用工具有:
1. wireshark 看封包
2. mininet 建立網路拓樸,需要寫 python 建立自定的拓撲
3. ovs 虛擬 switch, 搭配 mininet 一起用
ovs-vsctl 查看 switch 設定
ovs-ofctl 設定 openflow flow entry
4. controller 可以試試 ryu, onos, opendaylight 等
ryu 用 pyhton 寫,比較簡單,適合初學及研究
opendaylight 用 JAVA 寫的,若不是要找工作的話 不要碰 太大了
可以先用 mininet 搭配 ovs 的指令進行一些測試,例如:
1. 透過 match inport, output 到特定 port 來切割網路
2. 透過 match tcp 80 來監控網路流量
3. 不要使用 output normal 來實作 L2 forwarding
4. 用 flow entry 來模擬 L3 routing
希望這對你有幫助
我絕對不是為了幫做 SDN 產品的思銳科技打徵材廣告才來回這篇的
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.84.201
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1456503538.A.FDF.html
1F:推 snsv: 先推了 謝謝~ 02/27 00:57
2F:推 k3521: 0x0806應是ARP~ 02/27 01:04
感謝,我修一下錯誤
※ 編輯: Coming (114.40.84.201), 02/27/2016 09:05:54
3F:推 swinds24: 專業推! 02/27 09:46
4F:推 cobrasgo: 徵材的才打錯囉,還是你想徵的是木材,打出真心話了吼 02/27 09:51
5F:推 javy0521: 推! 02/27 09:52
6F:推 zhuzii: 這篇認真 推推推 02/27 10:53
7F:推 g12288: 太專業了不推不行 02/27 12:08
8F:推 Rlearnerk: 推 認真 02/28 21:53
9F:推 vettelhsiao: 推 03/03 02:05