LoginSignup
4
3

More than 3 years have passed since last update.

BGP Flowspecの解説

Last updated at Posted at 2019-01-22

BGP Flowspecについてざっと解説

BGP Flowspecでは条件とアクションをBGPのUPDATEメッセージに載せて送信できる。

条件

条件はRFC4760で定義されているMP_REACH_NLRIまたはMP_UNREACH_NLRIに記述する。

使用するAFIとSAFIそれぞれ下記の通りである。
AFI:1
SAFI:133
http://www.iana.org/assignments/safi-namespace/safi-namespace.xhtml
NextHopは使用しないのであれば、長さ0とする。

TYPE14
        +---------------------------------------------------------+
        | Address Family Identifier (2 octets)                    |
        +---------------------------------------------------------+
        | Subsequent Address Family Identifier (1 octet)          |
        +---------------------------------------------------------+
        | Length of Next Hop Network Address (1 octet)            |
        +---------------------------------------------------------+
        | Network Address of Next Hop (variable)                  |
        +---------------------------------------------------------+
        | Reserved (1 octet)                                      |
        +---------------------------------------------------------+
        | Network Layer Reachability Information (variable)       |
        +---------------------------------------------------------+
TYPE15
        +---------------------------------------------------------+
        | Address Family Identifier (2 octets)                    |
        +---------------------------------------------------------+
        | Subsequent Address Family Identifier (1 octet)          |
        +---------------------------------------------------------+
        | Withdrawn Routes (variable)                             |
        +---------------------------------------------------------+

条件として指定できる内容は下記がある。

  • Type 1 - Destination Prefix
  • Type 2 - Source Prefix
  • Type 3 - IP Protocol
  • Type 4 - Port
  • Type 5 - Destination port
  • Type 6 - Source port
  • Type 7 - ICMP type
  • Type 8 - ICMP code
  • Type 9 - TCP flags
  • Type 10 - Packet length
  • Type 11 - DSCP (Diffserv Code Point)
  • Type 12 - Fragment

※Type3はIPパケット中にあるプロトコルタイプの値の事
Type3-Type12については不等号などの比較演算子も使える。

各Typeを複数使った条件を作成する事も可能でその場合は原則AND評価になる。

条件を複数作成した場合、あるトラフィックが複数の条件にマッチする事もある。
そのような場合には若い番号のTypeを持つ条件が優先的にマッチされる。
Typeに優先度が同じ場合には次のルールで優先付が行われる。
Type1,Type2の場合には最小プレフィックスマッチ
それ以外のTypeの場合には最長文字列マッチ

アクション

TYPE16
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Type high    |  Type low(*)  |                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+          Value                |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type 0x8006 - traffic-rate
    4バイトのフロートでBps単位でトラフィックレートを指定する。
    0が指定された場合にはトラフィックの破棄を意味する。

  • Type 0x8007 - traffic-action
    TerminalビットとSampleビットがある。
    Terminalビットがセットされている場合は後に続くアクションを適用し、セットされていない場合は、そこでアクションは終了する。
    Sampleビットがセットされている場合はサンプリングとロギングを行う。

  • Type 0x8008 - redirect
    VRFへのトラフィックのリダイレクトを行う。リストにしてVRFを複数指定可能。
    ただし、複数のVRFにリダイレクトさせることはできない。
    RFC4360にあるRTと同様に処理される。

  • Type 0x8000 - traffic-marking
    IPパケットのDSCPのマーキング(あるいはリマーキング)

参考文献

RFC5575 Dissemination of Flow Specification Rules https://tools.ietf.org/html/rfc5575
RFC4760 Multiprotocol Extensions for BGP-4 https://tools.ietf.org/html/rfc4760
RFC4360 BGP Extended Communities Attribute https://tools.ietf.org/html/rfc4360
https://milestone-of-se.nesuke.com/nw-advanced/mpls-vpn/detail-of-mp-bgp/
http://www.hogetan.net/translate/bgpflowspec-1/bgpflowspec.html

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3