基于ONOS的SDN-IP實(shí)驗(yàn)篇

責(zé)任編輯:editor005

2015-09-17 13:57:38

摘自:SDNLAB

本文主要是提供了有關(guān)ONOS的SDN-IP實(shí)例如何安裝、配置及在SDN網(wǎng)絡(luò)中如何運(yùn)行SDN-IP的操作,通過實(shí)踐了解并實(shí)現(xiàn)SDN網(wǎng)絡(luò)與外部網(wǎng)絡(luò)無縫對接融合。

本文主要是提供了有關(guān)ONOS的SDN-IP實(shí)例如何安裝、配置及在SDN網(wǎng)絡(luò)中如何運(yùn)行SDN-IP的操作,通過實(shí)踐了解并實(shí)現(xiàn)SDN網(wǎng)絡(luò)與外部網(wǎng)絡(luò)無縫對接融合。

20150107--based on SDN-IP of ONOS practice(2)

  1 網(wǎng)絡(luò)模型

SDN-IP允許SDN網(wǎng)絡(luò)與使用BGP路由協(xié)議相鄰的外部網(wǎng)絡(luò)對等和交換流量。下圖顯示了SDN-IP網(wǎng)絡(luò)模型中的各種元素。

201518--SDN-IP network model

  2 BGP對等拓?fù)鋵?shí)例

對于如何設(shè)置BGP拓?fù)錄]有嚴(yán)格的要求,只要每個SDN-IP實(shí)例能夠接收通過iBGP發(fā)布的SDN網(wǎng)絡(luò)的所有路由就可以了。下圖顯示了一個BGP配置實(shí)例:

201518--SDN-IP network iBGP

上圖網(wǎng)絡(luò)中的各個節(jié)點(diǎn)和線顯示了BGP對等會話。黑線是內(nèi)部BGP Speaker和外部BGP路由器之間建立的eBGP會話,紅線是BGP Speaker和SDN-IP實(shí)例之間的iBGP會話。

每個外部BGP路由器于一個或多個內(nèi)部BGP Speaker對等。 SDN-IP目前不支持外部多跳BGP對等會話,所以每個對等會話必須在同一個子網(wǎng)中。不同的對等會話可以在不同的子網(wǎng)中,所以為了對接外部路由器,在SDN網(wǎng)絡(luò)中需要為每個對等會話分配IP地址。在SDN網(wǎng)絡(luò)中的IP地址被分配給BGP Speaker。它不要求每個內(nèi)部BGP Speaker對應(yīng)外部每個路由器,因?yàn)锽GP Speaker在他們之間使用iBGP重新分配路由。然而,對于完全冗余的對接外部網(wǎng)絡(luò),外部peer應(yīng)該有多個內(nèi)部BGP Speaker對等會話。上圖可以看出, BGPRouter1與每個內(nèi)部BGP Speaker進(jìn)行對等會話。

網(wǎng)絡(luò)內(nèi)的BGP Speaker使用iBGP與SDN-IP實(shí)例進(jìn)行對等會話。SDN-IP是一個被動的iBGP peer:它監(jiān)聽BGP是否更新,但它不通知其自身的更新。在網(wǎng)絡(luò)內(nèi)的iBGP對等會話可以設(shè)置成多種方式,最簡單的方法是在BGP Speaker和SDN-IP實(shí)例之間進(jìn)行全網(wǎng)的iBGP對等會話,如上圖紅色線iBGP所示,通過這種方式,網(wǎng)絡(luò)中所有BGP節(jié)點(diǎn)都可以學(xué)習(xí)所有的路由。兩個SDN-IP實(shí)例之間的iBGP會話是沒有必要的,因?yàn)樵赟DN-IP實(shí)例中不上報自己的路由。各種不同的iBGP拓?fù)浣Y(jié)構(gòu)如下圖所示:

201518--SDN-IP instances

  3 SDN-IP配置

SDN-IP目前采用的是簡單的JSON文件格式導(dǎo)入配置數(shù)據(jù),主要有兩個單獨(dú)的文件:用來存儲IP和MAC地址的addresses.json和存儲BGP對等會話數(shù)據(jù)的sdnip.json。

201518--SDN-IP configure topo

  網(wǎng)絡(luò)文件配置:

配置文件需要放置在config目錄下。手動部署ONOS和SDN-IP,需要把配置文件復(fù)制在每個實(shí)例的config目錄下,目錄在KARAF_ROOT/../config,路徑目前還沒有配置。使用ONOS單元機(jī)制部署一個ONOS群集時,該配置文件可以放在ONOS_ROOT/tools/package/config目錄下,可以在管理節(jié)點(diǎn)上部署,當(dāng)集群部署時他們將自動被復(fù)制到在單元實(shí)例中的正確位置。

3.1 Addresses配置

Addresses.json配置的ONOS地址用來與外部網(wǎng)絡(luò)通信,主要是為了給proxy ARP使用,proxy ARP知道怎樣響應(yīng)來自外部網(wǎng)絡(luò)的ARP請求。如下所示:

{

"addresses" : [

{

"dpid" : "00:00:00:00:00:00:00:a1",

"port" : "1",

"ips" : ["10.0.1.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a2",

"port" : "1",

"ips" : ["10.0.2.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a5",

"port" : "1",

"ips" : ["10.0.3.101/24"],

"mac" : "00:00:00:00:00:01"

},

{

"dpid" : "00:00:00:00:00:00:00:a6",

"port" : "1",

"ips" : ["10.0.4.101/24"],

"mac" : "00:00:00:00:00:01"

}

]

}

文件中包含多個地址項(xiàng)的數(shù)組,每個地址項(xiàng)描述了交換機(jī)端口綁定的一系列地址,每個項(xiàng)包含綁定的交換機(jī)端口(通過DPID和端口號指定)、一系列的IP地址綁定到端口、一個單獨(dú)的MAC地址被用來每個IP地址的ARP響應(yīng)。SDN-IP運(yùn)行時,被SDN網(wǎng)絡(luò)用來對等外部BGP路由器的每個地址需要配置到addresses.json文件中。

3.2 BGP配置

sdnip.json文件包含BGP對等會話的詳細(xì)信息,也包含內(nèi)部BGP Speaker 和外部BGP peers之間的連通性。

{

"bgpPeers" : [

{

"attachmentDpid" : "00:00:00:00:00:00:00:a1",

"attachmentPort" : "1",

"ipAddress" : "10.0.1.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a2",

"attachmentPort" : "1",

"ipAddress" : "10.0.2.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a5",

"attachmentPort" : "1",

"ipAddress" : "10.0.3.1"

},

{

"attachmentDpid" : "00:00:00:00:00:00:00:a6",

"attachmentPort" : "1",

"ipAddress" : "10.0.4.1"

}

],

"bgpSpeakers" : [

{

"name" : "bgp",

"attachmentDpid" : "00:00:00:00:00:00:00:a3",

"attachmentPort" : "1",

"macAddress" : "00:00:00:00:00:01",

"interfaceAddresses" : [

{

"interfaceDpid" : "00:00:00:00:00:00:00:a1",

"interfacePort" : "1",

"ipAddress" : "10.0.1.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a2",

"interfacePort" : "1",

"ipAddress" : "10.0.2.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a5",

"interfacePort" : "1",

"ipAddress" : "10.0.3.101"

},

{

"interfaceDpid" : "00:00:00:00:00:00:00:a6",

"interfacePort" : "1",

"ipAddress" : "10.0.4.101"

}

]

}

]

}

sdnip.json主要是包含兩個列表: bgpPeers 和 bgpSpeakers。

bgpPeers包含SDN網(wǎng)絡(luò)對等的外部peer的entry,每個peer有一個對等的地址,連接SDN網(wǎng)絡(luò)的接入點(diǎn)通過DPID和port來指定。

bgpSpeakers包含SDN網(wǎng)絡(luò)中每個BGP Speaker的entry,BGP Speaker的頭部包含了Speaker的任意名稱,連接SDN網(wǎng)絡(luò)的接入點(diǎn)和BGP Speaker的MAC地址。每個BGP Speaker有一系列的“interfaceaddress”和IP地址用來對等會話。

3.3 SDN-IP端口配置

上文已經(jīng)提過,bgp端口地址是5000,在 KARAF_ROOT/etc/org.onosproject.sdnip.SdnIp.cfg.文件中進(jìn)行配置:

bgpPort=5000

4 運(yùn)行SDN-IP

onos-app-config 用來讀 addresses.json里的文件信息;onos-app-proxyarp用來代表主機(jī)和路由器響應(yīng)ARP請求的proxy arp模塊

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

配置依賴滿足后,安裝sdn-ip應(yīng)用:

onos> feature:install onos-app-sdnip

sdn-ip啟動,閱讀配置文件并安裝網(wǎng)絡(luò)intents建立 BGP peering 會話的連通性,然后使用多點(diǎn)單點(diǎn)intents安裝網(wǎng)絡(luò)開始接收路由。

以下SDN-IP命令主要用于用戶監(jiān)控系統(tǒng)狀態(tài):

顯示連接SDNIP的IBGP鄰居,每個鄰居有一個內(nèi)部BGPSpeaker,可以顯示顯示特定的鄰居:

bgp-neighbors [-j|--json] [-n|--neighbor ]

顯示BGP peers接收到的最佳路由信息,包括BGP指定信息:

bgp-routes [-j|--json] [s|--summary]

顯示一個特定BGP鄰居的所有路由信息(即使不是最佳路由):

bgp-routes [-j|--json] [n|–neighbor ]

顯示SDNIP的路由表信息,應(yīng)該幾乎和BGP路由信息相同,但是包括其他源路由信息:

routes [-j|--json] [s|--summary]

4.1 故障排查

(1)檢查SDNIP是否被安裝:

onos>feature:list | grep sdnip

(2)檢查內(nèi)部BGPSpeaker對等ONOS是否正確,如果正確,可以看到一系列內(nèi)部BGPSpeaker:

onos>bgp-neighbors

(3)檢查ONOS是否接收到期待的路由:

onos> routes

(4)路由被接收的話,為每個路由將啟動MultiPointToSinglePoint intents,通過查找MultiPointToSinglePoint intents數(shù)檢查是否正確,和路由數(shù)應(yīng)該是相同的,且所有的intents應(yīng)該是已安裝狀態(tài):

onos> intents –s

5 實(shí)例演示

5.1 Mininet中的設(shè)置

mininet> h1 ip addr show

...

inet 192.168.1.1/24 brd 192.168.1.255 scope global h1-eth0

...

mininet> h2 ip addr show

...

inet 192.168.2.1/24 brd 192.168.2.255 scope global h2-eth0

每個主機(jī)都有一個不同的IP子網(wǎng),當(dāng)SDNIP運(yùn)行時,這些主機(jī)之間能夠通信,這是因?yàn)樵赟DN網(wǎng)絡(luò)中使用了基于BGP路由的路由流量。

SDNIP未啟動時,主機(jī)間ping操作,是不通信的:

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

From 192.168.1.254 icmp_seq=1 Destination Net Unreachable

From 192.168.1.254 icmp_seq=2 Destination Net Unreachable

From 192.168.1.254 icmp_seq=3 Destination Net Unreachable

5.2 SDN-IP啟動運(yùn)行

onos> feature:install onos-app-config

onos> feature:install onos-app-proxyarp

onos> feature:install onos-app-sdnip

SDNIP成功啟動后驗(yàn)證主機(jī)間的連通性:

mininet> h1 ping h2

PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.

64 bytes from 192.168.2.1: icmp_seq=1 ttl=62 time=0.693 ms

64 bytes from 192.168.2.1: icmp_seq=2 ttl=62 time=0.139 ms

64 bytes from 192.168.2.1: icmp_seq=3 ttl=62 time=0.149 ms

由實(shí)驗(yàn)驗(yàn)證可知,主機(jī)間是可以通信的。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號