通過兩個例子來展示“SDN新網(wǎng)絡”如何利用“軟件”解決傳統(tǒng)網(wǎng)絡中的問題。
SDN Controller通過Openflow和LLDP發(fā)現(xiàn)整網(wǎng)拓撲
整網(wǎng)拓撲如上圖所示
背景闡述:
所有交換機彼此互聯(lián)
交換機通過帶外方式(或網(wǎng)管網(wǎng)方式)連接Controller
交換機均使用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
那對于傳統(tǒng)交換機而已,正常情況他們是通過LLDP等類似的鄰居發(fā)現(xiàn)協(xié)議發(fā)現(xiàn)彼此網(wǎng)絡設備,形成整網(wǎng)拓撲。而在SDN環(huán)境中,設備是無腦的,此時需要借助Openflow和LLDP同時工作,來保障Controller環(huán)境下能夠對全網(wǎng)進行拓撲發(fā)現(xiàn)。
工作流程介紹:
交換機連線至Controller,通過電信號,Controller發(fā)現(xiàn)有支持Openflow的SDN交換機接入,此時,Controller能夠發(fā)現(xiàn)三臺SDN交換機接入了。注意,此時三臺設備之間的組網(wǎng)環(huán)境Controller是不清楚的。
Controller通過packet-out報文,封裝LLDP報文進Openflow,分別分發(fā)給每個交換機。此時的packet-out報文中含有動作:分發(fā)LLDP報文從交換機的每個端口發(fā)出去。
此時交換機A根據(jù)Controller的動作指令,將LLDP報文從交換機所有接口發(fā)出去。交換機B和交換機C此時都能收到這個報文。
LLDP報文經(jīng)過交換機之間的互聯(lián)鏈路到達對端SDN交換機。而此時正因為交換機是SDN無腦交換機,他對于報文的處理都是上送Controller而非本地操作。則此時接受到LLDP的對端交換機會將LLDP報文再次封裝,封裝進packet-in,并上送至Controller。
此時Controller收到對端SDN交換機封裝的packet-in報文,報文里包含原本的LLDP報文。此時Controller就已經(jīng)知道所有的拓撲連接關系了。
SDN控制器對于ARP報文的處理
背景闡述:
網(wǎng)絡拓撲已發(fā)現(xiàn)
控制器采用ODL(OpenDayLight)
本地主機H1(10.0.0.1)和對端主機H2(10.0.0.2)均連接于SDN交換機下面
整個過程是H1請求H2的ARP,H2響應H1
整個解析過程
H1去pingH2,即10.0.0.1去ping10.0.0.2。因為沒有H2的MAC,此時需要做一次ARP解析。此時ARP請求(原本是廣播)被SwitchA通過Openflow形式單播上送給Controller(packet-in報文)
Controller收到H1的ARP請求,記錄H1位于Switch A下游,且記錄相關的位置信息。