作者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/cn.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