• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      OVS環(huán)境IPv4/v6數(shù)據(jù)包轉(zhuǎn)換

      2018-01-20 06:42胡宇鴻高鴻峰韋旭勤蔣源
      電腦知識(shí)與技術(shù) 2018年31期
      關(guān)鍵詞:流表

      胡宇鴻 高鴻峰 韋旭勤 蔣源

      摘要:為實(shí)現(xiàn)數(shù)據(jù)中心虛擬主機(jī)在IPv4/6混合使用情況下IPv4與IPv6主機(jī)間的數(shù)據(jù)交換,在開源虛擬交換機(jī)(OVS)中匹配確定的v4地址規(guī)則,增加數(shù)據(jù)包轉(zhuǎn)換模塊,完成內(nèi)嵌IPv4的IPv6地址的地址轉(zhuǎn)換和數(shù)據(jù)包轉(zhuǎn)換,匹配確定的v6地址到預(yù)定v4地址的數(shù)據(jù)包轉(zhuǎn)換。

      關(guān)鍵詞:開源虛擬交換機(jī);IPv4/v6;流表

      中圖分類號(hào):TP393.06? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? 文章編號(hào):1009-3044(2018)31-0036-02

      隨著云計(jì)算被越來越多用戶接受,各類IT服務(wù)企業(yè)均大量建設(shè)和擴(kuò)展數(shù)據(jù)中心,同時(shí)伴隨著IPv4地址的耗盡,IPv6技術(shù)在新建或擴(kuò)展數(shù)據(jù)中心時(shí)被越來越多地采用,但是實(shí)現(xiàn)IPv4/v6在數(shù)據(jù)中心的完全融合、平滑過渡,仍然需要逐步實(shí)現(xiàn)。當(dāng)前虛擬化技術(shù)廣泛地被應(yīng)用到數(shù)據(jù)中心,虛擬交換機(jī)也越來越多地被用來通過標(biāo)準(zhǔn)接口和擴(kuò)展編程實(shí)現(xiàn)服務(wù)器分布式管理和大規(guī)模網(wǎng)絡(luò)自動(dòng)化。

      基于此本文討論基于虛擬交換機(jī)環(huán)境下IPv4/v6的數(shù)據(jù)包轉(zhuǎn)換技術(shù),實(shí)現(xiàn)虛擬交換機(jī)環(huán)境下IPv4/v6主機(jī)間的數(shù)據(jù)交換。

      1 虛擬交換機(jī)

      OpenVswitch是Apache2.0許可下的開源多層虛擬交換機(jī),可實(shí)現(xiàn)對(duì)數(shù)據(jù)包的接收、分析和處理,是網(wǎng)絡(luò)虛擬化的重要組成部分,同時(shí)支持NetFlow、sFlow、SPAN、RSPAN等標(biāo)準(zhǔn)的管理接口和協(xié)議。通過與虛擬主機(jī)緊密結(jié)合能實(shí)現(xiàn)比物理交換機(jī)工作更高的工作效率,根據(jù)實(shí)際需求可同時(shí)虛擬出多個(gè)虛擬端口,與物理交換機(jī)相比具有更靈活、成本更低等優(yōu)勢(shì)[1]。

      1.1 Linux內(nèi)核數(shù)據(jù)包處理流程

      常規(guī)情況下數(shù)據(jù)報(bào)文由驅(qū)動(dòng)程序處理后從物理網(wǎng)卡獲取數(shù)據(jù),如數(shù)據(jù)報(bào)文目的不為本地,則根據(jù)路由信息從指定物理接口轉(zhuǎn)發(fā)出去;如報(bào)文需本地處理則按照分層原則逐層分析,最后通過用戶態(tài)與內(nèi)核態(tài)接口將數(shù)據(jù)傳送到用戶態(tài)由上層應(yīng)用繼續(xù)處理[2]。

      在OVS運(yùn)行條件下,當(dāng)數(shù)據(jù)包從物理網(wǎng)卡進(jìn)入后,需依據(jù)OVS虛擬網(wǎng)橋中虛擬端口(vport)所綁定的物理網(wǎng)絡(luò)接口信息決定報(bào)文是否經(jīng)過vport進(jìn)入OVS中,由OVS進(jìn)行處理。

      1.2 OVS組成及數(shù)據(jù)處理流程

      OVS主要組成部件如圖2,ovsdb提供數(shù)據(jù)庫服務(wù),存儲(chǔ)虛擬交換機(jī)的配置信息,利用OVSDB協(xié)議與管理端、vswitchd交換信息。vswitchd是OVS的核心部件,通過openflow可與controller通信,使用OVSDB協(xié)議與ovsdb-server通信,通過netlink和內(nèi)核模塊通信,支持多個(gè)獨(dú)立的datapath網(wǎng)橋,通過更改flow table實(shí)現(xiàn)綁定和VLAN等功能[1]。Datapath是OVS的內(nèi)核模塊,負(fù)責(zé)執(zhí)行數(shù)據(jù)交換,把從接收端口收到的數(shù)據(jù)包在流表中進(jìn)行匹配,并執(zhí)行匹配到的動(dòng)作。

      2 OVS下IPv4/v6數(shù)據(jù)包轉(zhuǎn)換

      2.1 OVS接收數(shù)據(jù)處理過程

      當(dāng)虛擬交換機(jī)收到數(shù)據(jù)包,首先完成報(bào)文頭的提取并計(jì)算key值,根據(jù)實(shí)際需求選擇使用外部控制器管理或本地流表,虛擬交換機(jī)根據(jù)key值從第一個(gè)流表開始和流表項(xiàng)進(jìn)行匹配,如果匹配成功,則更新計(jì)數(shù)器并根據(jù)流表中對(duì)應(yīng)的action找到其對(duì)應(yīng)的操作方法,完成相應(yīng)的動(dòng)作;匹配不成功,則執(zhí)行默認(rèn)的動(dòng)作或回到Linux內(nèi)核網(wǎng)絡(luò)協(xié)議棧中繼續(xù)處理。詳細(xì)代碼處理過程如圖3[2]。

      ovs_vport_receive_packets()接收到數(shù)據(jù)包后skb生成key值,如果出錯(cuò)則調(diào)用ovs_dp_process_packet交付給datapath處理。正確則利用ovs_flow_tbl_lookup_stats()基于key值進(jìn)行流表查找,返回匹配的流表項(xiàng);若不存在匹配,則調(diào)用ovs_dp_upcall上傳至用戶空間進(jìn)行匹配。匹配成功,則調(diào)用ovs_execute_actions執(zhí)行對(duì)應(yīng)的操作。

      2.2 IPv4/v6的地址轉(zhuǎn)換

      在本次實(shí)現(xiàn)中,當(dāng)v4地址轉(zhuǎn)換為v6地址時(shí)采用內(nèi)嵌IPv4的IPv6地址方案實(shí)現(xiàn)v4地址到v6地址的轉(zhuǎn)換[3]。根據(jù)預(yù)先設(shè)定的目標(biāo)v6子網(wǎng)的方式選擇一個(gè)特定的/64前綴,然后加上4個(gè)設(shè)置為0的8位組構(gòu)成/96特定網(wǎng)絡(luò)前綴,/96位的網(wǎng)絡(luò)前綴加上32位的v4地址構(gòu)成完整的v6地址。

      當(dāng)v6地址轉(zhuǎn)換為v4地址時(shí),因?yàn)関6地址的空間遠(yuǎn)遠(yuǎn)大于v4地址空間,本次實(shí)驗(yàn)中采用預(yù)指定的方式構(gòu)成v6地址到v4地址的對(duì)應(yīng)。

      數(shù)據(jù)包協(xié)議頭轉(zhuǎn)換如表1、表2[4]。

      2.3 OVS中轉(zhuǎn)換過程的實(shí)現(xiàn)過程

      目前OVS最新版本支持IPv4和IPv6基本功能,但是并未提供v4/v6數(shù)據(jù)包轉(zhuǎn)換的功能。根據(jù)OVS數(shù)據(jù)包接收處理流程,根據(jù)需要在匹配流標(biāo)后轉(zhuǎn)到指定的action執(zhí)行對(duì)應(yīng)操作。

      定義v4conv6和v6conv4的action。

      /* OpenFlow 1.2, 1.3, and 1.4 actions. */

      static conststruct ofpact_map of12[]? { OFPACT_HANDLE_V4TOV6, 30 },

      static conststruct ofpact_map of12[]? { OFPACT_HANDLE_V6TOV4, 32 },

      添加raw action type

      enum ofp_raw_action_type {

      ……

      /* OF1.2-1.4(28): void. */

      OFPAT_RAW12_HANDLE_V4TOV6,

      OFPAT_RAW12_HANDLE_V6TOV4,

      ……

      }

      添加HANDLE_V4TOV6的action的處理函數(shù)。

      Static enum ofperr decode_OFPAT_RAW12_ HANDLE_V4 TOV6(struct ofpbuf *out)

      static void encode_HANDLE_EXAMPLE (conststruct ofpact_null *null OVS_UNUSED, enum ofp_version ofp_version, struct ofpbuf *out)

      static char *OVS_WARN_UNUSED_RESULT parse_ HANDLE_V4TOV6(char *arg OVS_UNUSED, struct ofpbuf *ofpacts, enum ofputil_protocol *usable_protocols OVS_UNUSED)

      static void format_HANDLE_V4TOV6 (conststruct ofpact_null *a OVS_UNUSED, struct ds *s)

      convert_IPV4_V6_addr具體實(shí)現(xiàn)

      static void convert_IPV4_V6_addr(struct sk_buff *skb,__be32 s_ipv6[4],__be32 d_ipv6[4])

      {

      //按2.2中所述完成IPv4到IPv6報(bào)文頭轉(zhuǎn)換;

      }

      類似添加HANDLE_V6TOV4的action的處理函數(shù)。

      static void convert_IPV4_V6_addr(struct sk_buff *skb,__be32 s_ipv4,__be32 d_ipv4)

      {

      //按2.2中所述完成IPv6到IPv4報(bào)文頭轉(zhuǎn)換;

      }

      3 結(jié)語

      本文通過在OVS中實(shí)現(xiàn)IPv4和IPv6數(shù)據(jù)包轉(zhuǎn)換,為OVS與控制器結(jié)合對(duì)v4/v6數(shù)據(jù)包的靈活傳輸、處理及應(yīng)用做好準(zhǔn)備。

      參考文獻(xiàn):

      [1] A Linux Foundation Collaborative Project Open vSwitch Documentation [EB/OL]. http://docs.openvswitch.org/en/latest/, 2016.

      [2] 張若晨. 基于OpenvSwitch的代理虛擬交換機(jī)在SDN網(wǎng)絡(luò)中的實(shí)現(xiàn)與應(yīng)用[D]. 廣州: 華南理工大學(xué)軟件學(xué)院, 2016: 17-22.

      [3] BAO C, HUITEMA C, BAGNULO M, et al.IPv6 addressing of IPv4/IPv6 translators[S]. RFC 6052, 2010.

      [4] LI X, BAO C, BAKER F. IP/ICMP translation algorithm[S]. RFC 6145, 2011.

      猜你喜歡
      流表
      基于匹配動(dòng)作表模型的可編程數(shù)據(jù)平面流表歸并
      OpenFlow交換機(jī)流表溢出緩解技術(shù)研究綜述
      基于Holt 雙參數(shù)指數(shù)平滑法的SDN 交換機(jī)流表超時(shí)優(yōu)化策略*
      基于時(shí)序與集合的SDN流表更新策略
      軟件定義網(wǎng)絡(luò)中OpenFlow流表空間優(yōu)化技術(shù)研究進(jìn)展
      基于包成批特性的OpenFlow流表高效區(qū)分存儲(chǔ)算法
      基于緩存策略的OpenFlow流表存儲(chǔ)優(yōu)化方案研究
      簡(jiǎn)析yangUI流表控制
      軟件定義網(wǎng)絡(luò)中一種兩步式多級(jí)流表構(gòu)建算法
      一種高效的OpenFlow流表拆分壓縮算法
      武胜县| 峨眉山市| 商河县| 四平市| 台安县| 周至县| 商丘市| 和田县| 房产| 新邵县| 中卫市| 讷河市| 虞城县| 遂昌县| 炉霍县| 榆林市| 大港区| 兰考县| 阳新县| 平江县| 丹江口市| 三台县| 宜宾市| 广汉市| 宜章县| 许昌市| 永福县| 河池市| 吉安市| 进贤县| 潜山县| 静乐县| 康保县| 封开县| 德安县| 永济市| 屯门区| 沅江市| 祁连县| 嘉鱼县| 方山县|