通過兩個(gè)例子來展示“SDN新網(wǎng)絡(luò)”如何利用“軟件”解決傳統(tǒng)網(wǎng)絡(luò)中的問題。
SDN Controller通過Openflow和LLDP發(fā)現(xiàn)整網(wǎng)拓?fù)?/span>
整網(wǎng)拓?fù)淙缟蠄D所示
背景闡述:
所有交換機(jī)彼此互聯(lián)
交換機(jī)通過帶外方式(或網(wǎng)管網(wǎng)方式)連接Controller
交換機(jī)均使用Openflow協(xié)議。Openflow使用TCP端口6633或6653作為接收的監(jiān)聽端口。目前最新Openflow協(xié)議為1.5.1,詳見ONF的spec。(https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/Openflow/Openflow-switch-v1.5.1.pdf)
無特殊Controller指定,各類型都OK
那對(duì)于傳統(tǒng)交換機(jī)而已,正常情況他們是通過LLDP等類似的鄰居發(fā)現(xiàn)協(xié)議發(fā)現(xiàn)彼此網(wǎng)絡(luò)設(shè)備,形成整網(wǎng)拓?fù)洹6赟DN環(huán)境中,設(shè)備是無腦的,此時(shí)需要借助Openflow和LLDP同時(shí)工作,來保障Controller環(huán)境下能夠?qū)θW(wǎng)進(jìn)行拓?fù)浒l(fā)現(xiàn)。
工作流程介紹:
交換機(jī)連線至Controller,通過電信號(hào),Controller發(fā)現(xiàn)有支持Openflow的SDN交換機(jī)接入,此時(shí),Controller能夠發(fā)現(xiàn)三臺(tái)SDN交換機(jī)接入了。注意,此時(shí)三臺(tái)設(shè)備之間的組網(wǎng)環(huán)境Controller是不清楚的。
Controller通過packet-out報(bào)文,封裝LLDP報(bào)文進(jìn)Openflow,分別分發(fā)給每個(gè)交換機(jī)。此時(shí)的packet-out報(bào)文中含有動(dòng)作:分發(fā)LLDP報(bào)文從交換機(jī)的每個(gè)端口發(fā)出去。
此時(shí)交換機(jī)A根據(jù)Controller的動(dòng)作指令,將LLDP報(bào)文從交換機(jī)所有接口發(fā)出去。交換機(jī)B和交換機(jī)C此時(shí)都能收到這個(gè)報(bào)文。
LLDP報(bào)文經(jīng)過交換機(jī)之間的互聯(lián)鏈路到達(dá)對(duì)端SDN交換機(jī)。而此時(shí)正因?yàn)榻粨Q機(jī)是SDN無腦交換機(jī),他對(duì)于報(bào)文的處理都是上送Controller而非本地操作。則此時(shí)接受到LLDP的對(duì)端交換機(jī)會(huì)將LLDP報(bào)文再次封裝,封裝進(jìn)packet-in,并上送至Controller。
此時(shí)Controller收到對(duì)端SDN交換機(jī)封裝的packet-in報(bào)文,報(bào)文里包含原本的LLDP報(bào)文。此時(shí)Controller就已經(jīng)知道所有的拓?fù)溥B接關(guān)系了。
SDN控制器對(duì)于ARP報(bào)文的處理
背景闡述:
網(wǎng)絡(luò)拓?fù)湟寻l(fā)現(xiàn)
控制器采用ODL(OpenDayLight)
本地主機(jī)H1(10.0.0.1)和對(duì)端主機(jī)H2(10.0.0.2)均連接于SDN交換機(jī)下面
整個(gè)過程是H1請求H2的ARP,H2響應(yīng)H1
整個(gè)解析過程
H1去pingH2,即10.0.0.1去ping10.0.0.2。因?yàn)闆]有H2的MAC,此時(shí)需要做一次ARP解析。此時(shí)ARP請求(原本是廣播)被SwitchA通過Openflow形式單播上送給Controller(packet-in報(bào)文)
Controller收到H1的ARP請求,記錄H1位于Switch A下游,且記錄相關(guān)的位置信息。