zoukankan      html  css  js  c++  java
  • FRRoutingでSR-MPLSを動かす

    目的

    FRRoutingに実装されているOSPFのSR拡張と,Linux Kernel 4.3.0より実装されているMPLS機能を用いてSegment Routingを動作させます.
    ospf-srのドキュメントを参考に,OSPFによるSID配布を確認した後,iproute2を用いてMPLSのスタティックルートを設定します.

    実行環境

    • Ubuntu16.04
      • Linux kernel 4.15.0-34-generic
    • iproute2 4.18.0
    • FRRouting 6.1-dev

    実験トポロジ

    トポロジは以下の通りです


    sr_mpls.png

    • ルータ間のP2Pアドレスは172.16.0.x/30
    • ループバックアドレスは192.168.0.x/32
    • ルータ上の数字はNode SID.frr1ならNode SID 17001を設定

    設定

    カーネルの最新化

     
    sudo apt install linux-image-extra-4.15.0-15-generic
    

    iproute2の最新化

    @ebikenさんの記事を参考にしました.
    2-4.18.0の手順ではrm -v doc/arpd.sgmlは不要になっています.

     
    sudo apt install bison flex make
    wget https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.18.0.tar.gz
    tar xfv iproute2-4.18.0.tar.gz
    cd iproute2-4.18.0
    
    sed -i /ARPD/d Makefile
    rm -fv man/man8/arpd.8
    sed -i 's/.m_ipt.o//' tc/Makefile
    
    make
    sudo make DOCDIR=/usr/share/doc/iproute2-4.18.0 install
    

    FRRoutingのインストール

    公式ドキュメントを参考に.
    daemonsはzebraとospfdを使用します.

    以下の説明では,上の手順と重複するところもあります.

    カーネルモジュール設定

     
    sudo modprobe mpls_router
    sudo modprobe mpls_gso
    sudo modprobe mpls_iptunnel
    

    を実行し,MPLSに必要なモジュールを読み込ませます.

    sysctl

    フォワーディング設定,Reverse Path Filteringの設定,MPLSの転送・ラベル上限の設定を行います.

     
    sudo sysctl -w net.ipv4.ip_forward=1
    sudo systcl -w net.ipv4.conf.all.rp_filter=0
    sudo sysctl -w net.ipv4.conf.lo.rp_filter=0
    sudo sysctl -w net.mpls.conf.<参加するインターフェース>.input=1
    sudo sysctl -w net.mpls.conf.lo.input=1
    sudo sysctl -w net.mpls.platform_labels=1048575
    

    FRRouting設定

    OSPF-SRの設定を行います.frr.confの内容は以下の通りです.
    ループバックインターフェースをOSPFで広報しましょう.

    /etc/frr/frr.conf (frr1)
     
    frr version 6.1-dev-MyOwnFRRVersion
    frr defaults traditional
    hostname frr1
    log syslog informational
    service integrated-vtysh-config
    username cumulus nopassword
    !
    interface ens3
     ip address 172.16.0.1/30
     ip ospf area 0.0.0.0
    !
    interface ens4
     ip address 172.16.0.9/30
     ip ospf area 0.0.0.0
    !
    interface lo
     ip address 192.168.0.1/32
     ip ospf area 0.0.0.0
    !
    router ospf
     ospf router-id 192.168.0.1
     router-info area 0.0.0.0
     passive-interface lo
     capability opaque
     mpls-te on
     mpls-te router-address 192.168.0.1
     segment-routing on
     segment-routing global-block 16000 19999
     segment-routing node-msd 8
     segment-routing prefix 192.168.0.1/32 index 1001
    !
    line vty
    !
    log file /var/log/frr/frr.log
    !
    

    frr2〜frr4も同様に.

    ラベル確認

    ipコマンドを利用しMPLSテーブルを確認します.

     
    watal@frr1:~$ ip -M route
    17002 via inet 172.16.0.2 dev ens3 proto ospf
    17003 as to 17003 via inet 172.16.0.2 dev ens3 proto ospf
    17004 via inet 172.16.0.10 dev ens4 proto ospf
    50000 via inet 172.16.0.10 dev ens4 proto ospf
    50001 via inet 172.16.0.10 dev ens4 proto ospf
    50002 via inet 172.16.0.2 dev ens3 proto ospf
    50003 via inet 172.16.0.2 dev ens3 proto ospf
    

    vtyshに入り,FRRoutingからも確認できます.

     
    frr1# show mpls table
     Inbound                            Outbound
       Label     Type          Nexthop     Label
    --------  -------  ---------------  --------
       17002       SR       172.16.0.2  implicit-null
       17003       SR       172.16.0.2     17003
       17004       SR      172.16.0.10  implicit-null
       50000       SR      172.16.0.10  implicit-null
       50001       SR      172.16.0.10  implicit-null
       50002       SR       172.16.0.2  implicit-null
       50003       SR       172.16.0.2  implicit-null
    

    show ip ospf database segment-routingコマンドでSRに関する情報が取れます.

     
    frr1# show ip ospf database segment-routing
    
                    OSPF Segment Routing database for ID 192.168.0.1
    
    SR-Node: 192.168.0.4    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.4/32     17004        pop      SR Pfx (idx 1004)       ens4      172.16.0.10
    
    SR-Node: 192.168.0.2    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.2/32     17002        pop      SR Pfx (idx 1002)       ens3       172.16.0.2
    
    SR-Node: 192.168.0.1    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.1/32         0          0      SR Pfx (idx 1001)         lo      192.168.0.1
         172.16.0.9/32     50001        pop    SR Adj. (lbl 50001)       ens4      172.16.0.10
         172.16.0.9/32     50000        pop    SR Adj. (lbl 50000)       ens4      172.16.0.10
         172.16.0.1/32     50003        pop    SR Adj. (lbl 50003)       ens3       172.16.0.2
         172.16.0.1/32     50002        pop    SR Adj. (lbl 50002)       ens3       172.16.0.2
    
    SR-Node: 192.168.0.3    SRGB (Size/Label): 4000/16000   Algorithm(s): SPF       MSD: 8
    
        Prefix or Link  Label In  Label Out       Node or Adj. SID  Interface          Nexthop
    ------------------  --------  ---------  ---------------------  ---------  ---------------
        192.168.0.3/32     17003      17003      SR Pfx (idx 1003)       ens3       172.16.0.2
    

    各ノードのNode SID情報や各インターフェースにPrimaryとBackupの二つのAdjacency SIDが登録されていることがわかります.

    他にも,show ip ospf databaseコマンドでOpaque-LSAのID 4,7,8の情報が.またshow ip ospf database opaque-areaコマンドでその詳細情報が確認できます.

    スタティックルート設定

    配布されたラベルを利用し,MPLSで以下のように経路制御を行います.

    sr_mpls_flow.png

    FRRoutingにはMPLS-TE tunnelの設定が見当たらないので,iproute2でスタティックルートを設定します.
    frr1からfrr3への設定

     
    watal@frr1:~$ sudo ip route add 192.168.0.3/32 encap mpls 17004/17003 via 172.16.0.2
    

    frr3でも同様に

     
    watal@frr3:~$ sudo ip route add 192.168.0.1/32 encap mpls 17002/17001 via 172.16.0.18
    

    frr1からfrr3へpingを実行し,frr2・frr4でパケットキャプチャを行います.
    送信元にloを指定することを忘れずに.

     
    watal@frr1:~$ ping 192.168.0.3 -I 192.168.0.1
    PING 192.168.0.3 (192.168.0.3) from 192.168.0.1 : 56(84) bytes of data.
    64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=1.31 ms
    64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=1.30 ms
    64 bytes from 192.168.0.3: icmp_seq=3 ttl=63 time=1.49 ms
    

    frr2・frr4でキャプチャを行いました
    frr2:~$ sudo tcpdump -i ens3 -w frr2.pcapの結果


    Screen Shot 2018-10-17 at 16.09.58.png

    frr4:~$ sudo tcpdump -i ens4 -w frr4.pcapの結果


    Screen Shot 2018-10-17 at 16.09.46.png

    MPLSによりセグメントリストとなるラベルスタックが付与され,経路制御が行われたことが確認できます.

    まとめ

      • FRRoutingとLinuxカーネルに実装されたMPLSによりSR-MPLSの動作確認
        • OSPF-SRによるSID配布確認
        • OSPF-SRで用いるOpaque-LSAの確認
        • MPLSスタティックルートを用いた経路制御
  • 相关阅读:
    web服务器有哪些_nodejs的工作原理是什么
    WebRTC的运行流程和运行机制到底是怎么进行的
    认识WebRTC的整体架构以及它重要的目录结构是什么
    api接口风格restful风格的十大规范
    Mysql中高级操作中的视图_事务_索引_账户权限管理
    C#常见几种集合比较
    堆(Heap)和栈(Stack)
    线程同步的几种方式
    使用临时表大批量插入数据
    select出来的表增加递增列
  • 原文地址:https://www.cnblogs.com/dream397/p/13527275.html
Copyright © 2011-2022 走看看