久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行Open vSwitch OvS源代碼分析

152次閱讀
沒有評論

共計 2417 個字符,預計需要花費 7 分鐘才能閱讀完成。

本篇文章給大家分享的是有關如何進行 Open vSwitch OvS 源代碼分析,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

云計算是現在 IT 行業比較流行的,但真正什么是云計算業界也沒有個什么統一的定義(很多公司都是根據自己的利益狹隘的定義云計算),更別說什么標準 規范了。所以現在就有很多人說云計算只不過是個幌子,是個噓頭,沒點實用的,嘴上說說而已,雖然我也不太清楚什么叫做云計算,云計算的定義究竟是什么,但 我根據我公司現在做的云計算產品來說,對于云計算服務還是懂些的。我覺得那并不是什么幌子、噓頭,但如果說這云計算技術還不太成熟,我倒還勉強認可的。若 把云計算比作一個人的話,我個人覺得現在它正是二十歲的樣子,到三十多歲就算是比較成熟了,所以大概就能想象的到云計算現在的境況了。下面就來簡介下實現 云計算的一些技術,我對云計算并沒有什么研究,也沒能達到從全局的角度來分析云計算技術,更別說從一些更高的位置來分析問題,我所能介紹的僅僅是我一個小 程序員在工作中所遇到的一些和云計算有關的技術,日積月累,希望終有一天能成為云計算“磚家”。

云計算是個全世界的話題,所以也有全世界的能人異士來為實現這個云計算而奮斗。我現階段遇到的有關云計算的技術就是 Open vSwitch、OpenStack 技術和 docker 技術。那就先從 Open vSwitch 開始介紹起,我會用一系列 blog 來分析 Open vSwitch 的相關數據結構和工作流程,以及各個重要模塊的分析。所有的介紹都是基于源碼的分析,希望對初學著有點用。

Open vSwitch,根據其名就可以知道這是一個開放的虛擬交換機(open virtual switch);它是實現網絡虛擬化 SDN 的基礎,它是在開源的 Apache2.0 許可下的產品級質量的多層虛擬交換標準。設計這個 Open vSwitch 的目的是為了解決物理交換機存在的一些局限性:Open vSwitch 較物理交換機而言有著更低的成本和更高的工作效率;一個虛擬交換機可以有幾十個端口來連接虛擬機,而 Open vSwitch 本身占用的資源也非常小;可以根據自己的選擇靈活的配置,可以對數據包進行接收分析處理;同時還支持標準的管理接口和協議,如 NetFlow、sFlow、SPAN、RSPAN 等。

Open vSwtich 模塊介紹

當前最新代碼包主要包括以下模塊和特性:

ovs-vswitchd:主要模塊,實現 switch 的 daemon,包括一個支持流交換的 Linux 內核模塊;

ovsdb-server:輕量級數據庫服務器,提供 ovs-vswitchd 獲取配置信息;

ovs-brcompatd:讓 ovs-vswitch 替換 Linux bridge,包括獲取 bridge ioctls 的 Linux 內核模塊;

ovs-dpctl:用來配置 switch 內核模塊;

一些 Scripts and specs:輔助 OvS 安裝在 Citrix XenServer 上,作為默認 switch;

ovs-vsctl:查詢和更新 ovs-vswitchd 的配置;

ovs-appctl:發送命令消息,運行相關 daemon;

ovsdbmonitor:GUI 工具,可以遠程獲取 OvS 數據庫和 OpenFlow 的流表。

ovs-openflowd:一個簡單的 OpenFlow 交換機;

ovs-controller:一個簡單的 OpenFlow 控制器;

ovs-ofctl:查詢和控制 OpenFlow 交換機和控制器;

ovs-pki:OpenFlow 交換機創建和管理公鑰框架;

ovs-tcpundump:tcpdump 的補丁,解析 OpenFlow 的消息;

上面是網上提到的一些 Open vSwitch 的主要模塊。其實 Open vSwitch 中最主要的還是 datapath 目錄下的一些文件。有端口模塊 vport 等,還有關鍵的邏輯處理模塊 datapath 等,以及 flow 等流 表模塊,最后的還有 action 動作響應模塊,通道模塊等等。

Open vSwtich 工作流程

如何進行 Open vSwitch OvS 源代碼分析

一般的數據包在 linux 網絡協議棧中的流向為黑色箭頭流向:從網卡上接受到數據包后層層往上分析,最后離開內核態,把數據傳送到用戶態。當然也有些數據包只是在內核網絡協議棧中操作,然后再從某個網卡發出去。

但當其中有 openVswitch 時,數據包的流向就不一樣了。首先是創建一個網橋:ovs-vsctl add-br br0;然后是綁定某個網卡:綁定網卡:ovs-vsctl add-port br0 eth0;這里默認為綁定了 eth0 網卡。數據包的流向是從網卡 eth0 上然后到 openVswitch 的端口 vport 上進入 openVswitch 中,然后根據 key 值進行流表的匹配。如果匹配成功,則根據流表中對應的 action 找到其對應的操作方法,完成相應的動作(這個動作有可能是把一個請求 變成應答,也有可能是直接丟棄,也可以自己設計自己的 action);如果匹配不成功,則執行默認的動作,有可能是放回內核網絡協議棧中去處理(在創建網 橋時就會相應的創建一個端口連接內核協議棧的)。

其大概工作流程就是這樣了,在工作中一般在這幾個地方來修改內核代碼以達到自己的目的:第一個是在 datapath.c 中的 ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb) 函數內添加相應的代碼來達到自己的目的,因為對于每個數據包來說這個函數都是必經之地;第二個就是自己去設計自己的流表了;第三個和第二個是相 關聯的,就是根據流表來設計自己的 action,完成自己想要的功能。

以上就是如何進行 Open vSwitch OvS 源代碼分析,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計2417字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 昌乐县| 寿阳县| 藁城市| 同德县| 大同县| 德庆县| 花莲县| 吐鲁番市| 色达县| 富阳市| 毕节市| 遂昌县| 江北区| 吉林市| 洱源县| 绥化市| 丽江市| 祁东县| 寿光市| 镇远县| 湘阴县| 高密市| 襄垣县| 和平区| 卢氏县| 蒙城县| 牙克石市| 大荔县| 五寨县| 买车| 措勤县| 安图县| 松原市| 宁都县| 柘荣县| 安平县| 聊城市| 南投县| 盈江县| 渑池县| 榆树市|