範例

1. 此範例的目標是?

  • 使用ip創建H1H2兩個Network namespace

    • H1擁有自己的Network namespace以及私有網路網路接口h1-eth0
    • H2擁有自己的Network namespace以及私有網路網路接口h2-eth0
  • 使用ovs-vsctl創建Software Switch S1

    • S1有兩個埠s1-eth0s1-eth1
    • S1運行在root namespace,並使用實體接口eth0,等待Controller的指令
    • 使用veth pair與對應的Host接口相連,這樣H1H2就可以透過S1溝通
    • s1-eth0s1-eth1間的通訊資料透過Software Switch轉發
Example1
Image 1 - Example1

2. 什麼是ip command?

  • ip這個command是iproute2軟體包裡面的一個強大的網路配置工具
    • 它能夠替代一些傳統的網路管理工具,例如:ifconfigroute
    • 使用權限要為root
    • 幾乎所有的Linux發行版本都支持該command

3. 介紹ip command吧

  • ip netns add <NetNS 名稱> - 新增NetNS
  • ip netns list - 列出現有的NetNS
  • ip netns identify <PID> - 顯示PID所在的NetNS
  • ip netns identify $$ - 顯示目前的NetNS
  • ip netns exec <NetNS 名稱> <command> - 在Network namespace執行command
  • ip link add <veth 名稱> type veth peer name <veth 另一端的名稱> - 建立一個veth裝置
  • ip link set <veth 名稱> nets <NetNS 名稱> - 將veth搬到NetNS

4. Step 1 - Create host namespaces

  1. 建立H1 namespaces
    • sudo ip netns add h1
  2. 建立H2 namespaces
    • sudo ip netns add h2
  3. 察看建立結果
    • sudo ip netns
Step 1-Result
Image 2 - Step 1-Result
Step 1-Topo
Image 3 - Step 1-Topo

5. Step 2 - Create switch

  1. 建立Switch
    • sudo ovs-vsctl add-br s1
Step 2-Topo
Image 4 - Step 2-Topo
  1. 建立Link 1(h1-eth0 - s1-eth1)
    • sudo ip link add h1-eth0 type veth peer name s1-eth1
  2. 建立Link 2(h2-eth0 - s1-eth2)
    • sudo ip link add h2-eth0 type veth peer name s1-eth2
  3. 顯示連結結果
    • sudo ip link show
Step 3-Result
Image 5 - Step 3-Result

7. Step 4 - Move host ports into namespaces

  1. H1 port移到H1 namespaces
    • sudo ip link set h1-eth0 netns h1
  2. H2 port接到H2 namespaces
    • sudo ip link set h2-eth0 netns h2
  3. 顯示H1 namespaces的連結
    • sudo ip netns exec h1 ip link show
  4. 顯示H2 namespaces的連結
    • sudo ip netns exec h2 ip link show
Step 4-Result
Image 6 - Step 4-Result
Step 4-Topo
Image 7 - Step 4-Topo

8. Step 5 - Connect switch ports to OVS

  1. S1 port1連接到Switch
    • sudo ovs-vsctl add-port s1 s1-eth1
  2. S1 port2連接到Switch
    • sudo ovs-vsctl add-port s1 s1-eth2
  3. 顯示Switch的連結
    • sudo ovs-vsctl show
Step 5-Topo
Image 8 - Step 5-Topo

9. Step 6 - Set up OpenFlow controller

  1. 設定Controller
    • sudo ovs-vsctl set-controller s1 tcp:127.0.0.1
  2. 設定Controller監聽端口OpenFlow TCP(默認值:6633)
    • sudo ovs-controller ptcp:
  3. 查詢OpenFlow Controller是否正確連接到S1
    • sudo ovs-vsctl show
Step 6-Result
Image 9 - Step 6-Result

10. Step 7 - Configure network

  1. 修改H1 port網路介面,給予H1 eth0一個 10.0.0.1 的參數
    • sudo ip netns exec h1 ifconfig h1-eth0 10.1
  2. 啟動H1 eth0網路介面
    • sudo ip netns exec h1 ifconfig lo up
  3. 修改H2 port網路介面,給予H2 eth0一個 10.0.0.2 的參數
    • sudo ip netns exec h2 ifconfig h2-eth0 10.2
  4. 啟動H2 eth0網路介面
    • sudo ip netns exec h2 ifconfig lo up
  5. 啟動Switch網路介面
    • sudo ifconfig s1-eth1 up
    • sudo ifconfig s1-eth2 up

11. Step 8 - Test network

  1. 透過H1網路介面Ping H2網路介面
    • sudo ip netns exec h1 ping -c1 10.2
Step 8-Result
Image 10 - Step 8-Result
Final-Result
Image 11 - Final-Result
© 2017 Trashman all right reserved,powered by Gitbook修訂時間: 2024-10-14 03:41:00

results matching ""

    No results matching ""