Skip to content

YanHaoChen/SDN-vlan_v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SDN-vlan_v2

利用環境配置資訊,自動化連接 VLAN 群體,完成在 SDN 下的 VLAN 管理。

功能

  • 以 Switch 為單位,建立各個 VLAN 群體

    • 一個 VLAN 產生一棵無迴圈樹,並以此樹轉送此 VLAN 的廣播封包。
  • 同 VLAN 的各主機間,規劃最短路徑轉送封包(並非走 VLAN 樹)

    • 提高整體效率。

執行

因使用到EventSwitchEnter事件來紀錄拓樸,所以在執行sdn_vlan_v2.py時,需加入--observe-links

$ ryu-manager --observe-links sdn_vlan_v2.py

環境配置

self.vlans = {
			'hosts':{
					'00:00:00:00:00:01':{"IP":'10.0.0.1',"VLAN_ID":20},
					'00:00:00:00:00:02':{"IP":'10.0.0.2',"VLAN_ID":20},
					'00:00:00:00:00:03':{"IP":'10.0.0.3',"VLAN_ID":30},
					'00:00:00:00:00:04':{"IP":'10.0.0.4',"VLAN_ID":30},
					'00:00:00:00:00:05':{"IP":'10.0.0.5',"VLAN_ID":30}
					}
			}

Table 轉送邏輯

# 預留用來過濾封包
Table 0* 沒有 Match 任何規格 -> 轉送至 Table 1

# 1. 加入對應 VLAN tag
Table 1:
	priority=99
	* Match(eth_src=管轄內主機, vlan_vid=none) -> 加入對應 VLAN tag轉往 Table 2
	
# 1. VLAN 樹通道
# 2. 同 VLAN 主機間最短路徑
# 3. 轉送封包至對應主機
# 4. trunk 預設 Drop

Table 2:
	priority=20
	* Match(vlan_vid= Switch 所在的 VLAN 群體) -> 送往 trunk主機

	priority=50
	* Match(eth_dst ,vlan_vid) -> 送往對應 trunk最短路徑priority=50
	* Match(eth_dst ,vlan_vid) -> 送往對應主機

	priority=0
	* Match(in_port=trunk) -> Drop 

VLAN 建樹流程

  • Switch 加入個別 VLAN 樹之條件(情境):

    1. Switch 中包含此 VLAN 之主機。
    2. Switch 位於它台 Switch 連接至此 VLAN 樹的最短路徑上。
  • Switch 符合條件(情境)後:

    • 情境 1
      1. 學習此主機,並將規則的優先權設定為 50。
      2. 在規劃為通道的 trunk 及同 VLAN 的主機下規則,開通包含此 VLAN ID 的封包,並將規則的優先權設定為 20。
    • 情境 2
      1. 在規劃為通道的 trunk 及同 VLAN 的主機下規則,開通包含此 VLAN ID 的封包,並將規則的優先權設定為 20。

VLAN 建樹邏輯

if switch 偵測到新的 host 加入:
	if switch 並不在 host 所屬 VLAN 群體:
		使用洪水演算法找尋此 VLAN 離目前 switch 最近的 switch並開通這條路徑使目前 switch 加入 VLAN 群體

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages